#include "ui/game/CGGameUI.hpp" #include "client/Client.hpp" #include "object/Client.hpp" #include "ui/CScriptObject.hpp" #include "ui/FrameXML.hpp" #include "ui/Key.hpp" #include "ui/game/ActionBarScript.hpp" #include "ui/game/BattlefieldInfoScript.hpp" #include "ui/game/CGCharacterModelBase.hpp" #include "ui/game/CGCooldown.hpp" #include "ui/game/CGDressUpModelFrame.hpp" #include "ui/game/CGMinimapFrame.hpp" #include "ui/game/CGQuestPOIFrame.hpp" #include "ui/game/CGTabardModelFrame.hpp" #include "ui/game/CGTooltip.hpp" #include "ui/game/CGWorldFrame.hpp" #include "ui/game/CharacterInfoScript.hpp" #include "ui/game/GMTicketInfoScript.hpp" #include "ui/game/GameScript.hpp" #include "ui/game/ScriptEvents.hpp" #include "ui/game/TradeInfoScript.hpp" #include "ui/game/Types.hpp" #include "ui/game/UIBindingsScript.hpp" #include "ui/simple/CSimpleTop.hpp" #include "util/CStatus.hpp" #include WOWGUID CGGameUI::s_currentObjectTrack; uint32_t CGGameUI::s_cursorMoney; CScriptObject* CGGameUI::s_gameTooltip; bool CGGameUI::s_inWorld; WOWGUID CGGameUI::s_lockedTarget; bool CGGameUI::s_loggingIn; CSimpleTop* CGGameUI::s_simpleTop; void LoadScriptFunctions() { // TODO CGTooltip::CreateScriptMetaTable(); CGCooldown::CreateScriptMetaTable(); CGMinimapFrame::CreateScriptMetaTable(); CGCharacterModelBase::CreateScriptMetaTable(); CGDressUpModelFrame::CreateScriptMetaTable(); CGTabardModelFrame::CreateScriptMetaTable(); CGQuestPOIFrame::CreateScriptMetaTable(); GameScriptRegisterFunctions(); UIBindingsRegisterScriptFunctions(); // TODO ScriptEventsRegisterFunctions(); // TODO ActionBarRegisterScriptFunctions(); // TODO CharacterInfoRegisterScriptFunctions(); // TODO TradeInfoRegisterScriptFunctions(); // TODO BattlefieldInfoRegisterScriptFunctions(); // TODO GMTicketInfoRegisterScriptFunctions(); // TODO } void CGGameUI::EnterWorld() { if (CGGameUI::s_inWorld) { return; } CGGameUI::s_inWorld = true; // TODO if (CGGameUI::s_loggingIn) { CGGameUI::s_loggingIn = false; FrameScript_SignalEvent(SCRIPT_PLAYER_LOGIN, nullptr); // TODO CGLCD::Login(); } FrameScript_SignalEvent(SCRIPT_PLAYER_ENTERING_WORLD, nullptr); // TODO } WOWGUID& CGGameUI::GetCurrentObjectTrack() { return CGGameUI::s_currentObjectTrack; } uint32_t CGGameUI::GetCursorMoney() { return CGGameUI::s_cursorMoney; } WOWGUID& CGGameUI::GetLockedTarget() { return CGGameUI::s_lockedTarget; } void CGGameUI::Initialize() { // TODO CGGameUI::s_loggingIn = true; // TODO CGGameUI::s_simpleTop = STORM_NEW(CSimpleTop); // TODO LoadScriptFunctions(); ScriptEventsRegisterEvents(); // TODO CGGameUI::RegisterFrameFactories(); // TODO CStatus status; // TODO uint8_t digest1[16]; switch (FrameXML_CheckSignature("Interface\\FrameXML\\FrameXML.toc", "Interface\\FrameXML\\Bindings.xml", InterfaceKey, digest1)) { case 0: { status.Add(STATUS_WARNING, "FrameXML missing signature"); ClientPostClose(10); break; } case 1: { status.Add(STATUS_WARNING, "FrameXML has corrupt signature"); ClientPostClose(10); break; } case 2: { status.Add(STATUS_WARNING, "FrameXML is modified or corrupt"); ClientPostClose(10); break; } case 3: { // Success break; } default: { ClientPostClose(10); break; } } MD5_CTX md5; MD5Init(&md5); // TODO file count and progress bar logic FrameXML_FreeHashNodes(); FrameXML_CreateFrames("Interface\\FrameXML\\FrameXML.toc", nullptr, &md5, &status); // TODO CGUIBindings::s_bindings->Load("Interface\\FrameXML\\Bindings.xml", &md5, &status); uint8_t digest2[16]; MD5Final(digest2, &md5); // TODO digest validation // TODO CGGameUI::s_gameTooltip = CScriptObject::GetScriptObjectByName("GameTooltip", CGTooltip::GetObjectType()); STORM_ASSERT(CGGameUI::s_gameTooltip); // TODO if (ClntObjMgrGetActivePlayer()) { CGGameUI::EnterWorld(); } // TODO } void CGGameUI::InitializeGame() { // TODO CGGameUI::Initialize(); // TODO } bool CGGameUI::IsLoggingIn() { return CGGameUI::s_loggingIn; } int32_t CGGameUI::IsRaidMember(const WOWGUID& guid) { // TODO return false; } int32_t CGGameUI::IsRaidMemberOrPet(const WOWGUID& guid) { // TODO return false; } void CGGameUI::RegisterFrameFactories() { FrameXML_RegisterFactory("WorldFrame", &CGWorldFrame::Create, true); FrameXML_RegisterFactory("GameTooltip", &CGTooltip::Create, false); FrameXML_RegisterFactory("Cooldown", &CGCooldown::Create, false); FrameXML_RegisterFactory("Minimap", &CGMinimapFrame::Create, false); FrameXML_RegisterFactory("PlayerModel", &CGCharacterModelBase::Create, false); FrameXML_RegisterFactory("DressUpModel", &CGDressUpModelFrame::Create, false); FrameXML_RegisterFactory("TabardModel", &CGTabardModelFrame::Create, false); FrameXML_RegisterFactory("QuestPOIFrame", &CGQuestPOIFrame::Create, false); }