feat(gameui): add skeleton of CGTooltip class

This commit is contained in:
VDm 2025-08-04 00:59:36 +04:00
parent e8130aabe8
commit b291f47306
6 changed files with 149 additions and 67 deletions

View File

@ -5,6 +5,7 @@
#include "client/Client.hpp" #include "client/Client.hpp"
#include "gameui/CGWorldFrame.hpp" #include "gameui/CGWorldFrame.hpp"
#include "gameui/CGTooltip.hpp"
#include "gameui/GameScriptFunctions.hpp" #include "gameui/GameScriptFunctions.hpp"
#include "gx/Coordinate.hpp" #include "gx/Coordinate.hpp"
#include "gx/Device.hpp" #include "gx/Device.hpp"
@ -179,7 +180,7 @@ void CGGameUI::Initialize() {
void CGGameUI::RegisterFrameFactories() { void CGGameUI::RegisterFrameFactories() {
FrameXML_RegisterFactory("WorldFrame", CGWorldFrame::Create, 1); FrameXML_RegisterFactory("WorldFrame", CGWorldFrame::Create, 1);
//FrameXML_RegisterFactory("GameTooltip", (int)CGTooltip::Create, 0); FrameXML_RegisterFactory("GameTooltip", CGTooltip::Create, 0);
//FrameXML_RegisterFactory("Cooldown", (int)sub_51A380, 0); //FrameXML_RegisterFactory("Cooldown", (int)sub_51A380, 0);
//FrameXML_RegisterFactory("Minimap", (int)CGMinimapFrame::Create, 0); //FrameXML_RegisterFactory("Minimap", (int)CGMinimapFrame::Create, 0);
//FrameXML_RegisterFactory("PlayerModel", (int)CGCharacterModelBase::Create, 0); //FrameXML_RegisterFactory("PlayerModel", (int)CGCharacterModelBase::Create, 0);

11
src/gameui/CGTooltip.cpp Normal file
View File

@ -0,0 +1,11 @@
#include "gameui/CGTooltip.hpp"
CGTooltip::CGTooltip(CSimpleFrame* parent) : CSimpleFrame(parent) {
}
CSimpleFrame* CGTooltip::Create(CSimpleFrame* parent) {
// TODO: Data = CDataAllocator__GetData(0, ".?AVCGTooltip@@", -2);
auto m = SMemAlloc(sizeof(CGTooltip), __FILE__, __LINE__, 0);
return m ? (new (m) CGTooltip(parent)) : nullptr;
}

14
src/gameui/CGTooltip.hpp Normal file
View File

@ -0,0 +1,14 @@
#ifndef GAME_UI_CGTOOLTIP_HPP
#define GAME_UI_CGTOOLTIP_HPP
#include "ui/CSimpleFrame.hpp"
#include "ui/CSimpleTop.hpp"
class CGTooltip : public CSimpleFrame {
public:
CGTooltip(CSimpleFrame* parent);
static CSimpleFrame* Create(CSimpleFrame* parent);
};
#endif // GAME_UI_CGTOOLTIP_HPP

View File

@ -1604,67 +1604,67 @@ void LoadScriptFunctions() {
GameScript::s_ScriptFunctions_Game[i].method); GameScript::s_ScriptFunctions_Game[i].method);
} }
void UIBindingsRegisterScriptFunctions(); UIBindingsRegisterScriptFunctions();
void UIMacrosRegisterScriptFunctions(); UIMacrosRegisterScriptFunctions();
void InputControlRegisterScriptFunctions(); InputControlRegisterScriptFunctions();
void CameraRegisterScriptFunctions(); CameraRegisterScriptFunctions();
void SoundRegisterScriptFunctions(); SoundRegisterScriptFunctions();
void SpellRegisterScriptFunctions(); SpellRegisterScriptFunctions();
void ScriptEventsRegisterFunctions(); ScriptEventsRegisterFunctions();
void MinimapRegisterScriptFunctions(); MinimapRegisterScriptFunctions();
void UnitCombatLogRegisterScriptFunctions(); UnitCombatLogRegisterScriptFunctions();
void ActionBarRegisterScriptFunctions(); ActionBarRegisterScriptFunctions();
void PartyInfoRegisterScriptFunctions(); PartyInfoRegisterScriptFunctions();
void ChatRegisterScriptFunctions(); ChatRegisterScriptFunctions();
void AutoCompleteRegisterScriptFunctions(); AutoCompleteRegisterScriptFunctions();
void SpellBookRegisterScriptFunctions(); SpellBookRegisterScriptFunctions();
void CharacterInfoRegisterScriptFunctions(); CharacterInfoRegisterScriptFunctions();
void LootInfoRegisterScriptFunctions(); LootInfoRegisterScriptFunctions();
void ItemTextRegisterScriptFunctions(); ItemTextRegisterScriptFunctions();
void GossipInfoRegisterScriptFunctions(); GossipInfoRegisterScriptFunctions();
void QuestInfoRegisterScriptFunctions(); QuestInfoRegisterScriptFunctions();
void QuestLogRegisterScriptFunctions(); QuestLogRegisterScriptFunctions();
void CGTaxiMapRegisterScriptFunctions(); CGTaxiMapRegisterScriptFunctions();
void ClassTrainerRegisterScriptFunctions(); ClassTrainerRegisterScriptFunctions();
void TradeSkillRegisterScriptFunctions(); TradeSkillRegisterScriptFunctions();
void MerchantRegisterScriptFunctions(); MerchantRegisterScriptFunctions();
void TradeInfoRegisterScriptFunctions(); TradeInfoRegisterScriptFunctions();
void ContainerRegisterScriptFunctions(); ContainerRegisterScriptFunctions();
void BankRegisterScriptFunctions(); BankRegisterScriptFunctions();
void FriendListRegisterScriptFunctions(); FriendListRegisterScriptFunctions();
void PetInfoRegisterScriptFunctions(); PetInfoRegisterScriptFunctions();
void WorldMapRegisterScriptFunctions(); WorldMapRegisterScriptFunctions();
void ReputationInfoRegisterScriptFunctions(); ReputationInfoRegisterScriptFunctions();
void TabardCreationRegisterScriptFunctions(); TabardCreationRegisterScriptFunctions();
void GuildRegistrarRegisterScriptFunctions(); GuildRegistrarRegisterScriptFunctions();
void DuelInfoRegisterScriptFunctions(); DuelInfoRegisterScriptFunctions();
void TutorialRegisterScriptFunctions(); TutorialRegisterScriptFunctions();
void PetitionInfoRegisterScriptFunctions(); PetitionInfoRegisterScriptFunctions();
void SkillInfoRegisterScriptFunctions(); SkillInfoRegisterScriptFunctions();
void GuildInfoRegisterScriptFunctions(); GuildInfoRegisterScriptFunctions();
void MailInfoRegisterScriptFunctions(); MailInfoRegisterScriptFunctions();
void BattlefieldInfoRegisterScriptFunctions(); BattlefieldInfoRegisterScriptFunctions();
void TalentInfoRegisterScriptFunctions(); TalentInfoRegisterScriptFunctions();
void AuctionHouseRegisterScriptFunctions(); AuctionHouseRegisterScriptFunctions();
void StableInfoRegisterScriptFunctions(); StableInfoRegisterScriptFunctions();
void RaidInfoRegisterScriptFunctions(); RaidInfoRegisterScriptFunctions();
void WorldStateInfoRegisterScriptFunctions(); WorldStateInfoRegisterScriptFunctions();
void MinigameInfoRegisterScriptFunctions(); MinigameInfoRegisterScriptFunctions();
void KnowledgeBaseRegisterScriptFunctions(); KnowledgeBaseRegisterScriptFunctions();
void ItemSocketInfoRegisterScriptFunctions(); ItemSocketInfoRegisterScriptFunctions();
void PetitionVendorRegisterScriptFunctions(); PetitionVendorRegisterScriptFunctions();
void ArenaTeamInfoRegisterScriptFunctions(); ArenaTeamInfoRegisterScriptFunctions();
void LookingForGroupRegisterScriptFunctions(); LookingForGroupRegisterScriptFunctions();
void VoiceRegisterScriptFunctions(); VoiceRegisterScriptFunctions();
void CalendarRegisterScriptFunctions(); CalendarRegisterScriptFunctions();
void CGCommentatorRegisterScriptFunctions(); CGCommentatorRegisterScriptFunctions();
void CGBarberShopRegisterScriptFunctions(); CGBarberShopRegisterScriptFunctions();
void CGDanceStudioRegisterScriptFunctions(); CGDanceStudioRegisterScriptFunctions();
void GuildBankRegisterScriptFunctions(); GuildBankRegisterScriptFunctions();
void GlyphInfoRegisterScriptFunctions(); GlyphInfoRegisterScriptFunctions();
void AchievementInfoRegisterScriptFunctions(); AchievementInfoRegisterScriptFunctions();
void CurrencyTypesRegisterScriptFunctions(); CurrencyTypesRegisterScriptFunctions();
void EquipmentManagerRegisterScriptFunctions(); EquipmentManagerRegisterScriptFunctions();
void GMTicketInfoRegisterScriptFunctions(); GMTicketInfoRegisterScriptFunctions();
void BattlenetUIRegisterScriptFunctions(); BattlenetUIRegisterScriptFunctions();
} }

