feat(gameui): add CGTooltipScript methods

This commit is contained in:
VDm 2025-08-04 18:23:14 +04:00
parent b291f47306
commit 6f5d3662b6
5 changed files with 411 additions and 9 deletions

View File

@ -1,11 +1,29 @@
#include "gameui/CGTooltip.hpp"
#include "gameui/CGTooltipScript.hpp"
#include <bc/Memory.hpp>
CGTooltip::CGTooltip(CSimpleFrame* parent) : CSimpleFrame(parent) {
}
int32_t CGTooltip::s_metatable;
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;
return NEW(CGTooltip, parent);
}
void CGTooltip::CreateScriptMetaTable() {
lua_State* L = FrameScript_GetContext();
int32_t ref = FrameScript_Object::CreateScriptMetaTable(L, &CGTooltip::RegisterScriptMethods);
CGTooltip::s_metatable = ref;
}
void CGTooltip::RegisterScriptMethods(lua_State* L) {
CSimpleFrame::RegisterScriptMethods(L);
FrameScript_Object::FillScriptMethodTable(L, CGTooltipMethods, NUM_CGTOOLTIP_SCRIPT_METHODS);
}
int32_t CGTooltip::GetScriptMetaTable() {
return CGTooltip::s_metatable;
}
CGTooltip::CGTooltip(CSimpleFrame* parent)
: CSimpleFrame(parent) {
}

View File

@ -6,9 +6,19 @@
class CGTooltip : public CSimpleFrame {
public:
CGTooltip(CSimpleFrame* parent);
// Static variables
static int32_t s_metatable;
// Static functions
static CSimpleFrame* Create(CSimpleFrame* parent);
static void CreateScriptMetaTable();
static void RegisterScriptMethods(lua_State* L);
// Virtual member functions
virtual int32_t GetScriptMetaTable();
// Member functions
CGTooltip(CSimpleFrame* parent);
};
#endif // GAME_UI_CGTOOLTIP_HPP

View File

