Compare commits

...

34 Commits

Author SHA1 Message Date
Marco Tylus
3c3e38b4ac
Merge 8935c520c0 into cd167c54a3 2026-01-28 07:58:45 +03: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
fallenoak
b9f2c60966
feat(ui): implement Script_GetCursorPosition 2026-01-27 09:01:17 -06:00
fallenoak
5f7bf8c95c
feat(ui): implement Script_GetCVarBool 2026-01-27 08:44:58 -06:00
fallenoak
7d9173b880
feat(ui): implement CSimpleTexture_IsShown 2026-01-27 08:26:08 -06:00
fallenoak
98ea309985
feat(ui): implement CSimpleTexture_IsVisible 2026-01-27 08:24:29 -06:00
fallenoak
ba5006a4d8
feat(ui): implement CSimpleFontString_IsVisible 2026-01-27 08:20:56 -06:00
fallenoak
e872450202
fix(ui): fix infinite loop in CSimpleFrame::SetBeingScrolled 2026-01-27 07:56:30 -06:00
fallenoak
bc1d7cbd66
feat(ui): add GameScriptRegisterFunctions 2026-01-27 05:28:39 -06:00
fallenoak
61b05eb366
feat(ui): add GMTicketInfoRegisterScriptFunctions
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-26 21:11:36 -06:00
fallenoak
a168c6fd41
feat(glue): unregister system functions in CGlueMgr::Suspend
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-26 16:41:13 -06:00
fallenoak
95a8f4287f
feat(ui): add SystemUnregisterFunctions 2026-01-26 16:37:50 -06:00
fallenoak
c0ec4aed44
chore(ui): tweak style 2026-01-26 16:36:15 -06:00
fallenoak
6dd15ed2cf
feat(ui): add FrameScript_UnregisterFunction 2026-01-26 16:35:15 -06:00
fallenoak
dc071210ca
chore(ui): clean up RegisterSimpleFrameScriptMethods 2026-01-26 15:54:06 -06:00
fallenoak
cbbf491620
chore(ui): clean up SystemRegisterFunctions
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-26 12:24:17 -06:00
fallenoak
caf628145d
feat(ui): add ScriptEventsRegisterFunctions
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-25 22:37:37 -06:00
aomizu
8935c520c0 feat: Add texture matrix transform support to Metal shaders for animated textures 2025-12-26 17:03:37 +09:00
aomizu
7cf7127810 feat: Implement color animation in Metal shaders by using diffuse and emissive vertex constants for output color. 2025-12-25 15:11:18 +09:00
aomizu
8fb51991e0 revert: remove non-metal shader init from Client.cpp 2025-12-25 13:24:07 +09:00
aomizu
7fdd22545f feat: Convert GxTex_Argb4444 textures to RGBA8 during Metal upload to simplify handling 2025-12-25 13:10:25 +09:00
aomizu
15eafe92d7 feat: Implement fog and point size in Metal shaders and refine render state processing for textures and other states. 2025-12-25 13:10:25 +09:00
aomizu
1ad3679f90 feat: Implement initial Metal graphics device with comprehensive shader system and pipeline management. 2025-12-25 13:10:25 +09:00
aomizu
81970958a8 feat: Add debug rendering pipeline to draw a triangle in the Metal backend. 2025-12-25 13:10:25 +09:00
aomizu
a9cad5238d init metal backend 2025-12-25 13:10:25 +09:00
51 changed files with 5878 additions and 132 deletions

View File

@ -32,6 +32,8 @@ if(WHOA_SYSTEM_MAC)
"-framework AppKit"
"-framework Carbon"
"-framework IOKit"
"-framework Metal"
"-framework QuartzCore"
)
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/mac/MainMenu.nib DESTINATION "bin")

View File

@ -0,0 +1,9 @@
#ifndef APP_MAC_ENGINE_MTL_LAYER_VIEW_H
#define APP_MAC_ENGINE_MTL_LAYER_VIEW_H
#include "app/mac/EngineGLLayerView.h"
@interface EngineMTLLayerView : EngineGLLayerView
@end
#endif

View File

@ -0,0 +1,36 @@
#include "app/mac/EngineMTLLayerView.h"
#import <QuartzCore/CAMetalLayer.h>
@implementation EngineMTLLayerView
- (CALayer*)makeBackingLayer {
return [CAMetalLayer layer];
}
- (id)initWithFrame:(NSRect)frame glWindow:(GLWindow*)window {
self = [super initWithFrame:frame glWindow:window];
if (self) {
[self setWantsLayer:YES];
}
return self;
}
- (void)drawRect:(NSRect)dirtyRect {
// Rendering is driven by CGxDeviceMTL.
}
- (void)update {
[super update];
if (![self.layer isKindOfClass:[CAMetalLayer class]]) {
return;
}
CAMetalLayer* layer = (CAMetalLayer*)self.layer;
CGSize size = [self convertSizeToBacking:self.bounds.size];
layer.drawableSize = size;
}
@end

View File

