#include "../MQ2Plugin.h"
PreSetup("MQ2ViewPort");
bool AutoViewPort = true;
bool bInBackground=false;
HMODULE EQWhMod=0;
typedef HWND (__stdcall *fEQW_GetDisplayWindow)(VOID);
fEQW_GetDisplayWindow EQW_GetDisplayWindow=0;
VOID ToggleAutoViewport(PSPAWNINFO pChar, PCHAR szLine)
{
AutoViewPort=!AutoViewPort;
WriteChatf("Auto adjustment of background viewport is %s",AutoViewPort?"ON":"OFF");
}
PLUGIN_API VOID OnDrawHUD(VOID)
{
HWND EQhWnd = *(HWND*)EQADDR_HWND;
if (EQW_GetDisplayWindow) EQhWnd=EQW_GetDisplayWindow();
if ((gGameState==GAMESTATE_INGAME) && (AutoViewPort))
{
if (GetForegroundWindow()==EQhWnd) // EQ in foreground
{
if (bInBackground) // just got focus
{
DebugSpewAlways("MQ2ViewPort:: Restoring ViewPort Settings");
DoCommand(NULL,"/viewport reset");
bInBackground = false;
return;
}
}
else // EQ in background
{
if (!bInBackground)
{
DebugSpewAlways("MQ2ViewPort:: Zeroing ViewPort");
DoCommand(NULL,"/viewport 0 0 1 1");
bInBackground = true;
}
}
}
}
PLUGIN_API VOID InitializePlugin(VOID)
{
if (EQWhMod=GetModuleHandle("eqw.dll"))
{
EQW_GetDisplayWindow=(fEQW_GetDisplayWindow)GetProcAddress(EQWhMod,"EQW_GetDisplayWindow");
}
DebugSpewAlways("Initializing MQ2ViewPort");
AddCommand("/autovp",ToggleAutoViewport);
}
PLUGIN_API VOID ShutdownPlugin(VOID)
{
DebugSpewAlways("Shutting down MQ2ViewPort");
RemoveCommand("/autovp");
}