Compare commits

..

11 Commits

Author SHA1 Message Date
Tristan 'Natrist' Cormier
9858520384
Merge 4a102c6ace into cd167c54a3 2026-01-28 08:32:10 +00:00
fallenoak
cd167c54a3
feat(ui): store tooltip pointer in CGGameUI::Initialize
Some checks are pending
Push / ${{ matrix.build.system_name }} / ${{ matrix.build.build_type }} / ${{ matrix.build.compiler_name }} (map[build_type:Release cc:cl compiler_name:MSVC cxx:cl os:windows-latest system_name:Windows test_path:WhoaTest]) (push) Waiting to run
Push / ${{ matrix.build.system_name }} / ${{ matrix.build.build_type }} / ${{ matrix.build.compiler_name }} (map[build_type:Release cc:clang compiler_name:Clang cxx:clang++ os:macos-latest system_name:macOS test_path:WhoaTest]) (push) Waiting to run
Push / ${{ matrix.build.system_name }} / ${{ matrix.build.build_type }} / ${{ matrix.build.compiler_name }} (map[build_type:Release cc:gcc compiler_name:GCC cxx:g++ os:ubuntu-latest system_name:Linux test_path:WhoaTest]) (push) Waiting to run
2026-01-27 19:31:19 -06:00
fallenoak
379cbf7e61
feat(ui): add UIBindingsRegisterScriptFunctions 2026-01-27 19:28:48 -06:00
fallenoak
6b916d56d1
feat(ui): add CGTooltip::GetScriptMetaTable 2026-01-27 19:12:52 -06:00
fallenoak
1334d1407c
feat(ui): add CGTooltip::CreateScriptMetaTable 2026-01-27 18:45:52 -06:00
fallenoak
ac0930497c
feat(ui): add CGTooltip::GetObjectType 2026-01-27 17:54:56 -06:00
fallenoak
501935ffc2
feat(ui): stub Script_GetGameTime 2026-01-27 17:49:22 -06:00
fallenoak
94731f53c3
feat(ui): add BattlefieldInfoRegisterScriptFunctions 2026-01-27 17:46:48 -06:00
fallenoak
8ee1586a14
feat(ui): add CharacterInfoRegisterScriptFunctions 2026-01-27 16:17:40 -06:00
fallenoak
1c1e4f5875
feat(ui): register GameTooltip factory 2026-01-27 12:25:49 -06:00
fallenoak
c4077daa3f
feat(ui): implement CSimpleFrame_EnableMouse
Some checks are pending
Push / ${{ matrix.build.system_name }} / ${{ matrix.build.build_type }} / ${{ matrix.build.compiler_name }} (map[build_type:Release cc:cl compiler_name:MSVC cxx:cl os:windows-latest system_name:Windows test_path:WhoaTest]) (push) Waiting to run
Push / ${{ matrix.build.system_name }} / ${{ matrix.build.build_type }} / ${{ matrix.build.compiler_name }} (map[build_type:Release cc:clang compiler_name:Clang cxx:clang++ os:macos-latest system_name:macOS test_path:WhoaTest]) (push) Waiting to run
Push / ${{ matrix.build.system_name }} / ${{ matrix.build.build_type }} / ${{ matrix.build.compiler_name }} (map[build_type:Release cc:gcc compiler_name:GCC cxx:g++ os:ubuntu-latest system_name:Linux test_path:WhoaTest]) (push) Waiting to run
2026-01-27 10:39:50 -06:00
16 changed files with 1107 additions and 2 deletions

View File

