From 8c442f5a829c0a03a847b605cf514be43585ebbe Mon Sep 17 00:00:00 2001 From: VDm Date: Tue, 5 Aug 2025 20:09:13 +0400 Subject: [PATCH] feat(gameui): add skeletons of Game UI classes --- src/gameui/CGCharacterModelBase.cpp | 29 ++++++++ src/gameui/CGCharacterModelBase.hpp | 24 +++++++ src/gameui/CGCharacterModelBaseScript.cpp | 27 ++++++++ src/gameui/CGCharacterModelBaseScript.hpp | 10 +++ src/gameui/CGCooldown.cpp | 29 ++++++++ src/gameui/CGCooldown.hpp | 24 +++++++ src/gameui/CGCooldownScript.cpp | 32 +++++++++ src/gameui/CGCooldownScript.hpp | 10 +++ src/gameui/CGDressUpModelFrame.cpp | 29 ++++++++ src/gameui/CGDressUpModelFrame.hpp | 24 +++++++ src/gameui/CGDressUpModelFrameScript.cpp | 22 ++++++ src/gameui/CGDressUpModelFrameScript.hpp | 10 +++ src/gameui/CGGameUI.cpp | 20 ++++-- src/gameui/CGMinimapFrame.cpp | 29 ++++++++ src/gameui/CGMinimapFrame.hpp | 24 +++++++ src/gameui/CGMinimapFrameScript.cpp | 82 +++++++++++++++++++++++ src/gameui/CGMinimapFrameScript.hpp | 10 +++ src/gameui/CGQuestPOIFrame.cpp | 29 ++++++++ src/gameui/CGQuestPOIFrame.hpp | 24 +++++++ src/gameui/CGQuestPOIFrameScript.cpp | 77 +++++++++++++++++++++ src/gameui/CGQuestPOIFrameScript.hpp | 10 +++ src/gameui/CGTabardModelFrame.cpp | 29 ++++++++ src/gameui/CGTabardModelFrame.hpp | 24 +++++++ src/gameui/CGTabardModelFrameScript.cpp | 57 ++++++++++++++++ src/gameui/CGTabardModelFrameScript.hpp | 10 +++ src/gameui/GameScriptFunctions.cpp | 14 +++- 26 files changed, 700 insertions(+), 9 deletions(-) create mode 100644 src/gameui/CGCharacterModelBase.cpp create mode 100644 src/gameui/CGCharacterModelBase.hpp create mode 100644 src/gameui/CGCharacterModelBaseScript.cpp create mode 100644 src/gameui/CGCharacterModelBaseScript.hpp create mode 100644 src/gameui/CGCooldown.cpp create mode 100644 src/gameui/CGCooldown.hpp create mode 100644 src/gameui/CGCooldownScript.cpp create mode 100644 src/gameui/CGCooldownScript.hpp create mode 100644 src/gameui/CGDressUpModelFrame.cpp create mode 100644 src/gameui/CGDressUpModelFrame.hpp create mode 100644 src/gameui/CGDressUpModelFrameScript.cpp create mode 100644 src/gameui/CGDressUpModelFrameScript.hpp create mode 100644 src/gameui/CGMinimapFrame.cpp create mode 100644 src/gameui/CGMinimapFrame.hpp create mode 100644 src/gameui/CGMinimapFrameScript.cpp create mode 100644 src/gameui/CGMinimapFrameScript.hpp create mode 100644 src/gameui/CGQuestPOIFrame.cpp create mode 100644 src/gameui/CGQuestPOIFrame.hpp create mode 100644 src/gameui/CGQuestPOIFrameScript.cpp create mode 100644 src/gameui/CGQuestPOIFrameScript.hpp create mode 100644 src/gameui/CGTabardModelFrame.cpp create mode 100644 src/gameui/CGTabardModelFrame.hpp create mode 100644 src/gameui/CGTabardModelFrameScript.cpp create mode 100644 src/gameui/CGTabardModelFrameScript.hpp diff --git a/src/gameui/CGCharacterModelBase.cpp b/src/gameui/CGCharacterModelBase.cpp new file mode 100644 index 0000000..035dcc0 --- /dev/null +++ b/src/gameui/CGCharacterModelBase.cpp @@ -0,0 +1,29 @@ +#include "gameui/CGCharacterModelBase.hpp" +#include "gameui/CGCharacterModelBaseScript.hpp" +#include + +int32_t CGCharacterModelBase::s_metatable; + +CSimpleFrame* CGCharacterModelBase::Create(CSimpleFrame* parent) { + // TODO: Data = CDataAllocator__GetData(0, ".?AVCGCharacterModelBase@@", -2); + return NEW(CGCharacterModelBase, parent); +} + +void CGCharacterModelBase::CreateScriptMetaTable() { + lua_State* L = FrameScript_GetContext(); + int32_t ref = FrameScript_Object::CreateScriptMetaTable(L, &CGCharacterModelBase::RegisterScriptMethods); + CGCharacterModelBase::s_metatable = ref; +} + +void CGCharacterModelBase::RegisterScriptMethods(lua_State* L) { + CSimpleFrame::RegisterScriptMethods(L); + FrameScript_Object::FillScriptMethodTable(L, CGCharacterModelBaseMethods, NUM_CGCHARACTER_MODEL_BASE_SCRIPT_METHODS); +} + +int32_t CGCharacterModelBase::GetScriptMetaTable() { + return CGCharacterModelBase::s_metatable; +} + +CGCharacterModelBase::CGCharacterModelBase(CSimpleFrame* parent) + : CSimpleFrame(parent) { +} diff --git a/src/gameui/CGCharacterModelBase.hpp b/src/gameui/CGCharacterModelBase.hpp new file mode 100644 index 0000000..59fd37c --- /dev/null +++ b/src/gameui/CGCharacterModelBase.hpp @@ -0,0 +1,24 @@ +#ifndef GAME_UI_CGCHARACTER_MODEL_BASE_HPP +#define GAME_UI_CGCHARACTER_MODEL_BASE_HPP + +#include "ui/CSimpleFrame.hpp" +#include "ui/CSimpleTop.hpp" + +class CGCharacterModelBase : public CSimpleFrame { + public: + // 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 + CGCharacterModelBase(CSimpleFrame* parent); +}; + +#endif // GAME_UI_CGCHARACTER_MODEL_BASE_HPP diff --git a/src/gameui/CGCharacterModelBaseScript.cpp b/src/gameui/CGCharacterModelBaseScript.cpp new file mode 100644 index 0000000..6b3b9cd --- /dev/null +++ b/src/gameui/CGCharacterModelBaseScript.cpp @@ -0,0 +1,27 @@ +#include "gameui/CGCharacterModelBaseScript.hpp" +#include "util/Lua.hpp" +#include "util/Unimplemented.hpp" + +static int32_t Script_SetUnit(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_SetCreature(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_RefreshUnit(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_SetRotation(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + + +FrameScript_Method CGCharacterModelBaseMethods[NUM_CGCHARACTER_MODEL_BASE_SCRIPT_METHODS] = { + { "SetUnit", &Script_SetUnit }, + { "SetCreature", &Script_SetCreature }, + { "RefreshUnit", &Script_RefreshUnit }, + { "SetRotation", &Script_SetRotation } +}; diff --git a/src/gameui/CGCharacterModelBaseScript.hpp b/src/gameui/CGCharacterModelBaseScript.hpp new file mode 100644 index 0000000..298f44b --- /dev/null +++ b/src/gameui/CGCharacterModelBaseScript.hpp @@ -0,0 +1,10 @@ +#ifndef GAME_UI_CGCHARACTER_MODEL_BASE_SCRIPT_HPP +#define GAME_UI_CGCHARACTER_MODEL_BASE_SCRIPT_HPP + +#include "ui/FrameScript.hpp" + +#define NUM_CGCHARACTER_MODEL_BASE_SCRIPT_METHODS 4 + +extern FrameScript_Method CGCharacterModelBaseMethods[NUM_CGCHARACTER_MODEL_BASE_SCRIPT_METHODS]; + +#endif diff --git a/src/gameui/CGCooldown.cpp b/src/gameui/CGCooldown.cpp new file mode 100644 index 0000000..ba07917 --- /dev/null +++ b/src/gameui/CGCooldown.cpp @@ -0,0 +1,29 @@ +#include "gameui/CGCooldown.hpp" +#include "gameui/CGCooldownScript.hpp" +#include + +int32_t CGCooldown::s_metatable; + +CSimpleFrame* CGCooldown::Create(CSimpleFrame* parent) { + // TODO: Data = CDataAllocator__GetData(0, ".?AVCGCooldown@@", -2); + return NEW(CGCooldown, parent); +} + +void CGCooldown::CreateScriptMetaTable() { + lua_State* L = FrameScript_GetContext(); + int32_t ref = FrameScript_Object::CreateScriptMetaTable(L, &CGCooldown::RegisterScriptMethods); + CGCooldown::s_metatable = ref; +} + +void CGCooldown::RegisterScriptMethods(lua_State* L) { + CSimpleFrame::RegisterScriptMethods(L); + FrameScript_Object::FillScriptMethodTable(L, CGCooldownMethods, NUM_CGCOOLDOWN_SCRIPT_METHODS); +} + +int32_t CGCooldown::GetScriptMetaTable() { + return CGCooldown::s_metatable; +} + +CGCooldown::CGCooldown(CSimpleFrame* parent) + : CSimpleFrame(parent) { +} diff --git a/src/gameui/CGCooldown.hpp b/src/gameui/CGCooldown.hpp new file mode 100644 index 0000000..3455e70 --- /dev/null +++ b/src/gameui/CGCooldown.hpp @@ -0,0 +1,24 @@ +#ifndef GAME_UI_CGCOOLDOWN_HPP +#define GAME_UI_CGCOOLDOWN_HPP + +#include "ui/CSimpleFrame.hpp" +#include "ui/CSimpleTop.hpp" + +class CGCooldown : public CSimpleFrame { + public: + // 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 + CGCooldown(CSimpleFrame* parent); +}; + +#endif // GAME_UI_CGCOOLDOWN_HPP diff --git a/src/gameui/CGCooldownScript.cpp b/src/gameui/CGCooldownScript.cpp new file mode 100644 index 0000000..24002bd --- /dev/null +++ b/src/gameui/CGCooldownScript.cpp @@ -0,0 +1,32 @@ +#include "gameui/CGCooldownScript.hpp" +#include "util/Lua.hpp" +#include "util/Unimplemented.hpp" + +static int32_t Script_SetCooldown(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_SetReverse(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_GetReverse(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_SetDrawEdge(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_GetDrawEdge(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + + +FrameScript_Method CGCooldownMethods[NUM_CGCOOLDOWN_SCRIPT_METHODS] = { + { "SetCooldown", &Script_SetCooldown }, + { "SetReverse", &Script_SetReverse }, + { "GetReverse", &Script_GetReverse }, + { "SetDrawEdge", &Script_SetDrawEdge }, + { "GetDrawEdge", &Script_GetDrawEdge } +}; diff --git a/src/gameui/CGCooldownScript.hpp b/src/gameui/CGCooldownScript.hpp new file mode 100644 index 0000000..3bc43ae --- /dev/null +++ b/src/gameui/CGCooldownScript.hpp @@ -0,0 +1,10 @@ +#ifndef GAME_UI_CGCOOLDOWN_SCRIPT_HPP +#define GAME_UI_CGCOOLDOWN_SCRIPT_HPP + +#include "ui/FrameScript.hpp" + +#define NUM_CGCOOLDOWN_SCRIPT_METHODS 5 + +extern FrameScript_Method CGCooldownMethods[NUM_CGCOOLDOWN_SCRIPT_METHODS]; + +#endif diff --git a/src/gameui/CGDressUpModelFrame.cpp b/src/gameui/CGDressUpModelFrame.cpp new file mode 100644 index 0000000..32e18d0 --- /dev/null +++ b/src/gameui/CGDressUpModelFrame.cpp @@ -0,0 +1,29 @@ +#include "gameui/CGDressUpModelFrame.hpp" +#include "gameui/CGDressUpModelFrameScript.hpp" +#include + +int32_t CGDressUpModelFrame::s_metatable; + +CSimpleFrame* CGDressUpModelFrame::Create(CSimpleFrame* parent) { + // TODO: Data = CDataAllocator__GetData(0, ".?AVCGDressUpModelFrame@@", -2); + return NEW(CGDressUpModelFrame, parent); +} + +void CGDressUpModelFrame::CreateScriptMetaTable() { + lua_State* L = FrameScript_GetContext(); + int32_t ref = FrameScript_Object::CreateScriptMetaTable(L, &CGDressUpModelFrame::RegisterScriptMethods); + CGDressUpModelFrame::s_metatable = ref; +} + +void CGDressUpModelFrame::RegisterScriptMethods(lua_State* L) { + CSimpleFrame::RegisterScriptMethods(L); + FrameScript_Object::FillScriptMethodTable(L, CGDressUpModelFrameMethods, NUM_CGDRESS_UP_MODEL_FRAME_SCRIPT_METHODS); +} + +int32_t CGDressUpModelFrame::GetScriptMetaTable() { + return CGDressUpModelFrame::s_metatable; +} + +CGDressUpModelFrame::CGDressUpModelFrame(CSimpleFrame* parent) + : CSimpleFrame(parent) { +} diff --git a/src/gameui/CGDressUpModelFrame.hpp b/src/gameui/CGDressUpModelFrame.hpp new file mode 100644 index 0000000..dffbeab --- /dev/null +++ b/src/gameui/CGDressUpModelFrame.hpp @@ -0,0 +1,24 @@ +#ifndef GAME_UI_CGDRESS_UP_MODEL_FRAME_HPP +#define GAME_UI_CGDRESS_UP_MODEL_FRAME_HPP + +#include "ui/CSimpleFrame.hpp" +#include "ui/CSimpleTop.hpp" + +class CGDressUpModelFrame : public CSimpleFrame { + public: + // 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 + CGDressUpModelFrame(CSimpleFrame* parent); +}; + +#endif // GAME_UI_CGDRESS_UP_MODEL_FRAME_HPP diff --git a/src/gameui/CGDressUpModelFrameScript.cpp b/src/gameui/CGDressUpModelFrameScript.cpp new file mode 100644 index 0000000..2a35b5a --- /dev/null +++ b/src/gameui/CGDressUpModelFrameScript.cpp @@ -0,0 +1,22 @@ +#include "gameui/CGDressUpModelFrameScript.hpp" +#include "util/Lua.hpp" +#include "util/Unimplemented.hpp" + +static int32_t Script_Undress(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_Dress(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_TryOn(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + + +FrameScript_Method CGDressUpModelFrameMethods[NUM_CGDRESS_UP_MODEL_FRAME_SCRIPT_METHODS] = { + { "Undress", &Script_Undress }, + { "Dress", &Script_Dress }, + { "TryOn", &Script_TryOn } +}; diff --git a/src/gameui/CGDressUpModelFrameScript.hpp b/src/gameui/CGDressUpModelFrameScript.hpp new file mode 100644 index 0000000..e119de5 --- /dev/null +++ b/src/gameui/CGDressUpModelFrameScript.hpp @@ -0,0 +1,10 @@ +#ifndef GAME_UI_CGDRESS_UP_MODEL_FRAME_SCRIPT_HPP +#define GAME_UI_CGDRESS_UP_MODEL_FRAME_SCRIPT_HPP + +#include "ui/FrameScript.hpp" + +#define NUM_CGDRESS_UP_MODEL_FRAME_SCRIPT_METHODS 3 + +extern FrameScript_Method CGDressUpModelFrameMethods[NUM_CGDRESS_UP_MODEL_FRAME_SCRIPT_METHODS]; + +#endif diff --git a/src/gameui/CGGameUI.cpp b/src/gameui/CGGameUI.cpp index 0588430..9728515 100644 --- a/src/gameui/CGGameUI.cpp +++ b/src/gameui/CGGameUI.cpp @@ -4,9 +4,15 @@ #include #include "client/Client.hpp" +#include "gameui/GameScriptFunctions.hpp" #include "gameui/CGWorldFrame.hpp" #include "gameui/CGTooltip.hpp" -#include "gameui/GameScriptFunctions.hpp" +#include "gameui/CGCooldown.hpp" +#include "gameui/CGMinimapFrame.hpp" +#include "gameui/CGCharacterModelBase.hpp" +#include "gameui/CGDressUpModelFrame.hpp" +#include "gameui/CGTabardModelFrame.hpp" +#include "gameui/CGQuestPOIFrame.hpp" #include "gx/Coordinate.hpp" #include "gx/Device.hpp" #include "ui/FrameScript.hpp" @@ -181,12 +187,12 @@ void CGGameUI::Initialize() { void CGGameUI::RegisterFrameFactories() { FrameXML_RegisterFactory("WorldFrame", CGWorldFrame::Create, 1); FrameXML_RegisterFactory("GameTooltip", CGTooltip::Create, 0); - //FrameXML_RegisterFactory("Cooldown", (int)sub_51A380, 0); - //FrameXML_RegisterFactory("Minimap", (int)CGMinimapFrame::Create, 0); - //FrameXML_RegisterFactory("PlayerModel", (int)CGCharacterModelBase::Create, 0); - //FrameXML_RegisterFactory("DressUpModel", (int)sub_514300, 0); - //FrameXML_RegisterFactory("TabardModel", (int)CGTabardModelFrame::Create, 0); - //FrameXML_RegisterFactory("QuestPOIFrame", (int)sub_514260, 0); + FrameXML_RegisterFactory("Cooldown", CGCooldown::Create, 0); + FrameXML_RegisterFactory("Minimap", CGMinimapFrame::Create, 0); + FrameXML_RegisterFactory("PlayerModel", CGCharacterModelBase::Create, 0); + FrameXML_RegisterFactory("DressUpModel", CGDressUpModelFrame::Create, 0); + FrameXML_RegisterFactory("TabardModel", CGTabardModelFrame::Create, 0); + FrameXML_RegisterFactory("QuestPOIFrame", CGQuestPOIFrame::Create, 0); } void CGGameUI::Reload() { diff --git a/src/gameui/CGMinimapFrame.cpp b/src/gameui/CGMinimapFrame.cpp new file mode 100644 index 0000000..ae4297b --- /dev/null +++ b/src/gameui/CGMinimapFrame.cpp @@ -0,0 +1,29 @@ +#include "gameui/CGMinimapFrame.hpp" +#include "gameui/CGMinimapFrameScript.hpp" +#include + +int32_t CGMinimapFrame::s_metatable; + +CSimpleFrame* CGMinimapFrame::Create(CSimpleFrame* parent) { + // TODO: Data = CDataAllocator__GetData(0, ".?AVCGMinimapFrame@@", -2); + return NEW(CGMinimapFrame, parent); +} + +void CGMinimapFrame::CreateScriptMetaTable() { + lua_State* L = FrameScript_GetContext(); + int32_t ref = FrameScript_Object::CreateScriptMetaTable(L, &CGMinimapFrame::RegisterScriptMethods); + CGMinimapFrame::s_metatable = ref; +} + +void CGMinimapFrame::RegisterScriptMethods(lua_State* L) { + CSimpleFrame::RegisterScriptMethods(L); + FrameScript_Object::FillScriptMethodTable(L, CGMinimapFrameMethods, NUM_CGMINIMAP_FRAME_SCRIPT_METHODS); +} + +int32_t CGMinimapFrame::GetScriptMetaTable() { + return CGMinimapFrame::s_metatable; +} + +CGMinimapFrame::CGMinimapFrame(CSimpleFrame* parent) + : CSimpleFrame(parent) { +} diff --git a/src/gameui/CGMinimapFrame.hpp b/src/gameui/CGMinimapFrame.hpp new file mode 100644 index 0000000..95817c2 --- /dev/null +++ b/src/gameui/CGMinimapFrame.hpp @@ -0,0 +1,24 @@ +#ifndef GAME_UI_CGMINIMAP_FRAME_HPP +#define GAME_UI_CGMINIMAP_FRAME_HPP + +#include "ui/CSimpleFrame.hpp" +#include "ui/CSimpleTop.hpp" + +class CGMinimapFrame : public CSimpleFrame { + public: + // 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 + CGMinimapFrame(CSimpleFrame* parent); +}; + +#endif // GAME_UI_CGMINIMAP_FRAME_HPP diff --git a/src/gameui/CGMinimapFrameScript.cpp b/src/gameui/CGMinimapFrameScript.cpp new file mode 100644 index 0000000..830e518 --- /dev/null +++ b/src/gameui/CGMinimapFrameScript.cpp @@ -0,0 +1,82 @@ +#include "gameui/CGMinimapFrameScript.hpp" +#include "util/Lua.hpp" +#include "util/Unimplemented.hpp" + +static int32_t Script_SetMaskTexture(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_SetIconTexture(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_SetBlipTexture(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_SetClassBlipTexture(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_SetPOIArrowTexture(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_SetStaticPOIArrowTexture(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_SetCorpsePOIArrowTexture(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_SetPlayerTexture(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_SetPlayerTextureHeight(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_SetPlayerTextureWidth(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_GetZoomLevels(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_GetZoom(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_SetZoom(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_PingLocation(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_GetPingPosition(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + + +FrameScript_Method CGMinimapFrameMethods[NUM_CGMINIMAP_FRAME_SCRIPT_METHODS] = { + { "SetMaskTexture", &Script_SetMaskTexture }, + { "SetIconTexture", &Script_SetIconTexture }, + { "SetBlipTexture", &Script_SetBlipTexture }, + { "SetClassBlipTexture", &Script_SetClassBlipTexture }, + { "SetPOIArrowTexture", &Script_SetPOIArrowTexture }, + { "SetStaticPOIArrowTexture", &Script_SetStaticPOIArrowTexture }, + { "SetCorpsePOIArrowTexture", &Script_SetCorpsePOIArrowTexture }, + { "SetPlayerTexture", &Script_SetPlayerTexture }, + { "SetPlayerTextureHeight", &Script_SetPlayerTextureHeight }, + { "SetPlayerTextureWidth", &Script_SetPlayerTextureWidth }, + { "GetZoomLevels", &Script_GetZoomLevels }, + { "GetZoom", &Script_GetZoom }, + { "SetZoom", &Script_SetZoom }, + { "PingLocation", &Script_PingLocation }, + { "GetPingPosition", &Script_GetPingPosition } +}; diff --git a/src/gameui/CGMinimapFrameScript.hpp b/src/gameui/CGMinimapFrameScript.hpp new file mode 100644 index 0000000..a21b648 --- /dev/null +++ b/src/gameui/CGMinimapFrameScript.hpp @@ -0,0 +1,10 @@ +#ifndef GAME_UI_CGMINIMAP_FRAME_SCRIPT_HPP +#define GAME_UI_CGMINIMAP_FRAME_SCRIPT_HPP + +#include "ui/FrameScript.hpp" + +#define NUM_CGMINIMAP_FRAME_SCRIPT_METHODS 15 + +extern FrameScript_Method CGMinimapFrameMethods[NUM_CGMINIMAP_FRAME_SCRIPT_METHODS]; + +#endif diff --git a/src/gameui/CGQuestPOIFrame.cpp b/src/gameui/CGQuestPOIFrame.cpp new file mode 100644 index 0000000..991c447 --- /dev/null +++ b/src/gameui/CGQuestPOIFrame.cpp @@ -0,0 +1,29 @@ +#include "gameui/CGQuestPOIFrame.hpp" +#include "gameui/CGQuestPOIFrameScript.hpp" +#include + +int32_t CGQuestPOIFrame::s_metatable; + +CSimpleFrame* CGQuestPOIFrame::Create(CSimpleFrame* parent) { + // TODO: Data = CDataAllocator__GetData(0, ".?AVCGQuestPOIFrame@@", -2); + return NEW(CGQuestPOIFrame, parent); +} + +void CGQuestPOIFrame::CreateScriptMetaTable() { + lua_State* L = FrameScript_GetContext(); + int32_t ref = FrameScript_Object::CreateScriptMetaTable(L, &CGQuestPOIFrame::RegisterScriptMethods); + CGQuestPOIFrame::s_metatable = ref; +} + +void CGQuestPOIFrame::RegisterScriptMethods(lua_State* L) { + CSimpleFrame::RegisterScriptMethods(L); + FrameScript_Object::FillScriptMethodTable(L, CGQuestPOIFrameMethods, NUM_CGQUEST_POI_FRAME_SCRIPT_METHODS); +} + +int32_t CGQuestPOIFrame::GetScriptMetaTable() { + return CGQuestPOIFrame::s_metatable; +} + +CGQuestPOIFrame::CGQuestPOIFrame(CSimpleFrame* parent) + : CSimpleFrame(parent) { +} diff --git a/src/gameui/CGQuestPOIFrame.hpp b/src/gameui/CGQuestPOIFrame.hpp new file mode 100644 index 0000000..7c4fa35 --- /dev/null +++ b/src/gameui/CGQuestPOIFrame.hpp @@ -0,0 +1,24 @@ +#ifndef GAME_UI_CGQUEST_POI_FRAME_HPP +#define GAME_UI_CGQUEST_POI_FRAME_HPP + +#include "ui/CSimpleFrame.hpp" +#include "ui/CSimpleTop.hpp" + +class CGQuestPOIFrame : public CSimpleFrame { + public: + // 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 + CGQuestPOIFrame(CSimpleFrame* parent); +}; + +#endif // GAME_UI_CGQUEST_POI_FRAME_HPP diff --git a/src/gameui/CGQuestPOIFrameScript.cpp b/src/gameui/CGQuestPOIFrameScript.cpp new file mode 100644 index 0000000..611136c --- /dev/null +++ b/src/gameui/CGQuestPOIFrameScript.cpp @@ -0,0 +1,77 @@ +#include "gameui/CGQuestPOIFrameScript.hpp" +#include "util/Lua.hpp" +#include "util/Unimplemented.hpp" + +static int32_t Script_SetFillTexture(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_SetFillAlpha(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_SetBorderTexture(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_SetBorderAlpha(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_SetBorderScalar(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_DrawQuestBlob(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_EnableSmoothing(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_EnableMerging(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_SetMergeThreshold(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_SetNumSplinePoints(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_UpdateQuestPOI(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_UpdateMouseOverTooltip(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_GetTooltipIndex(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_GetNumTooltips(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + + +FrameScript_Method CGQuestPOIFrameMethods[NUM_CGQUEST_POI_FRAME_SCRIPT_METHODS] = { + { "SetFillTexture", &Script_SetFillTexture }, + { "SetFillAlpha", &Script_SetFillAlpha }, + { "SetBorderTexture", &Script_SetBorderTexture }, + { "SetBorderAlpha", &Script_SetBorderAlpha }, + { "SetBorderScalar", &Script_SetBorderScalar }, + { "DrawQuestBlob", &Script_DrawQuestBlob }, + { "EnableSmoothing", &Script_EnableSmoothing }, + { "EnableMerging", &Script_EnableMerging }, + { "SetMergeThreshold", &Script_SetMergeThreshold }, + { "SetNumSplinePoints", &Script_SetNumSplinePoints }, + { "UpdateQuestPOI", &Script_UpdateQuestPOI }, + { "UpdateMouseOverTooltip", &Script_UpdateMouseOverTooltip }, + { "GetTooltipIndex", &Script_GetTooltipIndex }, + { "GetNumTooltips", &Script_GetNumTooltips } +}; diff --git a/src/gameui/CGQuestPOIFrameScript.hpp b/src/gameui/CGQuestPOIFrameScript.hpp new file mode 100644 index 0000000..42c518e --- /dev/null +++ b/src/gameui/CGQuestPOIFrameScript.hpp @@ -0,0 +1,10 @@ +#ifndef GAME_UI_CGQUEST_POI_FRAME_SCRIPT_HPP +#define GAME_UI_CGQUEST_POI_FRAME_SCRIPT_HPP + +#include "ui/FrameScript.hpp" + +#define NUM_CGQUEST_POI_FRAME_SCRIPT_METHODS 14 + +extern FrameScript_Method CGQuestPOIFrameMethods[NUM_CGQUEST_POI_FRAME_SCRIPT_METHODS]; + +#endif diff --git a/src/gameui/CGTabardModelFrame.cpp b/src/gameui/CGTabardModelFrame.cpp new file mode 100644 index 0000000..8f9d3a4 --- /dev/null +++ b/src/gameui/CGTabardModelFrame.cpp @@ -0,0 +1,29 @@ +#include "gameui/CGTabardModelFrame.hpp" +#include "gameui/CGTabardModelFrameScript.hpp" +#include + +int32_t CGTabardModelFrame::s_metatable; + +CSimpleFrame* CGTabardModelFrame::Create(CSimpleFrame* parent) { + // TODO: Data = CDataAllocator__GetData(0, ".?AVCGTabardModelFrame@@", -2); + return NEW(CGTabardModelFrame, parent); +} + +void CGTabardModelFrame::CreateScriptMetaTable() { + lua_State* L = FrameScript_GetContext(); + int32_t ref = FrameScript_Object::CreateScriptMetaTable(L, &CGTabardModelFrame::RegisterScriptMethods); + CGTabardModelFrame::s_metatable = ref; +} + +void CGTabardModelFrame::RegisterScriptMethods(lua_State* L) { + CSimpleFrame::RegisterScriptMethods(L); + FrameScript_Object::FillScriptMethodTable(L, CGTabardModelFrameMethods, NUM_CGTABARD_MODEL_FRAME_SCRIPT_METHODS); +} + +int32_t CGTabardModelFrame::GetScriptMetaTable() { + return CGTabardModelFrame::s_metatable; +} + +CGTabardModelFrame::CGTabardModelFrame(CSimpleFrame* parent) + : CSimpleFrame(parent) { +} diff --git a/src/gameui/CGTabardModelFrame.hpp b/src/gameui/CGTabardModelFrame.hpp new file mode 100644 index 0000000..20d9dd1 --- /dev/null +++ b/src/gameui/CGTabardModelFrame.hpp @@ -0,0 +1,24 @@ +#ifndef GAME_UI_CGTABARD_MODEL_FRAME_HPP +#define GAME_UI_CGTABARD_MODEL_FRAME_HPP + +#include "ui/CSimpleFrame.hpp" +#include "ui/CSimpleTop.hpp" + +class CGTabardModelFrame : public CSimpleFrame { + public: + // 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 + CGTabardModelFrame(CSimpleFrame* parent); +}; + +#endif // GAME_UI_CGTABARD_MODEL_FRAME_HPP diff --git a/src/gameui/CGTabardModelFrameScript.cpp b/src/gameui/CGTabardModelFrameScript.cpp new file mode 100644 index 0000000..2ae5b30 --- /dev/null +++ b/src/gameui/CGTabardModelFrameScript.cpp @@ -0,0 +1,57 @@ +#include "gameui/CGTabardModelFrameScript.hpp" +#include "util/Lua.hpp" +#include "util/Unimplemented.hpp" + +static int32_t Script_InitializeTabardColors(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_Save(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_CycleVariation(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_GetUpperBackgroundFileName(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_GetLowerBackgroundFileName(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_GetUpperEmblemFileName(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_GetLowerEmblemFileName(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_GetUpperEmblemTexture(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_GetLowerEmblemTexture(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + +static int32_t Script_CanSaveTabardNow(lua_State* L) { + WHOA_UNIMPLEMENTED(0); +} + + +FrameScript_Method CGTabardModelFrameMethods[NUM_CGTABARD_MODEL_FRAME_SCRIPT_METHODS] = { + { "InitializeTabardColors", &Script_InitializeTabardColors }, + { "Save", &Script_Save }, + { "CycleVariation", &Script_CycleVariation }, + { "GetUpperBackgroundFileName", &Script_GetUpperBackgroundFileName }, + { "GetLowerBackgroundFileName", &Script_GetLowerBackgroundFileName }, + { "GetUpperEmblemFileName", &Script_GetUpperEmblemFileName }, + { "GetLowerEmblemFileName", &Script_GetLowerEmblemFileName }, + { "GetUpperEmblemTexture", &Script_GetUpperEmblemTexture }, + { "GetLowerEmblemTexture", &Script_GetLowerEmblemTexture }, + { "CanSaveTabardNow", &Script_CanSaveTabardNow } +}; diff --git a/src/gameui/CGTabardModelFrameScript.hpp b/src/gameui/CGTabardModelFrameScript.hpp new file mode 100644 index 0000000..28b0f0f --- /dev/null +++ b/src/gameui/CGTabardModelFrameScript.hpp @@ -0,0 +1,10 @@ +#ifndef GAME_UI_CGTABARD_MODEL_FRAME_SCRIPT_HPP +#define GAME_UI_CGTABARD_MODEL_FRAME_SCRIPT_HPP + +#include "ui/FrameScript.hpp" + +#define NUM_CGTABARD_MODEL_FRAME_SCRIPT_METHODS 10 + +extern FrameScript_Method CGTabardModelFrameMethods[NUM_CGTABARD_MODEL_FRAME_SCRIPT_METHODS]; + +#endif diff --git a/src/gameui/GameScriptFunctions.cpp b/src/gameui/GameScriptFunctions.cpp index 28e27a9..c58304b 100644 --- a/src/gameui/GameScriptFunctions.cpp +++ b/src/gameui/GameScriptFunctions.cpp @@ -1,6 +1,12 @@ #include "gameui/GameScriptFunctions.hpp" #include "gameui/CGGameUI.hpp" #include "gameui/CGTooltip.hpp" +#include "gameui/CGCooldown.hpp" +#include "gameui/CGMinimapFrame.hpp" +#include "gameui/CGCharacterModelBase.hpp" +#include "gameui/CGDressUpModelFrame.hpp" +#include "gameui/CGTabardModelFrame.hpp" +#include "gameui/CGQuestPOIFrame.hpp" #include "ui/FrameXML.hpp" #include "ui/FrameScript.hpp" #include "util/Lua.hpp" @@ -1609,8 +1615,12 @@ FrameScript_Method GameScript::s_ScriptFunctions_Game[NUM_SCRIPT_FUNCTIONS_GAME] void LoadScriptFunctions() { RegisterSimpleFrameScriptMethods(); CGTooltip::CreateScriptMetaTable(); - - // TODO + CGCooldown::CreateScriptMetaTable(); + CGMinimapFrame::CreateScriptMetaTable(); + CGCharacterModelBase::CreateScriptMetaTable(); + CGDressUpModelFrame::CreateScriptMetaTable(); + CGTabardModelFrame::CreateScriptMetaTable(); + CGQuestPOIFrame::CreateScriptMetaTable(); for (int32_t i = 0; i < NUM_SCRIPT_FUNCTIONS_GAME; ++i) { FrameScript_RegisterFunction(