Commit 149a7008 authored by Red Bot's avatar Red Bot

synced with live & ready for test

parent b4909506
No preview for this file type
......@@ -10,11 +10,12 @@
// v2.11 - Sym - 07-28-2017 - Cleaned up anchor port code, added selfanchor option
// /autoaccept selfanchor on|off :: Toggle acceptance of primary/secondary real estate anchor port when you cast it. Default *OFF*
// v2.12 - Sym - 08-07-2017 - Added wizard translocate and druid zephyr casts to translocate toggle. Previously it was translocate to bind only.
// v2.13 - Eqmule - 06-04-2018 - Fixed a null ptr crash and added a check for a rez message so it wont accept that, its not this plugins job to accept rezzes.
#include "../MQ2Plugin.h"
using namespace std;
#include <vector>
PLUGIN_VERSION(2.12);
PLUGIN_VERSION(2.13);
#pragma warning(disable:4800)
PreSetup("MQ2AutoAccept");
......@@ -39,6 +40,7 @@ bool bSelfAnchor = false;
bool bTrade = true;
bool bTradeAlways = false;
bool bGroup = true;
bool bFellowship = true;
bool bRaid = true;
bool bInitDone = false;
bool bTradeReject = false;
......@@ -98,6 +100,7 @@ VOID SaveINI(VOID)
WritePrivateProfileString(szTemp,"TradeAlways",bTradeAlways ? "1" : "0",INIFileName);
WritePrivateProfileString(szTemp,"TradeReject",bTradeReject ? "1" : "0",INIFileName);
WritePrivateProfileString(szTemp,"Group",bGroup ? "1" : "0",INIFileName);
WritePrivateProfileString(szTemp,"Fellowship",bFellowship ? "1" : "0",INIFileName);
WritePrivateProfileString(szTemp,"Raid",bRaid ? "1" : "0",INIFileName);
......@@ -125,7 +128,10 @@ VOID LoadINI(VOID)
{
Update_INIFileName();
// get on/off settings
sprintf_s(szTemp,"%s_Settings",GetCharInfo()->Name);
PCHARINFO pChar = GetCharInfo();
if (!pChar)
return;
sprintf_s(szTemp,"%s_Settings",pChar->Name);
bAutoAccept = GetPrivateProfileInt(szTemp, "Enabled", 1, INIFileName) > 0 ? true : false;
bTranslocate = GetPrivateProfileInt(szTemp, "Translocate", 0, INIFileName) > 0 ? true : false;
bAnchor = GetPrivateProfileInt(szTemp, "Anchor", 0, INIFileName) > 0 ? true : false;
......@@ -134,10 +140,11 @@ VOID LoadINI(VOID)
bTradeAlways = GetPrivateProfileInt(szTemp, "TradeAlways", 0, INIFileName) > 0 ? true : false;
bTradeReject = GetPrivateProfileInt(szTemp, "TradeReject", 0, INIFileName) > 0 ? true : false;
bGroup = GetPrivateProfileInt(szTemp, "Group", 1, INIFileName) > 0 ? true : false;
bFellowship = GetPrivateProfileInt(szTemp, "Fellowship", 1, INIFileName) > 0 ? true : false;
bRaid = GetPrivateProfileInt(szTemp, "Raid", 1, INIFileName) > 0 ? true : false;
// get all names
sprintf_s(szTemp,"%s_Names",GetCharInfo()->Name);
sprintf_s(szTemp,"%s_Names",pChar->Name);
GetPrivateProfileSection(szTemp,szList,MAX_STRING,INIFileName);
// clear list
......@@ -209,7 +216,7 @@ VOID LoadINI(VOID)
if (vNames.size()) ListUsers();
// get all anchors
sprintf_s(szTemp,"%s_Anchors",GetCharInfo()->Name);
sprintf_s(szTemp,"%s_Anchors",pChar->Name);
GetPrivateProfileSection(szTemp,szList,MAX_STRING,INIFileName);
// clear list
......@@ -233,7 +240,8 @@ VOID LoadINI(VOID)
pch = strtok_s(NULL, "=",&Next_Token1);
// Even entries are the anchor values. Add it to the list
vAnchors.push_back(pch);
if(pch)
vAnchors.push_back(pch);
// next anchor
pch = strtok_s(NULL, "=",&Next_Token1);
......@@ -242,7 +250,8 @@ VOID LoadINI(VOID)
p += length;
p++;
}
if (vAnchors.size()) ListAnchors();
if (vAnchors.size())
ListAnchors();
// flag first load init as done
bInitDone = true;
......@@ -250,9 +259,11 @@ VOID LoadINI(VOID)
PLUGIN_API VOID SetGameState(DWORD GameState) {
if(GameState==GAMESTATE_INGAME) {
if (!bInitDone) LoadINI();
if (!bInitDone)
LoadINI();
} else if(GameState!=GAMESTATE_LOGGINGIN) {
if (bInitDone) bInitDone=false;
if (bInitDone)
bInitDone=false;
}
}
......@@ -267,6 +278,7 @@ void ShowHelp(void) {
WriteChatf("/autoaccept trade always on|off :: Toggles always accept all trades. Default \ar*OFF*\ax");
WriteChatf("/autoaccept trade reject on|off :: Reject trades for people not on auto accept list after 5 seconds. Default \ar*OFF*\ax");
WriteChatf("/autoaccept group on|off :: Toggles accept group invites. Default \ag*ON*\ax");
WriteChatf("/autoaccept fellowship on|off :: Toggles accept fellowship invites. Default \ag*ON*\ax");
WriteChatf("/autoaccept raid on|off :: Toggles accept raid invites. Default \ag*ON*\ax");
WriteChatf("/autoaccept status :: Lists status of toggles.");
WriteChatf("/autoaccept list :: Lists users on your auto accept list.");
......@@ -296,6 +308,7 @@ void AutoAcceptCommand(PSPAWNINFO pCHAR, PCHAR zLine) {
WriteChatf("MQ2AutoAccept :: Anchor portal accept is %s", bAnchor ? "\agON\ax" : "\arOFF\ax");
WriteChatf("MQ2AutoAccept :: Self anchor portal accept is %s", bSelfAnchor ? "\agON\ax" : "\arOFF\ax");
WriteChatf("MQ2AutoAccept :: Group accept is %s", bGroup ? "\agON\ax" : "\arOFF\ax");
WriteChatf("MQ2AutoAccept :: Fellowship accept is %s", bFellowship ? "\agON\ax" : "\arOFF\ax");
WriteChatf("MQ2AutoAccept :: Raid accept is %s", bRaid ? "\agON\ax" : "\arOFF\ax");
WriteChatf("MQ2AutoAccept :: Trade accept is %s", bTrade ? "\agON\ax" : "\arOFF\ax");
WriteChatf("MQ2AutoAccept :: Trade reject is %s", bTradeReject ? "\agON\ax" : "\arOFF\ax");
......@@ -386,7 +399,7 @@ void AutoAcceptCommand(PSPAWNINFO pCHAR, PCHAR zLine) {
GetArg(szTemp,zLine,2);
if(!_strnicmp(szTemp,"on",2)) {
bSelfAnchor = true;
} else if(!_strnicmp(szTemp,"off",2)) {
} else if(!_strnicmp(szTemp,"off",3)) {
bSelfAnchor = false;
}
WriteChatf("MQ2AutoAccept :: Self anchor portal accept is %s", bSelfAnchor ? "\agON\ax" : "\arOFF\ax");
......@@ -395,7 +408,7 @@ void AutoAcceptCommand(PSPAWNINFO pCHAR, PCHAR zLine) {
GetArg(szTemp,zLine,2);
if(!_strnicmp(szTemp,"on",2)) {
bAnchor = true;
} else if(!_strnicmp(szTemp,"off",2)) {
} else if(!_strnicmp(szTemp,"off",3)) {
bAnchor = false;
}
WriteChatf("MQ2AutoAccept :: Anchor portal accept is %s", bAnchor ? "\agON\ax" : "\arOFF\ax");
......@@ -404,16 +417,25 @@ void AutoAcceptCommand(PSPAWNINFO pCHAR, PCHAR zLine) {
GetArg(szTemp,zLine,2);
if(!_strnicmp(szTemp,"on",2)) {
bGroup = true;
} else if(!_strnicmp(szTemp,"off",2)) {
} else if(!_strnicmp(szTemp,"off",3)) {
bGroup = false;
}
WriteChatf("MQ2AutoAccept :: Group accept is %s", bGroup ? "\agON\ax" : "\arOFF\ax");
}
else if(!_strnicmp(szTemp,"fellowship",10)) {
GetArg(szTemp,zLine,2);
if(!_strnicmp(szTemp,"on",2)) {
bFellowship = true;
} else if(!_strnicmp(szTemp,"off",3)) {
bFellowship = false;
}
WriteChatf("MQ2AutoAccept :: Fellowship accept is %s", bFellowship ? "\agON\ax" : "\arOFF\ax");
}
else if(!_strnicmp(szTemp,"raid",4)) {
GetArg(szTemp,zLine,2);
if(!_strnicmp(szTemp,"on",2)) {
bRaid = true;
} else if(!_strnicmp(szTemp,"off",2)) {
} else if(!_strnicmp(szTemp,"off",3)) {
bRaid = false;
}
WriteChatf("MQ2AutoAccept :: Raid accept is %s", bRaid ? "\agON\ax" : "\arOFF\ax");
......@@ -422,7 +444,7 @@ void AutoAcceptCommand(PSPAWNINFO pCHAR, PCHAR zLine) {
GetArg(szTemp,zLine,2);
if(!_strnicmp(szTemp,"on",2)) {
bTrade = true;
} else if(!_strnicmp(szTemp,"off",2)) {
} else if(!_strnicmp(szTemp,"off",3)) {
bTrade = false;
bTradeAlways = false;
}
......@@ -435,7 +457,7 @@ void AutoAcceptCommand(PSPAWNINFO pCHAR, PCHAR zLine) {
if(!_strnicmp(szTemp,"on",2)) {
bTrade = true;
bTradeReject = true;
} else if(!_strnicmp(szTemp,"off",2)) {
} else if(!_strnicmp(szTemp,"off",3)) {
bTradeReject = false;
}
WriteChatf("MQ2AutoAccept :: Trade reject is %s", bTradeReject ? "\agON\ax" : "\arOFF\ax");
......@@ -450,7 +472,7 @@ void AutoAcceptCommand(PSPAWNINFO pCHAR, PCHAR zLine) {
if(!_strnicmp(szTemp,"on",2)) {
bTrade = true;
bTradeAlways = true;
} else if(!_strnicmp(szTemp,"off",2)) {
} else if(!_strnicmp(szTemp,"off",3)) {
bTradeAlways = false;
}
WriteChatf("MQ2AutoAccept :: Trade always accept is %s", bTradeAlways ? "\agON\ax" : "\arOFF\ax");
......@@ -462,7 +484,7 @@ void AutoAcceptCommand(PSPAWNINFO pCHAR, PCHAR zLine) {
GetArg(szTemp,zLine,2);
if(!_strnicmp(szTemp,"on",2)) {
bTranslocate = true;
} else if(!_strnicmp(szTemp,"off",2)) {
} else if(!_strnicmp(szTemp,"off",3)) {
bTranslocate = false;
}
WriteChatf("MQ2AutoAccept :: Translocate accept is %s", bTranslocate ? "\agON\ax" : "\arOFF\ax");
......@@ -489,7 +511,11 @@ PLUGIN_API VOID ShutdownPlugin() {
PLUGIN_API DWORD OnIncomingChat(PCHAR Line, DWORD Color)
{
// No users, abort
if (!vNames.size()) return 0;
if (!vNames.size())
return 0;
PCHARINFO pChar = GetCharInfo();
if (!pChar)
return 0;
CHAR szName[MAX_STRING];
if (strstr(Line,"invites you to join a group.") && bGroup) {
GetArg(szName,Line,1);
......@@ -497,10 +523,20 @@ PLUGIN_API DWORD OnIncomingChat(PCHAR Line, DWORD Color)
for (unsigned int a = 0; a < vNames.size(); a++) {
string& vRef = vNames[a];
if (!_strcmpi(szName,vRef.c_str())) {
DoCommand(GetCharInfo()->pSpawn,"/timed 3s /invite");
DoCommand(pChar->pSpawn,"/timed 3s /invite");
WriteChatf("\agMQ2AutoAccept :: Joining group with %s\ax",szName);
}
}
} else if (strstr(Line,"invites you to join a fellowship.") && bFellowship) {
GetArg(szName,Line,1);
// loop through user list and find a match for inviter. If found join group
for (unsigned int a = 0; a < vNames.size(); a++) {
string& vRef = vNames[a];
if (!_strcmpi(szName,vRef.c_str())) {
DoCommand(pChar->pSpawn,"/timed 3s /invite");
WriteChatf("\agMQ2AutoAccept :: Joining fellowship with %s\ax",szName);
}
}
}
else if (strstr(Line,"invites you to join a raid") && bRaid) {
GetArg(szName,Line,1);
......@@ -508,7 +544,7 @@ PLUGIN_API DWORD OnIncomingChat(PCHAR Line, DWORD Color)
for (unsigned int a = 0; a < vNames.size(); a++) {
string& vRef = vNames[a];
if (!_strcmpi(szName,vRef.c_str())) {
DoCommand(GetCharInfo()->pSpawn,"/timed 3s /raidaccept");
DoCommand(pChar->pSpawn,"/timed 3s /raidaccept");
WriteChatf("\agMQ2AutoAccept :: Joining raid with %s\ax",szName);
}
}
......@@ -517,7 +553,7 @@ PLUGIN_API DWORD OnIncomingChat(PCHAR Line, DWORD Color)
}
void WinClick(CXWnd *Wnd, PCHAR ScreenID, PCHAR ClickNotification, DWORD KeyState) {
if (Wnd) {
if (Wnd && pWndMgr) {
if (CXWnd *Child = Wnd->GetChildItem(ScreenID)) {
BOOL KeyboardFlags[4];
*(DWORD*)&KeyboardFlags = *(DWORD*)&((PCXWNDMGR)pWndMgr)->KeyboardFlags;
......@@ -627,7 +663,11 @@ PLUGIN_API VOID OnPulse(VOID) {
if(Child=pWnd->GetChildItem("CD_TextOutput")) {
szTemp[0] = '\0';
GetCXStr(((CStmlWnd*)Child)->STMLText,szTemp,sizeof(szTemp));
if (bTranslocate && (strstr(szTemp,"translocated to your bind point") || strstr(szTemp,"wish to be translocated by") )) {
if (strstr(szTemp,"percent")) {
// rez request
//DebugSpew("\agMQ2AutoAccept :: Ignoring rez\ax");
return;
} else if (bTranslocate && (strstr(szTemp,"translocated to your bind point") || strstr(szTemp,"wish to be translocated by") )) {
// Translocate request
WriteChatf("\agMQ2AutoAccept :: Accepting translocate\ax");
WinClick(FindMQ2Window("ConfirmationDialogBox"),"Yes_Button","leftmouseup",1);
......
#include "../MQ2Plugin.h"
#if !defined(EMU)
#include "MQ2AutoLoot.h"
#include "ItemActions.h"
#include <chrono>
......@@ -1795,3 +1796,4 @@ DWORD __stdcall BarterItems(PVOID pData)
bEndThreads = true;
return 0;
}
#endif
\ No newline at end of file
......@@ -17,7 +17,7 @@
PreSetup(PLUGIN_NAME);
PLUGIN_VERSION(VERSION);
#endif PLUGIN_API
#if !defined(EMU)
#include "../MQ2AutoLootSort/LootSort.h"
#include "LootPatterns.h"
#include "MQ2AutoLoot.h"
......@@ -2446,4 +2446,4 @@ PLUGIN_API VOID OnPulse(VOID)
if (HandlePersonalLoot(ItemOnCursor, pChar, pAdvLoot, pPersonalList, pSharedList)) { return; }
if (HandleSharedLoot(ItemOnCursor, pChar, pChar2, pAdvLoot, pPersonalList, pSharedList)) { return; }
}
#endif
\ No newline at end of file
#define PLUGIN_MSG "\ag[MQ2AutoLoot]\ax "
#if !defined(EMU)
#include <chrono>
using namespace std;
......@@ -53,3 +53,4 @@ void SetItemCommand(PSPAWNINFO pCHAR, PCHAR szLine);
void CreateLootEntry(CHAR* szAction, CHAR* szEntry, PITEMINFO pItem);
int dataAutoLoot(char* szName, MQ2TYPEVAR &Ret);
int AutoLootFreeInventory(void); // used to calculate TLO ${AutoLoot.FreeInventory}
#endif
\ No newline at end of file
......@@ -13,6 +13,7 @@
// v16.3 - plure Made it so other plugins can check if someone is connected to your eqbc server
// v16.4 - Sym added SaveConnectByChar setting to autoconnect to different servers/ports per character
// v16.4 - Chatwiththisname - No version change, made it so TLO EQBC.Names is updated anytime someone connects or disconnects.
// v16.5 - Redbot 5-30-2018 added "NameAnnounce" setting to hide name spam.
/***************************************************************/
......
......@@ -1323,30 +1323,21 @@ public:
ItemSetSpell_Detour(Item->Focus2);
#endif
}
#ifndef EMU
if (Item->Mount.SpellID > 0 && Item->Mount.SpellID != -1) {
eEffectType = Mount;
#ifdef EMU
ItemSetSpell_Detour(Item->Mount, false);
#else
ItemSetSpell_Detour(Item->Mount);
#endif
}
if (Item->Illusion.SpellID > 0 && Item->Illusion.SpellID != -1) {
eEffectType = Illusion;
#ifdef EMU
ItemSetSpell_Detour(Item->Illusion, false);
#else
ItemSetSpell_Detour(Item->Illusion);
#endif
}
if (Item->Familiar.SpellID > 0 && Item->Familiar.SpellID != -1) {
eEffectType = Familiar;
#ifdef EMU
ItemSetSpell_Detour(Item->Familiar, false);
#else
ItemSetSpell_Detour(Item->Familiar);
#endif
}
#endif
bNoSpellTramp = false;
eEffectType = None;
......@@ -1366,6 +1357,7 @@ public:
}
}
//create add to loot filters button
#ifndef EMU
if (gLootButton) {
CControlTemplate *btntemplate = (CControlTemplate*)pSidlMgr->FindScreenPieceTemplate("LF_CheckBoxTemplate");
CControlTemplate *labeltemplate = (CControlTemplate*)pSidlMgr->FindScreenPieceTemplate("IDW_ModButtonLabel");
......@@ -1464,6 +1456,7 @@ public:
labeltemplate->Font = oldfont;
}
}
#endif
//ok now create the lucy button
if (gLucyButton) {
if (CControlTemplate *btntemplate = (CControlTemplate*)pSidlMgr->FindScreenPieceTemplate("IDW_ModButton")) {
......
......@@ -273,7 +273,7 @@ BOOL dataLinkDB(PCHAR szIndex, MQ2TYPEVAR &Ret)
if (bReturnFilled)
NEXT_RESULT_POSITION(g_iLastResultPosition);
Ret.Type = pStringType;
Ret.Type = pStringType;
return true;
}
......@@ -526,17 +526,21 @@ static void StoreLink (const char * cLink)
static char * LinkExtract (char * cLink)
{
if (char * cTemp = _strdup(cLink)) {
char * cEnd = strchr(cTemp + START_LINKTEXT, '\x12');
int stlen = strlen(cTemp);
int iLen = 1;
if (stlen > START_LINKTEXT)
{
char * cEnd = strchr(cTemp + START_LINKTEXT, '\x12');
if (cEnd != NULL) {
*(cEnd + 1) = '\0';
iLen = strlen(cTemp);
if (cEnd != NULL) {
*(cEnd + 1) = '\0';
iLen = strlen(cTemp);
//WriteChatf ("MQ2LinkDB: Chat - %s", cTemp + 1);
//WriteChatf ("MQ2LinkDB: Chat - %s", cTemp + 1);
if (!FindLink(cTemp)) {
StoreLink(cTemp);
if (!FindLink(cTemp)) {
StoreLink(cTemp);
}
}
}
free(cTemp);
......
......@@ -1078,6 +1078,9 @@ FUNCTION_AT_ADDRESS(void CColorPickerWnd::UpdateEditWndFromSlider(class CSlider
#ifdef CColorPickerWnd__UpdateSliderFromEditWnd_x
FUNCTION_AT_ADDRESS(void CColorPickerWnd::UpdateSliderFromEditWnd(class CSliderWnd *,class CEditWnd *,int *),CColorPickerWnd__UpdateSliderFromEditWnd);
#endif
#ifdef CColorPickerWnd__Open_x
FUNCTION_AT_ADDRESS(int CColorPickerWnd::Open(CXWnd* pwndCaller, D3DCOLOR CurrentColor),CColorPickerWnd__Open);
#endif
#ifdef CCombatSkillsSelectWnd__ShouldDisplayThisSkill_x
FUNCTION_AT_ADDRESS(bool CCombatSkillsSelectWnd::ShouldDisplayThisSkill(int),CCombatSkillsSelectWnd__ShouldDisplayThisSkill);
#endif
......@@ -1184,7 +1187,7 @@ FUNCTION_AT_ADDRESS(void CHelpWnd::Activate(void),CHelpWnd__Activate);
FUNCTION_AT_ADDRESS(void CContainerWnd::HandleCombine(void),CContainerWnd__HandleCombine);
#endif
#ifdef CContainerWnd__SetContainer_x
FUNCTION_AT_ADDRESS(void CContainerWnd::SetContainer(class EQ_Container *,int),CContainerWnd__SetContainer);
FUNCTION_AT_ADDRESS(void CContainerWnd::SetContainer(PCONTENTS &pContainer, const ItemGlobalIndex& location),CContainerWnd__SetContainer);
#endif
#ifdef CContainerWnd__CheckCloseable_x
FUNCTION_AT_ADDRESS(void CContainerWnd::CheckCloseable(void),CContainerWnd__CheckCloseable);
......@@ -4547,7 +4550,7 @@ FUNCTION_AT_ADDRESS(int EQ_Character::GetFirstEffectSlot(bool),EQ_Character__Ge
FUNCTION_AT_ADDRESS(int EQ_Character::GetLastEffectSlot(bool),EQ_Character__GetLastEffectSlot);
#endif
#ifdef CharacterZoneClient__IsStackBlocked_x
#ifndef EMU
#if !defined(EMU)
FUNCTION_AT_ADDRESS(bool CharacterZoneClient::IsStackBlocked(const EQ_Spell *, CharacterZoneClient*, EQ_Affect*, int, bool), CharacterZoneClient__IsStackBlocked);
#else
FUNCTION_AT_ADDRESS(bool CharacterZoneClient::IsStackBlocked(const EQ_Spell *, CharacterZoneClient*, EQ_Affect*,int),CharacterZoneClient__IsStackBlocked);
......
......@@ -1446,27 +1446,50 @@ public:
//CCollisionInfoTargetVisibility(const CLineSegment& rLineSegment, const PlayerBase* pPlayerSelf, const PlayerBase* pPlayerOther);
EQLIB_OBJECT CCollisionInfoTargetVisibility::CCollisionInfoTargetVisibility(CLineSegment *rLineSegment, EQPlayer* pSelf, EQPlayer* pOther);
};
class CColorPickerWnd : public CSidlScreenWnd
class WndEventHandler2
{
public:
EQLIB_OBJECT CColorPickerWnd::CColorPickerWnd(class CXWnd *);
EQLIB_OBJECT void CColorPickerWnd::Activate(class CXWnd *,unsigned long);
UINT LastCheckTime;
EQLIB_OBJECT WndEventHandler2::WndEventHandler2();
EQLIB_OBJECT void WndEventHandler2::OnWndEvent(CXWnd *pwndSender)const;
};
class CColorPickerWnd : public CSidlScreenWnd, public WndEventHandler2
{
public:
int ContextMenuIndex;
int MaxSliderValue;
CXWnd * pwndCaller;
CButtonWnd * ColorButton[16];
int RedSliderValue;
CSliderWnd *RedSlider;
CEditWnd *RedSliderInputEdit;
int GreenSliderValue;
CSliderWnd *GreenSlider;
CEditWnd *GreenSliderInputEdit;
int BlueSliderValue;
CSliderWnd *BlueSlider;
CEditWnd *BlueSliderInputEdit;
CButtonWnd *AcceptButton;
EQLIB_OBJECT CColorPickerWnd::CColorPickerWnd(CXWnd *pwndParent);
EQLIB_OBJECT void CColorPickerWnd::Activate(CXWnd *,unsigned long);
EQLIB_OBJECT void CColorPickerWnd::CheckMaxEditWnd(void);
EQLIB_OBJECT void CColorPickerWnd::SetCurrentColor(unsigned long);
EQLIB_OBJECT void CColorPickerWnd::SetTemplateColor(int,unsigned long);
EQLIB_OBJECT void CColorPickerWnd::UpdateCurrentColor(void);
EQLIB_OBJECT void CColorPickerWnd::UpdateEditWndFromSlider(class CSliderWnd *,class CEditWnd *,int *);
EQLIB_OBJECT void CColorPickerWnd::UpdateSliderFromEditWnd(class CSliderWnd *,class CEditWnd *,int *);
// virtual
EQLIB_OBJECT CColorPickerWnd::~CColorPickerWnd(void);
EQLIB_OBJECT int CColorPickerWnd::WndNotification(class CXWnd *,unsigned __int32,void *);
//EQLIB_OBJECT void * CColorPickerWnd::`scalar deleting destructor'(unsigned int);
//EQLIB_OBJECT void * CColorPickerWnd::`vector deleting destructor'(unsigned int);
EQLIB_OBJECT void CColorPickerWnd::UpdateEditWndFromSlider(CSliderWnd *pSlider,class CEditWnd *pEdit,int *value);
EQLIB_OBJECT void CColorPickerWnd::UpdateSliderFromEditWnd(CSliderWnd *pSlider,class CEditWnd *pEdit,int *value);
EQLIB_OBJECT void CColorPickerWnd::Deactivate(void);
// private
EQLIB_OBJECT void CColorPickerWnd::Init(void);
EQLIB_OBJECT int CColorPickerWnd::Open(CXWnd* pwndCaller, D3DCOLOR CurrentColor = 0x00FFFFFF);
EQLIB_OBJECT virtual bool AboutToHide();
EQLIB_OBJECT virtual int WndNotification(CXWnd *pwndSender, UINT Msg, LPVOID pData);
EQLIB_OBJECT virtual void OnWndNotification();// {
//OnWndEvent((CXWnd *)this);
//}
};
class CCombatSkillsSelectWnd : public CSidlScreenWnd
{
public:
......@@ -1641,7 +1664,7 @@ public:
EQLIB_OBJECT CContainerWnd::CContainerWnd(class CXWnd *);
EQLIB_OBJECT void CContainerWnd::Activate(void);
EQLIB_OBJECT void CContainerWnd::CheckCloseable(void);
EQLIB_OBJECT void CContainerWnd::SetContainer(class EQ_Container *,int);
EQLIB_OBJECT void CContainerWnd::SetContainer(PCONTENTS &pContainer, const ItemGlobalIndex& location);
// virtual
EQLIB_OBJECT CContainerWnd::~CContainerWnd(void);
EQLIB_OBJECT int CContainerWnd::OnProcessFrame(void);
......@@ -2585,11 +2608,7 @@ EQLIB_OBJECT void CGemsGameWnd::Update(void);
EQLIB_OBJECT void CGemsGameWnd::UpdateDisplay(void);
EQLIB_OBJECT void CGemsGameWnd::WriteHighScores(void);
};
class WndEventHandler2
{
public:
UINT LastCheckTime;
};
class PopDialogHandler
{
public:
......@@ -3112,44 +3131,51 @@ public:
/****** CXwnd inherits ******/
CXW
/****** ButtonWnd inherits ******/
int MouseButtonState;
bool bPicture;
CRadioGroup *pGroup;
bool bChecked;
bool bMouseOverLastFrame;
tagPOINT DecalOffset;
tagSIZE DecalSize;
COLORREF DecalTint;
RECT TextOffsets;
int TextModeBits;
COLORREF Mouseover;
COLORREF Pressed;
COLORREF Disabled;
UINT CoolDownBeginTime;
UINT CoolDownDuration;
CXStr *Indicator;
UINT IndicatorVal;
void *pIndicatorTextObject;
/*0x01e8*/ int MouseButtonState;
/*0x01ec*/ bool bPicture;
/*0x01f0*/ CRadioGroup *pGroup;
/*0x01f4*/ bool bChecked;
/*0x01f5*/ bool bMouseOverLastFrame;
/*0x01f8*/ tagPOINT DecalOffset;
/*0x0200*/ tagSIZE DecalSize;
/*0x0208*/ COLORREF DecalTint;
/*0x020c*/ RECT TextOffsets;
/*0x021c*/ int TextModeBits;
/*0x0220*/ COLORREF Mouseover;
/*0x0224*/ COLORREF Pressed;
/*0x0228*/ COLORREF Disabled;
/*0x022c*/ UINT CoolDownBeginTime;
/*0x0230*/ UINT CoolDownDuration;
#if !defined(EMU)
/*0x0234*/ CXStr *Indicator;
/*0x0238*/ UINT IndicatorVal;
/*0x023c*/ void *pIndicatorTextObject;
#endif
/* CButtonDrawTemplate Start */
CXStr *Name;
CTextureAnimation *Normal;
CTextureAnimation *taPressed;
CTextureAnimation *Flyby;
CTextureAnimation *taDisabled;
CTextureAnimation *PressedFlyby;
CTextureAnimation *PressedDisabled;
CTextureAnimation *NormalDecal;
CTextureAnimation *PressedDecal;
CTextureAnimation *FlybyDecal;
CTextureAnimation *DisabledDecal;
CTextureAnimation *PressedFlybyDecal;
CTextureAnimation *PressedDisabledDecal;
bool bAllowButtonClickThrough;
bool bCoolDownDoDelayedStart;
bool bIsCheckbox;
bool bIsDrawLasso;
UINT ButtonStyle;
CLabel *pButtonLabel;
/*0x0240*/ CXStr *Name;
/*0x0244*/ CTextureAnimation *Normal;
/*0x0248*/ CTextureAnimation *taPressed;
/*0x024c*/ CTextureAnimation *Flyby;
/*0x0250*/ CTextureAnimation *taDisabled;
/*0x0254*/ CTextureAnimation *PressedFlyby;
/*0x0258*/ CTextureAnimation *PressedDisabled;
/*0x025c*/ CTextureAnimation *NormalDecal;
/*0x0260*/ CTextureAnimation *PressedDecal;
/*0x0264*/ CTextureAnimation *FlybyDecal;
/*0x0268*/ CTextureAnimation *DisabledDecal;
/*0x026c*/ CTextureAnimation *PressedFlybyDecal;
/*0x0270*/ CTextureAnimation *PressedDisabledDecal;
#if !defined(EMU)
/*0x0274*/ bool bAllowButtonClickThrough;
/*0x0275*/ bool bCoolDownDoDelayedStart;
#endif
/*0x0276*/ bool bIsCheckbox;
/*0x0277*/ bool bIsDrawLasso;
/*0x0278*/ UINT ButtonStyle;
#if !defined(EMU)
/*0x027c*/ CLabel *pButtonLabel;
#endif
/*0x0280*/
/****** CInvSlotWnd Start ******/
CTextureAnimation *pBackground;