@ -0,0 +1,352 @@
#include "gameui/CGTooltipScript.hpp"
#include "util/Lua.hpp"
#include "util/Unimplemented.hpp"
static int32_t Script_AddFontStrings(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetMinimumWidth(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_GetMinimumWidth(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetPadding(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_GetPadding(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_IsOwned(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_GetOwner(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetOwner(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_GetAnchorType(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetAnchorType(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_ClearLines(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_AddLine(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_AddDoubleLine(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_AddTexture(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetText(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_AppendText(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_FadeOut(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetHyperlink(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetAction(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetPetAction(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetShapeshift(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetPossession(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetTracking(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetSpell(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetSpellByID(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetGlyph(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetInventoryItem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetLootItem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetQuestItem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetQuestLogItem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetTrainerService(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetTradeSkillItem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetMerchantItem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetMerchantCostItem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetTradePlayerItem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetTradeTargetItem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetBagItem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetUnit(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetUnitBuff(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetUnitDebuff(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetUnitAura(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetTalent(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetSendMailItem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetInboxItem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetAuctionSellItem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetAuctionItem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_NumLines(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetQuestRewardSpell(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetQuestLogRewardSpell(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetHyperlinkCompareItem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetBuybackItem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetLootRollItem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetSocketedItem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetSocketGem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetExistingSocketGem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetGuildBankItem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_IsUnit(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_GetUnit(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_GetItem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_GetSpell(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetTotem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetCurrencyToken(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetBackpackToken(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_IsEquippedItem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetQuestLogSpecialItem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetEquipmentSet(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetFrameStack(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetLFGDungeonReward(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static int32_t Script_SetLFGCompletionReward(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
FrameScript_Method CGTooltipMethods[NUM_CGTOOLTIP_SCRIPT_METHODS] = {
{ "AddFontStrings", &Script_AddFontStrings },
{ "SetMinimumWidth", &Script_SetMinimumWidth },
{ "GetMinimumWidth", &Script_GetMinimumWidth },
{ "SetPadding", &Script_SetPadding },
{ "GetPadding", &Script_GetPadding },
{ "IsOwned", &Script_IsOwned },
{ "GetOwner", &Script_GetOwner },
{ "SetOwner", &Script_SetOwner },
{ "GetAnchorType", &Script_GetAnchorType },
{ "SetAnchorType", &Script_SetAnchorType },
{ "ClearLines", &Script_ClearLines },
{ "AddLine", &Script_AddLine },
{ "AddDoubleLine", &Script_AddDoubleLine },
{ "AddTexture", &Script_AddTexture },
{ "SetText", &Script_SetText },
{ "AppendText", &Script_AppendText },
{ "FadeOut", &Script_FadeOut },
{ "SetHyperlink", &Script_SetHyperlink },
{ "SetAction", &Script_SetAction },
{ "SetPetAction", &Script_SetPetAction },
{ "SetShapeshift", &Script_SetShapeshift },
{ "SetPossession", &Script_SetPossession },
{ "SetTracking", &Script_SetTracking },
{ "SetSpell", &Script_SetSpell },
{ "SetSpellByID", &Script_SetSpellByID },
{ "SetGlyph", &Script_SetGlyph },
{ "SetInventoryItem", &Script_SetInventoryItem },
{ "SetLootItem", &Script_SetLootItem },
{ "SetQuestItem", &Script_SetQuestItem },
{ "SetQuestLogItem", &Script_SetQuestLogItem },
{ "SetTrainerService", &Script_SetTrainerService },
{ "SetTradeSkillItem", &Script_SetTradeSkillItem },
{ "SetMerchantItem", &Script_SetMerchantItem },
{ "SetMerchantCostItem", &Script_SetMerchantCostItem },
{ "SetTradePlayerItem", &Script_SetTradePlayerItem },
{ "SetTradeTargetItem", &Script_SetTradeTargetItem },
{ "SetBagItem", &Script_SetBagItem },
{ "SetUnit", &Script_SetUnit },
{ "SetUnitBuff", &Script_SetUnitBuff },
{ "SetUnitDebuff", &Script_SetUnitDebuff },
{ "SetUnitAura", &Script_SetUnitAura },
{ "SetTalent", &Script_SetTalent },
{ "SetSendMailItem", &Script_SetSendMailItem },
{ "SetInboxItem", &Script_SetInboxItem },
{ "SetAuctionSellItem", &Script_SetAuctionSellItem },
{ "SetAuctionItem", &Script_SetAuctionItem },
{ "NumLines", &Script_NumLines },
{ "SetQuestRewardSpell", &Script_SetQuestRewardSpell },
{ "SetQuestLogRewardSpell", &Script_SetQuestLogRewardSpell },
{ "SetHyperlinkCompareItem", &Script_SetHyperlinkCompareItem },
{ "SetBuybackItem", &Script_SetBuybackItem },
{ "SetLootRollItem", &Script_SetLootRollItem },
{ "SetSocketedItem", &Script_SetSocketedItem },
{ "SetSocketGem", &Script_SetSocketGem },
{ "SetExistingSocketGem", &Script_SetExistingSocketGem },
{ "SetGuildBankItem", &Script_SetGuildBankItem },
{ "IsUnit", &Script_IsUnit },
{ "GetUnit", &Script_GetUnit },
{ "GetItem", &Script_GetItem },
{ "GetSpell", &Script_GetSpell },
{ "SetTotem", &Script_SetTotem },
{ "SetCurrencyToken", &Script_SetCurrencyToken },
{ "SetBackpackToken", &Script_SetBackpackToken },
{ "IsEquippedItem", &Script_IsEquippedItem },
{ "SetQuestLogSpecialItem", &Script_SetQuestLogSpecialItem },
{ "SetEquipmentSet", &Script_SetEquipmentSet },
{ "SetFrameStack", &Script_SetFrameStack },
{ "SetLFGDungeonReward", &Script_SetLFGDungeonReward },
{ "SetLFGCompletionReward", &Script_SetLFGCompletionReward }
};

View File

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

View File

@ -1,5 +1,6 @@
#include "gameui/GameScriptFunctions.hpp"
#include "gameui/CGGameUI.hpp"
#include "gameui/CGTooltip.hpp"
#include "ui/FrameXML.hpp"
#include "ui/FrameScript.hpp"
#include "util/Lua.hpp"
@ -105,7 +106,9 @@ static int32_t Script_Screenshot(lua_State* L) {
}
static int32_t Script_GetFramerate(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
// TODO: v1 = sub_77F440();
lua_pushnumber(L, 60.0);
return 1;
}
static int32_t Script_TogglePerformanceDisplay(lua_State* L) {
@ -626,7 +629,13 @@ static int32_t Script_GetCursorPosition(lua_State* L) {
}
static int32_t Script_GetNetStats(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
// v1 = ClientServices__Connection();
// NetClient__GetNetStats(v1, &v5, &v4, (int*)&v3);
// TODO:
lua_pushnumber(L, 0.0);
lua_pushnumber(L, 0.0);
lua_pushnumber(L, 0.0);
return 3;
}
static int32_t Script_SitStandOrDescendStart(lua_State* L) {
@ -949,7 +958,9 @@ static int32_t Script_IsItemInRange(lua_State* L) {
}
static int32_t Script_GetNumAddOns(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
// TODO: v2 = (double)(unsigned int)sub_5F4FF0(v1);
lua_pushnumber(L, 0.0);
return 1;
}
static int32_t Script_GetAddOnInfo(lua_State* L) {
@ -1595,6 +1606,7 @@ FrameScript_Method GameScript::s_ScriptFunctions_Game[NUM_SCRIPT_FUNCTIONS_GAME]
void LoadScriptFunctions() {
RegisterSimpleFrameScriptMethods();
CGTooltip::CreateScriptMetaTable();
// TODO