View File

@ -13,7 +13,8 @@ struct lua_State;
#define NUM_SCRIPT_FUNCTIONS_CAMERA 22 #define NUM_SCRIPT_FUNCTIONS_CAMERA 22
#define NUM_SCRIPT_FUNCTIONS_SOUND 23 #define NUM_SCRIPT_FUNCTIONS_SOUND 23
#define NUM_SCRIPT_FUNCTIONS_SPELL 11 #define NUM_SCRIPT_FUNCTIONS_SPELL 11
#define NUM_SCRIPT_FUNCTIONS_SCRIPT_EVENTS 169 #define NUM_SCRIPT_FUNCTIONS_SCRIPT_EVENTS 7
#define NUM_SCRIPT_FUNCTIONS_SCRIPT_EVENTS_UNIT 169
#define NUM_SCRIPT_FUNCTIONS_MINIMAP 4 #define NUM_SCRIPT_FUNCTIONS_MINIMAP 4
#define NUM_SCRIPT_FUNCTIONS_UNIT_COMBAT_LOG 11 #define NUM_SCRIPT_FUNCTIONS_UNIT_COMBAT_LOG 11
#define NUM_SCRIPT_FUNCTIONS_ACTION_BAR 28 #define NUM_SCRIPT_FUNCTIONS_ACTION_BAR 28
@ -80,6 +81,7 @@ namespace GameScript {
extern FrameScript_Method s_ScriptFunctions_Sound[NUM_SCRIPT_FUNCTIONS_SOUND]; extern FrameScript_Method s_ScriptFunctions_Sound[NUM_SCRIPT_FUNCTIONS_SOUND];
extern FrameScript_Method s_ScriptFunctions_Spell[NUM_SCRIPT_FUNCTIONS_SPELL]; extern FrameScript_Method s_ScriptFunctions_Spell[NUM_SCRIPT_FUNCTIONS_SPELL];
extern FrameScript_Method s_ScriptFunctions_ScriptEvents[NUM_SCRIPT_FUNCTIONS_SCRIPT_EVENTS]; extern FrameScript_Method s_ScriptFunctions_ScriptEvents[NUM_SCRIPT_FUNCTIONS_SCRIPT_EVENTS];
extern FrameScript_Method s_ScriptFunctions_ScriptEventsUnit[NUM_SCRIPT_FUNCTIONS_SCRIPT_EVENTS_UNIT];
extern FrameScript_Method s_ScriptFunctions_Minimap[NUM_SCRIPT_FUNCTIONS_MINIMAP]; extern FrameScript_Method s_ScriptFunctions_Minimap[NUM_SCRIPT_FUNCTIONS_MINIMAP];
extern FrameScript_Method s_ScriptFunctions_UnitCombatLog[NUM_SCRIPT_FUNCTIONS_UNIT_COMBAT_LOG]; extern FrameScript_Method s_ScriptFunctions_UnitCombatLog[NUM_SCRIPT_FUNCTIONS_UNIT_COMBAT_LOG];
extern FrameScript_Method s_ScriptFunctions_ActionBar[NUM_SCRIPT_FUNCTIONS_ACTION_BAR]; extern FrameScript_Method s_ScriptFunctions_ActionBar[NUM_SCRIPT_FUNCTIONS_ACTION_BAR];

View File

@ -2,6 +2,39 @@
#include "ui/FrameScript.hpp" #include "ui/FrameScript.hpp"
#include "util/Lua.hpp" #include "util/Lua.hpp"
#include "util/Unimplemented.hpp" #include "util/Unimplemented.hpp"
#include <common/Time.hpp>
static int32_t Script_GetTime(lua_State* L) {
lua_pushnumber(L, static_cast<double>(OsGetAsyncTimeMs()) * 0.001);
return 1;
}
static int32_t Script_GetGameTime(lua_State* L) {
// TODO
lua_pushnumber(L, 1.0);
lua_pushnumber(L, 1.0);
return 2;
}
static int32_t Script_ConsoleExec(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_ReadFile(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_DeleteFile(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_AppendToFile(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_GetAccountExpansionLevel(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_UnitExists(lua_State* L) { static int32_t Script_UnitExists(lua_State* L) {
WHOA_UNIMPLEMENTED(0); WHOA_UNIMPLEMENTED(0);
@ -16,7 +49,10 @@ static int32_t Script_UnitIsUnit(lua_State* L) {
} }
static int32_t Script_UnitIsPlayer(lua_State* L) { static int32_t Script_UnitIsPlayer(lua_State* L) {
WHOA_UNIMPLEMENTED(0); // TODO
__debugbreak();
lua_pushnil(L);
return 1;
} }
static int32_t Script_UnitIsInMyGuild(lua_State* L) { static int32_t Script_UnitIsInMyGuild(lua_State* L) {
@ -208,7 +244,9 @@ static int32_t Script_UnitSex(lua_State* L) {
} }
static int32_t Script_UnitLevel(lua_State* L) { static int32_t Script_UnitLevel(lua_State* L) {
WHOA_UNIMPLEMENTED(0); // TODO
lua_pushnumber(L, 1.0);
return 1;
} }
static int32_t Script_GetMoney(lua_State* L) { static int32_t Script_GetMoney(lua_State* L) {
@ -686,9 +724,25 @@ void ScriptEventsRegisterFunctions() {
GameScript::s_ScriptFunctions_ScriptEvents[i].name, GameScript::s_ScriptFunctions_ScriptEvents[i].name,
GameScript::s_ScriptFunctions_ScriptEvents[i].method); GameScript::s_ScriptFunctions_ScriptEvents[i].method);
} }
for (int32_t i = 0; i < NUM_SCRIPT_FUNCTIONS_SCRIPT_EVENTS_UNIT; ++i) {
FrameScript_RegisterFunction(
GameScript::s_ScriptFunctions_ScriptEventsUnit[i].name,
GameScript::s_ScriptFunctions_ScriptEventsUnit[i].method);
}
} }
FrameScript_Method GameScript::s_ScriptFunctions_ScriptEvents[NUM_SCRIPT_FUNCTIONS_SCRIPT_EVENTS] = { FrameScript_Method GameScript::s_ScriptFunctions_ScriptEvents[NUM_SCRIPT_FUNCTIONS_SCRIPT_EVENTS] = {
{ "GetTime", &Script_GetTime },
{ "GetGameTime", &Script_GetGameTime },
{ "ConsoleExec", &Script_ConsoleExec },
{ "ReadFile", &Script_ReadFile },
{ "DeleteFile", &Script_DeleteFile },
{ "AppendToFile", &Script_AppendToFile },
{ "GetAccountExpansionLevel", &Script_GetAccountExpansionLevel },
};
FrameScript_Method GameScript::s_ScriptFunctions_ScriptEventsUnit[NUM_SCRIPT_FUNCTIONS_SCRIPT_EVENTS_UNIT] = {
{ "UnitExists", &Script_UnitExists }, { "UnitExists", &Script_UnitExists },
{ "UnitIsVisible", &Script_UnitIsVisible }, { "UnitIsVisible", &Script_UnitIsVisible },
{ "UnitIsUnit", &Script_UnitIsUnit }, { "UnitIsUnit", &Script_UnitIsUnit },