@ -1,7 +1,9 @@
#include "app/mac/View.h"
#include "app/mac/EngineGLLayerView.h"
#include "app/mac/EngineMTLLayerView.h"
#include "app/mac/WindowCallbacks.h"
#include "gx/gll/GLWindow.h"
#include "gx/Device.hpp"
GLWindowCallbacks EngineViewCallbacks = {
&MacOnResized,
@ -23,5 +25,9 @@ void AssignEngineViewCallbacks(GLWindowCallbacks* callbacks) {
}
Class GetEngineViewClass() {
if (GxDevApi() == GxApi_Metal) {
return [EngineMTLLayerView class];
}
return [EngineGLLayerView class];
}

View File

@ -2,6 +2,7 @@
#include "app/mac/MacClient.h"
#include "event/Input.hpp"
#include "gx/gll/CGxDeviceGLL.hpp"
#include "gx/mtl/CGxDeviceMTL.hpp"
#include "gx/Device.hpp"
#include "gx/Window.hpp"
#include <bc/Debug.hpp>
@ -171,7 +172,11 @@ void MacOnResized(int32_t width, int32_t height, bool a3) {
return;
}
static_cast<CGxDeviceGLL*>(g_theGxDevicePtr)->Resize(width, height);
if (GxDevApi() == GxApi_GLL) {
static_cast<CGxDeviceGLL*>(g_theGxDevicePtr)->Resize(width, height);
} else if (GxDevApi() == GxApi_Metal) {
static_cast<CGxDeviceMTL*>(g_theGxDevicePtr)->Resize(width, height);
}
OsQueuePut(OS_INPUT_SIZE, width, height, 0, 0);

View File

@ -6,6 +6,7 @@
#include "gx/Adapter.hpp"
#include "gx/Device.hpp"
#include <storm/Array.hpp>
#include <cstdlib>
#include <cstring>
static CGxDevice* s_device;
@ -417,6 +418,13 @@ void ConsoleDeviceInitialize(const char* title) {
api = GxApi_GLL;
#endif
#if defined(WHOA_SYSTEM_MAC)
const char* apiOverride = getenv("WHOA_GX_API");
if (apiOverride && !strcmp(apiOverride, "metal")) {
api = GxApi_Metal;
}
#endif
s_device = GxDevCreate(api, OsWindowProc, format);
// TODO

View File

@ -26,10 +26,11 @@
#include "ui/FrameXML.hpp"
#include "ui/Interface.hpp"
#include "ui/Key.hpp"
#include "ui/ScriptFunctions.hpp"
#include "ui/ScriptFunctionsSystem.hpp"
#include "ui/game/CGVideoOptions.hpp"
#include "ui/simple/CSimpleModelFFX.hpp"
#include "ui/simple/CSimpleTop.hpp"
#include "ui/simple/ScriptMethods.hpp"
#include "util/Filesystem.hpp"
#include "util/Locale.hpp"
#include "util/Log.hpp"
@ -1186,6 +1187,10 @@ void CGlueMgr::Suspend() {
// TODO
SystemUnregisterFunctions();
// TODO
FrameXML_FreeHashNodes();
// TODO

View File

@ -522,36 +522,6 @@ int32_t Script_IsScanDLLFinished(lua_State* L) {
return 1;
}
int32_t Script_IsWindowsClient(lua_State* L) {
#if defined(WHOA_SYSTEM_WIN)
lua_pushnumber(L, 1.0);
#else
lua_pushnil(L);
#endif
return 1;
}
int32_t Script_IsMacClient(lua_State* L) {
#if defined(WHOA_SYSTEM_MAC)
lua_pushnumber(L, 1.0);
#else
lua_pushnil(L);
#endif
return 1;
}
int32_t Script_IsLinuxClient(lua_State* L) {
#if defined(WHOA_SYSTEM_LINUX)
lua_pushnumber(L, 1.0);
#else
lua_pushnil(L);
#endif
return 1;
}
int32_t Script_SetRealmSplitState(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}

View File

@ -18,6 +18,7 @@
#if defined(WHOA_SYSTEM_MAC)
#include "gx/gll/CGxDeviceGLL.hpp"
#include "gx/mtl/CGxDeviceMTL.hpp"
#include "gx/mac/Display.hpp"
#include <ApplicationServices/ApplicationServices.h>
#include <OpenGL/OpenGL.h>
@ -117,6 +118,8 @@ int32_t CGxDevice::AdapterFormats(EGxApi api, TSGrowableArray<CGxFormat>& adapte
CGxDevice::OpenGlAdapterFormats(adapterFormats);
} else if (api == GxApi_GLL) {
CGxDevice::GLLAdapterFormats(adapterFormats);
} else if (api == GxApi_Metal) {
CGxDevice::OpenGlAdapterFormats(adapterFormats);
}
#elif defined(WHOA_SYSTEM_LINUX)
@ -228,6 +231,11 @@ CGxDevice* CGxDevice::NewGLL() {
auto m = SMemAlloc(sizeof(CGxDeviceGLL), __FILE__, __LINE__, 0x0);
return new (m) CGxDeviceGLL();
}
CGxDevice* CGxDevice::NewMTL() {
auto m = SMemAlloc(sizeof(CGxDeviceMTL), __FILE__, __LINE__, 0x0);
return new (m) CGxDeviceMTL();
}
#endif
CGxDevice* CGxDevice::NewOpenGl() {

View File

@ -70,6 +70,7 @@ class CGxDevice {
#endif
#if defined(WHOA_SYSTEM_MAC)
static CGxDevice* NewGLL();
static CGxDevice* NewMTL();
#endif
static CGxDevice* NewOpenGl();
static void OpenGlAdapterFormats(TSGrowableArray<CGxFormat>& adapterFormats);

View File

@ -20,6 +20,7 @@ if(WHOA_SYSTEM_MAC)
file(GLOB MAC_SOURCES
"gll/*.cpp"
"gll/*.mm"
"mtl/*.mm"
"mac/*.cpp"
)

View File

@ -24,6 +24,8 @@ CGxDevice* GxDevCreate(EGxApi api, int32_t (*windowProc)(void* window, uint32_t
device = CGxDevice::NewOpenGl();
} else if (api == GxApi_GLL) {
device = CGxDevice::NewGLL();
} else if (api == GxApi_Metal) {
device = CGxDevice::NewMTL();
} else {
// Error
}

View File

@ -35,7 +35,8 @@ enum EGxApi {
GxApi_D3d10 = 3,
GxApi_D3d11 = 4,
GxApi_GLL = 5,
GxApis_Last = 6
GxApi_Metal = 6,
GxApis_Last = 7
};
enum EGxBlend {

View File

@ -0,0 +1,81 @@
#ifndef GX_MTL_C_GX_DEVICE_MTL_HPP
#define GX_MTL_C_GX_DEVICE_MTL_HPP
#include "gx/CGxDevice.hpp"
#include "gx/gll/GLWindow.h"
class CGxBatch;
class CGxShader;
class CGxDeviceMTL : public CGxDevice {
public:
// Member variables
GLWindow m_window;
// Virtual member functions
void ITexMarkAsUpdated(CGxTex*) override;
void IRsSendToHw(EGxRenderState) override;
int32_t DeviceCreate(int32_t (*windowProc)(void* window, uint32_t message, uintptr_t wparam, intptr_t lparam), const CGxFormat&) override;
int32_t DeviceSetFormat(const CGxFormat&) override;
void* DeviceWindow() override;
void DeviceWM(EGxWM wm, uintptr_t param1, uintptr_t param2) override {};
void CapsWindowSize(CRect&) override;
void CapsWindowSizeInScreenCoords(CRect& dst) override;
void ScenePresent() override;
void SceneClear(uint32_t, CImVector) override;
void Draw(CGxBatch* batch, int32_t indexed) override;
void PoolSizeSet(CGxPool*, uint32_t) override;
char* BufLock(CGxBuf*) override;
int32_t BufUnlock(CGxBuf*, uint32_t) override;
void BufData(CGxBuf* buf, const void* data, size_t size, uintptr_t offset) override;
void TexDestroy(CGxTex* texId) override;
void IShaderCreate(CGxShader*) override;
void ShaderCreate(CGxShader*[], EGxShTarget, const char*, const char*, int32_t) override;
int32_t StereoEnabled(void) override;
void XformSetProjection(const C44Matrix& matrix) override;
// Member functions
CGxDeviceMTL();
void Resize(uint32_t width, uint32_t height);
private:
void ISetCaps(const CGxFormat& format);
void EnsureLibrary();
void BeginFrame();
void* GetPipeline(EGxVertexBufferFormat format, bool useColor, bool useSkin, bool useTex, int32_t blendMode);
void* GetPoolBuffer(CGxPool* pool);
void ITexCreate(CGxTex* texId);
void ITexUpload(CGxTex* texId);
void* GetTexture(CGxTex* texId);
void* GetSampler(CGxTex* texId);
void EnsureFallbackTexture();
void EnsureDepthTexture(uint32_t width, uint32_t height);
void* GetDepthState(bool depthTest, bool depthWrite, uint32_t depthFunc);
void* m_device = nullptr;
void* m_commandQueue = nullptr;
void* m_layer = nullptr;
void* m_shaderLibrary = nullptr;
void* m_pipelineColor[GxVertexBufferFormats_Last][GxBlends_Last] = {};
void* m_pipelineSolid[GxVertexBufferFormats_Last][GxBlends_Last] = {};
void* m_pipelineSkin[GxVertexBufferFormats_Last][GxBlends_Last] = {};
void* m_pipelineColorTex[GxVertexBufferFormats_Last][GxBlends_Last] = {};
void* m_pipelineSolidTex[GxVertexBufferFormats_Last][GxBlends_Last] = {};
void* m_pipelineSkinTex[GxVertexBufferFormats_Last][GxBlends_Last] = {};
void* m_pipelineColorTex2[GxVertexBufferFormats_Last][GxBlends_Last] = {};
void* m_pipelineSolidTex2[GxVertexBufferFormats_Last][GxBlends_Last] = {};
void* m_pipelineSkinTex2[GxVertexBufferFormats_Last][GxBlends_Last] = {};
void* m_frameCommandBuffer = nullptr;
void* m_frameEncoder = nullptr;
void* m_frameDrawable = nullptr;
uint32_t m_frameHasDraw = 0;
uint32_t m_clearMask = 0;
uint32_t m_clearColor = 0;
void* m_fallbackTexture = nullptr;
void* m_fallbackSampler = nullptr;
void* m_depthTexture = nullptr;
uint32_t m_depthWidth = 0;
uint32_t m_depthHeight = 0;
void* m_depthStates[2][2][4] = {};
};
#endif

1855
src/gx/mtl/CGxDeviceMTL.mm Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1047,6 +1047,15 @@ const char* FrameScript_Sprintf(lua_State* L, int32_t idx, char buffer[], uint32
return buffer;
}
void FrameScript_UnregisterFunction(const char* name) {
auto L = FrameScript::s_context;
lua_pushnil(L);
lua_pushstring(L, name);
lua_insert(L, -2);
lua_rawset(L, LUA_GLOBALSINDEX);
}
void FrameScript_UnregisterScriptEvent(FrameScript_Object* object, FrameScript_EventObject* event) {
if (event->pendingSignalCount) {
auto node = event->unregisterListeners.Head();

View File

@ -99,6 +99,8 @@ void FrameScript_SignalEvent(uint32_t index, const char* format, ...);
const char* FrameScript_Sprintf(lua_State* L, int32_t idx, char buffer[], uint32_t bufferLen);
void FrameScript_UnregisterFunction(const char* name);
void FrameScript_UnregisterScriptEvent(FrameScript_Object* object, FrameScript_EventObject* event);
void ScriptEventsInitialize();

View File

@ -1,65 +0,0 @@
#include "ui/ScriptFunctions.hpp"
#include "ui/FrameScript.hpp"
#include "ui/simple/CSimpleButton.hpp"
#include "ui/simple/CSimpleCheckbox.hpp"
#include "ui/simple/CSimpleEditBox.hpp"
#include "ui/simple/CSimpleFont.hpp"
#include "ui/simple/CSimpleFontString.hpp"
#include "ui/simple/CSimpleFrame.hpp"
#include "ui/simple/CSimpleHTML.hpp"
#include "ui/simple/CSimpleModel.hpp"
#include "ui/simple/CSimpleModelFFX.hpp"
#include "ui/simple/CSimpleScrollFrame.hpp"
#include "ui/simple/CSimpleSlider.hpp"
#include "ui/simple/CSimpleTexture.hpp"
void RegisterSimpleFrameScriptMethods() {
for (int32_t i = 0; i < NUM_SCRIPT_FUNCTIONS_SIMPLE_FRAME; ++i) {
FrameScript_RegisterFunction(
FrameScript::s_ScriptFunctions_SimpleFrame[i].name,
FrameScript::s_ScriptFunctions_SimpleFrame[i].method
);
}
// TODO
// CSimpleAnim::CreateScriptMetaTable();
// CSimpleTranslationAnim::CreateScriptMetaTable();
// CSimpleRotationAnim::CreateScriptMetaTable();
// CSimpleScaleAnim::CreateScriptMetaTable();
// CSimpleControlPoint::CreateScriptMetaTable();
// CSimplePathAnim::CreateScriptMetaTable();
// CSimpleAlphaAnim::CreateScriptMetaTable();
// CSimpleAnimGroup::CreateScriptMetaTable();
CSimpleFont::CreateScriptMetaTable();
CSimpleTexture::CreateScriptMetaTable();
CSimpleFontString::CreateScriptMetaTable();
CSimpleFrame::CreateScriptMetaTable();
CSimpleButton::CreateScriptMetaTable();
CSimpleCheckbox::CreateScriptMetaTable();
CSimpleEditBox::CreateScriptMetaTable();
CSimpleHTML::CreateScriptMetaTable();
// TODO
// CSimpleMessageFrame::CreateScriptMetaTable();
// CSimpleMessageScrollFrame::CreateScriptMetaTable();
CSimpleModel::CreateScriptMetaTable();
CSimpleModelFFX::CreateScriptMetaTable();
CSimpleScrollFrame::CreateScriptMetaTable();
CSimpleSlider::CreateScriptMetaTable();
// TODO
// CSimpleStatusBar::CreateScriptMetaTable();
// CSimpleColorSelect::CreateScriptMetaTable();
// CSimpleMovieFrame::CreateScriptMetaTable();
}
void SystemRegisterFunctions() {
for (int32_t i = 0; i < NUM_SCRIPT_FUNCTIONS_SYSTEM; ++i) {
FrameScript_RegisterFunction(
FrameScript::s_ScriptFunctions_System[i].name,
FrameScript::s_ScriptFunctions_System[i].method
);
}
}

View File

@ -1,21 +0,0 @@
#ifndef UI_SCRIPT_FUNCTIONS_HPP
#define UI_SCRIPT_FUNCTIONS_HPP
#include "ui/Types.hpp"
#include <cstdint>
struct lua_State;
#define NUM_SCRIPT_FUNCTIONS_SIMPLE_FRAME 7
#define NUM_SCRIPT_FUNCTIONS_SYSTEM 7
namespace FrameScript {
extern FrameScript_Method s_ScriptFunctions_SimpleFrame[NUM_SCRIPT_FUNCTIONS_SIMPLE_FRAME];
extern FrameScript_Method s_ScriptFunctions_System[NUM_SCRIPT_FUNCTIONS_SYSTEM];
}
void RegisterSimpleFrameScriptMethods();
void SystemRegisterFunctions();
#endif

View File

@ -1,4 +1,4 @@
#include "ui/ScriptFunctions.hpp"
#include "ui/ScriptFunctionsShared.hpp"
#include "util/Lua.hpp"
#include "util/Unimplemented.hpp"
#include <cstdint>
@ -6,3 +6,33 @@
int32_t Script_GetAccountExpansionLevel(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_IsLinuxClient(lua_State* L) {
#if defined(WHOA_SYSTEM_LINUX)
lua_pushnumber(L, 1.0);
#else
lua_pushnil(L);
#endif
return 1;
}
int32_t Script_IsMacClient(lua_State* L) {
#if defined(WHOA_SYSTEM_MAC)
lua_pushnumber(L, 1.0);
#else
lua_pushnil(L);
#endif
return 1;
}
int32_t Script_IsWindowsClient(lua_State* L) {
#if defined(WHOA_SYSTEM_WIN)
lua_pushnumber(L, 1.0);
#else
lua_pushnil(L);
#endif
return 1;
}

View File

@ -6,4 +6,10 @@
int32_t Script_GetAccountExpansionLevel(lua_State* L);
int32_t Script_IsLinuxClient(lua_State* L);
int32_t Script_IsMacClient(lua_State* L);
int32_t Script_IsWindowsClient(lua_State* L);
#endif

View File

@ -1,4 +1,4 @@
#include "ui/ScriptFunctions.hpp"
#include "ui/FrameScript.hpp"
#include "ui/ScriptFunctionsShared.hpp"
#include "ui/Types.hpp"
#include "util/Lua.hpp"
@ -14,7 +14,10 @@ int32_t Script_GetTime(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) {
@ -22,10 +25,12 @@ int32_t Script_ConsoleExec(lua_State* L) {
}
int32_t Script_AccessDenied(lua_State* L) {
return luaL_error(L, "Access Denied");
luaL_error(L, "Access Denied");
return 0;
}
FrameScript_Method FrameScript::s_ScriptFunctions_System[NUM_SCRIPT_FUNCTIONS_SYSTEM] = {
static FrameScript_Method s_SystemFunctions[] = {
{ "GetTime", &Script_GetTime },
{ "GetGameTime", &Script_GetGameTime },
{ "ConsoleExec", &Script_ConsoleExec },
@ -34,3 +39,15 @@ FrameScript_Method FrameScript::s_ScriptFunctions_System[NUM_SCRIPT_FUNCTIONS_SY
{ "AppendToFile", &Script_AccessDenied },
{ "GetAccountExpansionLevel", &Script_GetAccountExpansionLevel }
};
void SystemRegisterFunctions() {
for (auto& func : s_SystemFunctions) {
FrameScript_RegisterFunction(func.name, func.method);
}
}
void SystemUnregisterFunctions() {
for (auto& func : s_SystemFunctions) {
FrameScript_UnregisterFunction(func.name);
}
}

View File

@ -0,0 +1,8 @@
#ifndef UI_SCRIPT_FUNCTIONS_SYSTEM_HPP
#define UI_SCRIPT_FUNCTIONS_SYSTEM_HPP
void SystemRegisterFunctions();
void SystemUnregisterFunctions();
#endif

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

View File

@ -1,11 +1,13 @@
#ifndef UI_GAME_C_G_GAME_UI_HPP
#define UI_GAME_C_G_GAME_UI_HPP
class CScriptObject;
class CSimpleTop;
class CGGameUI {
public:
// Static variables
static CScriptObject* s_gameTooltip;
static CSimpleTop* s_simpleTop;
// 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,87 @@
#include "ui/game/GMTicketInfoScript.hpp"
#include "ui/FrameScript.hpp"
#include "util/Unimplemented.hpp"
int32_t Script_GetGMTicket(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_NewGMTicket(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UpdateGMTicket(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_DeleteGMTicket(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GMResponseNeedMoreHelp(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GMResponseResolve(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetGMStatus(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GMSurveyQuestion(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GMSurveyNumAnswers(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GMSurveyAnswer(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GMSurveyAnswerSubmit(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GMSurveyCommentSubmit(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GMSurveySubmit(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GMReportLag(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_RegisterStaticConstants(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static FrameScript_Method s_ScriptFunctions[] = {
{ "GetGMTicket", &Script_GetGMTicket },
{ "NewGMTicket", &Script_NewGMTicket },
{ "UpdateGMTicket", &Script_UpdateGMTicket },
{ "DeleteGMTicket", &Script_DeleteGMTicket },
{ "GMResponseNeedMoreHelp", &Script_GMResponseNeedMoreHelp },
{ "GMResponseResolve", &Script_GMResponseResolve },
{ "GetGMStatus", &Script_GetGMStatus },
{ "GMSurveyQuestion", &Script_GMSurveyQuestion },
{ "GMSurveyNumAnswers", &Script_GMSurveyNumAnswers },
{ "GMSurveyAnswer", &Script_GMSurveyAnswer },
{ "GMSurveyAnswerSubmit", &Script_GMSurveyAnswerSubmit },
{ "GMSurveyCommentSubmit", &Script_GMSurveyCommentSubmit },
{ "GMSurveySubmit", &Script_GMSurveySubmit },
{ "GMReportLag", &Script_GMReportLag },
{ "RegisterStaticConstants", &Script_RegisterStaticConstants },
};
void GMTicketInfoRegisterScriptFunctions() {
for (auto& func : s_ScriptFunctions) {
FrameScript_RegisterFunction(func.name, func.method);
}
}

View File

@ -0,0 +1,6 @@
#ifndef UI_GAME_GM_TICKET_INFO_SCRIPT_HPP
#define UI_GAME_GM_TICKET_INFO_SCRIPT_HPP
void GMTicketInfoRegisterScriptFunctions();
#endif

1590
src/ui/game/GameScript.cpp Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,6 @@
#ifndef UI_GAME_GAME_SCRIPT_HPP
#define UI_GAME_GAME_SCRIPT_HPP
void GameScriptRegisterFunctions();
#endif

View File

@ -0,0 +1,860 @@
#include "ui/game/ScriptEvents.hpp"
#include "ui/FrameScript.hpp"
#include "ui/ScriptFunctionsSystem.hpp"
#include "util/Unimplemented.hpp"
int32_t Script_UnitExists(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitIsVisible(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitIsUnit(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitIsPlayer(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitIsInMyGuild(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitIsCorpse(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitIsPartyLeader(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitGroupRolesAssigned(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitIsRaidOfficer(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitInParty(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitPlayerOrPetInParty(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitInRaid(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitPlayerOrPetInRaid(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitPlayerControlled(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitIsAFK(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitIsDND(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitIsPVP(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitIsPVPSanctuary(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitIsPVPFreeForAll(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitFactionGroup(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitReaction(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitIsEnemy(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitIsFriend(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitCanCooperate(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitCanAssist(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitCanAttack(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitIsCharmed(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitIsPossessed(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_PlayerCanTeleport(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitClassification(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitSelectionColor(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitGUID(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitName(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitPVPName(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitXP(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitXPMax(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitHealth(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitHealthMax(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitMana(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitManaMax(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitPower(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitPowerMax(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitPowerType(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitOnTaxi(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitIsFeignDeath(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitIsDead(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitIsGhost(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitIsDeadOrGhost(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitIsConnected(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitAffectingCombat(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitSex(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitLevel(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetMoney(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetHonorCurrency(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetArenaCurrency(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitRace(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitClass(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitClassBase(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitResistance(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitStat(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitAttackBothHands(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitDamage(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitRangedDamage(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitRangedAttack(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitAttackSpeed(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitAttackPower(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitRangedAttackPower(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitDefense(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitArmor(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitCharacterPoints(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitBuff(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitDebuff(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitAura(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitIsTapped(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitIsTappedByPlayer(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitIsTappedByAllThreatList(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitIsTrivial(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitHasRelicSlot(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_SetPortraitTexture(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_HasFullControl(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetComboPoints(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_IsInGuild(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_IsGuildLeader(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_IsArenaTeamCaptain(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_IsInArenaTeam(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_IsResting(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetCombatRating(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetCombatRatingBonus(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetMaxCombatRatingBonus(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetDodgeChance(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetBlockChance(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetShieldBlock(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetParryChance(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetCritChanceFromAgility(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetSpellCritChanceFromIntellect(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetCritChance(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetRangedCritChance(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetSpellCritChance(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetSpellBonusDamage(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetSpellBonusHealing(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetPetSpellBonusDamage(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetSpellPenetration(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetArmorPenetration(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetAttackPowerForStat(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitCreatureType(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitCreatureFamily(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetResSicknessDuration(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetPVPSessionStats(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetPVPYesterdayStats(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetPVPLifetimeStats(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitPVPRank(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetPVPRankInfo(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetPVPRankProgress(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitCastingInfo(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitChannelInfo(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_IsLoggedIn(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_IsFlyableArea(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_IsIndoors(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_IsOutdoors(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_IsOutOfBounds(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_IsFalling(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_IsSwimming(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_IsFlying(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_IsMounted(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_IsStealthed(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitIsSameServer(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetUnitHealthModifier(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetUnitMaxHealthModifier(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetUnitPowerModifier(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetUnitHealthRegenRateFromSpirit(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetUnitManaRegenRateFromSpirit(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetManaRegen(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetPowerRegen(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetRuneCooldown(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetRuneCount(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetRuneType(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_ReportPlayerIsPVPAFK(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_PlayerIsPVPInactive(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetExpertise(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetExpertisePercent(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitInBattleground(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitInRange(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetUnitSpeed(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetUnitPitch(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitInVehicle(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitUsingVehicle(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitControllingVehicle(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitInVehicleControlSeat(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitHasVehicleUI(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitTargetsVehicleInRaidUI(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitVehicleSkin(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitVehicleSeatCount(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitVehicleSeatInfo(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitSwitchToVehicleSeat(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_CanSwitchVehicleSeat(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetVehicleUIIndicator(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetVehicleUIIndicatorSeat(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitThreatSituation(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitDetailedThreatSituation(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_UnitIsControlling(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_EjectPassengerFromSeat(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_CanEjectPassengerFromSeat(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_RespondInstanceLock(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetPlayerFacing(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetPlayerInfoByGUID(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetItemStats(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_GetItemStatDelta(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_IsXPUserDisabled(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
int32_t Script_FillLocalizedClassList(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
static FrameScript_Method s_UnitFunctions[] = {
{ "UnitExists", &Script_UnitExists },
{ "UnitIsVisible", &Script_UnitIsVisible },
{ "UnitIsUnit", &Script_UnitIsUnit },
{ "UnitIsPlayer", &Script_UnitIsPlayer },
{ "UnitIsInMyGuild", &Script_UnitIsInMyGuild },
{ "UnitIsCorpse", &Script_UnitIsCorpse },
{ "UnitIsPartyLeader", &Script_UnitIsPartyLeader },
{ "UnitGroupRolesAssigned", &Script_UnitGroupRolesAssigned },
{ "UnitIsRaidOfficer", &Script_UnitIsRaidOfficer },
{ "UnitInParty", &Script_UnitInParty },
{ "UnitPlayerOrPetInParty", &Script_UnitPlayerOrPetInParty },
{ "UnitInRaid", &Script_UnitInRaid },
{ "UnitPlayerOrPetInRaid", &Script_UnitPlayerOrPetInRaid },
{ "UnitPlayerControlled", &Script_UnitPlayerControlled },
{ "UnitIsAFK", &Script_UnitIsAFK },
{ "UnitIsDND", &Script_UnitIsDND },
{ "UnitIsPVP", &Script_UnitIsPVP },
{ "UnitIsPVPSanctuary", &Script_UnitIsPVPSanctuary },
{ "UnitIsPVPFreeForAll", &Script_UnitIsPVPFreeForAll },
{ "UnitFactionGroup", &Script_UnitFactionGroup },
{ "UnitReaction", &Script_UnitReaction },
{ "UnitIsEnemy", &Script_UnitIsEnemy },
{ "UnitIsFriend", &Script_UnitIsFriend },
{ "UnitCanCooperate", &Script_UnitCanCooperate },
{ "UnitCanAssist", &Script_UnitCanAssist },
{ "UnitCanAttack", &Script_UnitCanAttack },
{ "UnitIsCharmed", &Script_UnitIsCharmed },
{ "UnitIsPossessed", &Script_UnitIsPossessed },
{ "PlayerCanTeleport", &Script_PlayerCanTeleport },
{ "UnitClassification", &Script_UnitClassification },
{ "UnitSelectionColor", &Script_UnitSelectionColor },
{ "UnitGUID", &Script_UnitGUID },
{ "UnitName", &Script_UnitName },
{ "UnitPVPName", &Script_UnitPVPName },
{ "UnitXP", &Script_UnitXP },
{ "UnitXPMax", &Script_UnitXPMax },
{ "UnitHealth", &Script_UnitHealth },
{ "UnitHealthMax", &Script_UnitHealthMax },
{ "UnitMana", &Script_UnitMana },
{ "UnitManaMax", &Script_UnitManaMax },
{ "UnitPower", &Script_UnitPower },
{ "UnitPowerMax", &Script_UnitPowerMax },
{ "UnitPowerType", &Script_UnitPowerType },
{ "UnitOnTaxi", &Script_UnitOnTaxi },
{ "UnitIsFeignDeath", &Script_UnitIsFeignDeath },
{ "UnitIsDead", &Script_UnitIsDead },
{ "UnitIsGhost", &Script_UnitIsGhost },
{ "UnitIsDeadOrGhost", &Script_UnitIsDeadOrGhost },
{ "UnitIsConnected", &Script_UnitIsConnected },
{ "UnitAffectingCombat", &Script_UnitAffectingCombat },
{ "UnitSex", &Script_UnitSex },
{ "UnitLevel", &Script_UnitLevel },
{ "GetMoney", &Script_GetMoney },
{ "GetHonorCurrency", &Script_GetHonorCurrency },
{ "GetArenaCurrency", &Script_GetArenaCurrency },
{ "UnitRace", &Script_UnitRace },
{ "UnitClass", &Script_UnitClass },
{ "UnitClassBase", &Script_UnitClassBase },
{ "UnitResistance", &Script_UnitResistance },
{ "UnitStat", &Script_UnitStat },
{ "UnitAttackBothHands", &Script_UnitAttackBothHands },
{ "UnitDamage", &Script_UnitDamage },
{ "UnitRangedDamage", &Script_UnitRangedDamage },
{ "UnitRangedAttack", &Script_UnitRangedAttack },
{ "UnitAttackSpeed", &Script_UnitAttackSpeed },
{ "UnitAttackPower", &Script_UnitAttackPower },
{ "UnitRangedAttackPower", &Script_UnitRangedAttackPower },
{ "UnitDefense", &Script_UnitDefense },
{ "UnitArmor", &Script_UnitArmor },
{ "UnitCharacterPoints", &Script_UnitCharacterPoints },
{ "UnitBuff", &Script_UnitBuff },
{ "UnitDebuff", &Script_UnitDebuff },
{ "UnitAura", &Script_UnitAura },
{ "UnitIsTapped", &Script_UnitIsTapped },
{ "UnitIsTappedByPlayer", &Script_UnitIsTappedByPlayer },
{ "UnitIsTappedByAllThreatList", &Script_UnitIsTappedByAllThreatList },
{ "UnitIsTrivial", &Script_UnitIsTrivial },
{ "UnitHasRelicSlot", &Script_UnitHasRelicSlot },
{ "SetPortraitTexture", &Script_SetPortraitTexture },
{ "HasFullControl", &Script_HasFullControl },
{ "GetComboPoints", &Script_GetComboPoints },
{ "IsInGuild", &Script_IsInGuild },
{ "IsGuildLeader", &Script_IsGuildLeader },
{ "IsArenaTeamCaptain", &Script_IsArenaTeamCaptain },
{ "IsInArenaTeam", &Script_IsInArenaTeam },
{ "IsResting", &Script_IsResting },
{ "GetCombatRating", &Script_GetCombatRating },
{ "GetCombatRatingBonus", &Script_GetCombatRatingBonus },
{ "GetMaxCombatRatingBonus", &Script_GetMaxCombatRatingBonus },
{ "GetDodgeChance", &Script_GetDodgeChance },
{ "GetBlockChance", &Script_GetBlockChance },
{ "GetShieldBlock", &Script_GetShieldBlock },
{ "GetParryChance", &Script_GetParryChance },
{ "GetCritChanceFromAgility", &Script_GetCritChanceFromAgility },
{ "GetSpellCritChanceFromIntellect", &Script_GetSpellCritChanceFromIntellect },
{ "GetCritChance", &Script_GetCritChance },
{ "GetRangedCritChance", &Script_GetRangedCritChance },
{ "GetSpellCritChance", &Script_GetSpellCritChance },
{ "GetSpellBonusDamage", &Script_GetSpellBonusDamage },
{ "GetSpellBonusHealing", &Script_GetSpellBonusHealing },
{ "GetPetSpellBonusDamage", &Script_GetPetSpellBonusDamage },
{ "GetSpellPenetration", &Script_GetSpellPenetration },
{ "GetArmorPenetration", &Script_GetArmorPenetration },
{ "GetAttackPowerForStat", &Script_GetAttackPowerForStat },
{ "UnitCreatureType", &Script_UnitCreatureType },
{ "UnitCreatureFamily", &Script_UnitCreatureFamily },
{ "GetResSicknessDuration", &Script_GetResSicknessDuration },
{ "GetPVPSessionStats", &Script_GetPVPSessionStats },
{ "GetPVPYesterdayStats", &Script_GetPVPYesterdayStats },
{ "GetPVPLifetimeStats", &Script_GetPVPLifetimeStats },
{ "UnitPVPRank", &Script_UnitPVPRank },
{ "GetPVPRankInfo", &Script_GetPVPRankInfo },
{ "GetPVPRankProgress", &Script_GetPVPRankProgress },
{ "UnitCastingInfo", &Script_UnitCastingInfo },
{ "UnitChannelInfo", &Script_UnitChannelInfo },
{ "IsLoggedIn", &Script_IsLoggedIn },
{ "IsFlyableArea", &Script_IsFlyableArea },
{ "IsIndoors", &Script_IsIndoors },
{ "IsOutdoors", &Script_IsOutdoors },
{ "IsOutOfBounds", &Script_IsOutOfBounds },
{ "IsFalling", &Script_IsFalling },
{ "IsSwimming", &Script_IsSwimming },
{ "IsFlying", &Script_IsFlying },
{ "IsMounted", &Script_IsMounted },
{ "IsStealthed", &Script_IsStealthed },
{ "UnitIsSameServer", &Script_UnitIsSameServer },
{ "GetUnitHealthModifier", &Script_GetUnitHealthModifier },
{ "GetUnitMaxHealthModifier", &Script_GetUnitMaxHealthModifier },
{ "GetUnitPowerModifier", &Script_GetUnitPowerModifier },
{ "GetUnitHealthRegenRateFromSpirit", &Script_GetUnitHealthRegenRateFromSpirit },
{ "GetUnitManaRegenRateFromSpirit", &Script_GetUnitManaRegenRateFromSpirit },
{ "GetManaRegen", &Script_GetManaRegen },
{ "GetPowerRegen", &Script_GetPowerRegen },
{ "GetRuneCooldown", &Script_GetRuneCooldown },
{ "GetRuneCount", &Script_GetRuneCount },
{ "GetRuneType", &Script_GetRuneType },
{ "ReportPlayerIsPVPAFK", &Script_ReportPlayerIsPVPAFK },
{ "PlayerIsPVPInactive", &Script_PlayerIsPVPInactive },
{ "GetExpertise", &Script_GetExpertise },
{ "GetExpertisePercent", &Script_GetExpertisePercent },
{ "UnitInBattleground", &Script_UnitInBattleground },
{ "UnitInRange", &Script_UnitInRange },
{ "GetUnitSpeed", &Script_GetUnitSpeed },
{ "GetUnitPitch", &Script_GetUnitPitch },
{ "UnitInVehicle", &Script_UnitInVehicle },
{ "UnitUsingVehicle", &Script_UnitUsingVehicle },
{ "UnitControllingVehicle", &Script_UnitControllingVehicle },
{ "UnitInVehicleControlSeat", &Script_UnitInVehicleControlSeat },
{ "UnitHasVehicleUI", &Script_UnitHasVehicleUI },
{ "UnitTargetsVehicleInRaidUI", &Script_UnitTargetsVehicleInRaidUI },
{ "UnitVehicleSkin", &Script_UnitVehicleSkin },
{ "UnitVehicleSeatCount", &Script_UnitVehicleSeatCount },
{ "UnitVehicleSeatInfo", &Script_UnitVehicleSeatInfo },
{ "UnitSwitchToVehicleSeat", &Script_UnitSwitchToVehicleSeat },
{ "CanSwitchVehicleSeat", &Script_CanSwitchVehicleSeat },
{ "GetVehicleUIIndicator", &Script_GetVehicleUIIndicator },
{ "GetVehicleUIIndicatorSeat", &Script_GetVehicleUIIndicatorSeat },
{ "UnitThreatSituation", &Script_UnitThreatSituation },
{ "UnitDetailedThreatSituation", &Script_UnitDetailedThreatSituation },
{ "UnitIsControlling", &Script_UnitIsControlling },
{ "EjectPassengerFromSeat", &Script_EjectPassengerFromSeat },
{ "CanEjectPassengerFromSeat", &Script_CanEjectPassengerFromSeat },
{ "RespondInstanceLock", &Script_RespondInstanceLock },
{ "GetPlayerFacing", &Script_GetPlayerFacing },
{ "GetPlayerInfoByGUID", &Script_GetPlayerInfoByGUID },
{ "GetItemStats", &Script_GetItemStats },
{ "GetItemStatDelta", &Script_GetItemStatDelta },
{ "IsXPUserDisabled", &Script_IsXPUserDisabled },
{ "FillLocalizedClassList", &Script_FillLocalizedClassList },
};
void ScriptEventsRegisterFunctions() {
SystemRegisterFunctions();
for (auto& func : s_UnitFunctions) {
FrameScript_RegisterFunction(func.name, func.method);
}
}

View File

@ -0,0 +1,6 @@
#ifndef UI_GAME_SCRIPT_EVENTS_HPP
#define UI_GAME_SCRIPT_EVENTS_HPP
void ScriptEventsRegisterFunctions();
#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

@ -73,7 +73,16 @@ int32_t CSimpleFontString_Hide(lua_State* L) {
}
int32_t CSimpleFontString_IsVisible(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
auto type = CSimpleFontString::GetObjectType();
auto string = static_cast<CSimpleFontString*>(FrameScript_GetObjectThis(L, type));
if (string->IsVisible()) {
lua_pushnumber(L, 1.0);
} else {
lua_pushnil(L);
}
return 1;
}
int32_t CSimpleFontString_IsShown(lua_State* L) {

View File

@ -100,6 +100,18 @@ void CSimpleFrame::DisableDrawLayer(uint32_t 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) {
this->m_drawenabled[drawlayer] = 1;
this->NotifyDrawLayerChanged(drawlayer);
@ -1342,7 +1354,7 @@ void CSimpleFrame::SetBeingScrolled(int32_t a2, int32_t a3) {
this->m_batchDirty |= 0x1F;
}
for (auto child = this->m_children.Head(); child; this->m_children.Link(child)->Next()) {
for (auto child = this->m_children.Head(); child; child = this->m_children.Link(child)->Next()) {
if (!(child->frame->m_flags & 0x4000)) {
child->frame->SetBeingScrolled(a2, -1);
}

View File

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

View File

@ -4,6 +4,7 @@
#include "ui/FrameScript.hpp"
#include "ui/simple/CSimpleFrame.hpp"
#include "util/Lua.hpp"
#include "util/StringTo.hpp"
#include "util/Unimplemented.hpp"
#include <algorithm>
#include <cstdint>
@ -459,7 +460,22 @@ int32_t CSimpleFrame_IsKeyboardEnabled(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) {

View File

@ -49,6 +49,10 @@ bool CSimpleRegion::IsShown() {
return this->m_shown == 1;
}
bool CSimpleRegion::IsVisible() {
return this->m_visible == 1;
}
void CSimpleRegion::OnColorChanged(bool a2) {
if (this->m_parent) {
uint8_t effectiveAlpha = this->m_parent->m_alpha * this->m_parent->alphaBD / 255;

View File

@ -32,6 +32,7 @@ class CSimpleRegion : public CScriptRegion {
void Hide();
void HideThis();
bool IsShown();
bool IsVisible();
void OnRegionChanged();
void SetVertexColor(const CImVector& color);
void SetVertexGradient(ORIENTATION orientation, const CImVector& minColor, const CImVector& maxColor);

View File

@ -97,11 +97,29 @@ int32_t CSimpleTexture_Hide(lua_State* L) {
}
int32_t CSimpleTexture_IsVisible(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
auto type = CSimpleTexture::GetObjectType();
auto texture = static_cast<CSimpleTexture*>(FrameScript_GetObjectThis(L, type));
if (texture->IsVisible()) {
lua_pushnumber(L, 1.0);
} else {
lua_pushnil(L);
}
return 1;
}
int32_t CSimpleTexture_IsShown(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
auto type = CSimpleTexture::GetObjectType();
auto texture = static_cast<CSimpleTexture*>(FrameScript_GetObjectThis(L, type));
if (texture->IsShown()) {
lua_pushnumber(L, 1.0);
} else {
lua_pushnil(L);
}
return 1;
}
int32_t CSimpleTexture_GetTexture(lua_State* L) {

View File

@ -1,13 +1,24 @@
#include "ui/simple/ScriptMethods.hpp"
#include "ui/FrameXML.hpp"
#include "ui/ScriptFunctions.hpp"
#include "ui/Types.hpp"
#include "ui/simple/CSimpleButton.hpp"
#include "ui/simple/CSimpleCheckbox.hpp"
#include "ui/simple/CSimpleEditBox.hpp"
#include "ui/simple/CSimpleFont.hpp"
#include "ui/simple/CSimpleFontString.hpp"
#include "ui/simple/CSimpleFrame.hpp"
#include "ui/simple/CSimpleHTML.hpp"
#include "ui/simple/CSimpleModel.hpp"
#include "ui/simple/CSimpleModelFFX.hpp"
#include "ui/simple/CSimpleScrollFrame.hpp"
#include "ui/simple/CSimpleSlider.hpp"
#include "ui/simple/CSimpleTexture.hpp"
#include "util/CStatus.hpp"
#include "util/Lua.hpp"
#include "util/Unimplemented.hpp"
#include <common/XML.hpp>
#include <cstdint>
#include <storm/String.hpp>
#include <cstdint>
int32_t Script_GetText(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
@ -137,7 +148,7 @@ int32_t Script_GetCurrentKeyBoardFocus(lua_State* L) {
WHOA_UNIMPLEMENTED(0);
}
FrameScript_Method FrameScript::s_ScriptFunctions_SimpleFrame[NUM_SCRIPT_FUNCTIONS_SIMPLE_FRAME] = {
static FrameScript_Method s_ScriptFunctions[] = {
{ "GetText", &Script_GetText },
{ "GetNumFrames", &Script_GetNumFrames },
{ "EnumerateFrames", &Script_EnumerateFrames },
@ -146,3 +157,42 @@ FrameScript_Method FrameScript::s_ScriptFunctions_SimpleFrame[NUM_SCRIPT_FUNCTIO
{ "GetFramesRegisteredForEvent", &Script_GetFramesRegisteredForEvent },
{ "GetCurrentKeyBoardFocus", &Script_GetCurrentKeyBoardFocus },
};
void RegisterSimpleFrameScriptMethods() {
for (auto& func : s_ScriptFunctions) {
FrameScript_RegisterFunction(func.name, func.method);
}
// TODO
// CSimpleAnim::CreateScriptMetaTable();
// CSimpleTranslationAnim::CreateScriptMetaTable();
// CSimpleRotationAnim::CreateScriptMetaTable();
// CSimpleScaleAnim::CreateScriptMetaTable();
// CSimpleControlPoint::CreateScriptMetaTable();
// CSimplePathAnim::CreateScriptMetaTable();
// CSimpleAlphaAnim::CreateScriptMetaTable();
// CSimpleAnimGroup::CreateScriptMetaTable();
CSimpleFont::CreateScriptMetaTable();
CSimpleTexture::CreateScriptMetaTable();
CSimpleFontString::CreateScriptMetaTable();
CSimpleFrame::CreateScriptMetaTable();
CSimpleButton::CreateScriptMetaTable();
CSimpleCheckbox::CreateScriptMetaTable();
CSimpleEditBox::CreateScriptMetaTable();
CSimpleHTML::CreateScriptMetaTable();
// TODO
// CSimpleMessageFrame::CreateScriptMetaTable();
// CSimpleMessageScrollFrame::CreateScriptMetaTable();
CSimpleModel::CreateScriptMetaTable();
CSimpleModelFFX::CreateScriptMetaTable();
CSimpleScrollFrame::CreateScriptMetaTable();
CSimpleSlider::CreateScriptMetaTable();
// TODO
// CSimpleStatusBar::CreateScriptMetaTable();
// CSimpleColorSelect::CreateScriptMetaTable();
// CSimpleMovieFrame::CreateScriptMetaTable();
}

View File

@ -0,0 +1,6 @@
#ifndef UI_SIMPLE_SCRIPT_METHODS_HPP
#define UI_SIMPLE_SCRIPT_METHODS_HPP
void RegisterSimpleFrameScriptMethods();
#endif

View File

@ -22,6 +22,8 @@ if(WHOA_SYSTEM_MAC)
"-framework AppKit"
"-framework Carbon"
"-framework IOKit"
"-framework Metal"
"-framework QuartzCore"
)
endif()