feat(ui): add CGTooltip::CreateScriptMetaTable

This commit is contained in:
fallenoak 2026-01-27 18:45:52 -06:00
parent ac0930497c
commit 1334d1407c
No known key found for this signature in database
GPG Key ID: 7628F8E61AEA070D
5 changed files with 384 additions and 0 deletions

View File

@ -18,6 +18,10 @@ CSimpleTop* CGGameUI::s_simpleTop;
void LoadScriptFunctions() { void LoadScriptFunctions() {
// TODO // TODO
CGTooltip::CreateScriptMetaTable();
// TODO
GameScriptRegisterFunctions(); GameScriptRegisterFunctions();
// TODO // TODO

View File

@ -1,5 +1,7 @@
#include "ui/game/CGTooltip.hpp" #include "ui/game/CGTooltip.hpp"
#include "ui/game/CGTooltipScript.hpp"
int32_t CGTooltip::s_metatable;
int32_t CGTooltip::s_objectType; int32_t CGTooltip::s_objectType;
CSimpleFrame* CGTooltip::Create(CSimpleFrame* parent) { CSimpleFrame* CGTooltip::Create(CSimpleFrame* parent) {
@ -8,6 +10,11 @@ CSimpleFrame* CGTooltip::Create(CSimpleFrame* parent) {
return STORM_NEW(CGTooltip)(parent); return STORM_NEW(CGTooltip)(parent);
} }
void CGTooltip::CreateScriptMetaTable() {
auto L = FrameScript_GetContext();
CGTooltip::s_metatable = FrameScript_Object::CreateScriptMetaTable(L, &CGTooltip::RegisterScriptMethods);
}
int32_t CGTooltip::GetObjectType() { int32_t CGTooltip::GetObjectType() {
if (!CGTooltip::s_objectType) { if (!CGTooltip::s_objectType) {
CGTooltip::s_objectType = ++FrameScript_Object::s_objectTypes; CGTooltip::s_objectType = ++FrameScript_Object::s_objectTypes;
@ -16,6 +23,11 @@ int32_t CGTooltip::GetObjectType() {
return CGTooltip::s_objectType; return CGTooltip::s_objectType;
} }
void CGTooltip::RegisterScriptMethods(lua_State* L) {
CSimpleFrame::RegisterScriptMethods(L);
FrameScript_Object::FillScriptMethodTable(L, CGTooltipMethods, NUM_CG_TOOLTIP_SCRIPT_METHODS);
}
CGTooltip::CGTooltip(CSimpleFrame* parent) : CSimpleFrame(parent) { CGTooltip::CGTooltip(CSimpleFrame* parent) : CSimpleFrame(parent) {
// TODO // TODO
} }

View File

@ -6,11 +6,14 @@
class CGTooltip : public CSimpleFrame { class CGTooltip : public CSimpleFrame {
public: public:
// Static variables // Static variables
static int32_t s_metatable;
static int32_t s_objectType; static int32_t s_objectType;
// Static functions // Static functions
static CSimpleFrame* Create(CSimpleFrame* parent); static CSimpleFrame* Create(CSimpleFrame* parent);
static void CreateScriptMetaTable();
static int32_t GetObjectType(); static int32_t GetObjectType();
static void RegisterScriptMethods(lua_State* L);
// Member variables // Member variables
// TODO // TODO

View File

@ -0,0 +1,355 @@
#include "ui/game/CGTooltipScript.hpp"
#include "ui/FrameScript.hpp"
#include "util/Unimplemented.hpp"
namespace {
int32_t CGTooltip_AddFontStrings(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_SetMinimumWidth(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_GetMinimumWidth(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_SetPadding(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_GetPadding(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_IsOwned(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_GetOwner(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_SetOwner(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_GetAnchorType(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_SetAnchorType(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_ClearLines(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_AddLine(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_AddDoubleLine(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_AddTexture(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_SetText(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_AppendText(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_FadeOut(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_SetHyperlink(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_SetAction(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_SetPetAction(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_SetShapeshift(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_SetPossession(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_SetTracking(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_SetSpell(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_SetSpellByID(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_SetGlyph(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_SetInventoryItem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_SetLootItem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_SetQuestItem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_SetQuestLogItem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_SetTrainerService(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_SetTradeSkillItem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_SetMerchantItem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_SetMerchantCostItem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_SetTradePlayerItem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_SetTradeTargetItem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_SetBagItem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_SetUnit(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_SetUnitBuff(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_SetUnitDebuff(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_SetUnitAura(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_SetTalent(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_SetSendMailItem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_SetInboxItem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_SetAuctionSellItem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_SetAuctionItem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_NumLines(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_SetQuestRewardSpell(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_SetQuestLogRewardSpell(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_SetHyperlinkCompareItem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_SetBuybackItem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_SetLootRollItem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_SetSocketedItem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_SetSocketGem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_SetExistingSocketGem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_SetGuildBankItem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_IsUnit(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_GetUnit(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_GetItem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_GetSpell(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_SetTotem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_SetCurrencyToken(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_SetBackpackToken(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_IsEquippedItem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_SetQuestLogSpecialItem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_SetEquipmentSet(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_SetFrameStack(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_SetLFGDungeonReward(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t CGTooltip_SetLFGCompletionReward(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
}
FrameScript_Method CGTooltipMethods[] = {
{ "AddFontStrings", &CGTooltip_AddFontStrings },
{ "SetMinimumWidth", &CGTooltip_SetMinimumWidth },
{ "GetMinimumWidth", &CGTooltip_GetMinimumWidth },
{ "SetPadding", &CGTooltip_SetPadding },
{ "GetPadding", &CGTooltip_GetPadding },
{ "IsOwned", &CGTooltip_IsOwned },
{ "GetOwner", &CGTooltip_GetOwner },
{ "SetOwner", &CGTooltip_SetOwner },
{ "GetAnchorType", &CGTooltip_GetAnchorType },
{ "SetAnchorType", &CGTooltip_SetAnchorType },
{ "ClearLines", &CGTooltip_ClearLines },
{ "AddLine", &CGTooltip_AddLine },
{ "AddDoubleLine", &CGTooltip_AddDoubleLine },
{ "AddTexture", &CGTooltip_AddTexture },
{ "SetText", &CGTooltip_SetText },
{ "AppendText", &CGTooltip_AppendText },
{ "FadeOut", &CGTooltip_FadeOut },
{ "SetHyperlink", &CGTooltip_SetHyperlink },
{ "SetAction", &CGTooltip_SetAction },
{ "SetPetAction", &CGTooltip_SetPetAction },
{ "SetShapeshift", &CGTooltip_SetShapeshift },
{ "SetPossession", &CGTooltip_SetPossession },
{ "SetTracking", &CGTooltip_SetTracking },
{ "SetSpell", &CGTooltip_SetSpell },
{ "SetSpellByID", &CGTooltip_SetSpellByID },
{ "SetGlyph", &CGTooltip_SetGlyph },
{ "SetInventoryItem", &CGTooltip_SetInventoryItem },
{ "SetLootItem", &CGTooltip_SetLootItem },
{ "SetQuestItem", &CGTooltip_SetQuestItem },
{ "SetQuestLogItem", &CGTooltip_SetQuestLogItem },
{ "SetTrainerService", &CGTooltip_SetTrainerService },
{ "SetTradeSkillItem", &CGTooltip_SetTradeSkillItem },
{ "SetMerchantItem", &CGTooltip_SetMerchantItem },
{ "SetMerchantCostItem", &CGTooltip_SetMerchantCostItem },
{ "SetTradePlayerItem", &CGTooltip_SetTradePlayerItem },
{ "SetTradeTargetItem", &CGTooltip_SetTradeTargetItem },
{ "SetBagItem", &CGTooltip_SetBagItem },
{ "SetUnit", &CGTooltip_SetUnit },
{ "SetUnitBuff", &CGTooltip_SetUnitBuff },
{ "SetUnitDebuff", &CGTooltip_SetUnitDebuff },
{ "SetUnitAura", &CGTooltip_SetUnitAura },
{ "SetTalent", &CGTooltip_SetTalent },
{ "SetSendMailItem", &CGTooltip_SetSendMailItem },
{ "SetInboxItem", &CGTooltip_SetInboxItem },
{ "SetAuctionSellItem", &CGTooltip_SetAuctionSellItem },
{ "SetAuctionItem", &CGTooltip_SetAuctionItem },
{ "NumLines", &CGTooltip_NumLines },
{ "SetQuestRewardSpell", &CGTooltip_SetQuestRewardSpell },
{ "SetQuestLogRewardSpell", &CGTooltip_SetQuestLogRewardSpell },
{ "SetHyperlinkCompareItem", &CGTooltip_SetHyperlinkCompareItem },
{ "SetBuybackItem", &CGTooltip_SetBuybackItem },
{ "SetLootRollItem", &CGTooltip_SetLootRollItem },
{ "SetSocketedItem", &CGTooltip_SetSocketedItem },
{ "SetSocketGem", &CGTooltip_SetSocketGem },
{ "SetExistingSocketGem", &CGTooltip_SetExistingSocketGem },
{ "SetGuildBankItem", &CGTooltip_SetGuildBankItem },
{ "IsUnit", &CGTooltip_IsUnit },
{ "GetUnit", &CGTooltip_GetUnit },
{ "GetItem", &CGTooltip_GetItem },
{ "GetSpell", &CGTooltip_GetSpell },
{ "SetTotem", &CGTooltip_SetTotem },
{ "SetCurrencyToken", &CGTooltip_SetCurrencyToken },
{ "SetBackpackToken", &CGTooltip_SetBackpackToken },
{ "IsEquippedItem", &CGTooltip_IsEquippedItem },
{ "SetQuestLogSpecialItem", &CGTooltip_SetQuestLogSpecialItem },
{ "SetEquipmentSet", &CGTooltip_SetEquipmentSet },
{ "SetFrameStack", &CGTooltip_SetFrameStack },
{ "SetLFGDungeonReward", &CGTooltip_SetLFGDungeonReward },
{ "SetLFGCompletionReward", &CGTooltip_SetLFGCompletionReward },
};

View File

@ -0,0 +1,10 @@
#ifndef UI_GAME_C_G_TOOLTIP_SCRIPT_HPP
#define UI_GAME_C_G_TOOLTIP_SCRIPT_HPP
#include "ui/Types.hpp"
#define NUM_CG_TOOLTIP_SCRIPT_METHODS 69
extern FrameScript_Method CGTooltipMethods[NUM_CG_TOOLTIP_SCRIPT_METHODS];
#endif