@ -14,7 +14,10 @@ int32_t Script_GetTime(lua_State* L) {
} }
int32_t Script_GetGameTime(lua_State* L) { int32_t Script_GetGameTime(lua_State* L) {
WHOA_UNIMPLEMENTED(0); // TODO real implementation
lua_pushnumber(L, 1.0);
lua_pushnumber(L, 15.0);
WHOA_UNIMPLEMENTED(2);
} }
int32_t Script_ConsoleExec(lua_State* L) { int32_t Script_ConsoleExec(lua_State* L) {

View File

@ -0,0 +1,271 @@
#include "ui/game/BattlefieldInfoScript.hpp"
#include "ui/FrameScript.hpp"
#include "util/Unimplemented.hpp"
namespace {
int32_t Script_GetNumBattlefields(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetBattlefieldInfo(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetBattlefieldInstanceInfo(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_IsBattlefieldArena(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_IsActiveBattlefieldArena(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_JoinBattlefield(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_SetSelectedBattlefield(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetSelectedBattlefield(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_AcceptBattlefieldPort(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetBattlefieldStatus(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetBattlefieldPortExpiration(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetBattlefieldInstanceExpiration(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetBattlefieldInstanceRunTime(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetBattlefieldEstimatedWaitTime(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetBattlefieldTimeWaited(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_CloseBattlefield(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_RequestBattlefieldScoreData(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetNumBattlefieldScores(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetBattlefieldScore(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetBattlefieldWinner(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_SetBattlefieldScoreFaction(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_LeaveBattlefield(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetNumBattlefieldStats(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetBattlefieldStatInfo(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetBattlefieldStatData(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_RequestBattlefieldPositions(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetNumBattlefieldPositions(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetBattlefieldPosition(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetNumBattlefieldFlagPositions(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetBattlefieldFlagPosition(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetNumBattlefieldVehicles(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetBattlefieldVehicleInfo(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_CanJoinBattlefieldAsGroup(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetBattlefieldMapIconScale(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetBattlefieldTeamInfo(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetBattlefieldArenaFaction(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_SortBattlefieldScoreData(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_HearthAndResurrectFromArea(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_CanHearthAndResurrectFromArea(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetNumBattlegroundTypes(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetBattlegroundInfo(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_RequestBattlegroundInstanceInfo(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetNumArenaOpponents(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_BattlefieldMgrEntryInviteResponse(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_BattlefieldMgrQueueRequest(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_BattlefieldMgrQueueInviteResponse(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_BattlefieldMgrExitRequest(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetWorldPVPQueueStatus(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetHolidayBGHonorCurrencyBonuses(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetRandomBGHonorCurrencyBonuses(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_SortBGList(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
}
static FrameScript_Method s_ScriptFunctions[] = {
{ "GetNumBattlefields", &Script_GetNumBattlefields },
{ "GetBattlefieldInfo", &Script_GetBattlefieldInfo },
{ "GetBattlefieldInstanceInfo", &Script_GetBattlefieldInstanceInfo },
{ "IsBattlefieldArena", &Script_IsBattlefieldArena },
{ "IsActiveBattlefieldArena", &Script_IsActiveBattlefieldArena },
{ "JoinBattlefield", &Script_JoinBattlefield },
{ "SetSelectedBattlefield", &Script_SetSelectedBattlefield },
{ "GetSelectedBattlefield", &Script_GetSelectedBattlefield },
{ "AcceptBattlefieldPort", &Script_AcceptBattlefieldPort },
{ "GetBattlefieldStatus", &Script_GetBattlefieldStatus },
{ "GetBattlefieldPortExpiration", &Script_GetBattlefieldPortExpiration },
{ "GetBattlefieldInstanceExpiration", &Script_GetBattlefieldInstanceExpiration },
{ "GetBattlefieldInstanceRunTime", &Script_GetBattlefieldInstanceRunTime },
{ "GetBattlefieldEstimatedWaitTime", &Script_GetBattlefieldEstimatedWaitTime },
{ "GetBattlefieldTimeWaited", &Script_GetBattlefieldTimeWaited },
{ "CloseBattlefield", &Script_CloseBattlefield },
{ "RequestBattlefieldScoreData", &Script_RequestBattlefieldScoreData },
{ "GetNumBattlefieldScores", &Script_GetNumBattlefieldScores },
{ "GetBattlefieldScore", &Script_GetBattlefieldScore },
{ "GetBattlefieldWinner", &Script_GetBattlefieldWinner },
{ "SetBattlefieldScoreFaction", &Script_SetBattlefieldScoreFaction },
{ "LeaveBattlefield", &Script_LeaveBattlefield },
{ "GetNumBattlefieldStats", &Script_GetNumBattlefieldStats },
{ "GetBattlefieldStatInfo", &Script_GetBattlefieldStatInfo },
{ "GetBattlefieldStatData", &Script_GetBattlefieldStatData },
{ "RequestBattlefieldPositions", &Script_RequestBattlefieldPositions },
{ "GetNumBattlefieldPositions", &Script_GetNumBattlefieldPositions },
{ "GetBattlefieldPosition", &Script_GetBattlefieldPosition },
{ "GetNumBattlefieldFlagPositions", &Script_GetNumBattlefieldFlagPositions },
{ "GetBattlefieldFlagPosition", &Script_GetBattlefieldFlagPosition },
{ "GetNumBattlefieldVehicles", &Script_GetNumBattlefieldVehicles },
{ "GetBattlefieldVehicleInfo", &Script_GetBattlefieldVehicleInfo },
{ "CanJoinBattlefieldAsGroup", &Script_CanJoinBattlefieldAsGroup },
{ "GetBattlefieldMapIconScale", &Script_GetBattlefieldMapIconScale },
{ "GetBattlefieldTeamInfo", &Script_GetBattlefieldTeamInfo },
{ "GetBattlefieldArenaFaction", &Script_GetBattlefieldArenaFaction },
{ "SortBattlefieldScoreData", &Script_SortBattlefieldScoreData },
{ "HearthAndResurrectFromArea", &Script_HearthAndResurrectFromArea },
{ "CanHearthAndResurrectFromArea", &Script_CanHearthAndResurrectFromArea },
{ "GetNumBattlegroundTypes", &Script_GetNumBattlegroundTypes },
{ "GetBattlegroundInfo", &Script_GetBattlegroundInfo },
{ "RequestBattlegroundInstanceInfo", &Script_RequestBattlegroundInstanceInfo },
{ "GetNumArenaOpponents", &Script_GetNumArenaOpponents },
{ "BattlefieldMgrEntryInviteResponse", &Script_BattlefieldMgrEntryInviteResponse },
{ "BattlefieldMgrQueueRequest", &Script_BattlefieldMgrQueueRequest },
{ "BattlefieldMgrQueueInviteResponse", &Script_BattlefieldMgrQueueInviteResponse },
{ "BattlefieldMgrExitRequest", &Script_BattlefieldMgrExitRequest },
{ "GetWorldPVPQueueStatus", &Script_GetWorldPVPQueueStatus },
{ "GetHolidayBGHonorCurrencyBonuses", &Script_GetHolidayBGHonorCurrencyBonuses },
{ "GetRandomBGHonorCurrencyBonuses", &Script_GetRandomBGHonorCurrencyBonuses },
{ "SortBGList", &Script_SortBGList },
};
void BattlefieldInfoRegisterScriptFunctions() {
for (auto& func : s_ScriptFunctions) {
FrameScript_RegisterFunction(func.name, func.method);
}
}

View File

@ -0,0 +1,6 @@
#ifndef UI_GAME_BATTLEFIELD_INFO_SCRIPT_HPP
#define UI_GAME_BATTLEFIELD_INFO_SCRIPT_HPP
void BattlefieldInfoRegisterScriptFunctions();
#endif

View File

@ -1,21 +1,32 @@
#include "ui/game/CGGameUI.hpp" #include "ui/game/CGGameUI.hpp"
#include "client/Client.hpp" #include "client/Client.hpp"
#include "ui/CScriptObject.hpp"
#include "ui/FrameXML.hpp" #include "ui/FrameXML.hpp"
#include "ui/Key.hpp" #include "ui/Key.hpp"
#include "ui/game/BattlefieldInfoScript.hpp"
#include "ui/game/CGTooltip.hpp"
#include "ui/game/CGWorldFrame.hpp" #include "ui/game/CGWorldFrame.hpp"
#include "ui/game/CharacterInfoScript.hpp"
#include "ui/game/GMTicketInfoScript.hpp" #include "ui/game/GMTicketInfoScript.hpp"
#include "ui/game/GameScript.hpp" #include "ui/game/GameScript.hpp"
#include "ui/game/ScriptEvents.hpp" #include "ui/game/ScriptEvents.hpp"
#include "ui/game/UIBindingsScript.hpp"
#include "ui/simple/CSimpleTop.hpp" #include "ui/simple/CSimpleTop.hpp"
#include "util/CStatus.hpp" #include "util/CStatus.hpp"
#include <common/MD5.hpp> #include <common/MD5.hpp>
CScriptObject* CGGameUI::s_gameTooltip;
CSimpleTop* CGGameUI::s_simpleTop; CSimpleTop* CGGameUI::s_simpleTop;
void LoadScriptFunctions() { void LoadScriptFunctions() {
// TODO // TODO
CGTooltip::CreateScriptMetaTable();
// TODO
GameScriptRegisterFunctions(); GameScriptRegisterFunctions();
UIBindingsRegisterScriptFunctions();
// TODO // TODO
@ -23,6 +34,14 @@ void LoadScriptFunctions() {
// TODO // TODO
CharacterInfoRegisterScriptFunctions();
// TODO
BattlefieldInfoRegisterScriptFunctions();
// TODO
GMTicketInfoRegisterScriptFunctions(); GMTicketInfoRegisterScriptFunctions();
// TODO // TODO
@ -100,6 +119,11 @@ void CGGameUI::Initialize() {
// TODO digest validation // TODO digest validation
// TODO // TODO
CGGameUI::s_gameTooltip = CScriptObject::GetScriptObjectByName("GameTooltip", CGTooltip::GetObjectType());
// TODO STORM_ASSERT(CGGameUI::s_gameTooltip);
// TODO
} }
void CGGameUI::InitializeGame() { void CGGameUI::InitializeGame() {
@ -112,6 +136,7 @@ void CGGameUI::InitializeGame() {
void CGGameUI::RegisterFrameFactories() { void CGGameUI::RegisterFrameFactories() {
FrameXML_RegisterFactory("WorldFrame", &CGWorldFrame::Create, true); FrameXML_RegisterFactory("WorldFrame", &CGWorldFrame::Create, true);
FrameXML_RegisterFactory("GameTooltip", &CGTooltip::Create, false);
// TODO register remaining factories // TODO register remaining factories
} }

View File

@ -1,11 +1,13 @@
#ifndef UI_GAME_C_G_GAME_UI_HPP #ifndef UI_GAME_C_G_GAME_UI_HPP
#define UI_GAME_C_G_GAME_UI_HPP #define UI_GAME_C_G_GAME_UI_HPP
class CScriptObject;
class CSimpleTop; class CSimpleTop;
class CGGameUI { class CGGameUI {
public: public:
// Static variables // Static variables
static CScriptObject* s_gameTooltip;
static CSimpleTop* s_simpleTop; static CSimpleTop* s_simpleTop;
// Static functions // Static functions

37
src/ui/game/CGTooltip.cpp Normal file
View File

@ -0,0 +1,37 @@
#include "ui/game/CGTooltip.hpp"
#include "ui/game/CGTooltipScript.hpp"
int32_t CGTooltip::s_metatable;
int32_t CGTooltip::s_objectType;
CSimpleFrame* CGTooltip::Create(CSimpleFrame* parent) {
// TODO use CDataAllocator
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() {
if (!CGTooltip::s_objectType) {
CGTooltip::s_objectType = ++FrameScript_Object::s_objectTypes;
}
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) {
// TODO
}
int32_t CGTooltip::GetScriptMetaTable() {
return CGTooltip::s_metatable;
}

28
src/ui/game/CGTooltip.hpp Normal file
View File

@ -0,0 +1,28 @@
#ifndef UI_GAME_C_G_TOOLTIP_HPP
#define UI_GAME_C_G_TOOLTIP_HPP
#include "ui/simple/CSimpleFrame.hpp"
class CGTooltip : public CSimpleFrame {
public:
// Static variables
static int32_t s_metatable;
static int32_t s_objectType;
// Static functions
static CSimpleFrame* Create(CSimpleFrame* parent);
static void CreateScriptMetaTable();
static int32_t GetObjectType();
static void RegisterScriptMethods(lua_State* L);
// Member variables
// TODO
// Virtual member functions
virtual int32_t GetScriptMetaTable();
// Member functions
CGTooltip(CSimpleFrame* parent);
};
#endif

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

View File

@ -0,0 +1,181 @@
#include "ui/game/CharacterInfoScript.hpp"
#include "ui/FrameScript.hpp"
#include "util/Unimplemented.hpp"
namespace {
int32_t Script_GetInventorySlotInfo(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetInventoryItemsForSlot(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetInventoryItemTexture(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetInventoryItemBroken(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetInventoryItemCount(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetInventoryItemQuality(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetInventoryItemCooldown(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetInventoryItemDurability(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetInventoryItemLink(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetInventoryItemID(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetInventoryItemGems(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_KeyRingButtonIDToInvSlotID(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_PickupInventoryItem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UseInventoryItem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_SocketInventoryItem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_IsInventoryItemLocked(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_PutItemInBag(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_PutItemInBackpack(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_PickupBagFromSlot(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_CursorCanGoInSlot(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_ShowInventorySellCursor(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_SetInventoryPortraitTexture(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetGuildInfo(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetInventoryAlertStatus(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UpdateInventoryAlertStatus(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_OffhandHasWeapon(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_HasInspectHonorData(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_RequestInspectHonorData(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetInspectHonorData(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetInspectArenaTeamData(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_ClearInspectPlayer(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetWeaponEnchantInfo(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_HasWandEquipped(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
}
static FrameScript_Method s_ScriptFunctions[] = {
{ "GetInventorySlotInfo", &Script_GetInventorySlotInfo },
{ "GetInventoryItemsForSlot", &Script_GetInventoryItemsForSlot },
{ "GetInventoryItemTexture", &Script_GetInventoryItemTexture },
{ "GetInventoryItemBroken", &Script_GetInventoryItemBroken },
{ "GetInventoryItemCount", &Script_GetInventoryItemCount },
{ "GetInventoryItemQuality", &Script_GetInventoryItemQuality },
{ "GetInventoryItemCooldown", &Script_GetInventoryItemCooldown },
{ "GetInventoryItemDurability", &Script_GetInventoryItemDurability },
{ "GetInventoryItemLink", &Script_GetInventoryItemLink },
{ "GetInventoryItemID", &Script_GetInventoryItemID },
{ "GetInventoryItemGems", &Script_GetInventoryItemGems },
{ "KeyRingButtonIDToInvSlotID", &Script_KeyRingButtonIDToInvSlotID },
{ "PickupInventoryItem", &Script_PickupInventoryItem },
{ "UseInventoryItem", &Script_UseInventoryItem },
{ "SocketInventoryItem", &Script_SocketInventoryItem },
{ "IsInventoryItemLocked", &Script_IsInventoryItemLocked },
{ "PutItemInBag", &Script_PutItemInBag },
{ "PutItemInBackpack", &Script_PutItemInBackpack },
{ "PickupBagFromSlot", &Script_PickupBagFromSlot },
{ "CursorCanGoInSlot", &Script_CursorCanGoInSlot },
{ "ShowInventorySellCursor", &Script_ShowInventorySellCursor },
{ "SetInventoryPortraitTexture", &Script_SetInventoryPortraitTexture },
{ "GetGuildInfo", &Script_GetGuildInfo },
{ "GetInventoryAlertStatus", &Script_GetInventoryAlertStatus },
{ "UpdateInventoryAlertStatus", &Script_UpdateInventoryAlertStatus },
{ "OffhandHasWeapon", &Script_OffhandHasWeapon },
{ "HasInspectHonorData", &Script_HasInspectHonorData },
{ "RequestInspectHonorData", &Script_RequestInspectHonorData },
{ "GetInspectHonorData", &Script_GetInspectHonorData },
{ "GetInspectArenaTeamData", &Script_GetInspectArenaTeamData },
{ "ClearInspectPlayer", &Script_ClearInspectPlayer },
{ "GetWeaponEnchantInfo", &Script_GetWeaponEnchantInfo },
{ "HasWandEquipped", &Script_HasWandEquipped },
};
void CharacterInfoRegisterScriptFunctions() {
for (auto& func : s_ScriptFunctions) {
FrameScript_RegisterFunction(func.name, func.method);
}
}

View File

@ -0,0 +1,6 @@
#ifndef UI_GAME_CHARACTER_INFO_SCRIPT_HPP
#define UI_GAME_CHARACTER_INFO_SCRIPT_HPP
void CharacterInfoRegisterScriptFunctions();
#endif

View File

@ -0,0 +1,146 @@
#include "ui/game/UIBindingsScript.hpp"
#include "ui/FrameScript.hpp"
#include "util/Unimplemented.hpp"
namespace {
int32_t Script_GetNumBindings(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetBinding(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_SetBinding(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_SetBindingSpell(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_SetBindingItem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_SetBindingMacro(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_SetBindingClick(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_SetOverrideBinding(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_SetOverrideBindingSpell(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_SetOverrideBindingItem(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_SetOverrideBindingMacro(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_SetOverrideBindingClick(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_ClearOverrideBindings(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetBindingKey(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetBindingAction(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetBindingByKey(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_RunBinding(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetCurrentBindingSet(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_LoadBindings(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_SaveBindings(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetNumModifiedClickActions(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetModifiedClickAction(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_SetModifiedClick(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetModifiedClick(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_IsModifiedClick(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetClickFrame(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
}
static FrameScript_Method s_ScriptFunctions[] = {
{ "GetNumBindings", &Script_GetNumBindings },
{ "GetBinding", &Script_GetBinding },
{ "SetBinding", &Script_SetBinding },
{ "SetBindingSpell", &Script_SetBindingSpell },
{ "SetBindingItem", &Script_SetBindingItem },
{ "SetBindingMacro", &Script_SetBindingMacro },
{ "SetBindingClick", &Script_SetBindingClick },
{ "SetOverrideBinding", &Script_SetOverrideBinding },
{ "SetOverrideBindingSpell", &Script_SetOverrideBindingSpell },
{ "SetOverrideBindingItem", &Script_SetOverrideBindingItem },
{ "SetOverrideBindingMacro", &Script_SetOverrideBindingMacro },
{ "SetOverrideBindingClick", &Script_SetOverrideBindingClick },
{ "ClearOverrideBindings", &Script_ClearOverrideBindings },
{ "GetBindingKey", &Script_GetBindingKey },
{ "GetBindingAction", &Script_GetBindingAction },
{ "GetBindingByKey", &Script_GetBindingByKey },
{ "RunBinding", &Script_RunBinding },
{ "GetCurrentBindingSet", &Script_GetCurrentBindingSet },
{ "LoadBindings", &Script_LoadBindings },
{ "SaveBindings", &Script_SaveBindings },
{ "GetNumModifiedClickActions", &Script_GetNumModifiedClickActions },
{ "GetModifiedClickAction", &Script_GetModifiedClickAction },
{ "SetModifiedClick", &Script_SetModifiedClick },
{ "GetModifiedClick", &Script_GetModifiedClick },
{ "IsModifiedClick", &Script_IsModifiedClick },
{ "GetClickFrame", &Script_GetClickFrame },
};
void UIBindingsRegisterScriptFunctions() {
for (auto& func : s_ScriptFunctions) {
FrameScript_RegisterFunction(func.name, func.method);
}
}

View File

@ -0,0 +1,6 @@
#ifndef UI_GAME_UI_BINDINGS_SCRIPT_HPP
#define UI_GAME_UI_BINDINGS_SCRIPT_HPP
void UIBindingsRegisterScriptFunctions();
#endif

View File

@ -100,6 +100,18 @@ void CSimpleFrame::DisableDrawLayer(uint32_t drawlayer) {
this->NotifyDrawLayerChanged(drawlayer); this->NotifyDrawLayerChanged(drawlayer);
} }
void CSimpleFrame::DisableEvent(CSimpleEventType eventType) {
if (!(this->m_eventmask & (1 << eventType))) {
return;
}
if (this->m_visible) {
this->m_top->UnregisterForEvent(this, eventType, 0);
}
this->m_eventmask &= ~(1 << eventType);
}
void CSimpleFrame::EnableDrawLayer(uint32_t drawlayer) { void CSimpleFrame::EnableDrawLayer(uint32_t drawlayer) {
this->m_drawenabled[drawlayer] = 1; this->m_drawenabled[drawlayer] = 1;
this->NotifyDrawLayerChanged(drawlayer); this->NotifyDrawLayerChanged(drawlayer);

View File

@ -123,6 +123,7 @@ class CSimpleFrame : public CScriptRegion {
CSimpleFrame(CSimpleFrame* parent); CSimpleFrame(CSimpleFrame* parent);
void AddFrameRegion(CSimpleRegion* region, uint32_t drawlayer); void AddFrameRegion(CSimpleRegion* region, uint32_t drawlayer);
void DisableDrawLayer(uint32_t drawlayer); void DisableDrawLayer(uint32_t drawlayer);
void DisableEvent(CSimpleEventType eventType);
void EnableDrawLayer(uint32_t drawlayer); void EnableDrawLayer(uint32_t drawlayer);
void EnableEvent(CSimpleEventType eventType, int32_t priority); void EnableEvent(CSimpleEventType eventType, int32_t priority);
int32_t GetHitRect(CRect& rect); int32_t GetHitRect(CRect& rect);

View File

@ -4,6 +4,7 @@
#include "ui/FrameScript.hpp" #include "ui/FrameScript.hpp"
#include "ui/simple/CSimpleFrame.hpp" #include "ui/simple/CSimpleFrame.hpp"
#include "util/Lua.hpp" #include "util/Lua.hpp"
#include "util/StringTo.hpp"
#include "util/Unimplemented.hpp" #include "util/Unimplemented.hpp"
#include <algorithm> #include <algorithm>
#include <cstdint> #include <cstdint>
@ -459,7 +460,22 @@ int32_t CSimpleFrame_IsKeyboardEnabled(lua_State* L) {
} }
int32_t CSimpleFrame_EnableMouse(lua_State* L) { int32_t CSimpleFrame_EnableMouse(lua_State* L) {
WHOA_UNIMPLEMENTED(0); auto type = CSimpleFrame::GetObjectType();
auto frame = static_cast<CSimpleFrame*>(FrameScript_GetObjectThis(L, type));
if (!frame->ProtectedFunctionsAllowed()) {
// TODO disallowed logic
return 0;
}
if (StringToBOOL(L, 2, 1)) {
frame->EnableEvent(SIMPLE_EVENT_MOUSE, -1);
} else {
frame->DisableEvent(SIMPLE_EVENT_MOUSE);
}
return 0;
} }
int32_t CSimpleFrame_IsMouseEnabled(lua_State* L) { int32_t CSimpleFrame_IsMouseEnabled(lua_State* L) {