mirror of
https://github.com/whoahq/whoa.git
synced 2026-03-19 14:11:06 +03:00
Compare commits
57 Commits
65b5a74d2f
...
8c399fb517
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8c399fb517 | ||
|
|
f08cbc0795 | ||
|
|
19f51db2e2 | ||
|
|
315ea05ba0 | ||
|
|
a53e1360a4 | ||
|
|
cfb8f2bae1 | ||
|
|
ed9c683602 | ||
|
|
ee48e47992 | ||
|
|
5d81022c74 | ||
|
|
c9f26b6666 | ||
|
|
f567a3a7c8 | ||
|
|
aac8cf0855 | ||
|
|
aa22dd952a | ||
|
|
534e05be93 | ||
|
|
856bb72e1a | ||
|
|
3713a7ee89 | ||
|
|
98103db5ee | ||
|
|
d0621df975 | ||
|
|
fd31a10eaf | ||
|
|
78f2afb891 | ||
|
|
d9b6647c42 | ||
|
|
dc22db2f18 | ||
|
|
977a3051db | ||
|
|
c54dda367b | ||
|
|
35699af8d2 | ||
|
|
61484450b8 | ||
|
|
bc2dabeea9 | ||
|
|
6a4a2110f4 | ||
|
|
4857e817c5 | ||
|
|
7d911e453d | ||
|
|
d34336cd7e | ||
|
|
3bf95af10c | ||
|
|
0681e432e2 | ||
|
|
66fd4a6564 | ||
|
|
c201da76cd | ||
|
|
3d8073cf75 | ||
|
|
bdce266205 | ||
|
|
c099226cd2 | ||
|
|
ae64833a5c | ||
|
|
728d13b216 | ||
|
|
f42416bd0b | ||
|
|
b076c2c573 | ||
|
|
0962e5952e | ||
|
|
e51df96e8d | ||
|
|
55e37fd779 | ||
|
|
71b7b159de | ||
|
|
953fb372d8 | ||
|
|
03bd53324a | ||
|
|
1c85269d1c | ||
|
|
8935c520c0 | ||
|
|
7cf7127810 | ||
|
|
8fb51991e0 | ||
|
|
7fdd22545f | ||
|
|
15eafe92d7 | ||
|
|
1ad3679f90 | ||
|
|
81970958a8 | ||
|
|
a9cad5238d |
@ -32,6 +32,8 @@ if(WHOA_SYSTEM_MAC)
|
|||||||
"-framework AppKit"
|
"-framework AppKit"
|
||||||
"-framework Carbon"
|
"-framework Carbon"
|
||||||
"-framework IOKit"
|
"-framework IOKit"
|
||||||
|
"-framework Metal"
|
||||||
|
"-framework QuartzCore"
|
||||||
)
|
)
|
||||||
|
|
||||||
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/mac/MainMenu.nib DESTINATION "bin")
|
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/mac/MainMenu.nib DESTINATION "bin")
|
||||||
|
|||||||
9
src/app/mac/EngineMTLLayerView.h
Normal file
9
src/app/mac/EngineMTLLayerView.h
Normal 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
|
||||||
36
src/app/mac/EngineMTLLayerView.mm
Normal file
36
src/app/mac/EngineMTLLayerView.mm
Normal 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
|
||||||
@ -1,7 +1,9 @@
|
|||||||
#include "app/mac/View.h"
|
#include "app/mac/View.h"
|
||||||
#include "app/mac/EngineGLLayerView.h"
|
#include "app/mac/EngineGLLayerView.h"
|
||||||
|
#include "app/mac/EngineMTLLayerView.h"
|
||||||
#include "app/mac/WindowCallbacks.h"
|
#include "app/mac/WindowCallbacks.h"
|
||||||
#include "gx/gll/GLWindow.h"
|
#include "gx/gll/GLWindow.h"
|
||||||
|
#include "gx/Device.hpp"
|
||||||
|
|
||||||
GLWindowCallbacks EngineViewCallbacks = {
|
GLWindowCallbacks EngineViewCallbacks = {
|
||||||
&MacOnResized,
|
&MacOnResized,
|
||||||
@ -23,5 +25,9 @@ void AssignEngineViewCallbacks(GLWindowCallbacks* callbacks) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Class GetEngineViewClass() {
|
Class GetEngineViewClass() {
|
||||||
|
if (GxDevApi() == GxApi_Metal) {
|
||||||
|
return [EngineMTLLayerView class];
|
||||||
|
}
|
||||||
|
|
||||||
return [EngineGLLayerView class];
|
return [EngineGLLayerView class];
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,6 +2,7 @@
|
|||||||
#include "app/mac/MacClient.h"
|
#include "app/mac/MacClient.h"
|
||||||
#include "event/Input.hpp"
|
#include "event/Input.hpp"
|
||||||
#include "gx/gll/CGxDeviceGLL.hpp"
|
#include "gx/gll/CGxDeviceGLL.hpp"
|
||||||
|
#include "gx/mtl/CGxDeviceMTL.hpp"
|
||||||
#include "gx/Device.hpp"
|
#include "gx/Device.hpp"
|
||||||
#include "gx/Window.hpp"
|
#include "gx/Window.hpp"
|
||||||
#include <bc/Debug.hpp>
|
#include <bc/Debug.hpp>
|
||||||
@ -171,7 +172,11 @@ void MacOnResized(int32_t width, int32_t height, bool a3) {
|
|||||||
return;
|
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);
|
OsQueuePut(OS_INPUT_SIZE, width, height, 0, 0);
|
||||||
|
|
||||||
|
|||||||
@ -6,6 +6,7 @@
|
|||||||
#include "gx/Adapter.hpp"
|
#include "gx/Adapter.hpp"
|
||||||
#include "gx/Device.hpp"
|
#include "gx/Device.hpp"
|
||||||
#include <storm/Array.hpp>
|
#include <storm/Array.hpp>
|
||||||
|
#include <cstdlib>
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
|
|
||||||
static CGxDevice* s_device;
|
static CGxDevice* s_device;
|
||||||
@ -417,6 +418,13 @@ void ConsoleDeviceInitialize(const char* title) {
|
|||||||
api = GxApi_GLL;
|
api = GxApi_GLL;
|
||||||
#endif
|
#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);
|
s_device = GxDevCreate(api, OsWindowProc, format);
|
||||||
|
|
||||||
// TODO
|
// TODO
|
||||||
|
|||||||
@ -18,6 +18,7 @@
|
|||||||
|
|
||||||
#if defined(WHOA_SYSTEM_MAC)
|
#if defined(WHOA_SYSTEM_MAC)
|
||||||
#include "gx/gll/CGxDeviceGLL.hpp"
|
#include "gx/gll/CGxDeviceGLL.hpp"
|
||||||
|
#include "gx/mtl/CGxDeviceMTL.hpp"
|
||||||
#include "gx/mac/Display.hpp"
|
#include "gx/mac/Display.hpp"
|
||||||
#include <ApplicationServices/ApplicationServices.h>
|
#include <ApplicationServices/ApplicationServices.h>
|
||||||
#include <OpenGL/OpenGL.h>
|
#include <OpenGL/OpenGL.h>
|
||||||
@ -117,6 +118,8 @@ int32_t CGxDevice::AdapterFormats(EGxApi api, TSGrowableArray<CGxFormat>& adapte
|
|||||||
CGxDevice::OpenGlAdapterFormats(adapterFormats);
|
CGxDevice::OpenGlAdapterFormats(adapterFormats);
|
||||||
} else if (api == GxApi_GLL) {
|
} else if (api == GxApi_GLL) {
|
||||||
CGxDevice::GLLAdapterFormats(adapterFormats);
|
CGxDevice::GLLAdapterFormats(adapterFormats);
|
||||||
|
} else if (api == GxApi_Metal) {
|
||||||
|
CGxDevice::OpenGlAdapterFormats(adapterFormats);
|
||||||
}
|
}
|
||||||
|
|
||||||
#elif defined(WHOA_SYSTEM_LINUX)
|
#elif defined(WHOA_SYSTEM_LINUX)
|
||||||
@ -228,6 +231,11 @@ CGxDevice* CGxDevice::NewGLL() {
|
|||||||
auto m = SMemAlloc(sizeof(CGxDeviceGLL), __FILE__, __LINE__, 0x0);
|
auto m = SMemAlloc(sizeof(CGxDeviceGLL), __FILE__, __LINE__, 0x0);
|
||||||
return new (m) CGxDeviceGLL();
|
return new (m) CGxDeviceGLL();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CGxDevice* CGxDevice::NewMTL() {
|
||||||
|
auto m = SMemAlloc(sizeof(CGxDeviceMTL), __FILE__, __LINE__, 0x0);
|
||||||
|
return new (m) CGxDeviceMTL();
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
CGxDevice* CGxDevice::NewOpenGl() {
|
CGxDevice* CGxDevice::NewOpenGl() {
|
||||||
|
|||||||
@ -70,6 +70,7 @@ class CGxDevice {
|
|||||||
#endif
|
#endif
|
||||||
#if defined(WHOA_SYSTEM_MAC)
|
#if defined(WHOA_SYSTEM_MAC)
|
||||||
static CGxDevice* NewGLL();
|
static CGxDevice* NewGLL();
|
||||||
|
static CGxDevice* NewMTL();
|
||||||
#endif
|
#endif
|
||||||
static CGxDevice* NewOpenGl();
|
static CGxDevice* NewOpenGl();
|
||||||
static void OpenGlAdapterFormats(TSGrowableArray<CGxFormat>& adapterFormats);
|
static void OpenGlAdapterFormats(TSGrowableArray<CGxFormat>& adapterFormats);
|
||||||
|
|||||||
@ -20,6 +20,7 @@ if(WHOA_SYSTEM_MAC)
|
|||||||
file(GLOB MAC_SOURCES
|
file(GLOB MAC_SOURCES
|
||||||
"gll/*.cpp"
|
"gll/*.cpp"
|
||||||
"gll/*.mm"
|
"gll/*.mm"
|
||||||
|
"mtl/*.mm"
|
||||||
"mac/*.cpp"
|
"mac/*.cpp"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@ -24,6 +24,8 @@ CGxDevice* GxDevCreate(EGxApi api, int32_t (*windowProc)(void* window, uint32_t
|
|||||||
device = CGxDevice::NewOpenGl();
|
device = CGxDevice::NewOpenGl();
|
||||||
} else if (api == GxApi_GLL) {
|
} else if (api == GxApi_GLL) {
|
||||||
device = CGxDevice::NewGLL();
|
device = CGxDevice::NewGLL();
|
||||||
|
} else if (api == GxApi_Metal) {
|
||||||
|
device = CGxDevice::NewMTL();
|
||||||
} else {
|
} else {
|
||||||
// Error
|
// Error
|
||||||
}
|
}
|
||||||
|
|||||||
@ -35,7 +35,8 @@ enum EGxApi {
|
|||||||
GxApi_D3d10 = 3,
|
GxApi_D3d10 = 3,
|
||||||
GxApi_D3d11 = 4,
|
GxApi_D3d11 = 4,
|
||||||
GxApi_GLL = 5,
|
GxApi_GLL = 5,
|
||||||
GxApis_Last = 6
|
GxApi_Metal = 6,
|
||||||
|
GxApis_Last = 7
|
||||||
};
|
};
|
||||||
|
|
||||||
enum EGxBlend {
|
enum EGxBlend {
|
||||||
|
|||||||
81
src/gx/mtl/CGxDeviceMTL.hpp
Normal file
81
src/gx/mtl/CGxDeviceMTL.hpp
Normal 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
1855
src/gx/mtl/CGxDeviceMTL.mm
Normal file
File diff suppressed because it is too large
Load Diff
@ -16,4 +16,5 @@ target_include_directories(object
|
|||||||
target_link_libraries(object
|
target_link_libraries(object
|
||||||
PRIVATE
|
PRIVATE
|
||||||
db
|
db
|
||||||
|
ui
|
||||||
)
|
)
|
||||||
|
|||||||
@ -36,6 +36,14 @@ OBJECT_TYPE_ID CGObject::GetTypeID() const {
|
|||||||
return this->m_typeID;
|
return this->m_typeID;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int32_t CGObject::IsA(OBJECT_TYPE type) const {
|
||||||
|
return (this->GetType() & type) != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t CGObject::IsExactlyA(OBJECT_TYPE_ID typeID) const {
|
||||||
|
return this->m_typeID == typeID;
|
||||||
|
}
|
||||||
|
|
||||||
CGObjectData* CGObject::Obj() const {
|
CGObjectData* CGObject::Obj() const {
|
||||||
return this->m_obj;
|
return this->m_obj;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -31,6 +31,8 @@ class CGObject {
|
|||||||
WOWGUID GetGUID() const;
|
WOWGUID GetGUID() const;
|
||||||
OBJECT_TYPE GetType() const;
|
OBJECT_TYPE GetType() const;
|
||||||
OBJECT_TYPE_ID GetTypeID() const;
|
OBJECT_TYPE_ID GetTypeID() const;
|
||||||
|
int32_t IsA(OBJECT_TYPE type) const;
|
||||||
|
int32_t IsExactlyA(OBJECT_TYPE_ID typeID) const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// Protected member variables
|
// Protected member variables
|
||||||
|
|||||||
@ -31,6 +31,14 @@ void CGObject_C::AddWorldObject() {
|
|||||||
// TODO
|
// TODO
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int32_t CGObject_C::CanBeTargetted() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t CGObject_C::CanHighlight() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
void CGObject_C::Disable() {
|
void CGObject_C::Disable() {
|
||||||
// TODO
|
// TODO
|
||||||
|
|
||||||
|
|||||||
@ -33,6 +33,8 @@ class CGObject_C : public CGObject, public TSHashObject<CGObject_C, CHashKeyGUID
|
|||||||
void PostReenable();
|
void PostReenable();
|
||||||
virtual void HandleOutOfRange(OUT_OF_RANGE_TYPE type) {};
|
virtual void HandleOutOfRange(OUT_OF_RANGE_TYPE type) {};
|
||||||
// TODO
|
// TODO
|
||||||
|
virtual int32_t CanHighlight();
|
||||||
|
virtual int32_t CanBeTargetted();
|
||||||
|
|
||||||
// Public member functions
|
// Public member functions
|
||||||
CGObject_C() = default;
|
CGObject_C() = default;
|
||||||
|
|||||||
@ -41,6 +41,14 @@ uint32_t CGPlayer::TotalRemoteFieldsSaved() {
|
|||||||
return CGPlayer::GetBaseOffsetSaved() + 173;
|
return CGPlayer::GetBaseOffsetSaved() + 173;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint32_t CGPlayer::GetNextLevelXP() const {
|
||||||
|
return this->Player()->nextLevelXP;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t CGPlayer::GetXP() const {
|
||||||
|
return this->Player()->xp;
|
||||||
|
}
|
||||||
|
|
||||||
CGPlayerData* CGPlayer::Player() const {
|
CGPlayerData* CGPlayer::Player() const {
|
||||||
return this->m_player;
|
return this->m_player;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -148,6 +148,10 @@ class CGPlayer {
|
|||||||
static uint32_t TotalFieldsSaved();
|
static uint32_t TotalFieldsSaved();
|
||||||
static uint32_t TotalRemoteFieldsSaved();
|
static uint32_t TotalRemoteFieldsSaved();
|
||||||
|
|
||||||
|
// Public member functions
|
||||||
|
uint32_t GetNextLevelXP() const;
|
||||||
|
uint32_t GetXP() const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// Protected member variables
|
// Protected member variables
|
||||||
CGPlayerData* m_player;
|
CGPlayerData* m_player;
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
#include "object/client/CGPlayer_C.hpp"
|
#include "object/client/CGPlayer_C.hpp"
|
||||||
#include "db/Db.hpp"
|
#include "db/Db.hpp"
|
||||||
|
#include "object/client/ObjMgr.hpp"
|
||||||
#include "object/Types.hpp"
|
#include "object/Types.hpp"
|
||||||
#include <storm/Error.hpp>
|
#include <storm/Error.hpp>
|
||||||
|
|
||||||
@ -11,6 +12,22 @@ CGPlayer_C::~CGPlayer_C() {
|
|||||||
// TODO
|
// TODO
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint32_t CGPlayer_C::GetActiveNextLevelXP() const {
|
||||||
|
if (this->GetGUID() != ClntObjMgrGetActivePlayer()) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return this->GetNextLevelXP();
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t CGPlayer_C::GetActiveXP() const {
|
||||||
|
if (this->GetGUID() != ClntObjMgrGetActivePlayer()) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return this->GetXP();
|
||||||
|
}
|
||||||
|
|
||||||
void CGPlayer_C::PostInit(uint32_t time, const CClientObjCreate& init, bool a4) {
|
void CGPlayer_C::PostInit(uint32_t time, const CClientObjCreate& init, bool a4) {
|
||||||
// TODO
|
// TODO
|
||||||
|
|
||||||
|
|||||||
@ -15,6 +15,8 @@ class CGPlayer_C : public CGUnit_C, public CGPlayer {
|
|||||||
|
|
||||||
// Public member functions
|
// Public member functions
|
||||||
CGPlayer_C(uint32_t time, CClientObjCreate& objCreate);
|
CGPlayer_C(uint32_t time, CClientObjCreate& objCreate);
|
||||||
|
uint32_t GetActiveNextLevelXP() const;
|
||||||
|
uint32_t GetActiveXP() const;
|
||||||
void PostInit(uint32_t time, const CClientObjCreate& init, bool a4);
|
void PostInit(uint32_t time, const CClientObjCreate& init, bool a4);
|
||||||
void SetStorage(uint32_t* storage, uint32_t* saved);
|
void SetStorage(uint32_t* storage, uint32_t* saved);
|
||||||
};
|
};
|
||||||
|
|||||||
@ -1,5 +1,7 @@
|
|||||||
#include "object/client/CGUnit_C.hpp"
|
#include "object/client/CGUnit_C.hpp"
|
||||||
|
#include "object/client/ObjMgr.hpp"
|
||||||
#include "db/Db.hpp"
|
#include "db/Db.hpp"
|
||||||
|
#include "ui/Game.hpp"
|
||||||
|
|
||||||
WOWGUID CGUnit_C::s_activeMover;
|
WOWGUID CGUnit_C::s_activeMover;
|
||||||
|
|
||||||
@ -99,6 +101,20 @@ CGUnit_C::~CGUnit_C() {
|
|||||||
// TODO
|
// TODO
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int32_t CGUnit_C::CanHighlight() {
|
||||||
|
if (this->m_unit->flags & 0x2000000) {
|
||||||
|
if (this->m_unit->createdBy != ClntObjMgrGetActivePlayer() || this->GetGUID() != CGPetInfo::GetPet(0)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t CGUnit_C::CanBeTargetted() {
|
||||||
|
return this->CanHighlight();
|
||||||
|
}
|
||||||
|
|
||||||
void CGUnit_C::PostInit(uint32_t time, const CClientObjCreate& init, bool a4) {
|
void CGUnit_C::PostInit(uint32_t time, const CClientObjCreate& init, bool a4) {
|
||||||
// TODO
|
// TODO
|
||||||
|
|
||||||
|
|||||||
@ -21,6 +21,10 @@ class CGUnit_C : public CGObject_C, public CGUnit {
|
|||||||
|
|
||||||
// Virtual public member functions
|
// Virtual public member functions
|
||||||
virtual ~CGUnit_C();
|
virtual ~CGUnit_C();
|
||||||
|
// TODO
|
||||||
|
virtual int32_t CanHighlight();
|
||||||
|
virtual int32_t CanBeTargetted();
|
||||||
|
// TODO
|
||||||
|
|
||||||
// Public member functions
|
// Public member functions
|
||||||
CGUnit_C(uint32_t time, CClientObjCreate& objCreate);
|
CGUnit_C(uint32_t time, CClientObjCreate& objCreate);
|
||||||
|
|||||||
@ -332,6 +332,10 @@ void CLayoutFrame::GetFirstPointY(const FRAMEPOINT* const pointarray, int32_t el
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
float CLayoutFrame::GetHeight() {
|
||||||
|
return this->m_height;
|
||||||
|
}
|
||||||
|
|
||||||
CLayoutFrame* CLayoutFrame::GetLayoutFrameByName(const char* name) {
|
CLayoutFrame* CLayoutFrame::GetLayoutFrameByName(const char* name) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
@ -353,8 +357,20 @@ int32_t CLayoutFrame::GetRect(CRect* rect) {
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
float CLayoutFrame::GetHeight() {
|
void CLayoutFrame::GetSize(float& width, float& height, int32_t a4) {
|
||||||
return this->m_height;
|
width = this->GetWidth();
|
||||||
|
height = this->GetHeight();
|
||||||
|
|
||||||
|
if (!a4 && (width == 0.0f || height == 0.0f)) {
|
||||||
|
if (this->m_flags & FLAG_RESIZE_PENDING) {
|
||||||
|
this->Resize(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this->m_flags & 0x1) {
|
||||||
|
width = (this->m_rect.maxX - this->m_rect.minX) / this->m_layoutScale;
|
||||||
|
height = (this->m_rect.maxY - this->m_rect.minY) / this->m_layoutScale;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
float CLayoutFrame::GetWidth() {
|
float CLayoutFrame::GetWidth() {
|
||||||
|
|||||||
@ -51,6 +51,7 @@ class CLayoutFrame {
|
|||||||
virtual void SetHeight(float height);
|
virtual void SetHeight(float height);
|
||||||
virtual float GetWidth();
|
virtual float GetWidth();
|
||||||
virtual float GetHeight();
|
virtual float GetHeight();
|
||||||
|
virtual void GetSize(float& width, float& height, int32_t a4);
|
||||||
virtual void GetClampRectInsets(float& a1, float& a2, float& a3, float& a4);
|
virtual void GetClampRectInsets(float& a1, float& a2, float& a3, float& a4);
|
||||||
virtual int32_t IsAttachmentOrigin();
|
virtual int32_t IsAttachmentOrigin();
|
||||||
virtual CLayoutFrame* GetLayoutFrameByName(const char* name);
|
virtual CLayoutFrame* GetLayoutFrameByName(const char* name);
|
||||||
|
|||||||
@ -11,8 +11,6 @@
|
|||||||
#include <storm/String.hpp>
|
#include <storm/String.hpp>
|
||||||
#include <tempest/Vector.hpp>
|
#include <tempest/Vector.hpp>
|
||||||
|
|
||||||
const char* g_scriptEvents[722];
|
|
||||||
|
|
||||||
int32_t g_glueFrameScriptGenders[] = {
|
int32_t g_glueFrameScriptGenders[] = {
|
||||||
2, // UNIT_SEX_MALE
|
2, // UNIT_SEX_MALE
|
||||||
3, // UNIT_SEX_FEMALE
|
3, // UNIT_SEX_FEMALE
|
||||||
@ -154,8 +152,10 @@ void FrameScript_CreateEvents(const char* names[], uint32_t count) {
|
|||||||
FrameScript::s_scriptEvents.SetCount(count);
|
FrameScript::s_scriptEvents.SetCount(count);
|
||||||
|
|
||||||
for (int32_t i = 0; i < count; i++) {
|
for (int32_t i = 0; i < count; i++) {
|
||||||
auto event = FrameScript::s_scriptEventsHash.New(names[i], 0, 0);
|
if (names[i]) {
|
||||||
FrameScript::s_scriptEvents[i] = event;
|
auto event = FrameScript::s_scriptEventsHash.New(names[i], 0, 0);
|
||||||
|
FrameScript::s_scriptEvents[i] = event;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1083,656 +1083,3 @@ void FrameScript_UnregisterScriptEvent(FrameScript_Object* object, FrameScript_E
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScriptEventsInitialize() {
|
|
||||||
g_scriptEvents[0] = "UNIT_PET";
|
|
||||||
g_scriptEvents[2] = "UNIT_PET";
|
|
||||||
g_scriptEvents[12] = "UNIT_TARGET";
|
|
||||||
g_scriptEvents[17] = "UNIT_DISPLAYPOWER";
|
|
||||||
g_scriptEvents[18] = "UNIT_HEALTH";
|
|
||||||
g_scriptEvents[19] = "UNIT_MANA";
|
|
||||||
g_scriptEvents[20] = "UNIT_RAGE";
|
|
||||||
g_scriptEvents[21] = "UNIT_FOCUS";
|
|
||||||
g_scriptEvents[22] = "UNIT_ENERGY";
|
|
||||||
g_scriptEvents[23] = "UNIT_HAPPINESS";
|
|
||||||
g_scriptEvents[25] = "UNIT_RUNIC_POWER";
|
|
||||||
g_scriptEvents[26] = "UNIT_MAXHEALTH";
|
|
||||||
g_scriptEvents[27] = "UNIT_MAXMANA";
|
|
||||||
g_scriptEvents[28] = "UNIT_MAXRAGE";
|
|
||||||
g_scriptEvents[29] = "UNIT_MAXFOCUS";
|
|
||||||
g_scriptEvents[30] = "UNIT_MAXENERGY";
|
|
||||||
g_scriptEvents[31] = "UNIT_MAXHAPPINESS";
|
|
||||||
g_scriptEvents[33] = "UNIT_MAXRUNIC_POWER";
|
|
||||||
g_scriptEvents[48] = "UNIT_LEVEL";
|
|
||||||
g_scriptEvents[49] = "UNIT_FACTION";
|
|
||||||
g_scriptEvents[53] = "UNIT_FLAGS";
|
|
||||||
g_scriptEvents[54] = "UNIT_FLAGS";
|
|
||||||
g_scriptEvents[56] = "UNIT_ATTACK_SPEED";
|
|
||||||
g_scriptEvents[57] = "UNIT_ATTACK_SPEED";
|
|
||||||
g_scriptEvents[58] = "UNIT_RANGEDDAMAGE";
|
|
||||||
g_scriptEvents[64] = "UNIT_DAMAGE";
|
|
||||||
g_scriptEvents[65] = "UNIT_DAMAGE";
|
|
||||||
g_scriptEvents[66] = "UNIT_DAMAGE";
|
|
||||||
g_scriptEvents[67] = "UNIT_DAMAGE";
|
|
||||||
g_scriptEvents[71] = "UNIT_PET_EXPERIENCE";
|
|
||||||
g_scriptEvents[72] = "UNIT_PET_EXPERIENCE";
|
|
||||||
g_scriptEvents[73] = "UNIT_DYNAMIC_FLAGS";
|
|
||||||
g_scriptEvents[78] = "UNIT_STATS";
|
|
||||||
g_scriptEvents[79] = "UNIT_STATS";
|
|
||||||
g_scriptEvents[80] = "UNIT_STATS";
|
|
||||||
g_scriptEvents[81] = "UNIT_STATS";
|
|
||||||
g_scriptEvents[82] = "UNIT_STATS";
|
|
||||||
g_scriptEvents[93] = "UNIT_RESISTANCES";
|
|
||||||
g_scriptEvents[94] = "UNIT_RESISTANCES";
|
|
||||||
g_scriptEvents[95] = "UNIT_RESISTANCES";
|
|
||||||
g_scriptEvents[96] = "UNIT_RESISTANCES";
|
|
||||||
g_scriptEvents[97] = "UNIT_RESISTANCES";
|
|
||||||
g_scriptEvents[98] = "UNIT_RESISTANCES";
|
|
||||||
g_scriptEvents[99] = "UNIT_RESISTANCES";
|
|
||||||
g_scriptEvents[100] = "UNIT_RESISTANCES";
|
|
||||||
g_scriptEvents[101] = "UNIT_RESISTANCES";
|
|
||||||
g_scriptEvents[102] = "UNIT_RESISTANCES";
|
|
||||||
g_scriptEvents[103] = "UNIT_RESISTANCES";
|
|
||||||
g_scriptEvents[104] = "UNIT_RESISTANCES";
|
|
||||||
g_scriptEvents[105] = "UNIT_RESISTANCES";
|
|
||||||
g_scriptEvents[106] = "UNIT_RESISTANCES";
|
|
||||||
g_scriptEvents[107] = "UNIT_RESISTANCES";
|
|
||||||
g_scriptEvents[108] = "UNIT_RESISTANCES";
|
|
||||||
g_scriptEvents[109] = "UNIT_RESISTANCES";
|
|
||||||
g_scriptEvents[110] = "UNIT_RESISTANCES";
|
|
||||||
g_scriptEvents[111] = "UNIT_RESISTANCES";
|
|
||||||
g_scriptEvents[112] = "UNIT_RESISTANCES";
|
|
||||||
g_scriptEvents[113] = "UNIT_RESISTANCES";
|
|
||||||
g_scriptEvents[117] = "UNIT_ATTACK_POWER";
|
|
||||||
g_scriptEvents[118] = "UNIT_ATTACK_POWER";
|
|
||||||
g_scriptEvents[119] = "UNIT_ATTACK_POWER";
|
|
||||||
g_scriptEvents[120] = "UNIT_RANGED_ATTACK_POWER";
|
|
||||||
g_scriptEvents[121] = "UNIT_RANGED_ATTACK_POWER";
|
|
||||||
g_scriptEvents[122] = "UNIT_RANGED_ATTACK_POWER";
|
|
||||||
g_scriptEvents[123] = "UNIT_RANGEDDAMAGE";
|
|
||||||
g_scriptEvents[124] = "UNIT_RANGEDDAMAGE";
|
|
||||||
g_scriptEvents[125] = "UNIT_MANA";
|
|
||||||
g_scriptEvents[132] = "UNIT_MANA";
|
|
||||||
g_scriptEvents[139] = "UNIT_STATS";
|
|
||||||
g_scriptEvents[142] = "UNIT_AURA";
|
|
||||||
g_scriptEvents[143] = "UNIT_COMBAT";
|
|
||||||
g_scriptEvents[144] = "UNIT_NAME_UPDATE";
|
|
||||||
g_scriptEvents[145] = "UNIT_PORTRAIT_UPDATE";
|
|
||||||
g_scriptEvents[146] = "UNIT_MODEL_CHANGED";
|
|
||||||
g_scriptEvents[147] = "UNIT_INVENTORY_CHANGED";
|
|
||||||
g_scriptEvents[148] = "UNIT_CLASSIFICATION_CHANGED";
|
|
||||||
g_scriptEvents[149] = "UNIT_COMBO_POINTS";
|
|
||||||
g_scriptEvents[150] = "ITEM_LOCK_CHANGED";
|
|
||||||
g_scriptEvents[151] = "PLAYER_XP_UPDATE";
|
|
||||||
g_scriptEvents[152] = "PLAYER_REGEN_DISABLED";
|
|
||||||
g_scriptEvents[153] = "PLAYER_REGEN_ENABLED";
|
|
||||||
g_scriptEvents[154] = "PLAYER_AURAS_CHANGED";
|
|
||||||
g_scriptEvents[155] = "PLAYER_ENTER_COMBAT";
|
|
||||||
g_scriptEvents[156] = "PLAYER_LEAVE_COMBAT";
|
|
||||||
g_scriptEvents[157] = "PLAYER_TARGET_CHANGED";
|
|
||||||
g_scriptEvents[158] = "PLAYER_FOCUS_CHANGED";
|
|
||||||
g_scriptEvents[159] = "PLAYER_CONTROL_LOST";
|
|
||||||
g_scriptEvents[160] = "PLAYER_CONTROL_GAINED";
|
|
||||||
g_scriptEvents[161] = "PLAYER_FARSIGHT_FOCUS_CHANGED";
|
|
||||||
g_scriptEvents[162] = "PLAYER_LEVEL_UP";
|
|
||||||
g_scriptEvents[163] = "PLAYER_MONEY";
|
|
||||||
g_scriptEvents[164] = "PLAYER_DAMAGE_DONE_MODS";
|
|
||||||
g_scriptEvents[165] = "PLAYER_TOTEM_UPDATE";
|
|
||||||
g_scriptEvents[166] = "ZONE_CHANGED";
|
|
||||||
g_scriptEvents[167] = "ZONE_CHANGED_INDOORS";
|
|
||||||
g_scriptEvents[168] = "ZONE_CHANGED_NEW_AREA";
|
|
||||||
g_scriptEvents[169] = "MINIMAP_UPDATE_ZOOM";
|
|
||||||
g_scriptEvents[170] = "MINIMAP_UPDATE_TRACKING";
|
|
||||||
g_scriptEvents[171] = "SCREENSHOT_SUCCEEDED";
|
|
||||||
g_scriptEvents[172] = "SCREENSHOT_FAILED";
|
|
||||||
g_scriptEvents[173] = "ACTIONBAR_SHOWGRID";
|
|
||||||
g_scriptEvents[174] = "ACTIONBAR_HIDEGRID";
|
|
||||||
g_scriptEvents[175] = "ACTIONBAR_PAGE_CHANGED";
|
|
||||||
g_scriptEvents[176] = "ACTIONBAR_SLOT_CHANGED";
|
|
||||||
g_scriptEvents[177] = "ACTIONBAR_UPDATE_STATE";
|
|
||||||
g_scriptEvents[178] = "ACTIONBAR_UPDATE_USABLE";
|
|
||||||
g_scriptEvents[179] = "ACTIONBAR_UPDATE_COOLDOWN";
|
|
||||||
g_scriptEvents[180] = "UPDATE_BONUS_ACTIONBAR";
|
|
||||||
g_scriptEvents[181] = "PARTY_MEMBERS_CHANGED";
|
|
||||||
g_scriptEvents[182] = "PARTY_LEADER_CHANGED";
|
|
||||||
g_scriptEvents[183] = "PARTY_MEMBER_ENABLE";
|
|
||||||
g_scriptEvents[184] = "PARTY_MEMBER_DISABLE";
|
|
||||||
g_scriptEvents[185] = "PARTY_LOOT_METHOD_CHANGED";
|
|
||||||
g_scriptEvents[186] = "SYSMSG";
|
|
||||||
g_scriptEvents[187] = "UI_ERROR_MESSAGE";
|
|
||||||
g_scriptEvents[188] = "UI_INFO_MESSAGE";
|
|
||||||
g_scriptEvents[189] = "UPDATE_CHAT_COLOR";
|
|
||||||
g_scriptEvents[190] = "CHAT_MSG_ADDON";
|
|
||||||
g_scriptEvents[191] = "CHAT_MSG_SYSTEM";
|
|
||||||
g_scriptEvents[192] = "CHAT_MSG_SAY";
|
|
||||||
g_scriptEvents[193] = "CHAT_MSG_PARTY";
|
|
||||||
g_scriptEvents[194] = "CHAT_MSG_RAID";
|
|
||||||
g_scriptEvents[195] = "CHAT_MSG_GUILD";
|
|
||||||
g_scriptEvents[196] = "CHAT_MSG_OFFICER";
|
|
||||||
g_scriptEvents[197] = "CHAT_MSG_YELL";
|
|
||||||
g_scriptEvents[198] = "CHAT_MSG_WHISPER";
|
|
||||||
g_scriptEvents[199] = "CHAT_MSG_WHISPER_INFORM";
|
|
||||||
g_scriptEvents[200] = "CHAT_MSG_EMOTE";
|
|
||||||
g_scriptEvents[201] = "CHAT_MSG_TEXT_EMOTE";
|
|
||||||
g_scriptEvents[202] = "CHAT_MSG_MONSTER_SAY";
|
|
||||||
g_scriptEvents[203] = "CHAT_MSG_MONSTER_PARTY";
|
|
||||||
g_scriptEvents[204] = "CHAT_MSG_MONSTER_YELL";
|
|
||||||
g_scriptEvents[205] = "CHAT_MSG_MONSTER_WHISPER";
|
|
||||||
g_scriptEvents[206] = "CHAT_MSG_MONSTER_EMOTE";
|
|
||||||
g_scriptEvents[207] = "CHAT_MSG_CHANNEL";
|
|
||||||
g_scriptEvents[208] = "CHAT_MSG_CHANNEL_JOIN";
|
|
||||||
g_scriptEvents[209] = "CHAT_MSG_CHANNEL_LEAVE";
|
|
||||||
g_scriptEvents[210] = "CHAT_MSG_CHANNEL_LIST";
|
|
||||||
g_scriptEvents[211] = "CHAT_MSG_CHANNEL_NOTICE";
|
|
||||||
g_scriptEvents[212] = "CHAT_MSG_CHANNEL_NOTICE_USER";
|
|
||||||
g_scriptEvents[213] = "CHAT_MSG_AFK";
|
|
||||||
g_scriptEvents[214] = "CHAT_MSG_DND";
|
|
||||||
g_scriptEvents[215] = "CHAT_MSG_IGNORED";
|
|
||||||
g_scriptEvents[216] = "CHAT_MSG_SKILL";
|
|
||||||
g_scriptEvents[217] = "CHAT_MSG_LOOT";
|
|
||||||
g_scriptEvents[218] = "CHAT_MSG_MONEY";
|
|
||||||
g_scriptEvents[219] = "CHAT_MSG_OPENING";
|
|
||||||
g_scriptEvents[220] = "CHAT_MSG_TRADESKILLS";
|
|
||||||
g_scriptEvents[221] = "CHAT_MSG_PET_INFO";
|
|
||||||
g_scriptEvents[222] = "CHAT_MSG_COMBAT_MISC_INFO";
|
|
||||||
g_scriptEvents[223] = "CHAT_MSG_COMBAT_XP_GAIN";
|
|
||||||
g_scriptEvents[224] = "CHAT_MSG_COMBAT_HONOR_GAIN";
|
|
||||||
g_scriptEvents[225] = "CHAT_MSG_COMBAT_FACTION_CHANGE";
|
|
||||||
g_scriptEvents[226] = "CHAT_MSG_BG_SYSTEM_NEUTRAL";
|
|
||||||
g_scriptEvents[227] = "CHAT_MSG_BG_SYSTEM_ALLIANCE";
|
|
||||||
g_scriptEvents[228] = "CHAT_MSG_BG_SYSTEM_HORDE";
|
|
||||||
g_scriptEvents[229] = "CHAT_MSG_RAID_LEADER";
|
|
||||||
g_scriptEvents[230] = "CHAT_MSG_RAID_WARNING";
|
|
||||||
g_scriptEvents[231] = "CHAT_MSG_RAID_BOSS_WHISPER";
|
|
||||||
g_scriptEvents[232] = "CHAT_MSG_RAID_BOSS_EMOTE";
|
|
||||||
g_scriptEvents[233] = "CHAT_MSG_FILTERED";
|
|
||||||
g_scriptEvents[234] = "CHAT_MSG_BATTLEGROUND";
|
|
||||||
g_scriptEvents[235] = "CHAT_MSG_BATTLEGROUND_LEADER";
|
|
||||||
g_scriptEvents[236] = "CHAT_MSG_RESTRICTED";
|
|
||||||
|
|
||||||
// TODO
|
|
||||||
// g_scriptEvents[237] = &byte_9E14FF;
|
|
||||||
|
|
||||||
g_scriptEvents[238] = "CHAT_MSG_ACHIEVEMENT";
|
|
||||||
g_scriptEvents[239] = "CHAT_MSG_GUILD_ACHIEVEMENT";
|
|
||||||
g_scriptEvents[240] = "LANGUAGE_LIST_CHANGED";
|
|
||||||
g_scriptEvents[241] = "TIME_PLAYED_MSG";
|
|
||||||
g_scriptEvents[242] = "SPELLS_CHANGED";
|
|
||||||
g_scriptEvents[243] = "CURRENT_SPELL_CAST_CHANGED";
|
|
||||||
g_scriptEvents[244] = "SPELL_UPDATE_COOLDOWN";
|
|
||||||
g_scriptEvents[245] = "SPELL_UPDATE_USABLE";
|
|
||||||
g_scriptEvents[246] = "CHARACTER_POINTS_CHANGED";
|
|
||||||
g_scriptEvents[247] = "SKILL_LINES_CHANGED";
|
|
||||||
g_scriptEvents[248] = "ITEM_PUSH";
|
|
||||||
g_scriptEvents[249] = "LOOT_OPENED";
|
|
||||||
g_scriptEvents[250] = "LOOT_SLOT_CLEARED";
|
|
||||||
g_scriptEvents[251] = "LOOT_SLOT_CHANGED";
|
|
||||||
g_scriptEvents[252] = "LOOT_CLOSED";
|
|
||||||
g_scriptEvents[253] = "PLAYER_LOGIN";
|
|
||||||
g_scriptEvents[254] = "PLAYER_LOGOUT";
|
|
||||||
g_scriptEvents[255] = "PLAYER_ENTERING_WORLD";
|
|
||||||
g_scriptEvents[256] = "PLAYER_LEAVING_WORLD";
|
|
||||||
g_scriptEvents[257] = "PLAYER_ALIVE";
|
|
||||||
g_scriptEvents[258] = "PLAYER_DEAD";
|
|
||||||
g_scriptEvents[259] = "PLAYER_CAMPING";
|
|
||||||
g_scriptEvents[260] = "PLAYER_QUITING";
|
|
||||||
g_scriptEvents[261] = "LOGOUT_CANCEL";
|
|
||||||
g_scriptEvents[262] = "RESURRECT_REQUEST";
|
|
||||||
g_scriptEvents[263] = "PARTY_INVITE_REQUEST";
|
|
||||||
g_scriptEvents[264] = "PARTY_INVITE_CANCEL";
|
|
||||||
g_scriptEvents[265] = "GUILD_INVITE_REQUEST";
|
|
||||||
g_scriptEvents[266] = "GUILD_INVITE_CANCEL";
|
|
||||||
g_scriptEvents[267] = "GUILD_MOTD";
|
|
||||||
g_scriptEvents[268] = "TRADE_REQUEST";
|
|
||||||
g_scriptEvents[269] = "TRADE_REQUEST_CANCEL";
|
|
||||||
g_scriptEvents[270] = "LOOT_BIND_CONFIRM";
|
|
||||||
g_scriptEvents[271] = "EQUIP_BIND_CONFIRM";
|
|
||||||
g_scriptEvents[272] = "AUTOEQUIP_BIND_CONFIRM";
|
|
||||||
g_scriptEvents[273] = "USE_BIND_CONFIRM";
|
|
||||||
g_scriptEvents[274] = "DELETE_ITEM_CONFIRM";
|
|
||||||
g_scriptEvents[275] = "CURSOR_UPDATE";
|
|
||||||
g_scriptEvents[276] = "ITEM_TEXT_BEGIN";
|
|
||||||
g_scriptEvents[277] = "ITEM_TEXT_TRANSLATION";
|
|
||||||
g_scriptEvents[278] = "ITEM_TEXT_READY";
|
|
||||||
g_scriptEvents[279] = "ITEM_TEXT_CLOSED";
|
|
||||||
g_scriptEvents[280] = "GOSSIP_SHOW";
|
|
||||||
g_scriptEvents[281] = "GOSSIP_CONFIRM";
|
|
||||||
g_scriptEvents[282] = "GOSSIP_CONFIRM_CANCEL";
|
|
||||||
g_scriptEvents[283] = "GOSSIP_ENTER_CODE";
|
|
||||||
g_scriptEvents[284] = "GOSSIP_CLOSED";
|
|
||||||
g_scriptEvents[285] = "QUEST_GREETING";
|
|
||||||
g_scriptEvents[286] = "QUEST_DETAIL";
|
|
||||||
g_scriptEvents[287] = "QUEST_PROGRESS";
|
|
||||||
g_scriptEvents[288] = "QUEST_COMPLETE";
|
|
||||||
g_scriptEvents[289] = "QUEST_FINISHED";
|
|
||||||
g_scriptEvents[290] = "QUEST_ITEM_UPDATE";
|
|
||||||
g_scriptEvents[291] = "TAXIMAP_OPENED";
|
|
||||||
g_scriptEvents[292] = "TAXIMAP_CLOSED";
|
|
||||||
g_scriptEvents[293] = "QUEST_LOG_UPDATE";
|
|
||||||
g_scriptEvents[294] = "TRAINER_SHOW";
|
|
||||||
g_scriptEvents[295] = "TRAINER_UPDATE";
|
|
||||||
g_scriptEvents[296] = "TRAINER_DESCRIPTION_UPDATE";
|
|
||||||
g_scriptEvents[297] = "TRAINER_CLOSED";
|
|
||||||
g_scriptEvents[298] = "CVAR_UPDATE";
|
|
||||||
g_scriptEvents[299] = "TRADE_SKILL_SHOW";
|
|
||||||
g_scriptEvents[300] = "TRADE_SKILL_UPDATE";
|
|
||||||
g_scriptEvents[301] = "TRADE_SKILL_CLOSE";
|
|
||||||
g_scriptEvents[302] = "MERCHANT_SHOW";
|
|
||||||
g_scriptEvents[303] = "MERCHANT_UPDATE";
|
|
||||||
g_scriptEvents[304] = "MERCHANT_CLOSED";
|
|
||||||
g_scriptEvents[305] = "TRADE_SHOW";
|
|
||||||
g_scriptEvents[306] = "TRADE_CLOSED";
|
|
||||||
g_scriptEvents[307] = "TRADE_UPDATE";
|
|
||||||
g_scriptEvents[308] = "TRADE_ACCEPT_UPDATE";
|
|
||||||
g_scriptEvents[309] = "TRADE_TARGET_ITEM_CHANGED";
|
|
||||||
g_scriptEvents[310] = "TRADE_PLAYER_ITEM_CHANGED";
|
|
||||||
g_scriptEvents[311] = "TRADE_MONEY_CHANGED";
|
|
||||||
g_scriptEvents[312] = "PLAYER_TRADE_MONEY";
|
|
||||||
g_scriptEvents[313] = "BAG_OPEN";
|
|
||||||
g_scriptEvents[314] = "BAG_UPDATE";
|
|
||||||
g_scriptEvents[315] = "BAG_CLOSED";
|
|
||||||
g_scriptEvents[316] = "BAG_UPDATE_COOLDOWN";
|
|
||||||
g_scriptEvents[317] = "LOCALPLAYER_PET_RENAMED";
|
|
||||||
g_scriptEvents[318] = "UNIT_ATTACK";
|
|
||||||
g_scriptEvents[319] = "UNIT_DEFENSE";
|
|
||||||
g_scriptEvents[320] = "PET_ATTACK_START";
|
|
||||||
g_scriptEvents[321] = "PET_ATTACK_STOP";
|
|
||||||
g_scriptEvents[322] = "UPDATE_MOUSEOVER_UNIT";
|
|
||||||
g_scriptEvents[323] = "UNIT_SPELLCAST_SENT";
|
|
||||||
g_scriptEvents[324] = "UNIT_SPELLCAST_START";
|
|
||||||
g_scriptEvents[325] = "UNIT_SPELLCAST_STOP";
|
|
||||||
g_scriptEvents[326] = "UNIT_SPELLCAST_FAILED";
|
|
||||||
g_scriptEvents[327] = "UNIT_SPELLCAST_FAILED_QUIET";
|
|
||||||
g_scriptEvents[328] = "UNIT_SPELLCAST_INTERRUPTED";
|
|
||||||
g_scriptEvents[329] = "UNIT_SPELLCAST_DELAYED";
|
|
||||||
g_scriptEvents[330] = "UNIT_SPELLCAST_SUCCEEDED";
|
|
||||||
g_scriptEvents[331] = "UNIT_SPELLCAST_CHANNEL_START";
|
|
||||||
g_scriptEvents[332] = "UNIT_SPELLCAST_CHANNEL_UPDATE";
|
|
||||||
g_scriptEvents[333] = "UNIT_SPELLCAST_CHANNEL_STOP";
|
|
||||||
g_scriptEvents[334] = "UNIT_SPELLCAST_INTERRUPTIBLE";
|
|
||||||
g_scriptEvents[335] = "UNIT_SPELLCAST_NOT_INTERRUPTIBLE";
|
|
||||||
g_scriptEvents[336] = "PLAYER_GUILD_UPDATE";
|
|
||||||
g_scriptEvents[337] = "QUEST_ACCEPT_CONFIRM";
|
|
||||||
g_scriptEvents[338] = "PLAYERBANKSLOTS_CHANGED";
|
|
||||||
g_scriptEvents[339] = "BANKFRAME_OPENED";
|
|
||||||
g_scriptEvents[340] = "BANKFRAME_CLOSED";
|
|
||||||
g_scriptEvents[341] = "PLAYERBANKBAGSLOTS_CHANGED";
|
|
||||||
g_scriptEvents[342] = "FRIENDLIST_UPDATE";
|
|
||||||
g_scriptEvents[343] = "IGNORELIST_UPDATE";
|
|
||||||
g_scriptEvents[344] = "MUTELIST_UPDATE";
|
|
||||||
g_scriptEvents[345] = "PET_BAR_UPDATE";
|
|
||||||
g_scriptEvents[346] = "PET_BAR_UPDATE_COOLDOWN";
|
|
||||||
g_scriptEvents[347] = "PET_BAR_SHOWGRID";
|
|
||||||
g_scriptEvents[348] = "PET_BAR_HIDEGRID";
|
|
||||||
g_scriptEvents[349] = "PET_BAR_HIDE";
|
|
||||||
g_scriptEvents[350] = "PET_BAR_UPDATE_USABLE";
|
|
||||||
g_scriptEvents[351] = "MINIMAP_PING";
|
|
||||||
g_scriptEvents[352] = "MIRROR_TIMER_START";
|
|
||||||
g_scriptEvents[353] = "MIRROR_TIMER_PAUSE";
|
|
||||||
g_scriptEvents[354] = "MIRROR_TIMER_STOP";
|
|
||||||
g_scriptEvents[355] = "WORLD_MAP_UPDATE";
|
|
||||||
g_scriptEvents[356] = "WORLD_MAP_NAME_UPDATE";
|
|
||||||
g_scriptEvents[357] = "AUTOFOLLOW_BEGIN";
|
|
||||||
g_scriptEvents[358] = "AUTOFOLLOW_END";
|
|
||||||
g_scriptEvents[360] = "CINEMATIC_START";
|
|
||||||
g_scriptEvents[361] = "CINEMATIC_STOP";
|
|
||||||
g_scriptEvents[362] = "UPDATE_FACTION";
|
|
||||||
g_scriptEvents[363] = "CLOSE_WORLD_MAP";
|
|
||||||
g_scriptEvents[364] = "OPEN_TABARD_FRAME";
|
|
||||||
g_scriptEvents[365] = "CLOSE_TABARD_FRAME";
|
|
||||||
g_scriptEvents[366] = "TABARD_CANSAVE_CHANGED";
|
|
||||||
g_scriptEvents[367] = "GUILD_REGISTRAR_SHOW";
|
|
||||||
g_scriptEvents[368] = "GUILD_REGISTRAR_CLOSED";
|
|
||||||
g_scriptEvents[369] = "DUEL_REQUESTED";
|
|
||||||
g_scriptEvents[370] = "DUEL_OUTOFBOUNDS";
|
|
||||||
g_scriptEvents[371] = "DUEL_INBOUNDS";
|
|
||||||
g_scriptEvents[372] = "DUEL_FINISHED";
|
|
||||||
g_scriptEvents[373] = "TUTORIAL_TRIGGER";
|
|
||||||
g_scriptEvents[374] = "PET_DISMISS_START";
|
|
||||||
g_scriptEvents[375] = "UPDATE_BINDINGS";
|
|
||||||
g_scriptEvents[376] = "UPDATE_SHAPESHIFT_FORMS";
|
|
||||||
g_scriptEvents[377] = "UPDATE_SHAPESHIFT_FORM";
|
|
||||||
g_scriptEvents[378] = "UPDATE_SHAPESHIFT_USABLE";
|
|
||||||
g_scriptEvents[379] = "UPDATE_SHAPESHIFT_COOLDOWN";
|
|
||||||
g_scriptEvents[380] = "WHO_LIST_UPDATE";
|
|
||||||
g_scriptEvents[381] = "PETITION_SHOW";
|
|
||||||
g_scriptEvents[382] = "PETITION_CLOSED";
|
|
||||||
g_scriptEvents[383] = "EXECUTE_CHAT_LINE";
|
|
||||||
g_scriptEvents[384] = "UPDATE_MACROS";
|
|
||||||
g_scriptEvents[385] = "UPDATE_TICKET";
|
|
||||||
g_scriptEvents[386] = "UPDATE_CHAT_WINDOWS";
|
|
||||||
g_scriptEvents[387] = "CONFIRM_XP_LOSS";
|
|
||||||
g_scriptEvents[388] = "CORPSE_IN_RANGE";
|
|
||||||
g_scriptEvents[389] = "CORPSE_IN_INSTANCE";
|
|
||||||
g_scriptEvents[390] = "CORPSE_OUT_OF_RANGE";
|
|
||||||
g_scriptEvents[391] = "UPDATE_GM_STATUS";
|
|
||||||
g_scriptEvents[392] = "PLAYER_UNGHOST";
|
|
||||||
g_scriptEvents[393] = "BIND_ENCHANT";
|
|
||||||
g_scriptEvents[394] = "REPLACE_ENCHANT";
|
|
||||||
g_scriptEvents[395] = "TRADE_REPLACE_ENCHANT";
|
|
||||||
g_scriptEvents[396] = "TRADE_POTENTIAL_BIND_ENCHANT";
|
|
||||||
g_scriptEvents[397] = "PLAYER_UPDATE_RESTING";
|
|
||||||
g_scriptEvents[398] = "UPDATE_EXHAUSTION";
|
|
||||||
g_scriptEvents[399] = "PLAYER_FLAGS_CHANGED";
|
|
||||||
g_scriptEvents[400] = "GUILD_ROSTER_UPDATE";
|
|
||||||
g_scriptEvents[401] = "GM_PLAYER_INFO";
|
|
||||||
g_scriptEvents[402] = "MAIL_SHOW";
|
|
||||||
g_scriptEvents[403] = "MAIL_CLOSED";
|
|
||||||
g_scriptEvents[404] = "SEND_MAIL_MONEY_CHANGED";
|
|
||||||
g_scriptEvents[405] = "SEND_MAIL_COD_CHANGED";
|
|
||||||
g_scriptEvents[406] = "MAIL_SEND_INFO_UPDATE";
|
|
||||||
g_scriptEvents[407] = "MAIL_SEND_SUCCESS";
|
|
||||||
g_scriptEvents[408] = "MAIL_INBOX_UPDATE";
|
|
||||||
g_scriptEvents[409] = "MAIL_LOCK_SEND_ITEMS";
|
|
||||||
g_scriptEvents[410] = "MAIL_UNLOCK_SEND_ITEMS";
|
|
||||||
g_scriptEvents[411] = "BATTLEFIELDS_SHOW";
|
|
||||||
g_scriptEvents[412] = "BATTLEFIELDS_CLOSED";
|
|
||||||
g_scriptEvents[413] = "UPDATE_BATTLEFIELD_STATUS";
|
|
||||||
g_scriptEvents[414] = "UPDATE_BATTLEFIELD_SCORE";
|
|
||||||
g_scriptEvents[415] = "AUCTION_HOUSE_SHOW";
|
|
||||||
g_scriptEvents[416] = "AUCTION_HOUSE_CLOSED";
|
|
||||||
g_scriptEvents[417] = "NEW_AUCTION_UPDATE";
|
|
||||||
g_scriptEvents[418] = "AUCTION_ITEM_LIST_UPDATE";
|
|
||||||
g_scriptEvents[419] = "AUCTION_OWNED_LIST_UPDATE";
|
|
||||||
g_scriptEvents[420] = "AUCTION_BIDDER_LIST_UPDATE";
|
|
||||||
g_scriptEvents[421] = "PET_UI_UPDATE";
|
|
||||||
g_scriptEvents[422] = "PET_UI_CLOSE";
|
|
||||||
g_scriptEvents[423] = "ADDON_LOADED";
|
|
||||||
g_scriptEvents[424] = "VARIABLES_LOADED";
|
|
||||||
g_scriptEvents[425] = "MACRO_ACTION_FORBIDDEN";
|
|
||||||
g_scriptEvents[426] = "ADDON_ACTION_FORBIDDEN";
|
|
||||||
g_scriptEvents[427] = "MACRO_ACTION_BLOCKED";
|
|
||||||
g_scriptEvents[428] = "ADDON_ACTION_BLOCKED";
|
|
||||||
g_scriptEvents[429] = "START_AUTOREPEAT_SPELL";
|
|
||||||
g_scriptEvents[430] = "STOP_AUTOREPEAT_SPELL";
|
|
||||||
g_scriptEvents[431] = "PET_STABLE_SHOW";
|
|
||||||
g_scriptEvents[432] = "PET_STABLE_UPDATE";
|
|
||||||
g_scriptEvents[433] = "PET_STABLE_UPDATE_PAPERDOLL";
|
|
||||||
g_scriptEvents[434] = "PET_STABLE_CLOSED";
|
|
||||||
g_scriptEvents[435] = "RAID_ROSTER_UPDATE";
|
|
||||||
g_scriptEvents[436] = "UPDATE_PENDING_MAIL";
|
|
||||||
g_scriptEvents[437] = "UPDATE_INVENTORY_ALERTS";
|
|
||||||
g_scriptEvents[438] = "UPDATE_INVENTORY_DURABILITY";
|
|
||||||
g_scriptEvents[439] = "UPDATE_TRADESKILL_RECAST";
|
|
||||||
g_scriptEvents[440] = "OPEN_MASTER_LOOT_LIST";
|
|
||||||
g_scriptEvents[441] = "UPDATE_MASTER_LOOT_LIST";
|
|
||||||
g_scriptEvents[442] = "START_LOOT_ROLL";
|
|
||||||
g_scriptEvents[443] = "CANCEL_LOOT_ROLL";
|
|
||||||
g_scriptEvents[444] = "CONFIRM_LOOT_ROLL";
|
|
||||||
g_scriptEvents[445] = "CONFIRM_DISENCHANT_ROLL";
|
|
||||||
g_scriptEvents[446] = "INSTANCE_BOOT_START";
|
|
||||||
g_scriptEvents[447] = "INSTANCE_BOOT_STOP";
|
|
||||||
g_scriptEvents[448] = "LEARNED_SPELL_IN_TAB";
|
|
||||||
g_scriptEvents[449] = "DISPLAY_SIZE_CHANGED";
|
|
||||||
g_scriptEvents[450] = "CONFIRM_TALENT_WIPE";
|
|
||||||
g_scriptEvents[451] = "CONFIRM_BINDER";
|
|
||||||
g_scriptEvents[452] = "MAIL_FAILED";
|
|
||||||
g_scriptEvents[453] = "CLOSE_INBOX_ITEM";
|
|
||||||
g_scriptEvents[454] = "CONFIRM_SUMMON";
|
|
||||||
g_scriptEvents[455] = "CANCEL_SUMMON";
|
|
||||||
g_scriptEvents[456] = "BILLING_NAG_DIALOG";
|
|
||||||
g_scriptEvents[457] = "IGR_BILLING_NAG_DIALOG";
|
|
||||||
g_scriptEvents[458] = "PLAYER_SKINNED";
|
|
||||||
g_scriptEvents[459] = "TABARD_SAVE_PENDING";
|
|
||||||
g_scriptEvents[460] = "UNIT_QUEST_LOG_CHANGED";
|
|
||||||
g_scriptEvents[461] = "PLAYER_PVP_KILLS_CHANGED";
|
|
||||||
g_scriptEvents[462] = "PLAYER_PVP_RANK_CHANGED";
|
|
||||||
g_scriptEvents[463] = "INSPECT_HONOR_UPDATE";
|
|
||||||
g_scriptEvents[464] = "UPDATE_WORLD_STATES";
|
|
||||||
g_scriptEvents[465] = "AREA_SPIRIT_HEALER_IN_RANGE";
|
|
||||||
g_scriptEvents[466] = "AREA_SPIRIT_HEALER_OUT_OF_RANGE";
|
|
||||||
g_scriptEvents[467] = "PLAYTIME_CHANGED";
|
|
||||||
g_scriptEvents[468] = "UPDATE_LFG_TYPES";
|
|
||||||
g_scriptEvents[469] = "UPDATE_LFG_LIST";
|
|
||||||
g_scriptEvents[470] = "UPDATE_LFG_LIST_INCREMENTAL";
|
|
||||||
g_scriptEvents[471] = "START_MINIGAME";
|
|
||||||
g_scriptEvents[472] = "MINIGAME_UPDATE";
|
|
||||||
g_scriptEvents[473] = "READY_CHECK";
|
|
||||||
g_scriptEvents[474] = "READY_CHECK_CONFIRM";
|
|
||||||
g_scriptEvents[475] = "READY_CHECK_FINISHED";
|
|
||||||
g_scriptEvents[476] = "RAID_TARGET_UPDATE";
|
|
||||||
g_scriptEvents[477] = "GMSURVEY_DISPLAY";
|
|
||||||
g_scriptEvents[478] = "UPDATE_INSTANCE_INFO";
|
|
||||||
g_scriptEvents[479] = "SOCKET_INFO_UPDATE";
|
|
||||||
g_scriptEvents[480] = "SOCKET_INFO_CLOSE";
|
|
||||||
g_scriptEvents[481] = "PETITION_VENDOR_SHOW";
|
|
||||||
g_scriptEvents[482] = "PETITION_VENDOR_CLOSED";
|
|
||||||
g_scriptEvents[483] = "PETITION_VENDOR_UPDATE";
|
|
||||||
g_scriptEvents[484] = "COMBAT_TEXT_UPDATE";
|
|
||||||
g_scriptEvents[485] = "QUEST_WATCH_UPDATE";
|
|
||||||
g_scriptEvents[486] = "KNOWLEDGE_BASE_SETUP_LOAD_SUCCESS";
|
|
||||||
g_scriptEvents[487] = "KNOWLEDGE_BASE_SETUP_LOAD_FAILURE";
|
|
||||||
g_scriptEvents[488] = "KNOWLEDGE_BASE_QUERY_LOAD_SUCCESS";
|
|
||||||
g_scriptEvents[489] = "KNOWLEDGE_BASE_QUERY_LOAD_FAILURE";
|
|
||||||
g_scriptEvents[490] = "KNOWLEDGE_BASE_ARTICLE_LOAD_SUCCESS";
|
|
||||||
g_scriptEvents[491] = "KNOWLEDGE_BASE_ARTICLE_LOAD_FAILURE";
|
|
||||||
g_scriptEvents[492] = "KNOWLEDGE_BASE_SYSTEM_MOTD_UPDATED";
|
|
||||||
g_scriptEvents[493] = "KNOWLEDGE_BASE_SERVER_MESSAGE";
|
|
||||||
g_scriptEvents[494] = "ARENA_TEAM_UPDATE";
|
|
||||||
g_scriptEvents[495] = "ARENA_TEAM_ROSTER_UPDATE";
|
|
||||||
g_scriptEvents[496] = "ARENA_TEAM_INVITE_REQUEST";
|
|
||||||
g_scriptEvents[497] = "HONOR_CURRENCY_UPDATE";
|
|
||||||
g_scriptEvents[498] = "KNOWN_TITLES_UPDATE";
|
|
||||||
g_scriptEvents[499] = "NEW_TITLE_EARNED";
|
|
||||||
g_scriptEvents[500] = "OLD_TITLE_LOST";
|
|
||||||
g_scriptEvents[501] = "LFG_UPDATE";
|
|
||||||
g_scriptEvents[502] = "LFG_PROPOSAL_UPDATE";
|
|
||||||
g_scriptEvents[503] = "LFG_PROPOSAL_SHOW";
|
|
||||||
g_scriptEvents[504] = "LFG_PROPOSAL_FAILED";
|
|
||||||
g_scriptEvents[505] = "LFG_PROPOSAL_SUCCEEDED";
|
|
||||||
g_scriptEvents[506] = "LFG_ROLE_UPDATE";
|
|
||||||
g_scriptEvents[507] = "LFG_ROLE_CHECK_UPDATE";
|
|
||||||
g_scriptEvents[508] = "LFG_ROLE_CHECK_SHOW";
|
|
||||||
g_scriptEvents[509] = "LFG_ROLE_CHECK_HIDE";
|
|
||||||
g_scriptEvents[510] = "LFG_ROLE_CHECK_ROLE_CHOSEN";
|
|
||||||
g_scriptEvents[511] = "LFG_QUEUE_STATUS_UPDATE";
|
|
||||||
g_scriptEvents[512] = "LFG_BOOT_PROPOSAL_UPDATE";
|
|
||||||
g_scriptEvents[513] = "LFG_LOCK_INFO_RECEIVED";
|
|
||||||
g_scriptEvents[514] = "LFG_UPDATE_RANDOM_INFO";
|
|
||||||
g_scriptEvents[515] = "LFG_OFFER_CONTINUE";
|
|
||||||
g_scriptEvents[516] = "LFG_OPEN_FROM_GOSSIP";
|
|
||||||
g_scriptEvents[517] = "LFG_COMPLETION_REWARD";
|
|
||||||
g_scriptEvents[518] = "PARTY_LFG_RESTRICTED";
|
|
||||||
g_scriptEvents[519] = "PLAYER_ROLES_ASSIGNED";
|
|
||||||
g_scriptEvents[520] = "COMBAT_RATING_UPDATE";
|
|
||||||
g_scriptEvents[521] = "MODIFIER_STATE_CHANGED";
|
|
||||||
g_scriptEvents[522] = "UPDATE_STEALTH";
|
|
||||||
g_scriptEvents[523] = "ENABLE_TAXI_BENCHMARK";
|
|
||||||
g_scriptEvents[524] = "DISABLE_TAXI_BENCHMARK";
|
|
||||||
g_scriptEvents[525] = "VOICE_START";
|
|
||||||
g_scriptEvents[526] = "VOICE_STOP";
|
|
||||||
g_scriptEvents[527] = "VOICE_STATUS_UPDATE";
|
|
||||||
g_scriptEvents[528] = "VOICE_CHANNEL_STATUS_UPDATE";
|
|
||||||
g_scriptEvents[529] = "UPDATE_FLOATING_CHAT_WINDOWS";
|
|
||||||
g_scriptEvents[530] = "RAID_INSTANCE_WELCOME";
|
|
||||||
g_scriptEvents[531] = "MOVIE_RECORDING_PROGRESS";
|
|
||||||
g_scriptEvents[532] = "MOVIE_COMPRESSING_PROGRESS";
|
|
||||||
g_scriptEvents[533] = "MOVIE_UNCOMPRESSED_MOVIE";
|
|
||||||
g_scriptEvents[534] = "VOICE_PUSH_TO_TALK_START";
|
|
||||||
g_scriptEvents[535] = "VOICE_PUSH_TO_TALK_STOP";
|
|
||||||
g_scriptEvents[536] = "GUILDBANKFRAME_OPENED";
|
|
||||||
g_scriptEvents[537] = "GUILDBANKFRAME_CLOSED";
|
|
||||||
g_scriptEvents[538] = "GUILDBANKBAGSLOTS_CHANGED";
|
|
||||||
g_scriptEvents[539] = "GUILDBANK_ITEM_LOCK_CHANGED";
|
|
||||||
g_scriptEvents[540] = "GUILDBANK_UPDATE_TABS";
|
|
||||||
g_scriptEvents[541] = "GUILDBANK_UPDATE_MONEY";
|
|
||||||
g_scriptEvents[542] = "GUILDBANKLOG_UPDATE";
|
|
||||||
g_scriptEvents[543] = "GUILDBANK_UPDATE_WITHDRAWMONEY";
|
|
||||||
g_scriptEvents[544] = "GUILDBANK_UPDATE_TEXT";
|
|
||||||
g_scriptEvents[545] = "GUILDBANK_TEXT_CHANGED";
|
|
||||||
g_scriptEvents[546] = "CHANNEL_UI_UPDATE";
|
|
||||||
g_scriptEvents[547] = "CHANNEL_COUNT_UPDATE";
|
|
||||||
g_scriptEvents[548] = "CHANNEL_ROSTER_UPDATE";
|
|
||||||
g_scriptEvents[549] = "CHANNEL_VOICE_UPDATE";
|
|
||||||
g_scriptEvents[550] = "CHANNEL_INVITE_REQUEST";
|
|
||||||
g_scriptEvents[551] = "CHANNEL_PASSWORD_REQUEST";
|
|
||||||
g_scriptEvents[552] = "CHANNEL_FLAGS_UPDATED";
|
|
||||||
g_scriptEvents[553] = "VOICE_SESSIONS_UPDATE";
|
|
||||||
g_scriptEvents[554] = "VOICE_CHAT_ENABLED_UPDATE";
|
|
||||||
g_scriptEvents[555] = "VOICE_LEFT_SESSION";
|
|
||||||
g_scriptEvents[556] = "INSPECT_TALENT_READY";
|
|
||||||
g_scriptEvents[557] = "VOICE_SELF_MUTE";
|
|
||||||
g_scriptEvents[558] = "VOICE_PLATE_START";
|
|
||||||
g_scriptEvents[559] = "VOICE_PLATE_STOP";
|
|
||||||
g_scriptEvents[560] = "ARENA_SEASON_WORLD_STATE";
|
|
||||||
g_scriptEvents[561] = "GUILD_EVENT_LOG_UPDATE";
|
|
||||||
g_scriptEvents[562] = "GUILDTABARD_UPDATE";
|
|
||||||
g_scriptEvents[563] = "SOUND_DEVICE_UPDATE";
|
|
||||||
g_scriptEvents[564] = "COMMENTATOR_MAP_UPDATE";
|
|
||||||
g_scriptEvents[565] = "COMMENTATOR_ENTER_WORLD";
|
|
||||||
g_scriptEvents[566] = "COMBAT_LOG_EVENT";
|
|
||||||
g_scriptEvents[567] = "COMBAT_LOG_EVENT_UNFILTERED";
|
|
||||||
g_scriptEvents[568] = "COMMENTATOR_PLAYER_UPDATE";
|
|
||||||
g_scriptEvents[569] = "PLAYER_ENTERING_BATTLEGROUND";
|
|
||||||
g_scriptEvents[570] = "BARBER_SHOP_OPEN";
|
|
||||||
g_scriptEvents[571] = "BARBER_SHOP_CLOSE";
|
|
||||||
g_scriptEvents[572] = "BARBER_SHOP_SUCCESS";
|
|
||||||
g_scriptEvents[573] = "BARBER_SHOP_APPEARANCE_APPLIED";
|
|
||||||
g_scriptEvents[574] = "CALENDAR_UPDATE_INVITE_LIST";
|
|
||||||
g_scriptEvents[575] = "CALENDAR_UPDATE_EVENT_LIST";
|
|
||||||
g_scriptEvents[576] = "CALENDAR_NEW_EVENT";
|
|
||||||
g_scriptEvents[577] = "CALENDAR_OPEN_EVENT";
|
|
||||||
g_scriptEvents[578] = "CALENDAR_CLOSE_EVENT";
|
|
||||||
g_scriptEvents[579] = "CALENDAR_UPDATE_EVENT";
|
|
||||||
g_scriptEvents[580] = "CALENDAR_UPDATE_PENDING_INVITES";
|
|
||||||
g_scriptEvents[581] = "CALENDAR_EVENT_ALARM";
|
|
||||||
g_scriptEvents[582] = "CALENDAR_UPDATE_ERROR";
|
|
||||||
g_scriptEvents[583] = "CALENDAR_ACTION_PENDING";
|
|
||||||
g_scriptEvents[584] = "VEHICLE_ANGLE_SHOW";
|
|
||||||
g_scriptEvents[585] = "VEHICLE_ANGLE_UPDATE";
|
|
||||||
g_scriptEvents[586] = "VEHICLE_POWER_SHOW";
|
|
||||||
g_scriptEvents[587] = "UNIT_ENTERING_VEHICLE";
|
|
||||||
g_scriptEvents[588] = "UNIT_ENTERED_VEHICLE";
|
|
||||||
g_scriptEvents[589] = "UNIT_EXITING_VEHICLE";
|
|
||||||
g_scriptEvents[590] = "UNIT_EXITED_VEHICLE";
|
|
||||||
g_scriptEvents[591] = "VEHICLE_PASSENGERS_CHANGED";
|
|
||||||
g_scriptEvents[592] = "PLAYER_GAINS_VEHICLE_DATA";
|
|
||||||
g_scriptEvents[593] = "PLAYER_LOSES_VEHICLE_DATA";
|
|
||||||
g_scriptEvents[594] = "PET_FORCE_NAME_DECLENSION";
|
|
||||||
g_scriptEvents[595] = "LEVEL_GRANT_PROPOSED";
|
|
||||||
g_scriptEvents[596] = "SYNCHRONIZE_SETTINGS";
|
|
||||||
g_scriptEvents[597] = "PLAY_MOVIE";
|
|
||||||
g_scriptEvents[598] = "RUNE_POWER_UPDATE";
|
|
||||||
g_scriptEvents[599] = "RUNE_TYPE_UPDATE";
|
|
||||||
g_scriptEvents[600] = "ACHIEVEMENT_EARNED";
|
|
||||||
g_scriptEvents[601] = "CRITERIA_UPDATE";
|
|
||||||
g_scriptEvents[602] = "RECEIVED_ACHIEVEMENT_LIST";
|
|
||||||
g_scriptEvents[603] = "PET_RENAMEABLE";
|
|
||||||
g_scriptEvents[604] = "KNOWN_CURRENCY_TYPES_UPDATE";
|
|
||||||
g_scriptEvents[605] = "CURRENCY_DISPLAY_UPDATE";
|
|
||||||
g_scriptEvents[606] = "COMPANION_LEARNED";
|
|
||||||
g_scriptEvents[607] = "COMPANION_UNLEARNED";
|
|
||||||
g_scriptEvents[608] = "COMPANION_UPDATE";
|
|
||||||
g_scriptEvents[609] = "UNIT_THREAT_LIST_UPDATE";
|
|
||||||
g_scriptEvents[610] = "UNIT_THREAT_SITUATION_UPDATE";
|
|
||||||
g_scriptEvents[611] = "GLYPH_ADDED";
|
|
||||||
g_scriptEvents[612] = "GLYPH_REMOVED";
|
|
||||||
g_scriptEvents[613] = "GLYPH_UPDATED";
|
|
||||||
g_scriptEvents[614] = "GLYPH_ENABLED";
|
|
||||||
g_scriptEvents[615] = "GLYPH_DISABLED";
|
|
||||||
g_scriptEvents[616] = "USE_GLYPH";
|
|
||||||
g_scriptEvents[617] = "TRACKED_ACHIEVEMENT_UPDATE";
|
|
||||||
g_scriptEvents[618] = "ARENA_OPPONENT_UPDATE";
|
|
||||||
g_scriptEvents[619] = "INSPECT_ACHIEVEMENT_READY";
|
|
||||||
g_scriptEvents[620] = "RAISED_AS_GHOUL";
|
|
||||||
g_scriptEvents[621] = "PARTY_CONVERTED_TO_RAID";
|
|
||||||
g_scriptEvents[622] = "PVPQUEUE_ANYWHERE_SHOW";
|
|
||||||
g_scriptEvents[623] = "PVPQUEUE_ANYWHERE_UPDATE_AVAILABLE";
|
|
||||||
g_scriptEvents[624] = "QUEST_ACCEPTED";
|
|
||||||
g_scriptEvents[625] = "PLAYER_TALENT_UPDATE";
|
|
||||||
g_scriptEvents[626] = "ACTIVE_TALENT_GROUP_CHANGED";
|
|
||||||
g_scriptEvents[627] = "PET_TALENT_UPDATE";
|
|
||||||
g_scriptEvents[628] = "PREVIEW_TALENT_POINTS_CHANGED";
|
|
||||||
g_scriptEvents[629] = "PREVIEW_PET_TALENT_POINTS_CHANGED";
|
|
||||||
g_scriptEvents[630] = "WEAR_EQUIPMENT_SET";
|
|
||||||
g_scriptEvents[631] = "EQUIPMENT_SETS_CHANGED";
|
|
||||||
g_scriptEvents[632] = "INSTANCE_LOCK_START";
|
|
||||||
g_scriptEvents[633] = "INSTANCE_LOCK_STOP";
|
|
||||||
g_scriptEvents[634] = "PLAYER_EQUIPMENT_CHANGED";
|
|
||||||
g_scriptEvents[635] = "ITEM_LOCKED";
|
|
||||||
g_scriptEvents[636] = "ITEM_UNLOCKED";
|
|
||||||
g_scriptEvents[637] = "TRADE_SKILL_FILTER_UPDATE";
|
|
||||||
g_scriptEvents[638] = "EQUIPMENT_SWAP_PENDING";
|
|
||||||
g_scriptEvents[639] = "EQUIPMENT_SWAP_FINISHED";
|
|
||||||
g_scriptEvents[640] = "NPC_PVPQUEUE_ANYWHERE";
|
|
||||||
g_scriptEvents[641] = "UPDATE_MULTI_CAST_ACTIONBAR";
|
|
||||||
g_scriptEvents[642] = "ENABLE_XP_GAIN";
|
|
||||||
g_scriptEvents[643] = "DISABLE_XP_GAIN";
|
|
||||||
g_scriptEvents[644] = "BATTLEFIELD_MGR_ENTRY_INVITE";
|
|
||||||
g_scriptEvents[645] = "BATTLEFIELD_MGR_ENTERED";
|
|
||||||
g_scriptEvents[646] = "BATTLEFIELD_MGR_QUEUE_REQUEST_RESPONSE";
|
|
||||||
g_scriptEvents[647] = "BATTLEFIELD_MGR_EJECT_PENDING";
|
|
||||||
g_scriptEvents[648] = "BATTLEFIELD_MGR_EJECTED";
|
|
||||||
g_scriptEvents[649] = "BATTLEFIELD_MGR_QUEUE_INVITE";
|
|
||||||
g_scriptEvents[650] = "BATTLEFIELD_MGR_STATE_CHANGE";
|
|
||||||
g_scriptEvents[651] = "WORLD_STATE_UI_TIMER_UPDATE";
|
|
||||||
g_scriptEvents[652] = "END_REFUND";
|
|
||||||
g_scriptEvents[653] = "END_BOUND_TRADEABLE";
|
|
||||||
g_scriptEvents[654] = "UPDATE_CHAT_COLOR_NAME_BY_CLASS";
|
|
||||||
g_scriptEvents[655] = "GMRESPONSE_RECEIVED";
|
|
||||||
g_scriptEvents[656] = "VEHICLE_UPDATE";
|
|
||||||
g_scriptEvents[657] = "WOW_MOUSE_NOT_FOUND";
|
|
||||||
g_scriptEvents[659] = "MAIL_SUCCESS";
|
|
||||||
g_scriptEvents[660] = "TALENTS_INVOLUNTARILY_RESET";
|
|
||||||
g_scriptEvents[661] = "INSTANCE_ENCOUNTER_ENGAGE_UNIT";
|
|
||||||
g_scriptEvents[662] = "QUEST_QUERY_COMPLETE";
|
|
||||||
g_scriptEvents[663] = "QUEST_POI_UPDATE";
|
|
||||||
g_scriptEvents[664] = "PLAYER_DIFFICULTY_CHANGED";
|
|
||||||
g_scriptEvents[665] = "CHAT_MSG_PARTY_LEADER";
|
|
||||||
g_scriptEvents[666] = "VOTE_KICK_REASON_NEEDED";
|
|
||||||
g_scriptEvents[667] = "ENABLE_LOW_LEVEL_RAID";
|
|
||||||
g_scriptEvents[668] = "DISABLE_LOW_LEVEL_RAID";
|
|
||||||
g_scriptEvents[669] = "CHAT_MSG_TARGETICONS";
|
|
||||||
g_scriptEvents[670] = "AUCTION_HOUSE_DISABLED";
|
|
||||||
g_scriptEvents[671] = "AUCTION_MULTISELL_START";
|
|
||||||
g_scriptEvents[672] = "AUCTION_MULTISELL_UPDATE";
|
|
||||||
g_scriptEvents[673] = "AUCTION_MULTISELL_FAILURE";
|
|
||||||
g_scriptEvents[674] = "PET_SPELL_POWER_UPDATE";
|
|
||||||
g_scriptEvents[675] = "BN_CONNECTED";
|
|
||||||
g_scriptEvents[676] = "BN_DISCONNECTED";
|
|
||||||
g_scriptEvents[677] = "BN_SELF_ONLINE";
|
|
||||||
g_scriptEvents[678] = "BN_SELF_OFFLINE";
|
|
||||||
g_scriptEvents[679] = "BN_FRIEND_LIST_SIZE_CHANGED";
|
|
||||||
g_scriptEvents[680] = "BN_FRIEND_INVITE_LIST_INITIALIZED";
|
|
||||||
g_scriptEvents[681] = "BN_FRIEND_INVITE_SEND_RESULT";
|
|
||||||
g_scriptEvents[682] = "BN_FRIEND_INVITE_ADDED";
|
|
||||||
g_scriptEvents[683] = "BN_FRIEND_INVITE_REMOVED";
|
|
||||||
g_scriptEvents[684] = "BN_FRIEND_INFO_CHANGED";
|
|
||||||
g_scriptEvents[685] = "BN_CUSTOM_MESSAGE_CHANGED";
|
|
||||||
g_scriptEvents[686] = "BN_CUSTOM_MESSAGE_LOADED";
|
|
||||||
g_scriptEvents[687] = "CHAT_MSG_BN_WHISPER";
|
|
||||||
g_scriptEvents[688] = "CHAT_MSG_BN_WHISPER_INFORM";
|
|
||||||
g_scriptEvents[689] = "BN_CHAT_WHISPER_UNDELIVERABLE";
|
|
||||||
g_scriptEvents[690] = "BN_CHAT_CHANNEL_JOINED";
|
|
||||||
g_scriptEvents[691] = "BN_CHAT_CHANNEL_LEFT";
|
|
||||||
g_scriptEvents[692] = "BN_CHAT_CHANNEL_CLOSED";
|
|
||||||
g_scriptEvents[693] = "CHAT_MSG_BN_CONVERSATION";
|
|
||||||
g_scriptEvents[694] = "CHAT_MSG_BN_CONVERSATION_NOTICE";
|
|
||||||
g_scriptEvents[695] = "CHAT_MSG_BN_CONVERSATION_LIST";
|
|
||||||
g_scriptEvents[696] = "BN_CHAT_CHANNEL_MESSAGE_UNDELIVERABLE";
|
|
||||||
g_scriptEvents[697] = "BN_CHAT_CHANNEL_MESSAGE_BLOCKED";
|
|
||||||
g_scriptEvents[698] = "BN_CHAT_CHANNEL_MEMBER_JOINED";
|
|
||||||
g_scriptEvents[699] = "BN_CHAT_CHANNEL_MEMBER_LEFT";
|
|
||||||
g_scriptEvents[700] = "BN_CHAT_CHANNEL_MEMBER_UPDATED";
|
|
||||||
g_scriptEvents[701] = "BN_CHAT_CHANNEL_CREATE_SUCCEEDED";
|
|
||||||
g_scriptEvents[702] = "BN_CHAT_CHANNEL_CREATE_FAILED";
|
|
||||||
g_scriptEvents[703] = "BN_CHAT_CHANNEL_INVITE_SUCCEEDED";
|
|
||||||
g_scriptEvents[704] = "BN_CHAT_CHANNEL_INVITE_FAILED";
|
|
||||||
g_scriptEvents[705] = "BN_BLOCK_LIST_UPDATED";
|
|
||||||
g_scriptEvents[706] = "BN_SYSTEM_MESSAGE";
|
|
||||||
g_scriptEvents[707] = "BN_REQUEST_FOF_SUCCEEDED";
|
|
||||||
g_scriptEvents[708] = "BN_REQUEST_FOF_FAILED";
|
|
||||||
g_scriptEvents[709] = "BN_NEW_PRESENCE";
|
|
||||||
g_scriptEvents[710] = "BN_TOON_NAME_UPDATED";
|
|
||||||
g_scriptEvents[711] = "BN_FRIEND_ACCOUNT_ONLINE";
|
|
||||||
g_scriptEvents[712] = "BN_FRIEND_ACCOUNT_OFFLINE";
|
|
||||||
g_scriptEvents[713] = "BN_FRIEND_TOON_ONLINE";
|
|
||||||
g_scriptEvents[714] = "BN_FRIEND_TOON_OFFLINE";
|
|
||||||
g_scriptEvents[715] = "BN_MATURE_LANGUAGE_FILTER";
|
|
||||||
g_scriptEvents[716] = "COMMENTATOR_SKIRMISH_QUEUE_REQUEST";
|
|
||||||
g_scriptEvents[717] = "COMMENTATOR_SKIRMISH_MODE_REQUEST";
|
|
||||||
g_scriptEvents[718] = "CHAT_MSG_BN_INLINE_TOAST_ALERT";
|
|
||||||
g_scriptEvents[719] = "CHAT_MSG_BN_INLINE_TOAST_BROADCAST";
|
|
||||||
g_scriptEvents[720] = "CHAT_MSG_BN_INLINE_TOAST_BROADCAST_INFORM";
|
|
||||||
g_scriptEvents[721] = "CHAT_MSG_BN_INLINE_TOAST_CONVERSATION";
|
|
||||||
}
|
|
||||||
|
|||||||
@ -40,7 +40,6 @@ class FrameScript_EventObject : public TSHashObject<FrameScript_EventObject, HAS
|
|||||||
};
|
};
|
||||||
|
|
||||||
extern int32_t g_glueFrameScriptGenders[UNITSEX_LAST];
|
extern int32_t g_glueFrameScriptGenders[UNITSEX_LAST];
|
||||||
extern const char* g_scriptEvents[722];
|
|
||||||
|
|
||||||
namespace FrameScript {
|
namespace FrameScript {
|
||||||
extern void* s_mempool;
|
extern void* s_mempool;
|
||||||
@ -103,6 +102,4 @@ void FrameScript_UnregisterFunction(const char* name);
|
|||||||
|
|
||||||
void FrameScript_UnregisterScriptEvent(FrameScript_Object* object, FrameScript_EventObject* event);
|
void FrameScript_UnregisterScriptEvent(FrameScript_Object* object, FrameScript_EventObject* event);
|
||||||
|
|
||||||
void ScriptEventsInitialize();
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -35,6 +35,33 @@ const char* FrameScript_Object::GetDisplayName() {
|
|||||||
return name ? name : "<unnamed>";
|
return name ? name : "<unnamed>";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int32_t FrameScript_Object::GetScript(lua_State* L) {
|
||||||
|
if (!lua_isstring(L, 2)) {
|
||||||
|
luaL_error(L, "Usage: %s:GetScript(\"type\")", this->GetDisplayName());
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto name = lua_tostring(L, 2);
|
||||||
|
ScriptData data;
|
||||||
|
|
||||||
|
auto script = this->GetScriptByName(name, data);
|
||||||
|
|
||||||
|
if (!script) {
|
||||||
|
luaL_error(L, "%s doesn't have a \"%s\" script", this->GetDisplayName(), lua_tostring(L, 2));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO taint management
|
||||||
|
|
||||||
|
if (script->luaRef > 0) {
|
||||||
|
lua_rawgeti(L, LUA_REGISTRYINDEX, script->luaRef);
|
||||||
|
} else {
|
||||||
|
lua_pushnil(L);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
FrameScript_Object::ScriptIx* FrameScript_Object::GetScriptByName(const char* name, FrameScript_Object::ScriptData& data) {
|
FrameScript_Object::ScriptIx* FrameScript_Object::GetScriptByName(const char* name, FrameScript_Object::ScriptData& data) {
|
||||||
if (!SStrCmpI(name, "OnEvent", STORM_MAX_STR)) {
|
if (!SStrCmpI(name, "OnEvent", STORM_MAX_STR)) {
|
||||||
data.wrapper = "return function(self,event,...) %s end";
|
data.wrapper = "return function(self,event,...) %s end";
|
||||||
|
|||||||
@ -43,6 +43,7 @@ class FrameScript_Object {
|
|||||||
|
|
||||||
// Member functions
|
// Member functions
|
||||||
const char* GetDisplayName();
|
const char* GetDisplayName();
|
||||||
|
int32_t GetScript(lua_State* L);
|
||||||
int32_t RegisterScriptEvent(const char* name);
|
int32_t RegisterScriptEvent(const char* name);
|
||||||
void RegisterScriptObject(const char* name);
|
void RegisterScriptObject(const char* name);
|
||||||
void RunScript(ScriptIx const& script, int32_t argCount, const char* a4);
|
void RunScript(ScriptIx const& script, int32_t argCount, const char* a4);
|
||||||
|
|||||||
@ -2,5 +2,7 @@
|
|||||||
#define UI_GAME_HPP
|
#define UI_GAME_HPP
|
||||||
|
|
||||||
#include "ui/game/CGGameUI.hpp"
|
#include "ui/game/CGGameUI.hpp"
|
||||||
|
#include "ui/game/CGPetInfo.hpp"
|
||||||
|
#include "ui/game/ScriptEvents.hpp"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
164
src/ui/game/ActionBarScript.cpp
Normal file
164
src/ui/game/ActionBarScript.cpp
Normal file
@ -0,0 +1,164 @@
|
|||||||
|
#include "ui/game/ActionBarScript.hpp"
|
||||||
|
#include "ui/FrameScript.hpp"
|
||||||
|
#include "ui/game/CGActionBar.hpp"
|
||||||
|
#include "util/Lua.hpp"
|
||||||
|
#include "util/Unimplemented.hpp"
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
|
||||||
|
int32_t Script_GetActionInfo(lua_State* L) {
|
||||||
|
WHOA_UNIMPLEMENTED(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t Script_GetActionTexture(lua_State* L) {
|
||||||
|
WHOA_UNIMPLEMENTED(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t Script_GetActionCount(lua_State* L) {
|
||||||
|
WHOA_UNIMPLEMENTED(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t Script_GetActionCooldown(lua_State* L) {
|
||||||
|
WHOA_UNIMPLEMENTED(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t Script_GetActionAutocast(lua_State* L) {
|
||||||
|
WHOA_UNIMPLEMENTED(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t Script_GetActionText(lua_State* L) {
|
||||||
|
WHOA_UNIMPLEMENTED(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t Script_HasAction(lua_State* L) {
|
||||||
|
WHOA_UNIMPLEMENTED(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t Script_UseAction(lua_State* L) {
|
||||||
|
WHOA_UNIMPLEMENTED(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t Script_PickupAction(lua_State* L) {
|
||||||
|
WHOA_UNIMPLEMENTED(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t Script_PlaceAction(lua_State* L) {
|
||||||
|
WHOA_UNIMPLEMENTED(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t Script_IsAttackAction(lua_State* L) {
|
||||||
|
WHOA_UNIMPLEMENTED(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t Script_IsCurrentAction(lua_State* L) {
|
||||||
|
WHOA_UNIMPLEMENTED(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t Script_IsAutoRepeatAction(lua_State* L) {
|
||||||
|
WHOA_UNIMPLEMENTED(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t Script_IsUsableAction(lua_State* L) {
|
||||||
|
WHOA_UNIMPLEMENTED(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t Script_IsConsumableAction(lua_State* L) {
|
||||||
|
WHOA_UNIMPLEMENTED(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t Script_IsStackableAction(lua_State* L) {
|
||||||
|
WHOA_UNIMPLEMENTED(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t Script_IsEquippedAction(lua_State* L) {
|
||||||
|
WHOA_UNIMPLEMENTED(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t Script_ActionHasRange(lua_State* L) {
|
||||||
|
WHOA_UNIMPLEMENTED(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t Script_IsActionInRange(lua_State* L) {
|
||||||
|
WHOA_UNIMPLEMENTED(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t Script_GetBonusBarOffset(lua_State* L) {
|
||||||
|
WHOA_UNIMPLEMENTED(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t Script_GetMultiCastBarOffset(lua_State* L) {
|
||||||
|
WHOA_UNIMPLEMENTED(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t Script_ChangeActionBarPage(lua_State* L) {
|
||||||
|
WHOA_UNIMPLEMENTED(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t Script_GetActionBarPage(lua_State* L) {
|
||||||
|
if (CGActionBar::s_tempPageActiveFlags) {
|
||||||
|
lua_pushinteger(L, 1);
|
||||||
|
} else {
|
||||||
|
lua_pushinteger(L, CGActionBar::s_currentPage + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t Script_GetActionBarToggles(lua_State* L) {
|
||||||
|
WHOA_UNIMPLEMENTED(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t Script_SetActionBarToggles(lua_State* L) {
|
||||||
|
WHOA_UNIMPLEMENTED(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t Script_IsPossessBarVisible(lua_State* L) {
|
||||||
|
WHOA_UNIMPLEMENTED(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t Script_GetMultiCastTotemSpells(lua_State* L) {
|
||||||
|
WHOA_UNIMPLEMENTED(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t Script_SetMultiCastSpell(lua_State* L) {
|
||||||
|
WHOA_UNIMPLEMENTED(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static FrameScript_Method s_ScriptFunctions[] = {
|
||||||
|
{ "GetActionInfo", &Script_GetActionInfo },
|
||||||
|
{ "GetActionTexture", &Script_GetActionTexture },
|
||||||
|
{ "GetActionCount", &Script_GetActionCount },
|
||||||
|
{ "GetActionCooldown", &Script_GetActionCooldown },
|
||||||
|
{ "GetActionAutocast", &Script_GetActionAutocast },
|
||||||
|
{ "GetActionText", &Script_GetActionText },
|
||||||
|
{ "HasAction", &Script_HasAction },
|
||||||
|
{ "UseAction", &Script_UseAction },
|
||||||
|
{ "PickupAction", &Script_PickupAction },
|
||||||
|
{ "PlaceAction", &Script_PlaceAction },
|
||||||
|
{ "IsAttackAction", &Script_IsAttackAction },
|
||||||
|
{ "IsCurrentAction", &Script_IsCurrentAction },
|
||||||
|
{ "IsAutoRepeatAction", &Script_IsAutoRepeatAction },
|
||||||
|
{ "IsUsableAction", &Script_IsUsableAction },
|
||||||
|
{ "IsConsumableAction", &Script_IsConsumableAction },
|
||||||
|
{ "IsStackableAction", &Script_IsStackableAction },
|
||||||
|
{ "IsEquippedAction", &Script_IsEquippedAction },
|
||||||
|
{ "ActionHasRange", &Script_ActionHasRange },
|
||||||
|
{ "IsActionInRange", &Script_IsActionInRange },
|
||||||
|
{ "GetBonusBarOffset", &Script_GetBonusBarOffset },
|
||||||
|
{ "GetMultiCastBarOffset", &Script_GetMultiCastBarOffset },
|
||||||
|
{ "ChangeActionBarPage", &Script_ChangeActionBarPage },
|
||||||
|
{ "GetActionBarPage", &Script_GetActionBarPage },
|
||||||
|
{ "GetActionBarToggles", &Script_GetActionBarToggles },
|
||||||
|
{ "SetActionBarToggles", &Script_SetActionBarToggles },
|
||||||
|
{ "IsPossessBarVisible", &Script_IsPossessBarVisible },
|
||||||
|
{ "GetMultiCastTotemSpells", &Script_GetMultiCastTotemSpells },
|
||||||
|
{ "SetMultiCastSpell", &Script_SetMultiCastSpell },
|
||||||
|
};
|
||||||
|
|
||||||
|
void ActionBarRegisterScriptFunctions() {
|
||||||
|
for (auto& func : s_ScriptFunctions) {
|
||||||
|
FrameScript_RegisterFunction(func.name, func.method);
|
||||||
|
}
|
||||||
|
}
|
||||||
6
src/ui/game/ActionBarScript.hpp
Normal file
6
src/ui/game/ActionBarScript.hpp
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
#ifndef UI_GAME_ACTION_BAR_SCRIPT_HPP
|
||||||
|
#define UI_GAME_ACTION_BAR_SCRIPT_HPP
|
||||||
|
|
||||||
|
void ActionBarRegisterScriptFunctions();
|
||||||
|
|
||||||
|
#endif
|
||||||
4
src/ui/game/CGActionBar.cpp
Normal file
4
src/ui/game/CGActionBar.cpp
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
#include "ui/game/CGActionBar.hpp"
|
||||||
|
|
||||||
|
uint32_t CGActionBar::s_currentPage;
|
||||||
|
uint32_t CGActionBar::s_tempPageActiveFlags;
|
||||||
13
src/ui/game/CGActionBar.hpp
Normal file
13
src/ui/game/CGActionBar.hpp
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
#ifndef UI_GAME_C_G_ACTION_BAR_HPP
|
||||||
|
#define UI_GAME_C_G_ACTION_BAR_HPP
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
|
|
||||||
|
class CGActionBar {
|
||||||
|
public:
|
||||||
|
// Static variables
|
||||||
|
static uint32_t s_currentPage;
|
||||||
|
static uint32_t s_tempPageActiveFlags;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
@ -3,6 +3,7 @@
|
|||||||
#include "ui/CScriptObject.hpp"
|
#include "ui/CScriptObject.hpp"
|
||||||
#include "ui/FrameXML.hpp"
|
#include "ui/FrameXML.hpp"
|
||||||
#include "ui/Key.hpp"
|
#include "ui/Key.hpp"
|
||||||
|
#include "ui/game/ActionBarScript.hpp"
|
||||||
#include "ui/game/BattlefieldInfoScript.hpp"
|
#include "ui/game/BattlefieldInfoScript.hpp"
|
||||||
#include "ui/game/CGCharacterModelBase.hpp"
|
#include "ui/game/CGCharacterModelBase.hpp"
|
||||||
#include "ui/game/CGCooldown.hpp"
|
#include "ui/game/CGCooldown.hpp"
|
||||||
@ -46,6 +47,10 @@ void LoadScriptFunctions() {
|
|||||||
|
|
||||||
// TODO
|
// TODO
|
||||||
|
|
||||||
|
ActionBarRegisterScriptFunctions();
|
||||||
|
|
||||||
|
// TODO
|
||||||
|
|
||||||
CharacterInfoRegisterScriptFunctions();
|
CharacterInfoRegisterScriptFunctions();
|
||||||
|
|
||||||
// TODO
|
// TODO
|
||||||
@ -75,6 +80,7 @@ void CGGameUI::Initialize() {
|
|||||||
// TODO
|
// TODO
|
||||||
|
|
||||||
LoadScriptFunctions();
|
LoadScriptFunctions();
|
||||||
|
ScriptEventsRegisterEvents();
|
||||||
|
|
||||||
// TODO
|
// TODO
|
||||||
|
|
||||||
|
|||||||
6
src/ui/game/CGPetInfo.cpp
Normal file
6
src/ui/game/CGPetInfo.cpp
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
#include "ui/game/CGPetInfo.hpp"
|
||||||
|
|
||||||
|
WOWGUID CGPetInfo::GetPet(uint32_t index) {
|
||||||
|
// TODO
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
13
src/ui/game/CGPetInfo.hpp
Normal file
13
src/ui/game/CGPetInfo.hpp
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
#ifndef UI_GAME_C_G_PET_INFO_HPP
|
||||||
|
#define UI_GAME_C_G_PET_INFO_HPP
|
||||||
|
|
||||||
|
#include "util/GUID.hpp"
|
||||||
|
#include <cstdint>
|
||||||
|
|
||||||
|
class CGPetInfo {
|
||||||
|
public:
|
||||||
|
// Static functions
|
||||||
|
static WOWGUID GetPet(uint32_t index);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
@ -1,17 +1,35 @@
|
|||||||
#include "ui/game/ScriptEvents.hpp"
|
#include "ui/game/ScriptEvents.hpp"
|
||||||
#include "object/client/ObjMgr.hpp"
|
#include "db/Db.hpp"
|
||||||
|
#include "object/Client.hpp"
|
||||||
#include "ui/FrameScript.hpp"
|
#include "ui/FrameScript.hpp"
|
||||||
#include "ui/ScriptFunctionsSystem.hpp"
|
#include "ui/ScriptFunctionsSystem.hpp"
|
||||||
#include "ui/game/CGGameUI.hpp"
|
#include "ui/game/CGGameUI.hpp"
|
||||||
#include "ui/game/ScriptUtil.hpp"
|
#include "ui/game/ScriptUtil.hpp"
|
||||||
#include "util/GUID.hpp"
|
#include "util/GUID.hpp"
|
||||||
#include "util/Lua.hpp"
|
#include "util/Lua.hpp"
|
||||||
|
#include "util/StringTo.hpp"
|
||||||
#include "util/Unimplemented.hpp"
|
#include "util/Unimplemented.hpp"
|
||||||
|
|
||||||
|
#define NUM_SCRIPT_EVENTS 722
|
||||||
|
|
||||||
|
const char* g_scriptEvents[NUM_SCRIPT_EVENTS];
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
int32_t Script_UnitExists(lua_State* L) {
|
int32_t Script_UnitExists(lua_State* L) {
|
||||||
WHOA_UNIMPLEMENTED(0);
|
auto token = lua_tostring(L, 1);
|
||||||
|
WOWGUID guid = 0;
|
||||||
|
Script_GetGUIDFromToken(token, guid, false);
|
||||||
|
|
||||||
|
auto object = ClntObjMgrObjectPtr(guid, TYPE_OBJECT, __FILE__, __LINE__);
|
||||||
|
|
||||||
|
if ((object && object->CanBeTargetted()) || CGGameUI::IsRaidMemberOrPet(guid)) {
|
||||||
|
lua_pushnumber(L, 1.0);
|
||||||
|
} else {
|
||||||
|
lua_pushnil(L);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t Script_UnitIsVisible(lua_State* L) {
|
int32_t Script_UnitIsVisible(lua_State* L) {
|
||||||
@ -159,11 +177,43 @@ int32_t Script_UnitPVPName(lua_State* L) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int32_t Script_UnitXP(lua_State* L) {
|
int32_t Script_UnitXP(lua_State* L) {
|
||||||
WHOA_UNIMPLEMENTED(0);
|
if (!lua_isstring(L, 1)) {
|
||||||
|
luaL_error(L, "Usage: UnitXP(\"unit\")");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto name = lua_tostring(L, 1);
|
||||||
|
auto unit = Script_GetUnitFromName(name);
|
||||||
|
|
||||||
|
float xp = 0.0f;
|
||||||
|
|
||||||
|
if (unit && unit->IsA(TYPE_PLAYER)) {
|
||||||
|
xp = static_cast<CGPlayer_C*>(unit)->GetActiveXP();
|
||||||
|
}
|
||||||
|
|
||||||
|
lua_pushnumber(L, xp);
|
||||||
|
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t Script_UnitXPMax(lua_State* L) {
|
int32_t Script_UnitXPMax(lua_State* L) {
|
||||||
WHOA_UNIMPLEMENTED(0);
|
if (!lua_isstring(L, 1)) {
|
||||||
|
luaL_error(L, "Usage: UnitXPMax(\"unit\")");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto name = lua_tostring(L, 1);
|
||||||
|
auto unit = Script_GetUnitFromName(name);
|
||||||
|
|
||||||
|
float xpMax = 0.0f;
|
||||||
|
|
||||||
|
if (unit && unit->IsA(TYPE_PLAYER)) {
|
||||||
|
xpMax = static_cast<CGPlayer_C*>(unit)->GetActiveNextLevelXP();
|
||||||
|
}
|
||||||
|
|
||||||
|
lua_pushnumber(L, xpMax);
|
||||||
|
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t Script_UnitHealth(lua_State* L) {
|
int32_t Script_UnitHealth(lua_State* L) {
|
||||||
@ -695,7 +745,29 @@ int32_t Script_IsXPUserDisabled(lua_State* L) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int32_t Script_FillLocalizedClassList(lua_State* L) {
|
int32_t Script_FillLocalizedClassList(lua_State* L) {
|
||||||
WHOA_UNIMPLEMENTED(0);
|
if (lua_type(L, 1) != LUA_TTABLE) {
|
||||||
|
luaL_error(L, "Usage: FillLocalizedClassList(classTable[, isFemale])");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto isFemale = StringToBOOL(L, 2, 0);
|
||||||
|
auto sex = isFemale ? UNITSEX_FEMALE : UNITSEX_MALE;
|
||||||
|
|
||||||
|
lua_settop(L, 1);
|
||||||
|
|
||||||
|
for (int32_t i = 0; i < g_chrClassesDB.GetNumRecords(); ++i) {
|
||||||
|
auto classRec = g_chrClassesDB.GetRecordByIndex(i);
|
||||||
|
if (classRec) {
|
||||||
|
auto displayName = CGUnit_C::GetDisplayClassNameFromRecord(classRec, sex, 0);
|
||||||
|
|
||||||
|
lua_pushstring(L, classRec->m_filename);
|
||||||
|
lua_pushstring(L, displayName);
|
||||||
|
|
||||||
|
lua_settable(L, -3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -879,3 +951,657 @@ void ScriptEventsRegisterFunctions() {
|
|||||||
FrameScript_RegisterFunction(func.name, func.method);
|
FrameScript_RegisterFunction(func.name, func.method);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ScriptEventsInitialize() {
|
||||||
|
g_scriptEvents[0] = "UNIT_PET";
|
||||||
|
g_scriptEvents[2] = "UNIT_PET";
|
||||||
|
g_scriptEvents[12] = "UNIT_TARGET";
|
||||||
|
g_scriptEvents[17] = "UNIT_DISPLAYPOWER";
|
||||||
|
g_scriptEvents[18] = "UNIT_HEALTH";
|
||||||
|
g_scriptEvents[19] = "UNIT_MANA";
|
||||||
|
g_scriptEvents[20] = "UNIT_RAGE";
|
||||||
|
g_scriptEvents[21] = "UNIT_FOCUS";
|
||||||
|
g_scriptEvents[22] = "UNIT_ENERGY";
|
||||||
|
g_scriptEvents[23] = "UNIT_HAPPINESS";
|
||||||
|
g_scriptEvents[25] = "UNIT_RUNIC_POWER";
|
||||||
|
g_scriptEvents[26] = "UNIT_MAXHEALTH";
|
||||||
|
g_scriptEvents[27] = "UNIT_MAXMANA";
|
||||||
|
g_scriptEvents[28] = "UNIT_MAXRAGE";
|
||||||
|
g_scriptEvents[29] = "UNIT_MAXFOCUS";
|
||||||
|
g_scriptEvents[30] = "UNIT_MAXENERGY";
|
||||||
|
g_scriptEvents[31] = "UNIT_MAXHAPPINESS";
|
||||||
|
g_scriptEvents[33] = "UNIT_MAXRUNIC_POWER";
|
||||||
|
g_scriptEvents[48] = "UNIT_LEVEL";
|
||||||
|
g_scriptEvents[49] = "UNIT_FACTION";
|
||||||
|
g_scriptEvents[53] = "UNIT_FLAGS";
|
||||||
|
g_scriptEvents[54] = "UNIT_FLAGS";
|
||||||
|
g_scriptEvents[56] = "UNIT_ATTACK_SPEED";
|
||||||
|
g_scriptEvents[57] = "UNIT_ATTACK_SPEED";
|
||||||
|
g_scriptEvents[58] = "UNIT_RANGEDDAMAGE";
|
||||||
|
g_scriptEvents[64] = "UNIT_DAMAGE";
|
||||||
|
g_scriptEvents[65] = "UNIT_DAMAGE";
|
||||||
|
g_scriptEvents[66] = "UNIT_DAMAGE";
|
||||||
|
g_scriptEvents[67] = "UNIT_DAMAGE";
|
||||||
|
g_scriptEvents[71] = "UNIT_PET_EXPERIENCE";
|
||||||
|
g_scriptEvents[72] = "UNIT_PET_EXPERIENCE";
|
||||||
|
g_scriptEvents[73] = "UNIT_DYNAMIC_FLAGS";
|
||||||
|
g_scriptEvents[78] = "UNIT_STATS";
|
||||||
|
g_scriptEvents[79] = "UNIT_STATS";
|
||||||
|
g_scriptEvents[80] = "UNIT_STATS";
|
||||||
|
g_scriptEvents[81] = "UNIT_STATS";
|
||||||
|
g_scriptEvents[82] = "UNIT_STATS";
|
||||||
|
g_scriptEvents[93] = "UNIT_RESISTANCES";
|
||||||
|
g_scriptEvents[94] = "UNIT_RESISTANCES";
|
||||||
|
g_scriptEvents[95] = "UNIT_RESISTANCES";
|
||||||
|
g_scriptEvents[96] = "UNIT_RESISTANCES";
|
||||||
|
g_scriptEvents[97] = "UNIT_RESISTANCES";
|
||||||
|
g_scriptEvents[98] = "UNIT_RESISTANCES";
|
||||||
|
g_scriptEvents[99] = "UNIT_RESISTANCES";
|
||||||
|
g_scriptEvents[100] = "UNIT_RESISTANCES";
|
||||||
|
g_scriptEvents[101] = "UNIT_RESISTANCES";
|
||||||
|
g_scriptEvents[102] = "UNIT_RESISTANCES";
|
||||||
|
g_scriptEvents[103] = "UNIT_RESISTANCES";
|
||||||
|
g_scriptEvents[104] = "UNIT_RESISTANCES";
|
||||||
|
g_scriptEvents[105] = "UNIT_RESISTANCES";
|
||||||
|
g_scriptEvents[106] = "UNIT_RESISTANCES";
|
||||||
|
g_scriptEvents[107] = "UNIT_RESISTANCES";
|
||||||
|
g_scriptEvents[108] = "UNIT_RESISTANCES";
|
||||||
|
g_scriptEvents[109] = "UNIT_RESISTANCES";
|
||||||
|
g_scriptEvents[110] = "UNIT_RESISTANCES";
|
||||||
|
g_scriptEvents[111] = "UNIT_RESISTANCES";
|
||||||
|
g_scriptEvents[112] = "UNIT_RESISTANCES";
|
||||||
|
g_scriptEvents[113] = "UNIT_RESISTANCES";
|
||||||
|
g_scriptEvents[117] = "UNIT_ATTACK_POWER";
|
||||||
|
g_scriptEvents[118] = "UNIT_ATTACK_POWER";
|
||||||
|
g_scriptEvents[119] = "UNIT_ATTACK_POWER";
|
||||||
|
g_scriptEvents[120] = "UNIT_RANGED_ATTACK_POWER";
|
||||||
|
g_scriptEvents[121] = "UNIT_RANGED_ATTACK_POWER";
|
||||||
|
g_scriptEvents[122] = "UNIT_RANGED_ATTACK_POWER";
|
||||||
|
g_scriptEvents[123] = "UNIT_RANGEDDAMAGE";
|
||||||
|
g_scriptEvents[124] = "UNIT_RANGEDDAMAGE";
|
||||||
|
g_scriptEvents[125] = "UNIT_MANA";
|
||||||
|
g_scriptEvents[132] = "UNIT_MANA";
|
||||||
|
g_scriptEvents[139] = "UNIT_STATS";
|
||||||
|
g_scriptEvents[142] = "UNIT_AURA";
|
||||||
|
g_scriptEvents[143] = "UNIT_COMBAT";
|
||||||
|
g_scriptEvents[144] = "UNIT_NAME_UPDATE";
|
||||||
|
g_scriptEvents[145] = "UNIT_PORTRAIT_UPDATE";
|
||||||
|
g_scriptEvents[146] = "UNIT_MODEL_CHANGED";
|
||||||
|
g_scriptEvents[147] = "UNIT_INVENTORY_CHANGED";
|
||||||
|
g_scriptEvents[148] = "UNIT_CLASSIFICATION_CHANGED";
|
||||||
|
g_scriptEvents[149] = "UNIT_COMBO_POINTS";
|
||||||
|
g_scriptEvents[150] = "ITEM_LOCK_CHANGED";
|
||||||
|
g_scriptEvents[151] = "PLAYER_XP_UPDATE";
|
||||||
|
g_scriptEvents[152] = "PLAYER_REGEN_DISABLED";
|
||||||
|
g_scriptEvents[153] = "PLAYER_REGEN_ENABLED";
|
||||||
|
g_scriptEvents[154] = "PLAYER_AURAS_CHANGED";
|
||||||
|
g_scriptEvents[155] = "PLAYER_ENTER_COMBAT";
|
||||||
|
g_scriptEvents[156] = "PLAYER_LEAVE_COMBAT";
|
||||||
|
g_scriptEvents[157] = "PLAYER_TARGET_CHANGED";
|
||||||
|
g_scriptEvents[158] = "PLAYER_FOCUS_CHANGED";
|
||||||
|
g_scriptEvents[159] = "PLAYER_CONTROL_LOST";
|
||||||
|
g_scriptEvents[160] = "PLAYER_CONTROL_GAINED";
|
||||||
|
g_scriptEvents[161] = "PLAYER_FARSIGHT_FOCUS_CHANGED";
|
||||||
|
g_scriptEvents[162] = "PLAYER_LEVEL_UP";
|
||||||
|
g_scriptEvents[163] = "PLAYER_MONEY";
|
||||||
|
g_scriptEvents[164] = "PLAYER_DAMAGE_DONE_MODS";
|
||||||
|
g_scriptEvents[165] = "PLAYER_TOTEM_UPDATE";
|
||||||
|
g_scriptEvents[166] = "ZONE_CHANGED";
|
||||||
|
g_scriptEvents[167] = "ZONE_CHANGED_INDOORS";
|
||||||
|
g_scriptEvents[168] = "ZONE_CHANGED_NEW_AREA";
|
||||||
|
g_scriptEvents[169] = "MINIMAP_UPDATE_ZOOM";
|
||||||
|
g_scriptEvents[170] = "MINIMAP_UPDATE_TRACKING";
|
||||||
|
g_scriptEvents[171] = "SCREENSHOT_SUCCEEDED";
|
||||||
|
g_scriptEvents[172] = "SCREENSHOT_FAILED";
|
||||||
|
g_scriptEvents[173] = "ACTIONBAR_SHOWGRID";
|
||||||
|
g_scriptEvents[174] = "ACTIONBAR_HIDEGRID";
|
||||||
|
g_scriptEvents[175] = "ACTIONBAR_PAGE_CHANGED";
|
||||||
|
g_scriptEvents[176] = "ACTIONBAR_SLOT_CHANGED";
|
||||||
|
g_scriptEvents[177] = "ACTIONBAR_UPDATE_STATE";
|
||||||
|
g_scriptEvents[178] = "ACTIONBAR_UPDATE_USABLE";
|
||||||
|
g_scriptEvents[179] = "ACTIONBAR_UPDATE_COOLDOWN";
|
||||||
|
g_scriptEvents[180] = "UPDATE_BONUS_ACTIONBAR";
|
||||||
|
g_scriptEvents[181] = "PARTY_MEMBERS_CHANGED";
|
||||||
|
g_scriptEvents[182] = "PARTY_LEADER_CHANGED";
|
||||||
|
g_scriptEvents[183] = "PARTY_MEMBER_ENABLE";
|
||||||
|
g_scriptEvents[184] = "PARTY_MEMBER_DISABLE";
|
||||||
|
g_scriptEvents[185] = "PARTY_LOOT_METHOD_CHANGED";
|
||||||
|
g_scriptEvents[186] = "SYSMSG";
|
||||||
|
g_scriptEvents[187] = "UI_ERROR_MESSAGE";
|
||||||
|
g_scriptEvents[188] = "UI_INFO_MESSAGE";
|
||||||
|
g_scriptEvents[189] = "UPDATE_CHAT_COLOR";
|
||||||
|
g_scriptEvents[190] = "CHAT_MSG_ADDON";
|
||||||
|
g_scriptEvents[191] = "CHAT_MSG_SYSTEM";
|
||||||
|
g_scriptEvents[192] = "CHAT_MSG_SAY";
|
||||||
|
g_scriptEvents[193] = "CHAT_MSG_PARTY";
|
||||||
|
g_scriptEvents[194] = "CHAT_MSG_RAID";
|
||||||
|
g_scriptEvents[195] = "CHAT_MSG_GUILD";
|
||||||
|
g_scriptEvents[196] = "CHAT_MSG_OFFICER";
|
||||||
|
g_scriptEvents[197] = "CHAT_MSG_YELL";
|
||||||
|
g_scriptEvents[198] = "CHAT_MSG_WHISPER";
|
||||||
|
g_scriptEvents[199] = "CHAT_MSG_WHISPER_INFORM";
|
||||||
|
g_scriptEvents[200] = "CHAT_MSG_EMOTE";
|
||||||
|
g_scriptEvents[201] = "CHAT_MSG_TEXT_EMOTE";
|
||||||
|
g_scriptEvents[202] = "CHAT_MSG_MONSTER_SAY";
|
||||||
|
g_scriptEvents[203] = "CHAT_MSG_MONSTER_PARTY";
|
||||||
|
g_scriptEvents[204] = "CHAT_MSG_MONSTER_YELL";
|
||||||
|
g_scriptEvents[205] = "CHAT_MSG_MONSTER_WHISPER";
|
||||||
|
g_scriptEvents[206] = "CHAT_MSG_MONSTER_EMOTE";
|
||||||
|
g_scriptEvents[207] = "CHAT_MSG_CHANNEL";
|
||||||
|
g_scriptEvents[208] = "CHAT_MSG_CHANNEL_JOIN";
|
||||||
|
g_scriptEvents[209] = "CHAT_MSG_CHANNEL_LEAVE";
|
||||||
|
g_scriptEvents[210] = "CHAT_MSG_CHANNEL_LIST";
|
||||||
|
g_scriptEvents[211] = "CHAT_MSG_CHANNEL_NOTICE";
|
||||||
|
g_scriptEvents[212] = "CHAT_MSG_CHANNEL_NOTICE_USER";
|
||||||
|
g_scriptEvents[213] = "CHAT_MSG_AFK";
|
||||||
|
g_scriptEvents[214] = "CHAT_MSG_DND";
|
||||||
|
g_scriptEvents[215] = "CHAT_MSG_IGNORED";
|
||||||
|
g_scriptEvents[216] = "CHAT_MSG_SKILL";
|
||||||
|
g_scriptEvents[217] = "CHAT_MSG_LOOT";
|
||||||
|
g_scriptEvents[218] = "CHAT_MSG_MONEY";
|
||||||
|
g_scriptEvents[219] = "CHAT_MSG_OPENING";
|
||||||
|
g_scriptEvents[220] = "CHAT_MSG_TRADESKILLS";
|
||||||
|
g_scriptEvents[221] = "CHAT_MSG_PET_INFO";
|
||||||
|
g_scriptEvents[222] = "CHAT_MSG_COMBAT_MISC_INFO";
|
||||||
|
g_scriptEvents[223] = "CHAT_MSG_COMBAT_XP_GAIN";
|
||||||
|
g_scriptEvents[224] = "CHAT_MSG_COMBAT_HONOR_GAIN";
|
||||||
|
g_scriptEvents[225] = "CHAT_MSG_COMBAT_FACTION_CHANGE";
|
||||||
|
g_scriptEvents[226] = "CHAT_MSG_BG_SYSTEM_NEUTRAL";
|
||||||
|
g_scriptEvents[227] = "CHAT_MSG_BG_SYSTEM_ALLIANCE";
|
||||||
|
g_scriptEvents[228] = "CHAT_MSG_BG_SYSTEM_HORDE";
|
||||||
|
g_scriptEvents[229] = "CHAT_MSG_RAID_LEADER";
|
||||||
|
g_scriptEvents[230] = "CHAT_MSG_RAID_WARNING";
|
||||||
|
g_scriptEvents[231] = "CHAT_MSG_RAID_BOSS_WHISPER";
|
||||||
|
g_scriptEvents[232] = "CHAT_MSG_RAID_BOSS_EMOTE";
|
||||||
|
g_scriptEvents[233] = "CHAT_MSG_FILTERED";
|
||||||
|
g_scriptEvents[234] = "CHAT_MSG_BATTLEGROUND";
|
||||||
|
g_scriptEvents[235] = "CHAT_MSG_BATTLEGROUND_LEADER";
|
||||||
|
g_scriptEvents[236] = "CHAT_MSG_RESTRICTED";
|
||||||
|
g_scriptEvents[237] = "";
|
||||||
|
g_scriptEvents[238] = "CHAT_MSG_ACHIEVEMENT";
|
||||||
|
g_scriptEvents[239] = "CHAT_MSG_GUILD_ACHIEVEMENT";
|
||||||
|
g_scriptEvents[240] = "LANGUAGE_LIST_CHANGED";
|
||||||
|
g_scriptEvents[241] = "TIME_PLAYED_MSG";
|
||||||
|
g_scriptEvents[242] = "SPELLS_CHANGED";
|
||||||
|
g_scriptEvents[243] = "CURRENT_SPELL_CAST_CHANGED";
|
||||||
|
g_scriptEvents[244] = "SPELL_UPDATE_COOLDOWN";
|
||||||
|
g_scriptEvents[245] = "SPELL_UPDATE_USABLE";
|
||||||
|
g_scriptEvents[246] = "CHARACTER_POINTS_CHANGED";
|
||||||
|
g_scriptEvents[247] = "SKILL_LINES_CHANGED";
|
||||||
|
g_scriptEvents[248] = "ITEM_PUSH";
|
||||||
|
g_scriptEvents[249] = "LOOT_OPENED";
|
||||||
|
g_scriptEvents[250] = "LOOT_SLOT_CLEARED";
|
||||||
|
g_scriptEvents[251] = "LOOT_SLOT_CHANGED";
|
||||||
|
g_scriptEvents[252] = "LOOT_CLOSED";
|
||||||
|
g_scriptEvents[253] = "PLAYER_LOGIN";
|
||||||
|
g_scriptEvents[254] = "PLAYER_LOGOUT";
|
||||||
|
g_scriptEvents[255] = "PLAYER_ENTERING_WORLD";
|
||||||
|
g_scriptEvents[256] = "PLAYER_LEAVING_WORLD";
|
||||||
|
g_scriptEvents[257] = "PLAYER_ALIVE";
|
||||||
|
g_scriptEvents[258] = "PLAYER_DEAD";
|
||||||
|
g_scriptEvents[259] = "PLAYER_CAMPING";
|
||||||
|
g_scriptEvents[260] = "PLAYER_QUITING";
|
||||||
|
g_scriptEvents[261] = "LOGOUT_CANCEL";
|
||||||
|
g_scriptEvents[262] = "RESURRECT_REQUEST";
|
||||||
|
g_scriptEvents[263] = "PARTY_INVITE_REQUEST";
|
||||||
|
g_scriptEvents[264] = "PARTY_INVITE_CANCEL";
|
||||||
|
g_scriptEvents[265] = "GUILD_INVITE_REQUEST";
|
||||||
|
g_scriptEvents[266] = "GUILD_INVITE_CANCEL";
|
||||||
|
g_scriptEvents[267] = "GUILD_MOTD";
|
||||||
|
g_scriptEvents[268] = "TRADE_REQUEST";
|
||||||
|
g_scriptEvents[269] = "TRADE_REQUEST_CANCEL";
|
||||||
|
g_scriptEvents[270] = "LOOT_BIND_CONFIRM";
|
||||||
|
g_scriptEvents[271] = "EQUIP_BIND_CONFIRM";
|
||||||
|
g_scriptEvents[272] = "AUTOEQUIP_BIND_CONFIRM";
|
||||||
|
g_scriptEvents[273] = "USE_BIND_CONFIRM";
|
||||||
|
g_scriptEvents[274] = "DELETE_ITEM_CONFIRM";
|
||||||
|
g_scriptEvents[275] = "CURSOR_UPDATE";
|
||||||
|
g_scriptEvents[276] = "ITEM_TEXT_BEGIN";
|
||||||
|
g_scriptEvents[277] = "ITEM_TEXT_TRANSLATION";
|
||||||
|
g_scriptEvents[278] = "ITEM_TEXT_READY";
|
||||||
|
g_scriptEvents[279] = "ITEM_TEXT_CLOSED";
|
||||||
|
g_scriptEvents[280] = "GOSSIP_SHOW";
|
||||||
|
g_scriptEvents[281] = "GOSSIP_CONFIRM";
|
||||||
|
g_scriptEvents[282] = "GOSSIP_CONFIRM_CANCEL";
|
||||||
|
g_scriptEvents[283] = "GOSSIP_ENTER_CODE";
|
||||||
|
g_scriptEvents[284] = "GOSSIP_CLOSED";
|
||||||
|
g_scriptEvents[285] = "QUEST_GREETING";
|
||||||
|
g_scriptEvents[286] = "QUEST_DETAIL";
|
||||||
|
g_scriptEvents[287] = "QUEST_PROGRESS";
|
||||||
|
g_scriptEvents[288] = "QUEST_COMPLETE";
|
||||||
|
g_scriptEvents[289] = "QUEST_FINISHED";
|
||||||
|
g_scriptEvents[290] = "QUEST_ITEM_UPDATE";
|
||||||
|
g_scriptEvents[291] = "TAXIMAP_OPENED";
|
||||||
|
g_scriptEvents[292] = "TAXIMAP_CLOSED";
|
||||||
|
g_scriptEvents[293] = "QUEST_LOG_UPDATE";
|
||||||
|
g_scriptEvents[294] = "TRAINER_SHOW";
|
||||||
|
g_scriptEvents[295] = "TRAINER_UPDATE";
|
||||||
|
g_scriptEvents[296] = "TRAINER_DESCRIPTION_UPDATE";
|
||||||
|
g_scriptEvents[297] = "TRAINER_CLOSED";
|
||||||
|
g_scriptEvents[298] = "CVAR_UPDATE";
|
||||||
|
g_scriptEvents[299] = "TRADE_SKILL_SHOW";
|
||||||
|
g_scriptEvents[300] = "TRADE_SKILL_UPDATE";
|
||||||
|
g_scriptEvents[301] = "TRADE_SKILL_CLOSE";
|
||||||
|
g_scriptEvents[302] = "MERCHANT_SHOW";
|
||||||
|
g_scriptEvents[303] = "MERCHANT_UPDATE";
|
||||||
|
g_scriptEvents[304] = "MERCHANT_CLOSED";
|
||||||
|
g_scriptEvents[305] = "TRADE_SHOW";
|
||||||
|
g_scriptEvents[306] = "TRADE_CLOSED";
|
||||||
|
g_scriptEvents[307] = "TRADE_UPDATE";
|
||||||
|
g_scriptEvents[308] = "TRADE_ACCEPT_UPDATE";
|
||||||
|
g_scriptEvents[309] = "TRADE_TARGET_ITEM_CHANGED";
|
||||||
|
g_scriptEvents[310] = "TRADE_PLAYER_ITEM_CHANGED";
|
||||||
|
g_scriptEvents[311] = "TRADE_MONEY_CHANGED";
|
||||||
|
g_scriptEvents[312] = "PLAYER_TRADE_MONEY";
|
||||||
|
g_scriptEvents[313] = "BAG_OPEN";
|
||||||
|
g_scriptEvents[314] = "BAG_UPDATE";
|
||||||
|
g_scriptEvents[315] = "BAG_CLOSED";
|
||||||
|
g_scriptEvents[316] = "BAG_UPDATE_COOLDOWN";
|
||||||
|
g_scriptEvents[317] = "LOCALPLAYER_PET_RENAMED";
|
||||||
|
g_scriptEvents[318] = "UNIT_ATTACK";
|
||||||
|
g_scriptEvents[319] = "UNIT_DEFENSE";
|
||||||
|
g_scriptEvents[320] = "PET_ATTACK_START";
|
||||||
|
g_scriptEvents[321] = "PET_ATTACK_STOP";
|
||||||
|
g_scriptEvents[322] = "UPDATE_MOUSEOVER_UNIT";
|
||||||
|
g_scriptEvents[323] = "UNIT_SPELLCAST_SENT";
|
||||||
|
g_scriptEvents[324] = "UNIT_SPELLCAST_START";
|
||||||
|
g_scriptEvents[325] = "UNIT_SPELLCAST_STOP";
|
||||||
|
g_scriptEvents[326] = "UNIT_SPELLCAST_FAILED";
|
||||||
|
g_scriptEvents[327] = "UNIT_SPELLCAST_FAILED_QUIET";
|
||||||
|
g_scriptEvents[328] = "UNIT_SPELLCAST_INTERRUPTED";
|
||||||
|
g_scriptEvents[329] = "UNIT_SPELLCAST_DELAYED";
|
||||||
|
g_scriptEvents[330] = "UNIT_SPELLCAST_SUCCEEDED";
|
||||||
|
g_scriptEvents[331] = "UNIT_SPELLCAST_CHANNEL_START";
|
||||||
|
g_scriptEvents[332] = "UNIT_SPELLCAST_CHANNEL_UPDATE";
|
||||||
|
g_scriptEvents[333] = "UNIT_SPELLCAST_CHANNEL_STOP";
|
||||||
|
g_scriptEvents[334] = "UNIT_SPELLCAST_INTERRUPTIBLE";
|
||||||
|
g_scriptEvents[335] = "UNIT_SPELLCAST_NOT_INTERRUPTIBLE";
|
||||||
|
g_scriptEvents[336] = "PLAYER_GUILD_UPDATE";
|
||||||
|
g_scriptEvents[337] = "QUEST_ACCEPT_CONFIRM";
|
||||||
|
g_scriptEvents[338] = "PLAYERBANKSLOTS_CHANGED";
|
||||||
|
g_scriptEvents[339] = "BANKFRAME_OPENED";
|
||||||
|
g_scriptEvents[340] = "BANKFRAME_CLOSED";
|
||||||
|
g_scriptEvents[341] = "PLAYERBANKBAGSLOTS_CHANGED";
|
||||||
|
g_scriptEvents[342] = "FRIENDLIST_UPDATE";
|
||||||
|
g_scriptEvents[343] = "IGNORELIST_UPDATE";
|
||||||
|
g_scriptEvents[344] = "MUTELIST_UPDATE";
|
||||||
|
g_scriptEvents[345] = "PET_BAR_UPDATE";
|
||||||
|
g_scriptEvents[346] = "PET_BAR_UPDATE_COOLDOWN";
|
||||||
|
g_scriptEvents[347] = "PET_BAR_SHOWGRID";
|
||||||
|
g_scriptEvents[348] = "PET_BAR_HIDEGRID";
|
||||||
|
g_scriptEvents[349] = "PET_BAR_HIDE";
|
||||||
|
g_scriptEvents[350] = "PET_BAR_UPDATE_USABLE";
|
||||||
|
g_scriptEvents[351] = "MINIMAP_PING";
|
||||||
|
g_scriptEvents[352] = "MIRROR_TIMER_START";
|
||||||
|
g_scriptEvents[353] = "MIRROR_TIMER_PAUSE";
|
||||||
|
g_scriptEvents[354] = "MIRROR_TIMER_STOP";
|
||||||
|
g_scriptEvents[355] = "WORLD_MAP_UPDATE";
|
||||||
|
g_scriptEvents[356] = "WORLD_MAP_NAME_UPDATE";
|
||||||
|
g_scriptEvents[357] = "AUTOFOLLOW_BEGIN";
|
||||||
|
g_scriptEvents[358] = "AUTOFOLLOW_END";
|
||||||
|
g_scriptEvents[360] = "CINEMATIC_START";
|
||||||
|
g_scriptEvents[361] = "CINEMATIC_STOP";
|
||||||
|
g_scriptEvents[362] = "UPDATE_FACTION";
|
||||||
|
g_scriptEvents[363] = "CLOSE_WORLD_MAP";
|
||||||
|
g_scriptEvents[364] = "OPEN_TABARD_FRAME";
|
||||||
|
g_scriptEvents[365] = "CLOSE_TABARD_FRAME";
|
||||||
|
g_scriptEvents[366] = "TABARD_CANSAVE_CHANGED";
|
||||||
|
g_scriptEvents[367] = "GUILD_REGISTRAR_SHOW";
|
||||||
|
g_scriptEvents[368] = "GUILD_REGISTRAR_CLOSED";
|
||||||
|
g_scriptEvents[369] = "DUEL_REQUESTED";
|
||||||
|
g_scriptEvents[370] = "DUEL_OUTOFBOUNDS";
|
||||||
|
g_scriptEvents[371] = "DUEL_INBOUNDS";
|
||||||
|
g_scriptEvents[372] = "DUEL_FINISHED";
|
||||||
|
g_scriptEvents[373] = "TUTORIAL_TRIGGER";
|
||||||
|
g_scriptEvents[374] = "PET_DISMISS_START";
|
||||||
|
g_scriptEvents[375] = "UPDATE_BINDINGS";
|
||||||
|
g_scriptEvents[376] = "UPDATE_SHAPESHIFT_FORMS";
|
||||||
|
g_scriptEvents[377] = "UPDATE_SHAPESHIFT_FORM";
|
||||||
|
g_scriptEvents[378] = "UPDATE_SHAPESHIFT_USABLE";
|
||||||
|
g_scriptEvents[379] = "UPDATE_SHAPESHIFT_COOLDOWN";
|
||||||
|
g_scriptEvents[380] = "WHO_LIST_UPDATE";
|
||||||
|
g_scriptEvents[381] = "PETITION_SHOW";
|
||||||
|
g_scriptEvents[382] = "PETITION_CLOSED";
|
||||||
|
g_scriptEvents[383] = "EXECUTE_CHAT_LINE";
|
||||||
|
g_scriptEvents[384] = "UPDATE_MACROS";
|
||||||
|
g_scriptEvents[385] = "UPDATE_TICKET";
|
||||||
|
g_scriptEvents[386] = "UPDATE_CHAT_WINDOWS";
|
||||||
|
g_scriptEvents[387] = "CONFIRM_XP_LOSS";
|
||||||
|
g_scriptEvents[388] = "CORPSE_IN_RANGE";
|
||||||
|
g_scriptEvents[389] = "CORPSE_IN_INSTANCE";
|
||||||
|
g_scriptEvents[390] = "CORPSE_OUT_OF_RANGE";
|
||||||
|
g_scriptEvents[391] = "UPDATE_GM_STATUS";
|
||||||
|
g_scriptEvents[392] = "PLAYER_UNGHOST";
|
||||||
|
g_scriptEvents[393] = "BIND_ENCHANT";
|
||||||
|
g_scriptEvents[394] = "REPLACE_ENCHANT";
|
||||||
|
g_scriptEvents[395] = "TRADE_REPLACE_ENCHANT";
|
||||||
|
g_scriptEvents[396] = "TRADE_POTENTIAL_BIND_ENCHANT";
|
||||||
|
g_scriptEvents[397] = "PLAYER_UPDATE_RESTING";
|
||||||
|
g_scriptEvents[398] = "UPDATE_EXHAUSTION";
|
||||||
|
g_scriptEvents[399] = "PLAYER_FLAGS_CHANGED";
|
||||||
|
g_scriptEvents[400] = "GUILD_ROSTER_UPDATE";
|
||||||
|
g_scriptEvents[401] = "GM_PLAYER_INFO";
|
||||||
|
g_scriptEvents[402] = "MAIL_SHOW";
|
||||||
|
g_scriptEvents[403] = "MAIL_CLOSED";
|
||||||
|
g_scriptEvents[404] = "SEND_MAIL_MONEY_CHANGED";
|
||||||
|
g_scriptEvents[405] = "SEND_MAIL_COD_CHANGED";
|
||||||
|
g_scriptEvents[406] = "MAIL_SEND_INFO_UPDATE";
|
||||||
|
g_scriptEvents[407] = "MAIL_SEND_SUCCESS";
|
||||||
|
g_scriptEvents[408] = "MAIL_INBOX_UPDATE";
|
||||||
|
g_scriptEvents[409] = "MAIL_LOCK_SEND_ITEMS";
|
||||||
|
g_scriptEvents[410] = "MAIL_UNLOCK_SEND_ITEMS";
|
||||||
|
g_scriptEvents[411] = "BATTLEFIELDS_SHOW";
|
||||||
|
g_scriptEvents[412] = "BATTLEFIELDS_CLOSED";
|
||||||
|
g_scriptEvents[413] = "UPDATE_BATTLEFIELD_STATUS";
|
||||||
|
g_scriptEvents[414] = "UPDATE_BATTLEFIELD_SCORE";
|
||||||
|
g_scriptEvents[415] = "AUCTION_HOUSE_SHOW";
|
||||||
|
g_scriptEvents[416] = "AUCTION_HOUSE_CLOSED";
|
||||||
|
g_scriptEvents[417] = "NEW_AUCTION_UPDATE";
|
||||||
|
g_scriptEvents[418] = "AUCTION_ITEM_LIST_UPDATE";
|
||||||
|
g_scriptEvents[419] = "AUCTION_OWNED_LIST_UPDATE";
|
||||||
|
g_scriptEvents[420] = "AUCTION_BIDDER_LIST_UPDATE";
|
||||||
|
g_scriptEvents[421] = "PET_UI_UPDATE";
|
||||||
|
g_scriptEvents[422] = "PET_UI_CLOSE";
|
||||||
|
g_scriptEvents[423] = "ADDON_LOADED";
|
||||||
|
g_scriptEvents[424] = "VARIABLES_LOADED";
|
||||||
|
g_scriptEvents[425] = "MACRO_ACTION_FORBIDDEN";
|
||||||
|
g_scriptEvents[426] = "ADDON_ACTION_FORBIDDEN";
|
||||||
|
g_scriptEvents[427] = "MACRO_ACTION_BLOCKED";
|
||||||
|
g_scriptEvents[428] = "ADDON_ACTION_BLOCKED";
|
||||||
|
g_scriptEvents[429] = "START_AUTOREPEAT_SPELL";
|
||||||
|
g_scriptEvents[430] = "STOP_AUTOREPEAT_SPELL";
|
||||||
|
g_scriptEvents[431] = "PET_STABLE_SHOW";
|
||||||
|
g_scriptEvents[432] = "PET_STABLE_UPDATE";
|
||||||
|
g_scriptEvents[433] = "PET_STABLE_UPDATE_PAPERDOLL";
|
||||||
|
g_scriptEvents[434] = "PET_STABLE_CLOSED";
|
||||||
|
g_scriptEvents[435] = "RAID_ROSTER_UPDATE";
|
||||||
|
g_scriptEvents[436] = "UPDATE_PENDING_MAIL";
|
||||||
|
g_scriptEvents[437] = "UPDATE_INVENTORY_ALERTS";
|
||||||
|
g_scriptEvents[438] = "UPDATE_INVENTORY_DURABILITY";
|
||||||
|
g_scriptEvents[439] = "UPDATE_TRADESKILL_RECAST";
|
||||||
|
g_scriptEvents[440] = "OPEN_MASTER_LOOT_LIST";
|
||||||
|
g_scriptEvents[441] = "UPDATE_MASTER_LOOT_LIST";
|
||||||
|
g_scriptEvents[442] = "START_LOOT_ROLL";
|
||||||
|
g_scriptEvents[443] = "CANCEL_LOOT_ROLL";
|
||||||
|
g_scriptEvents[444] = "CONFIRM_LOOT_ROLL";
|
||||||
|
g_scriptEvents[445] = "CONFIRM_DISENCHANT_ROLL";
|
||||||
|
g_scriptEvents[446] = "INSTANCE_BOOT_START";
|
||||||
|
g_scriptEvents[447] = "INSTANCE_BOOT_STOP";
|
||||||
|
g_scriptEvents[448] = "LEARNED_SPELL_IN_TAB";
|
||||||
|
g_scriptEvents[449] = "DISPLAY_SIZE_CHANGED";
|
||||||
|
g_scriptEvents[450] = "CONFIRM_TALENT_WIPE";
|
||||||
|
g_scriptEvents[451] = "CONFIRM_BINDER";
|
||||||
|
g_scriptEvents[452] = "MAIL_FAILED";
|
||||||
|
g_scriptEvents[453] = "CLOSE_INBOX_ITEM";
|
||||||
|
g_scriptEvents[454] = "CONFIRM_SUMMON";
|
||||||
|
g_scriptEvents[455] = "CANCEL_SUMMON";
|
||||||
|
g_scriptEvents[456] = "BILLING_NAG_DIALOG";
|
||||||
|
g_scriptEvents[457] = "IGR_BILLING_NAG_DIALOG";
|
||||||
|
g_scriptEvents[458] = "PLAYER_SKINNED";
|
||||||
|
g_scriptEvents[459] = "TABARD_SAVE_PENDING";
|
||||||
|
g_scriptEvents[460] = "UNIT_QUEST_LOG_CHANGED";
|
||||||
|
g_scriptEvents[461] = "PLAYER_PVP_KILLS_CHANGED";
|
||||||
|
g_scriptEvents[462] = "PLAYER_PVP_RANK_CHANGED";
|
||||||
|
g_scriptEvents[463] = "INSPECT_HONOR_UPDATE";
|
||||||
|
g_scriptEvents[464] = "UPDATE_WORLD_STATES";
|
||||||
|
g_scriptEvents[465] = "AREA_SPIRIT_HEALER_IN_RANGE";
|
||||||
|
g_scriptEvents[466] = "AREA_SPIRIT_HEALER_OUT_OF_RANGE";
|
||||||
|
g_scriptEvents[467] = "PLAYTIME_CHANGED";
|
||||||
|
g_scriptEvents[468] = "UPDATE_LFG_TYPES";
|
||||||
|
g_scriptEvents[469] = "UPDATE_LFG_LIST";
|
||||||
|
g_scriptEvents[470] = "UPDATE_LFG_LIST_INCREMENTAL";
|
||||||
|
g_scriptEvents[471] = "START_MINIGAME";
|
||||||
|
g_scriptEvents[472] = "MINIGAME_UPDATE";
|
||||||
|
g_scriptEvents[473] = "READY_CHECK";
|
||||||
|
g_scriptEvents[474] = "READY_CHECK_CONFIRM";
|
||||||
|
g_scriptEvents[475] = "READY_CHECK_FINISHED";
|
||||||
|
g_scriptEvents[476] = "RAID_TARGET_UPDATE";
|
||||||
|
g_scriptEvents[477] = "GMSURVEY_DISPLAY";
|
||||||
|
g_scriptEvents[478] = "UPDATE_INSTANCE_INFO";
|
||||||
|
g_scriptEvents[479] = "SOCKET_INFO_UPDATE";
|
||||||
|
g_scriptEvents[480] = "SOCKET_INFO_CLOSE";
|
||||||
|
g_scriptEvents[481] = "PETITION_VENDOR_SHOW";
|
||||||
|
g_scriptEvents[482] = "PETITION_VENDOR_CLOSED";
|
||||||
|
g_scriptEvents[483] = "PETITION_VENDOR_UPDATE";
|
||||||
|
g_scriptEvents[484] = "COMBAT_TEXT_UPDATE";
|
||||||
|
g_scriptEvents[485] = "QUEST_WATCH_UPDATE";
|
||||||
|
g_scriptEvents[486] = "KNOWLEDGE_BASE_SETUP_LOAD_SUCCESS";
|
||||||
|
g_scriptEvents[487] = "KNOWLEDGE_BASE_SETUP_LOAD_FAILURE";
|
||||||
|
g_scriptEvents[488] = "KNOWLEDGE_BASE_QUERY_LOAD_SUCCESS";
|
||||||
|
g_scriptEvents[489] = "KNOWLEDGE_BASE_QUERY_LOAD_FAILURE";
|
||||||
|
g_scriptEvents[490] = "KNOWLEDGE_BASE_ARTICLE_LOAD_SUCCESS";
|
||||||
|
g_scriptEvents[491] = "KNOWLEDGE_BASE_ARTICLE_LOAD_FAILURE";
|
||||||
|
g_scriptEvents[492] = "KNOWLEDGE_BASE_SYSTEM_MOTD_UPDATED";
|
||||||
|
g_scriptEvents[493] = "KNOWLEDGE_BASE_SERVER_MESSAGE";
|
||||||
|
g_scriptEvents[494] = "ARENA_TEAM_UPDATE";
|
||||||
|
g_scriptEvents[495] = "ARENA_TEAM_ROSTER_UPDATE";
|
||||||
|
g_scriptEvents[496] = "ARENA_TEAM_INVITE_REQUEST";
|
||||||
|
g_scriptEvents[497] = "HONOR_CURRENCY_UPDATE";
|
||||||
|
g_scriptEvents[498] = "KNOWN_TITLES_UPDATE";
|
||||||
|
g_scriptEvents[499] = "NEW_TITLE_EARNED";
|
||||||
|
g_scriptEvents[500] = "OLD_TITLE_LOST";
|
||||||
|
g_scriptEvents[501] = "LFG_UPDATE";
|
||||||
|
g_scriptEvents[502] = "LFG_PROPOSAL_UPDATE";
|
||||||
|
g_scriptEvents[503] = "LFG_PROPOSAL_SHOW";
|
||||||
|
g_scriptEvents[504] = "LFG_PROPOSAL_FAILED";
|
||||||
|
g_scriptEvents[505] = "LFG_PROPOSAL_SUCCEEDED";
|
||||||
|
g_scriptEvents[506] = "LFG_ROLE_UPDATE";
|
||||||
|
g_scriptEvents[507] = "LFG_ROLE_CHECK_UPDATE";
|
||||||
|
g_scriptEvents[508] = "LFG_ROLE_CHECK_SHOW";
|
||||||
|
g_scriptEvents[509] = "LFG_ROLE_CHECK_HIDE";
|
||||||
|
g_scriptEvents[510] = "LFG_ROLE_CHECK_ROLE_CHOSEN";
|
||||||
|
g_scriptEvents[511] = "LFG_QUEUE_STATUS_UPDATE";
|
||||||
|
g_scriptEvents[512] = "LFG_BOOT_PROPOSAL_UPDATE";
|
||||||
|
g_scriptEvents[513] = "LFG_LOCK_INFO_RECEIVED";
|
||||||
|
g_scriptEvents[514] = "LFG_UPDATE_RANDOM_INFO";
|
||||||
|
g_scriptEvents[515] = "LFG_OFFER_CONTINUE";
|
||||||
|
g_scriptEvents[516] = "LFG_OPEN_FROM_GOSSIP";
|
||||||
|
g_scriptEvents[517] = "LFG_COMPLETION_REWARD";
|
||||||
|
g_scriptEvents[518] = "PARTY_LFG_RESTRICTED";
|
||||||
|
g_scriptEvents[519] = "PLAYER_ROLES_ASSIGNED";
|
||||||
|
g_scriptEvents[520] = "COMBAT_RATING_UPDATE";
|
||||||
|
g_scriptEvents[521] = "MODIFIER_STATE_CHANGED";
|
||||||
|
g_scriptEvents[522] = "UPDATE_STEALTH";
|
||||||
|
g_scriptEvents[523] = "ENABLE_TAXI_BENCHMARK";
|
||||||
|
g_scriptEvents[524] = "DISABLE_TAXI_BENCHMARK";
|
||||||
|
g_scriptEvents[525] = "VOICE_START";
|
||||||
|
g_scriptEvents[526] = "VOICE_STOP";
|
||||||
|
g_scriptEvents[527] = "VOICE_STATUS_UPDATE";
|
||||||
|
g_scriptEvents[528] = "VOICE_CHANNEL_STATUS_UPDATE";
|
||||||
|
g_scriptEvents[529] = "UPDATE_FLOATING_CHAT_WINDOWS";
|
||||||
|
g_scriptEvents[530] = "RAID_INSTANCE_WELCOME";
|
||||||
|
g_scriptEvents[531] = "MOVIE_RECORDING_PROGRESS";
|
||||||
|
g_scriptEvents[532] = "MOVIE_COMPRESSING_PROGRESS";
|
||||||
|
g_scriptEvents[533] = "MOVIE_UNCOMPRESSED_MOVIE";
|
||||||
|
g_scriptEvents[534] = "VOICE_PUSH_TO_TALK_START";
|
||||||
|
g_scriptEvents[535] = "VOICE_PUSH_TO_TALK_STOP";
|
||||||
|
g_scriptEvents[536] = "GUILDBANKFRAME_OPENED";
|
||||||
|
g_scriptEvents[537] = "GUILDBANKFRAME_CLOSED";
|
||||||
|
g_scriptEvents[538] = "GUILDBANKBAGSLOTS_CHANGED";
|
||||||
|
g_scriptEvents[539] = "GUILDBANK_ITEM_LOCK_CHANGED";
|
||||||
|
g_scriptEvents[540] = "GUILDBANK_UPDATE_TABS";
|
||||||
|
g_scriptEvents[541] = "GUILDBANK_UPDATE_MONEY";
|
||||||
|
g_scriptEvents[542] = "GUILDBANKLOG_UPDATE";
|
||||||
|
g_scriptEvents[543] = "GUILDBANK_UPDATE_WITHDRAWMONEY";
|
||||||
|
g_scriptEvents[544] = "GUILDBANK_UPDATE_TEXT";
|
||||||
|
g_scriptEvents[545] = "GUILDBANK_TEXT_CHANGED";
|
||||||
|
g_scriptEvents[546] = "CHANNEL_UI_UPDATE";
|
||||||
|
g_scriptEvents[547] = "CHANNEL_COUNT_UPDATE";
|
||||||
|
g_scriptEvents[548] = "CHANNEL_ROSTER_UPDATE";
|
||||||
|
g_scriptEvents[549] = "CHANNEL_VOICE_UPDATE";
|
||||||
|
g_scriptEvents[550] = "CHANNEL_INVITE_REQUEST";
|
||||||
|
g_scriptEvents[551] = "CHANNEL_PASSWORD_REQUEST";
|
||||||
|
g_scriptEvents[552] = "CHANNEL_FLAGS_UPDATED";
|
||||||
|
g_scriptEvents[553] = "VOICE_SESSIONS_UPDATE";
|
||||||
|
g_scriptEvents[554] = "VOICE_CHAT_ENABLED_UPDATE";
|
||||||
|
g_scriptEvents[555] = "VOICE_LEFT_SESSION";
|
||||||
|
g_scriptEvents[556] = "INSPECT_TALENT_READY";
|
||||||
|
g_scriptEvents[557] = "VOICE_SELF_MUTE";
|
||||||
|
g_scriptEvents[558] = "VOICE_PLATE_START";
|
||||||
|
g_scriptEvents[559] = "VOICE_PLATE_STOP";
|
||||||
|
g_scriptEvents[560] = "ARENA_SEASON_WORLD_STATE";
|
||||||
|
g_scriptEvents[561] = "GUILD_EVENT_LOG_UPDATE";
|
||||||
|
g_scriptEvents[562] = "GUILDTABARD_UPDATE";
|
||||||
|
g_scriptEvents[563] = "SOUND_DEVICE_UPDATE";
|
||||||
|
g_scriptEvents[564] = "COMMENTATOR_MAP_UPDATE";
|
||||||
|
g_scriptEvents[565] = "COMMENTATOR_ENTER_WORLD";
|
||||||
|
g_scriptEvents[566] = "COMBAT_LOG_EVENT";
|
||||||
|
g_scriptEvents[567] = "COMBAT_LOG_EVENT_UNFILTERED";
|
||||||
|
g_scriptEvents[568] = "COMMENTATOR_PLAYER_UPDATE";
|
||||||
|
g_scriptEvents[569] = "PLAYER_ENTERING_BATTLEGROUND";
|
||||||
|
g_scriptEvents[570] = "BARBER_SHOP_OPEN";
|
||||||
|
g_scriptEvents[571] = "BARBER_SHOP_CLOSE";
|
||||||
|
g_scriptEvents[572] = "BARBER_SHOP_SUCCESS";
|
||||||
|
g_scriptEvents[573] = "BARBER_SHOP_APPEARANCE_APPLIED";
|
||||||
|
g_scriptEvents[574] = "CALENDAR_UPDATE_INVITE_LIST";
|
||||||
|
g_scriptEvents[575] = "CALENDAR_UPDATE_EVENT_LIST";
|
||||||
|
g_scriptEvents[576] = "CALENDAR_NEW_EVENT";
|
||||||
|
g_scriptEvents[577] = "CALENDAR_OPEN_EVENT";
|
||||||
|
g_scriptEvents[578] = "CALENDAR_CLOSE_EVENT";
|
||||||
|
g_scriptEvents[579] = "CALENDAR_UPDATE_EVENT";
|
||||||
|
g_scriptEvents[580] = "CALENDAR_UPDATE_PENDING_INVITES";
|
||||||
|
g_scriptEvents[581] = "CALENDAR_EVENT_ALARM";
|
||||||
|
g_scriptEvents[582] = "CALENDAR_UPDATE_ERROR";
|
||||||
|
g_scriptEvents[583] = "CALENDAR_ACTION_PENDING";
|
||||||
|
g_scriptEvents[584] = "VEHICLE_ANGLE_SHOW";
|
||||||
|
g_scriptEvents[585] = "VEHICLE_ANGLE_UPDATE";
|
||||||
|
g_scriptEvents[586] = "VEHICLE_POWER_SHOW";
|
||||||
|
g_scriptEvents[587] = "UNIT_ENTERING_VEHICLE";
|
||||||
|
g_scriptEvents[588] = "UNIT_ENTERED_VEHICLE";
|
||||||
|
g_scriptEvents[589] = "UNIT_EXITING_VEHICLE";
|
||||||
|
g_scriptEvents[590] = "UNIT_EXITED_VEHICLE";
|
||||||
|
g_scriptEvents[591] = "VEHICLE_PASSENGERS_CHANGED";
|
||||||
|
g_scriptEvents[592] = "PLAYER_GAINS_VEHICLE_DATA";
|
||||||
|
g_scriptEvents[593] = "PLAYER_LOSES_VEHICLE_DATA";
|
||||||
|
g_scriptEvents[594] = "PET_FORCE_NAME_DECLENSION";
|
||||||
|
g_scriptEvents[595] = "LEVEL_GRANT_PROPOSED";
|
||||||
|
g_scriptEvents[596] = "SYNCHRONIZE_SETTINGS";
|
||||||
|
g_scriptEvents[597] = "PLAY_MOVIE";
|
||||||
|
g_scriptEvents[598] = "RUNE_POWER_UPDATE";
|
||||||
|
g_scriptEvents[599] = "RUNE_TYPE_UPDATE";
|
||||||
|
g_scriptEvents[600] = "ACHIEVEMENT_EARNED";
|
||||||
|
g_scriptEvents[601] = "CRITERIA_UPDATE";
|
||||||
|
g_scriptEvents[602] = "RECEIVED_ACHIEVEMENT_LIST";
|
||||||
|
g_scriptEvents[603] = "PET_RENAMEABLE";
|
||||||
|
g_scriptEvents[604] = "KNOWN_CURRENCY_TYPES_UPDATE";
|
||||||
|
g_scriptEvents[605] = "CURRENCY_DISPLAY_UPDATE";
|
||||||
|
g_scriptEvents[606] = "COMPANION_LEARNED";
|
||||||
|
g_scriptEvents[607] = "COMPANION_UNLEARNED";
|
||||||
|
g_scriptEvents[608] = "COMPANION_UPDATE";
|
||||||
|
g_scriptEvents[609] = "UNIT_THREAT_LIST_UPDATE";
|
||||||
|
g_scriptEvents[610] = "UNIT_THREAT_SITUATION_UPDATE";
|
||||||
|
g_scriptEvents[611] = "GLYPH_ADDED";
|
||||||
|
g_scriptEvents[612] = "GLYPH_REMOVED";
|
||||||
|
g_scriptEvents[613] = "GLYPH_UPDATED";
|
||||||
|
g_scriptEvents[614] = "GLYPH_ENABLED";
|
||||||
|
g_scriptEvents[615] = "GLYPH_DISABLED";
|
||||||
|
g_scriptEvents[616] = "USE_GLYPH";
|
||||||
|
g_scriptEvents[617] = "TRACKED_ACHIEVEMENT_UPDATE";
|
||||||
|
g_scriptEvents[618] = "ARENA_OPPONENT_UPDATE";
|
||||||
|
g_scriptEvents[619] = "INSPECT_ACHIEVEMENT_READY";
|
||||||
|
g_scriptEvents[620] = "RAISED_AS_GHOUL";
|
||||||
|
g_scriptEvents[621] = "PARTY_CONVERTED_TO_RAID";
|
||||||
|
g_scriptEvents[622] = "PVPQUEUE_ANYWHERE_SHOW";
|
||||||
|
g_scriptEvents[623] = "PVPQUEUE_ANYWHERE_UPDATE_AVAILABLE";
|
||||||
|
g_scriptEvents[624] = "QUEST_ACCEPTED";
|
||||||
|
g_scriptEvents[625] = "PLAYER_TALENT_UPDATE";
|
||||||
|
g_scriptEvents[626] = "ACTIVE_TALENT_GROUP_CHANGED";
|
||||||
|
g_scriptEvents[627] = "PET_TALENT_UPDATE";
|
||||||
|
g_scriptEvents[628] = "PREVIEW_TALENT_POINTS_CHANGED";
|
||||||
|
g_scriptEvents[629] = "PREVIEW_PET_TALENT_POINTS_CHANGED";
|
||||||
|
g_scriptEvents[630] = "WEAR_EQUIPMENT_SET";
|
||||||
|
g_scriptEvents[631] = "EQUIPMENT_SETS_CHANGED";
|
||||||
|
g_scriptEvents[632] = "INSTANCE_LOCK_START";
|
||||||
|
g_scriptEvents[633] = "INSTANCE_LOCK_STOP";
|
||||||
|
g_scriptEvents[634] = "PLAYER_EQUIPMENT_CHANGED";
|
||||||
|
g_scriptEvents[635] = "ITEM_LOCKED";
|
||||||
|
g_scriptEvents[636] = "ITEM_UNLOCKED";
|
||||||
|
g_scriptEvents[637] = "TRADE_SKILL_FILTER_UPDATE";
|
||||||
|
g_scriptEvents[638] = "EQUIPMENT_SWAP_PENDING";
|
||||||
|
g_scriptEvents[639] = "EQUIPMENT_SWAP_FINISHED";
|
||||||
|
g_scriptEvents[640] = "NPC_PVPQUEUE_ANYWHERE";
|
||||||
|
g_scriptEvents[641] = "UPDATE_MULTI_CAST_ACTIONBAR";
|
||||||
|
g_scriptEvents[642] = "ENABLE_XP_GAIN";
|
||||||
|
g_scriptEvents[643] = "DISABLE_XP_GAIN";
|
||||||
|
g_scriptEvents[644] = "BATTLEFIELD_MGR_ENTRY_INVITE";
|
||||||
|
g_scriptEvents[645] = "BATTLEFIELD_MGR_ENTERED";
|
||||||
|
g_scriptEvents[646] = "BATTLEFIELD_MGR_QUEUE_REQUEST_RESPONSE";
|
||||||
|
g_scriptEvents[647] = "BATTLEFIELD_MGR_EJECT_PENDING";
|
||||||
|
g_scriptEvents[648] = "BATTLEFIELD_MGR_EJECTED";
|
||||||
|
g_scriptEvents[649] = "BATTLEFIELD_MGR_QUEUE_INVITE";
|
||||||
|
g_scriptEvents[650] = "BATTLEFIELD_MGR_STATE_CHANGE";
|
||||||
|
g_scriptEvents[651] = "WORLD_STATE_UI_TIMER_UPDATE";
|
||||||
|
g_scriptEvents[652] = "END_REFUND";
|
||||||
|
g_scriptEvents[653] = "END_BOUND_TRADEABLE";
|
||||||
|
g_scriptEvents[654] = "UPDATE_CHAT_COLOR_NAME_BY_CLASS";
|
||||||
|
g_scriptEvents[655] = "GMRESPONSE_RECEIVED";
|
||||||
|
g_scriptEvents[656] = "VEHICLE_UPDATE";
|
||||||
|
g_scriptEvents[657] = "WOW_MOUSE_NOT_FOUND";
|
||||||
|
g_scriptEvents[659] = "MAIL_SUCCESS";
|
||||||
|
g_scriptEvents[660] = "TALENTS_INVOLUNTARILY_RESET";
|
||||||
|
g_scriptEvents[661] = "INSTANCE_ENCOUNTER_ENGAGE_UNIT";
|
||||||
|
g_scriptEvents[662] = "QUEST_QUERY_COMPLETE";
|
||||||
|
g_scriptEvents[663] = "QUEST_POI_UPDATE";
|
||||||
|
g_scriptEvents[664] = "PLAYER_DIFFICULTY_CHANGED";
|
||||||
|
g_scriptEvents[665] = "CHAT_MSG_PARTY_LEADER";
|
||||||
|
g_scriptEvents[666] = "VOTE_KICK_REASON_NEEDED";
|
||||||
|
g_scriptEvents[667] = "ENABLE_LOW_LEVEL_RAID";
|
||||||
|
g_scriptEvents[668] = "DISABLE_LOW_LEVEL_RAID";
|
||||||
|
g_scriptEvents[669] = "CHAT_MSG_TARGETICONS";
|
||||||
|
g_scriptEvents[670] = "AUCTION_HOUSE_DISABLED";
|
||||||
|
g_scriptEvents[671] = "AUCTION_MULTISELL_START";
|
||||||
|
g_scriptEvents[672] = "AUCTION_MULTISELL_UPDATE";
|
||||||
|
g_scriptEvents[673] = "AUCTION_MULTISELL_FAILURE";
|
||||||
|
g_scriptEvents[674] = "PET_SPELL_POWER_UPDATE";
|
||||||
|
g_scriptEvents[675] = "BN_CONNECTED";
|
||||||
|
g_scriptEvents[676] = "BN_DISCONNECTED";
|
||||||
|
g_scriptEvents[677] = "BN_SELF_ONLINE";
|
||||||
|
g_scriptEvents[678] = "BN_SELF_OFFLINE";
|
||||||
|
g_scriptEvents[679] = "BN_FRIEND_LIST_SIZE_CHANGED";
|
||||||
|
g_scriptEvents[680] = "BN_FRIEND_INVITE_LIST_INITIALIZED";
|
||||||
|
g_scriptEvents[681] = "BN_FRIEND_INVITE_SEND_RESULT";
|
||||||
|
g_scriptEvents[682] = "BN_FRIEND_INVITE_ADDED";
|
||||||
|
g_scriptEvents[683] = "BN_FRIEND_INVITE_REMOVED";
|
||||||
|
g_scriptEvents[684] = "BN_FRIEND_INFO_CHANGED";
|
||||||
|
g_scriptEvents[685] = "BN_CUSTOM_MESSAGE_CHANGED";
|
||||||
|
g_scriptEvents[686] = "BN_CUSTOM_MESSAGE_LOADED";
|
||||||
|
g_scriptEvents[687] = "CHAT_MSG_BN_WHISPER";
|
||||||
|
g_scriptEvents[688] = "CHAT_MSG_BN_WHISPER_INFORM";
|
||||||
|
g_scriptEvents[689] = "BN_CHAT_WHISPER_UNDELIVERABLE";
|
||||||
|
g_scriptEvents[690] = "BN_CHAT_CHANNEL_JOINED";
|
||||||
|
g_scriptEvents[691] = "BN_CHAT_CHANNEL_LEFT";
|
||||||
|
g_scriptEvents[692] = "BN_CHAT_CHANNEL_CLOSED";
|
||||||
|
g_scriptEvents[693] = "CHAT_MSG_BN_CONVERSATION";
|
||||||
|
g_scriptEvents[694] = "CHAT_MSG_BN_CONVERSATION_NOTICE";
|
||||||
|
g_scriptEvents[695] = "CHAT_MSG_BN_CONVERSATION_LIST";
|
||||||
|
g_scriptEvents[696] = "BN_CHAT_CHANNEL_MESSAGE_UNDELIVERABLE";
|
||||||
|
g_scriptEvents[697] = "BN_CHAT_CHANNEL_MESSAGE_BLOCKED";
|
||||||
|
g_scriptEvents[698] = "BN_CHAT_CHANNEL_MEMBER_JOINED";
|
||||||
|
g_scriptEvents[699] = "BN_CHAT_CHANNEL_MEMBER_LEFT";
|
||||||
|
g_scriptEvents[700] = "BN_CHAT_CHANNEL_MEMBER_UPDATED";
|
||||||
|
g_scriptEvents[701] = "BN_CHAT_CHANNEL_CREATE_SUCCEEDED";
|
||||||
|
g_scriptEvents[702] = "BN_CHAT_CHANNEL_CREATE_FAILED";
|
||||||
|
g_scriptEvents[703] = "BN_CHAT_CHANNEL_INVITE_SUCCEEDED";
|
||||||
|
g_scriptEvents[704] = "BN_CHAT_CHANNEL_INVITE_FAILED";
|
||||||
|
g_scriptEvents[705] = "BN_BLOCK_LIST_UPDATED";
|
||||||
|
g_scriptEvents[706] = "BN_SYSTEM_MESSAGE";
|
||||||
|
g_scriptEvents[707] = "BN_REQUEST_FOF_SUCCEEDED";
|
||||||
|
g_scriptEvents[708] = "BN_REQUEST_FOF_FAILED";
|
||||||
|
g_scriptEvents[709] = "BN_NEW_PRESENCE";
|
||||||
|
g_scriptEvents[710] = "BN_TOON_NAME_UPDATED";
|
||||||
|
g_scriptEvents[711] = "BN_FRIEND_ACCOUNT_ONLINE";
|
||||||
|
g_scriptEvents[712] = "BN_FRIEND_ACCOUNT_OFFLINE";
|
||||||
|
g_scriptEvents[713] = "BN_FRIEND_TOON_ONLINE";
|
||||||
|
g_scriptEvents[714] = "BN_FRIEND_TOON_OFFLINE";
|
||||||
|
g_scriptEvents[715] = "BN_MATURE_LANGUAGE_FILTER";
|
||||||
|
g_scriptEvents[716] = "COMMENTATOR_SKIRMISH_QUEUE_REQUEST";
|
||||||
|
g_scriptEvents[717] = "COMMENTATOR_SKIRMISH_MODE_REQUEST";
|
||||||
|
g_scriptEvents[718] = "CHAT_MSG_BN_INLINE_TOAST_ALERT";
|
||||||
|
g_scriptEvents[719] = "CHAT_MSG_BN_INLINE_TOAST_BROADCAST";
|
||||||
|
g_scriptEvents[720] = "CHAT_MSG_BN_INLINE_TOAST_BROADCAST_INFORM";
|
||||||
|
g_scriptEvents[721] = "CHAT_MSG_BN_INLINE_TOAST_CONVERSATION";
|
||||||
|
}
|
||||||
|
|
||||||
|
void ScriptEventsRegisterEvents() {
|
||||||
|
FrameScript_CreateEvents(g_scriptEvents, NUM_SCRIPT_EVENTS);
|
||||||
|
}
|
||||||
|
|||||||
@ -1,6 +1,12 @@
|
|||||||
#ifndef UI_GAME_SCRIPT_EVENTS_HPP
|
#ifndef UI_GAME_SCRIPT_EVENTS_HPP
|
||||||
#define UI_GAME_SCRIPT_EVENTS_HPP
|
#define UI_GAME_SCRIPT_EVENTS_HPP
|
||||||
|
|
||||||
|
extern const char* g_scriptEvents[];
|
||||||
|
|
||||||
|
void ScriptEventsInitialize();
|
||||||
|
|
||||||
|
void ScriptEventsRegisterEvents();
|
||||||
|
|
||||||
void ScriptEventsRegisterFunctions();
|
void ScriptEventsRegisterFunctions();
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -12,6 +12,16 @@ bool ParseTrailingTokens(const char* token, WOWGUID& guid, CGPlayer_C* player) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CGUnit_C* Script_GetUnitFromName(const char* name) {
|
||||||
|
WOWGUID guid;
|
||||||
|
|
||||||
|
if (!Script_GetGUIDFromToken(name, guid, false)) {
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
return static_cast<CGUnit_C*>(ClntObjMgrObjectPtr(guid, TYPE_UNIT, __FILE__, __LINE__));
|
||||||
|
}
|
||||||
|
|
||||||
bool Script_GetGUIDFromString(const char*& token, WOWGUID& guid) {
|
bool Script_GetGUIDFromString(const char*& token, WOWGUID& guid) {
|
||||||
// TODO
|
// TODO
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@ -3,6 +3,10 @@
|
|||||||
|
|
||||||
#include "util/GUID.hpp"
|
#include "util/GUID.hpp"
|
||||||
|
|
||||||
|
class CGUnit_C;
|
||||||
|
|
||||||
|
CGUnit_C* Script_GetUnitFromName(const char* name);
|
||||||
|
|
||||||
bool Script_GetGUIDFromString(const char*& token, WOWGUID& guid);
|
bool Script_GetGUIDFromString(const char*& token, WOWGUID& guid);
|
||||||
|
|
||||||
bool Script_GetGUIDFromToken(const char* token, WOWGUID& guid, bool defaultToTarget);
|
bool Script_GetGUIDFromToken(const char* token, WOWGUID& guid, bool defaultToTarget);
|
||||||
|
|||||||
@ -372,7 +372,18 @@ int32_t CSimpleButton_GetTextWidth(lua_State* L) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int32_t CSimpleButton_GetTextHeight(lua_State* L) {
|
int32_t CSimpleButton_GetTextHeight(lua_State* L) {
|
||||||
WHOA_UNIMPLEMENTED(0);
|
auto type = CSimpleButton::GetObjectType();
|
||||||
|
auto button = static_cast<CSimpleButton*>(FrameScript_GetObjectThis(L, type));
|
||||||
|
|
||||||
|
auto text = button->m_text;
|
||||||
|
|
||||||
|
float height = text ? text->GetHeight() : 0.0f;
|
||||||
|
float ddcHeight = CoordinateGetAspectCompensation() * 1024.0f * height;
|
||||||
|
float ndcHeight = DDCToNDCWidth(ddcHeight);
|
||||||
|
|
||||||
|
lua_pushnumber(L, ndcHeight);
|
||||||
|
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t CSimpleButton_RegisterForClicks(lua_State* L) {
|
int32_t CSimpleButton_RegisterForClicks(lua_State* L) {
|
||||||
|
|||||||
@ -162,7 +162,17 @@ int32_t CSimpleFontString_SetFont(lua_State* L) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int32_t CSimpleFontString_GetText(lua_State* L) {
|
int32_t CSimpleFontString_GetText(lua_State* L) {
|
||||||
WHOA_UNIMPLEMENTED(0);
|
auto type = CSimpleFontString::GetObjectType();
|
||||||
|
auto string = static_cast<CSimpleFontString*>(FrameScript_GetObjectThis(L, type));
|
||||||
|
|
||||||
|
auto text = string->GetText();
|
||||||
|
if (!text || !*text) {
|
||||||
|
text = nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
lua_pushstring(L, text);
|
||||||
|
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t CSimpleFontString_GetFieldSize(lua_State* L) {
|
int32_t CSimpleFontString_GetFieldSize(lua_State* L) {
|
||||||
|
|||||||
@ -95,6 +95,10 @@ void CSimpleFrame::AddFrameRegion(CSimpleRegion* region, uint32_t drawlayer) {
|
|||||||
this->NotifyDrawLayerChanged(drawlayer);
|
this->NotifyDrawLayerChanged(drawlayer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int32_t CSimpleFrame::AttributeChangesAllowed() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
void CSimpleFrame::DisableDrawLayer(uint32_t drawlayer) {
|
void CSimpleFrame::DisableDrawLayer(uint32_t drawlayer) {
|
||||||
this->m_drawenabled[drawlayer] = 0;
|
this->m_drawenabled[drawlayer] = 0;
|
||||||
this->NotifyDrawLayerChanged(drawlayer);
|
this->NotifyDrawLayerChanged(drawlayer);
|
||||||
@ -376,6 +380,29 @@ void CSimpleFrame::RegisterForEvents(int32_t a2) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CSimpleFrame::RunOnAttributeChangedScript(const char* name, int32_t luaRef) {
|
||||||
|
if (!this->m_onAttributeChange.luaRef) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto L = FrameScript_GetContext();
|
||||||
|
|
||||||
|
// TODO taint management
|
||||||
|
|
||||||
|
// Attribute name
|
||||||
|
auto nameLower = static_cast<char*>(alloca(SStrLen(name) + 1));
|
||||||
|
SStrCopy(nameLower, name);
|
||||||
|
SStrLower(nameLower);
|
||||||
|
lua_pushstring(L, nameLower);
|
||||||
|
|
||||||
|
// Attribute ref
|
||||||
|
lua_rawgeti(L, LUA_REGISTRYINDEX, luaRef);
|
||||||
|
|
||||||
|
this->RunScript(this->m_onAttributeChange, 2, nullptr);
|
||||||
|
|
||||||
|
// TODO taint management
|
||||||
|
}
|
||||||
|
|
||||||
void CSimpleFrame::RunOnCharScript(const char* chr) {
|
void CSimpleFrame::RunOnCharScript(const char* chr) {
|
||||||
if (this->m_onChar.luaRef) {
|
if (this->m_onChar.luaRef) {
|
||||||
auto L = FrameScript_GetContext();
|
auto L = FrameScript_GetContext();
|
||||||
@ -522,6 +549,18 @@ void CSimpleFrame::PreLoadXML(XMLNode* node, CStatus* status) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool CSimpleFrame::GetAttribute(const char* name, int32_t& luaRef) {
|
||||||
|
auto attr = this->m_attributes.Ptr(name);
|
||||||
|
|
||||||
|
if (!attr || attr->luaRef == -1) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
luaRef = attr->luaRef;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
int32_t CSimpleFrame::GetBoundsRect(CRect& bounds) {
|
int32_t CSimpleFrame::GetBoundsRect(CRect& bounds) {
|
||||||
if (this->IsResizePending()) {
|
if (this->IsResizePending()) {
|
||||||
this->Resize(1);
|
this->Resize(1);
|
||||||
@ -737,7 +776,69 @@ int32_t CSimpleFrame::HideThis() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void CSimpleFrame::LoadXML_Attributes(const XMLNode* node, CStatus* status) {
|
void CSimpleFrame::LoadXML_Attributes(const XMLNode* node, CStatus* status) {
|
||||||
// TODO
|
auto L = FrameScript_GetContext();
|
||||||
|
|
||||||
|
auto child = node->GetChild();
|
||||||
|
|
||||||
|
while (child) {
|
||||||
|
// Unexpected child node
|
||||||
|
if (SStrCmpI(child->GetName(), "Attribute")) {
|
||||||
|
status->Add(STATUS_WARNING, "Frame %s: Unknown attributes element %s", this->GetDisplayName(), child->GetName());
|
||||||
|
child = child->GetSibling();
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto attrName = child->GetAttributeByName("name");
|
||||||
|
|
||||||
|
// No attribute name
|
||||||
|
if (!attrName) {
|
||||||
|
status->Add(STATUS_WARNING, "Frame %s: unnamed attribute element", this->GetDisplayName());
|
||||||
|
child = child->GetSibling();
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto attrType = child->GetAttributeByName("type");
|
||||||
|
|
||||||
|
if (!attrType) {
|
||||||
|
attrType = "string";
|
||||||
|
}
|
||||||
|
|
||||||
|
auto attrValue = child->GetAttributeByName("value");
|
||||||
|
|
||||||
|
// Missing attribute value for non-nil type
|
||||||
|
if (SStrCmpI(attrType, "nil") && !attrValue) {
|
||||||
|
status->Add(STATUS_WARNING, "Frame %s: attribute element named %s missing value", this->GetDisplayName(), attrName);
|
||||||
|
child = child->GetSibling();
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Push attribute value to stack
|
||||||
|
if (!SStrCmpI(attrType, "nil")) {
|
||||||
|
lua_pushnil(L);
|
||||||
|
} else if (!SStrCmpI(attrType, "boolean")) {
|
||||||
|
lua_pushboolean(L, StringToBOOL(attrValue));
|
||||||
|
} else if (!SStrCmpI(attrType, "number")) {
|
||||||
|
lua_pushnumber(L, SStrToFloat(attrValue));
|
||||||
|
} else {
|
||||||
|
lua_pushstring(L, attrValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
auto attr = this->m_attributes.Ptr(attrName);
|
||||||
|
|
||||||
|
if (attr) {
|
||||||
|
luaL_unref(L, LUA_REGISTRYINDEX, attr->luaRef);
|
||||||
|
} else {
|
||||||
|
attr = this->m_attributes.New(attrName, 0, 0x0);
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO taint management
|
||||||
|
|
||||||
|
attr->luaRef = luaL_ref(L, LUA_REGISTRYINDEX);
|
||||||
|
|
||||||
|
// TODO taint management
|
||||||
|
|
||||||
|
child = child->GetSibling();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSimpleFrame::LoadXML_Backdrop(const XMLNode* node, CStatus* status) {
|
void CSimpleFrame::LoadXML_Backdrop(const XMLNode* node, CStatus* status) {
|
||||||
@ -1317,6 +1418,18 @@ void CSimpleFrame::RemoveFrameRegion(CSimpleRegion* region, uint32_t drawlayer)
|
|||||||
this->NotifyDrawLayerChanged(drawlayer);
|
this->NotifyDrawLayerChanged(drawlayer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CSimpleFrame::SetAttribute(const char* name, int32_t luaRef) {
|
||||||
|
auto attr = this->m_attributes.Ptr(name);
|
||||||
|
|
||||||
|
if (!attr) {
|
||||||
|
attr = this->m_attributes.New(name, 0, 0x0);
|
||||||
|
}
|
||||||
|
|
||||||
|
attr->luaRef = luaRef;
|
||||||
|
|
||||||
|
this->RunOnAttributeChangedScript(name, luaRef);
|
||||||
|
}
|
||||||
|
|
||||||
void CSimpleFrame::SetBackdrop(CBackdropGenerator* backdrop) {
|
void CSimpleFrame::SetBackdrop(CBackdropGenerator* backdrop) {
|
||||||
if (this->m_backdrop) {
|
if (this->m_backdrop) {
|
||||||
delete this->m_backdrop;
|
delete this->m_backdrop;
|
||||||
|
|||||||
@ -6,6 +6,7 @@
|
|||||||
#include "ui/CScriptRegion.hpp"
|
#include "ui/CScriptRegion.hpp"
|
||||||
#include "ui/Types.hpp"
|
#include "ui/Types.hpp"
|
||||||
#include "ui/simple/CSimpleRegion.hpp"
|
#include "ui/simple/CSimpleRegion.hpp"
|
||||||
|
#include <storm/Hash.hpp>
|
||||||
#include <storm/List.hpp>
|
#include <storm/List.hpp>
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
|
|
||||||
@ -17,6 +18,10 @@ class CSimpleTitleRegion;
|
|||||||
class CSimpleTop;
|
class CSimpleTop;
|
||||||
struct lua_State;
|
struct lua_State;
|
||||||
|
|
||||||
|
struct FRAMEATTR : TSHashObject<FRAMEATTR, HASHKEY_STRI> {
|
||||||
|
int32_t luaRef;
|
||||||
|
};
|
||||||
|
|
||||||
class CSimpleFrame : public CScriptRegion {
|
class CSimpleFrame : public CScriptRegion {
|
||||||
public:
|
public:
|
||||||
// Static members
|
// Static members
|
||||||
@ -71,6 +76,7 @@ class CSimpleFrame : public CScriptRegion {
|
|||||||
ScriptIx m_onAttributeChange;
|
ScriptIx m_onAttributeChange;
|
||||||
ScriptIx m_onEnable;
|
ScriptIx m_onEnable;
|
||||||
ScriptIx m_onDisable;
|
ScriptIx m_onDisable;
|
||||||
|
TSHashTable<FRAMEATTR, HASHKEY_STRI> m_attributes;
|
||||||
int32_t m_drawenabled[NUM_SIMPLEFRAME_DRAWLAYERS];
|
int32_t m_drawenabled[NUM_SIMPLEFRAME_DRAWLAYERS];
|
||||||
CBackdropGenerator* m_backdrop = nullptr;
|
CBackdropGenerator* m_backdrop = nullptr;
|
||||||
STORM_EXPLICIT_LIST(CSimpleRegion, m_regionLink) m_regions;
|
STORM_EXPLICIT_LIST(CSimpleRegion, m_regionLink) m_regions;
|
||||||
@ -122,10 +128,12 @@ class CSimpleFrame : public CScriptRegion {
|
|||||||
// Member functions
|
// Member functions
|
||||||
CSimpleFrame(CSimpleFrame* parent);
|
CSimpleFrame(CSimpleFrame* parent);
|
||||||
void AddFrameRegion(CSimpleRegion* region, uint32_t drawlayer);
|
void AddFrameRegion(CSimpleRegion* region, uint32_t drawlayer);
|
||||||
|
int32_t AttributeChangesAllowed();
|
||||||
void DisableDrawLayer(uint32_t drawlayer);
|
void DisableDrawLayer(uint32_t drawlayer);
|
||||||
void DisableEvent(CSimpleEventType eventType);
|
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);
|
||||||
|
bool GetAttribute(const char* name, int32_t& luaRef);
|
||||||
int32_t GetHitRect(CRect& rect);
|
int32_t GetHitRect(CRect& rect);
|
||||||
void Hide();
|
void Hide();
|
||||||
void LoadXML_Attributes(const XMLNode* node, CStatus* status);
|
void LoadXML_Attributes(const XMLNode* node, CStatus* status);
|
||||||
@ -139,6 +147,7 @@ class CSimpleFrame : public CScriptRegion {
|
|||||||
void RegisterForEvents(int32_t a2);
|
void RegisterForEvents(int32_t a2);
|
||||||
void RegisterRegion(CSimpleRegion* region);
|
void RegisterRegion(CSimpleRegion* region);
|
||||||
void RemoveFrameRegion(CSimpleRegion* region, uint32_t drawlayer);
|
void RemoveFrameRegion(CSimpleRegion* region, uint32_t drawlayer);
|
||||||
|
void RunOnAttributeChangedScript(const char* name, int32_t luaRef);
|
||||||
void RunOnCharScript(const char* chr);
|
void RunOnCharScript(const char* chr);
|
||||||
void RunOnEnableScript();
|
void RunOnEnableScript();
|
||||||
void RunOnEnterScript(int32_t a2);
|
void RunOnEnterScript(int32_t a2);
|
||||||
@ -152,6 +161,7 @@ class CSimpleFrame : public CScriptRegion {
|
|||||||
void RunOnShowScript();
|
void RunOnShowScript();
|
||||||
void RunOnSizeChangedScript(float width, float height);
|
void RunOnSizeChangedScript(float width, float height);
|
||||||
void RunOnUpdateScript(float elapsedSec);
|
void RunOnUpdateScript(float elapsedSec);
|
||||||
|
void SetAttribute(const char* name, int32_t luaRef);
|
||||||
void SetBackdrop(CBackdropGenerator* backdrop);
|
void SetBackdrop(CBackdropGenerator* backdrop);
|
||||||
void SetBeingScrolled(int32_t a2, int32_t a3);
|
void SetBeingScrolled(int32_t a2, int32_t a3);
|
||||||
void SetFrameAlpha(uint8_t alpha);
|
void SetFrameAlpha(uint8_t alpha);
|
||||||
|
|||||||
@ -2,10 +2,13 @@
|
|||||||
#include "gx/Coordinate.hpp"
|
#include "gx/Coordinate.hpp"
|
||||||
#include "ui/CBackdropGenerator.hpp"
|
#include "ui/CBackdropGenerator.hpp"
|
||||||
#include "ui/FrameScript.hpp"
|
#include "ui/FrameScript.hpp"
|
||||||
|
#include "ui/FrameXML.hpp"
|
||||||
#include "ui/simple/CSimpleFrame.hpp"
|
#include "ui/simple/CSimpleFrame.hpp"
|
||||||
|
#include "ui/simple/CSimpleTexture.hpp"
|
||||||
#include "util/Lua.hpp"
|
#include "util/Lua.hpp"
|
||||||
#include "util/StringTo.hpp"
|
#include "util/StringTo.hpp"
|
||||||
#include "util/Unimplemented.hpp"
|
#include "util/Unimplemented.hpp"
|
||||||
|
#include <storm/Memory.hpp>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
#include <limits>
|
#include <limits>
|
||||||
@ -19,7 +22,66 @@ int32_t CSimpleFrame_CreateTitleRegion(lua_State* L) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int32_t CSimpleFrame_CreateTexture(lua_State* L) {
|
int32_t CSimpleFrame_CreateTexture(lua_State* L) {
|
||||||
WHOA_UNIMPLEMENTED(0);
|
auto type = CSimpleFrame::GetObjectType();
|
||||||
|
auto frame = static_cast<CSimpleFrame*>(FrameScript_GetObjectThis(L, type));
|
||||||
|
|
||||||
|
const char* name = nullptr;
|
||||||
|
if (lua_isstring(L, 2)) {
|
||||||
|
name = lua_tostring(L, 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t drawlayer = DRAWLAYER_ARTWORK;
|
||||||
|
if (lua_isstring(L, 3)) {
|
||||||
|
auto drawlayerStr = lua_tostring(L, 3);
|
||||||
|
StringToDrawLayer(drawlayerStr, drawlayer);
|
||||||
|
}
|
||||||
|
|
||||||
|
XMLNode* inheritNode = nullptr;
|
||||||
|
|
||||||
|
if (lua_type(L, 4) == LUA_TSTRING) {
|
||||||
|
auto inheritName = lua_tostring(L, 4);
|
||||||
|
const char* tainted;
|
||||||
|
bool locked;
|
||||||
|
|
||||||
|
inheritNode = FrameXML_AcquireHashNode(inheritName, tainted, locked);
|
||||||
|
|
||||||
|
if (!inheritNode) {
|
||||||
|
luaL_error(L, "%s:CreateTexture(): Couldn't find inherited node \"%s\"", frame->GetDisplayName(), inheritName);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (locked) {
|
||||||
|
luaL_error(L, "%s:CreateTexture(): Recursively inherited node \"%s\"", frame->GetDisplayName(), inheritName);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO CDataAllocator::GetData
|
||||||
|
auto texture = STORM_NEW(CSimpleTexture)(frame, drawlayer, true);
|
||||||
|
|
||||||
|
if (name && *name) {
|
||||||
|
texture->SetName(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (inheritNode) {
|
||||||
|
CStatus status;
|
||||||
|
|
||||||
|
texture->LoadXML(inheritNode, &status);
|
||||||
|
texture->PostLoadXML(inheritNode, &status);
|
||||||
|
|
||||||
|
auto inheritName = lua_tostring(L, 4);
|
||||||
|
FrameXML_ReleaseHashNode(inheritName);
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO anim related logic?
|
||||||
|
|
||||||
|
if (!texture->lua_registered) {
|
||||||
|
texture->RegisterScriptObject(nullptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
lua_rawgeti(L, LUA_REGISTRYINDEX, texture->lua_objectRef);
|
||||||
|
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t CSimpleFrame_CreateFontString(lua_State* L) {
|
int32_t CSimpleFrame_CreateFontString(lua_State* L) {
|
||||||
@ -126,7 +188,10 @@ int32_t CSimpleFrame_HasScript(lua_State* L) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int32_t CSimpleFrame_GetScript(lua_State* L) {
|
int32_t CSimpleFrame_GetScript(lua_State* L) {
|
||||||
WHOA_UNIMPLEMENTED(0);
|
auto type = CSimpleFrame::GetObjectType();
|
||||||
|
auto frame = static_cast<CSimpleFrame*>(FrameScript_GetObjectThis(L, type));
|
||||||
|
|
||||||
|
return frame->GetScript(L);
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t CSimpleFrame_SetScript(lua_State* L) {
|
int32_t CSimpleFrame_SetScript(lua_State* L) {
|
||||||
@ -180,11 +245,197 @@ int32_t CSimpleFrame_CanChangeAttributes(lua_State* L) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int32_t CSimpleFrame_GetAttribute(lua_State* L) {
|
int32_t CSimpleFrame_GetAttribute(lua_State* L) {
|
||||||
WHOA_UNIMPLEMENTED(0);
|
auto type = CSimpleFrame::GetObjectType();
|
||||||
|
auto frame = static_cast<CSimpleFrame*>(FrameScript_GetObjectThis(L, type));
|
||||||
|
|
||||||
|
// 3 argument form
|
||||||
|
|
||||||
|
if (lua_gettop(L) == 4 && lua_isstring(L, 3)) {
|
||||||
|
size_t prefixLen, nameLen, suffixLen;
|
||||||
|
auto prefix = lua_tolstring(L, 2, &prefixLen);
|
||||||
|
auto name = lua_tolstring(L, 3, &nameLen);
|
||||||
|
auto suffix = lua_tolstring(L, 4, &suffixLen);
|
||||||
|
|
||||||
|
char buffer[256];
|
||||||
|
char* write;
|
||||||
|
size_t remaining;
|
||||||
|
size_t copyLen;
|
||||||
|
|
||||||
|
int32_t luaRef;
|
||||||
|
|
||||||
|
// Attempt 1: prefix + name + suffix
|
||||||
|
|
||||||
|
write = buffer;
|
||||||
|
remaining = 255;
|
||||||
|
|
||||||
|
if (prefixLen > 0) {
|
||||||
|
copyLen = (prefixLen < remaining) ? prefixLen : remaining;
|
||||||
|
memcpy(write, prefix, copyLen);
|
||||||
|
write += copyLen;
|
||||||
|
remaining -= copyLen;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (nameLen > 0) {
|
||||||
|
copyLen = (nameLen < remaining) ? nameLen : remaining;
|
||||||
|
memcpy(write, name, copyLen);
|
||||||
|
write += copyLen;
|
||||||
|
remaining -= copyLen;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (suffixLen > 0) {
|
||||||
|
copyLen = (suffixLen < remaining) ? suffixLen : remaining;
|
||||||
|
memcpy(write, suffix, copyLen);
|
||||||
|
write += copyLen;
|
||||||
|
}
|
||||||
|
|
||||||
|
*write = '\0';
|
||||||
|
|
||||||
|
if (frame->GetAttribute(buffer, luaRef)) {
|
||||||
|
lua_rawgeti(L, LUA_REGISTRYINDEX, luaRef);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Attempt 2: "*" + name + suffix
|
||||||
|
|
||||||
|
write = buffer;
|
||||||
|
*write++ = '*';
|
||||||
|
remaining = 254;
|
||||||
|
|
||||||
|
if (nameLen > 0) {
|
||||||
|
copyLen = (nameLen < remaining) ? nameLen : remaining;
|
||||||
|
memcpy(write, name, copyLen);
|
||||||
|
write += copyLen;
|
||||||
|
remaining -= copyLen;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (suffixLen > 0) {
|
||||||
|
copyLen = (suffixLen < remaining) ? suffixLen : remaining;
|
||||||
|
memcpy(write, suffix, copyLen);
|
||||||
|
write += copyLen;
|
||||||
|
}
|
||||||
|
|
||||||
|
*write = '\0';
|
||||||
|
|
||||||
|
if (frame->GetAttribute(buffer, luaRef)) {
|
||||||
|
lua_rawgeti(L, LUA_REGISTRYINDEX, luaRef);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Attempt 3: prefix + name + "*"
|
||||||
|
|
||||||
|
write = buffer;
|
||||||
|
remaining = 254;
|
||||||
|
|
||||||
|
if (prefixLen > 0) {
|
||||||
|
copyLen = (prefixLen < remaining) ? prefixLen : remaining;
|
||||||
|
memcpy(write, prefix, copyLen);
|
||||||
|
write += copyLen;
|
||||||
|
remaining -= copyLen;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (nameLen > 0) {
|
||||||
|
copyLen = (nameLen < remaining) ? nameLen : remaining;
|
||||||
|
memcpy(write, name, copyLen);
|
||||||
|
write += copyLen;
|
||||||
|
}
|
||||||
|
|
||||||
|
*write++ = '*';
|
||||||
|
*write = '\0';
|
||||||
|
|
||||||
|
if (frame->GetAttribute(buffer, luaRef)) {
|
||||||
|
lua_rawgeti(L, LUA_REGISTRYINDEX, luaRef);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Attempt 4: "*" + name + "*"
|
||||||
|
|
||||||
|
write = buffer;
|
||||||
|
*write++ = '*';
|
||||||
|
remaining = 253;
|
||||||
|
|
||||||
|
if (nameLen > 0) {
|
||||||
|
copyLen = (nameLen < remaining) ? nameLen : remaining;
|
||||||
|
memcpy(write, name, copyLen);
|
||||||
|
write += copyLen;
|
||||||
|
}
|
||||||
|
|
||||||
|
*write++ = '*';
|
||||||
|
*write = '\0';
|
||||||
|
|
||||||
|
if (frame->GetAttribute(buffer, luaRef)) {
|
||||||
|
lua_rawgeti(L, LUA_REGISTRYINDEX, luaRef);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Attempt 5: name
|
||||||
|
|
||||||
|
if (frame->GetAttribute(name, luaRef)) {
|
||||||
|
lua_rawgeti(L, LUA_REGISTRYINDEX, luaRef);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Not found
|
||||||
|
|
||||||
|
lua_pushnil(L);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 1 argument form
|
||||||
|
|
||||||
|
if (lua_isstring(L, 2)) {
|
||||||
|
auto attrName = lua_tostring(L, 2);
|
||||||
|
int32_t luaRef;
|
||||||
|
|
||||||
|
if (frame->GetAttribute(attrName, luaRef)) {
|
||||||
|
lua_rawgeti(L, LUA_REGISTRYINDEX, luaRef);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Not found
|
||||||
|
|
||||||
|
lua_pushnil(L);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Invalid call
|
||||||
|
|
||||||
|
luaL_error(L, "Usage: %s:GetAttribute(\"name\")", frame->GetDisplayName());
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t CSimpleFrame_SetAttribute(lua_State* L) {
|
int32_t CSimpleFrame_SetAttribute(lua_State* L) {
|
||||||
WHOA_UNIMPLEMENTED(0);
|
auto type = CSimpleFrame::GetObjectType();
|
||||||
|
auto frame = static_cast<CSimpleFrame*>(FrameScript_GetObjectThis(L, type));
|
||||||
|
|
||||||
|
if (!frame->ProtectedFunctionsAllowed() && !frame->AttributeChangesAllowed()) {
|
||||||
|
// TODO disallowed logic
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
lua_settop(L, 3);
|
||||||
|
|
||||||
|
if (!lua_isstring(L, 2) || lua_type(L, 3) == LUA_TNONE) {
|
||||||
|
luaL_error(L, "Usage: %s:SetAttribute(\"name\", value)", frame->GetDisplayName());
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto attrName = lua_tostring(L, 2);
|
||||||
|
int32_t luaRef;
|
||||||
|
|
||||||
|
if (frame->GetAttribute(attrName, luaRef)) {
|
||||||
|
luaL_unref(L, LUA_REGISTRYINDEX, luaRef);
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO taint management
|
||||||
|
|
||||||
|
luaRef = luaL_ref(L, LUA_REGISTRYINDEX);
|
||||||
|
|
||||||
|
// TODO taint management
|
||||||
|
|
||||||
|
frame->SetAttribute(attrName, luaRef);
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t CSimpleFrame_GetEffectiveScale(lua_State* L) {
|
int32_t CSimpleFrame_GetEffectiveScale(lua_State* L) {
|
||||||
|
|||||||
@ -1,5 +1,11 @@
|
|||||||
#include "ui/simple/CSimpleStatusBar.hpp"
|
#include "ui/simple/CSimpleStatusBar.hpp"
|
||||||
|
#include "ui/LoadXML.hpp"
|
||||||
#include "ui/simple/CSimpleStatusBarScript.hpp"
|
#include "ui/simple/CSimpleStatusBarScript.hpp"
|
||||||
|
#include "ui/simple/CSimpleTexture.hpp"
|
||||||
|
#include "util/CStatus.hpp"
|
||||||
|
#include "util/Lua.hpp"
|
||||||
|
#include "util/StringTo.hpp"
|
||||||
|
#include <common/XML.hpp>
|
||||||
|
|
||||||
int32_t CSimpleStatusBar::s_metatable;
|
int32_t CSimpleStatusBar::s_metatable;
|
||||||
int32_t CSimpleStatusBar::s_objectType;
|
int32_t CSimpleStatusBar::s_objectType;
|
||||||
@ -22,10 +28,260 @@ void CSimpleStatusBar::RegisterScriptMethods(lua_State* L) {
|
|||||||
FrameScript_Object::FillScriptMethodTable(L, SimpleStatusBarMethods, NUM_SIMPLE_STATUS_BAR_SCRIPT_METHODS);
|
FrameScript_Object::FillScriptMethodTable(L, SimpleStatusBarMethods, NUM_SIMPLE_STATUS_BAR_SCRIPT_METHODS);
|
||||||
}
|
}
|
||||||
|
|
||||||
CSimpleStatusBar::CSimpleStatusBar(CSimpleFrame* parent) : CSimpleFrame(parent) {
|
float CSimpleStatusBar::GetAnimValue() const {
|
||||||
// TODO
|
auto range = this->m_maxValue - this->m_minValue;
|
||||||
|
|
||||||
|
if (range <= 0.0f) {
|
||||||
|
return 0.0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (this->m_value - this->m_minValue) / range;
|
||||||
|
}
|
||||||
|
|
||||||
|
FrameScript_Object::ScriptIx* CSimpleStatusBar::GetScriptByName(const char* name, ScriptData& data) {
|
||||||
|
auto script = this->CSimpleFrame::GetScriptByName(name, data);
|
||||||
|
|
||||||
|
if (script) {
|
||||||
|
return script;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!SStrCmpI(name, "OnValueChanged")) {
|
||||||
|
script = &this->m_onValueChanged;
|
||||||
|
data.wrapper = "return function(self,value) %s end";
|
||||||
|
} else if (!SStrCmpI(name, "OnMinMaxChanged")) {
|
||||||
|
script = &this->m_onMinMaxChanged;
|
||||||
|
data.wrapper = "return function(self,min,max) %s end";
|
||||||
|
}
|
||||||
|
|
||||||
|
return script;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t CSimpleStatusBar::GetScriptMetaTable() {
|
int32_t CSimpleStatusBar::GetScriptMetaTable() {
|
||||||
return CSimpleStatusBar::s_metatable;
|
return CSimpleStatusBar::s_metatable;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
float CSimpleStatusBar::GetMaxValue() const {
|
||||||
|
return this->m_maxValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
float CSimpleStatusBar::GetMinValue() const {
|
||||||
|
return this->m_minValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
float CSimpleStatusBar::GetValue() const {
|
||||||
|
return this->m_value;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CSimpleStatusBar::IsA(int32_t type) {
|
||||||
|
return type == CSimpleStatusBar::s_objectType
|
||||||
|
|| type == CSimpleFrame::s_objectType
|
||||||
|
|| type == CScriptRegion::s_objectType
|
||||||
|
|| type == CScriptObject::s_objectType;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSimpleStatusBar::LoadXML(const XMLNode* node, CStatus* status) {
|
||||||
|
this->CSimpleFrame::LoadXML(node, status);
|
||||||
|
|
||||||
|
int32_t drawlayer = DRAWLAYER_ARTWORK;
|
||||||
|
auto drawlayerAttr = node->GetAttributeByName("drawLayer");
|
||||||
|
if (drawlayerAttr && *drawlayerAttr) {
|
||||||
|
StringToDrawLayer(drawlayerAttr, drawlayer);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (auto child = node->GetChild(); child; child = child->GetSibling()) {
|
||||||
|
if (!SStrCmpI(child->GetName(), "BarTexture")) {
|
||||||
|
auto texture = LoadXML_Texture(child, this, status);
|
||||||
|
this->SetBarTexture(texture, drawlayer);
|
||||||
|
} else if (!SStrCmpI(child->GetName(), "BarColor")) {
|
||||||
|
CImVector color = {};
|
||||||
|
LoadXML_Color(child, color);
|
||||||
|
this->SetStatusBarColor(color);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
auto minValueAttr = node->GetAttributeByName("minValue");
|
||||||
|
if (minValueAttr && *minValueAttr) {
|
||||||
|
auto maxValueAttr = node->GetAttributeByName("maxValue");
|
||||||
|
if (maxValueAttr && *maxValueAttr) {
|
||||||
|
auto minValue = SStrToFloat(minValueAttr);
|
||||||
|
auto maxValue = SStrToFloat(maxValueAttr);
|
||||||
|
|
||||||
|
if (minValue < -1.0e12 || minValue > 1.0e12 || maxValue < -1.0e12 || maxValue > 1.0e12) {
|
||||||
|
status->Add(STATUS_ERROR, "Frame %s: Min or Max out of range", this->GetDisplayName());
|
||||||
|
} else if (maxValue - minValue > 1.0e12) {
|
||||||
|
status->Add(STATUS_ERROR, "Frame %s: Min and Max too far apart", this->GetDisplayName());
|
||||||
|
} else {
|
||||||
|
this->SetMinMaxValues(minValue, maxValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
auto defaultValueAttr = node->GetAttributeByName("defaultValue");
|
||||||
|
if (defaultValueAttr && *defaultValueAttr) {
|
||||||
|
auto defaultValue = SStrToFloat(defaultValueAttr);
|
||||||
|
this->SetValue(defaultValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
auto orientationAttr = node->GetAttributeByName("orientation");
|
||||||
|
if (orientationAttr && *orientationAttr) {
|
||||||
|
ORIENTATION orientation;
|
||||||
|
if (StringToOrientation(orientationAttr, orientation)) {
|
||||||
|
this->SetOrientation(orientation);
|
||||||
|
} else {
|
||||||
|
status->Add(STATUS_WARNING, "Frame %s: Unknown orientation %s in element %s", this->GetDisplayName(), orientationAttr, node->GetName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
auto rotatesTextureAttr = node->GetAttributeByName("rotatesTexture");
|
||||||
|
if (rotatesTextureAttr && *rotatesTextureAttr) {
|
||||||
|
auto rotatesTexture = StringToBOOL(rotatesTextureAttr);
|
||||||
|
this->SetRotatesTexture(rotatesTexture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSimpleStatusBar::OnLayerUpdate(float elapsedSec) {
|
||||||
|
this->CSimpleFrame::OnLayerUpdate(elapsedSec);
|
||||||
|
|
||||||
|
if (!this->m_changed || !this->m_rangeSet || !this->m_valueSet || !this->m_barTexture) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto animValue = this->GetAnimValue();
|
||||||
|
|
||||||
|
if (animValue <= 0.0f) {
|
||||||
|
this->m_barTexture->Hide();
|
||||||
|
this->m_changed = false;
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
float width, height;
|
||||||
|
this->GetSize(width, height, false);
|
||||||
|
|
||||||
|
auto fill = 1.0f - animValue;
|
||||||
|
|
||||||
|
this->m_barTexture->Show();
|
||||||
|
|
||||||
|
if (this->m_orientation == ORIENTATION_VERTICAL) {
|
||||||
|
this->m_barTexture->SetPoint(FRAMEPOINT_BOTTOMLEFT, this, FRAMEPOINT_BOTTOMLEFT, 0.0f, 0.0f, true);
|
||||||
|
this->m_barTexture->SetPoint(FRAMEPOINT_BOTTOMRIGHT, this, FRAMEPOINT_BOTTOMRIGHT, 0.0f, 0.0f, true);
|
||||||
|
|
||||||
|
this->m_barTexture->SetPoint(FRAMEPOINT_TOPLEFT, this, FRAMEPOINT_TOPLEFT, 0.0f, -(fill * height), true);
|
||||||
|
this->m_barTexture->SetPoint(FRAMEPOINT_TOPRIGHT, this, FRAMEPOINT_TOPRIGHT, 0.0f, -(fill * height), true);
|
||||||
|
} else {
|
||||||
|
this->m_barTexture->SetPoint(FRAMEPOINT_TOPLEFT, this, FRAMEPOINT_TOPLEFT, 0.0f, 0.0f, true);
|
||||||
|
this->m_barTexture->SetPoint(FRAMEPOINT_BOTTOMLEFT, this, FRAMEPOINT_BOTTOMLEFT, 0.0f, 0.0f, true);
|
||||||
|
|
||||||
|
this->m_barTexture->SetPoint(FRAMEPOINT_TOPRIGHT, this, FRAMEPOINT_TOPRIGHT, -(fill * width), 0.0f, true);
|
||||||
|
this->m_barTexture->SetPoint(FRAMEPOINT_BOTTOMRIGHT, this, FRAMEPOINT_BOTTOMRIGHT, -(fill * width), 0.0f, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
this->m_changed = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSimpleStatusBar::RunOnMinMaxChangedScript() {
|
||||||
|
if (!this->m_onMinMaxChanged.luaRef) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto L = FrameScript_GetContext();
|
||||||
|
|
||||||
|
lua_pushnumber(L, this->m_minValue);
|
||||||
|
lua_pushnumber(L, this->m_maxValue);
|
||||||
|
|
||||||
|
this->RunScript(this->m_onMinMaxChanged, 2, nullptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSimpleStatusBar::RunOnValueChangedScript() {
|
||||||
|
if (!this->m_onValueChanged.luaRef) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto L = FrameScript_GetContext();
|
||||||
|
|
||||||
|
lua_pushnumber(L, this->m_value);
|
||||||
|
|
||||||
|
this->RunScript(this->m_onValueChanged, 1, nullptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSimpleStatusBar::SetBarTexture(CSimpleTexture* texture, int32_t drawlayer) {
|
||||||
|
// No change
|
||||||
|
if (this->m_barTexture == texture) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this->m_barTexture) {
|
||||||
|
delete this->m_barTexture;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (texture) {
|
||||||
|
texture->SetFrame(this, drawlayer, true);
|
||||||
|
|
||||||
|
texture->SetPoint(FRAMEPOINT_BOTTOMLEFT, this, FRAMEPOINT_BOTTOMLEFT, 0.0f, 0.0f, true);
|
||||||
|
texture->SetPoint(FRAMEPOINT_BOTTOMRIGHT, this, FRAMEPOINT_BOTTOMRIGHT, 0.0f, 0.0f, true);
|
||||||
|
texture->SetPoint(FRAMEPOINT_TOPLEFT, this, FRAMEPOINT_TOPLEFT, 0.0f, 0.0f, true);
|
||||||
|
texture->SetPoint(FRAMEPOINT_TOPRIGHT, this, FRAMEPOINT_TOPRIGHT, 0.0f, 0.0f, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
this->m_barTexture = texture;
|
||||||
|
|
||||||
|
this->m_changed = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSimpleStatusBar::SetMinMaxValues(float min, float max) {
|
||||||
|
if (min > max) {
|
||||||
|
min = max;
|
||||||
|
}
|
||||||
|
|
||||||
|
// No change
|
||||||
|
if (this->m_rangeSet && this->m_minValue == min && this->m_maxValue == max) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this->m_minValue = min;
|
||||||
|
this->m_maxValue = max;
|
||||||
|
|
||||||
|
this->m_changed = true;
|
||||||
|
this->m_rangeSet = true;
|
||||||
|
|
||||||
|
this->RunOnMinMaxChangedScript();
|
||||||
|
|
||||||
|
if (this->m_valueSet) {
|
||||||
|
this->SetValue(this->m_value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSimpleStatusBar::SetOrientation(ORIENTATION orientation) {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSimpleStatusBar::SetRotatesTexture(int32_t enabled) {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSimpleStatusBar::SetStatusBarColor(const CImVector& color) {
|
||||||
|
if (this->m_barTexture) {
|
||||||
|
this->m_barTexture->SetVertexColor(color);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSimpleStatusBar::SetValue(float value) {
|
||||||
|
if (!this->m_rangeSet) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Clamp value
|
||||||
|
value = std::min(std::max(value, this->m_minValue), this->m_maxValue);
|
||||||
|
|
||||||
|
// No change
|
||||||
|
if (this->m_valueSet && this->m_value == value) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this->m_value = value;
|
||||||
|
|
||||||
|
this->m_changed = true;
|
||||||
|
this->m_valueSet = true;
|
||||||
|
|
||||||
|
this->RunOnValueChangedScript();
|
||||||
|
}
|
||||||
|
|||||||
@ -5,23 +5,55 @@
|
|||||||
|
|
||||||
class CSimpleStatusBar : public CSimpleFrame {
|
class CSimpleStatusBar : public CSimpleFrame {
|
||||||
public:
|
public:
|
||||||
// Static variables
|
// Public static variables
|
||||||
static int32_t s_metatable;
|
static int32_t s_metatable;
|
||||||
static int32_t s_objectType;
|
static int32_t s_objectType;
|
||||||
|
|
||||||
// Static functions
|
// Public static functions
|
||||||
static void CreateScriptMetaTable();
|
static void CreateScriptMetaTable();
|
||||||
static int32_t GetObjectType();
|
static int32_t GetObjectType();
|
||||||
static void RegisterScriptMethods(lua_State* L);
|
static void RegisterScriptMethods(lua_State* L);
|
||||||
|
|
||||||
// Member variables
|
// Public virtual member functions
|
||||||
// TODO
|
|
||||||
|
|
||||||
// Virtual member functions
|
|
||||||
virtual int32_t GetScriptMetaTable();
|
virtual int32_t GetScriptMetaTable();
|
||||||
|
virtual ScriptIx* GetScriptByName(const char* name, ScriptData& data);
|
||||||
|
virtual bool IsA(int32_t type);
|
||||||
|
// TODO
|
||||||
|
virtual void OnLayerUpdate(float elapsedSec);
|
||||||
|
// TODO
|
||||||
|
virtual void SetValue(float value);
|
||||||
|
virtual void LoadXML(const XMLNode* node, CStatus* status);
|
||||||
|
|
||||||
// Member functions
|
// Public member functions
|
||||||
CSimpleStatusBar(CSimpleFrame* parent);
|
CSimpleStatusBar(CSimpleFrame* parent)
|
||||||
|
: CSimpleFrame(parent)
|
||||||
|
, m_changed(false)
|
||||||
|
, m_rangeSet(false)
|
||||||
|
, m_valueSet(false) {};
|
||||||
|
float GetAnimValue() const;
|
||||||
|
float GetMaxValue() const;
|
||||||
|
float GetMinValue() const;
|
||||||
|
float GetValue() const;
|
||||||
|
void RunOnMinMaxChangedScript();
|
||||||
|
void RunOnValueChangedScript();
|
||||||
|
void SetBarTexture(CSimpleTexture* texture, int32_t drawlayer);
|
||||||
|
void SetMinMaxValues(float min, float max);
|
||||||
|
void SetOrientation(ORIENTATION orientation);
|
||||||
|
void SetRotatesTexture(int32_t enabled);
|
||||||
|
void SetStatusBarColor(const CImVector& color);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
// Protected member variables
|
||||||
|
uint32_t m_changed : 1;
|
||||||
|
uint32_t m_rangeSet : 1;
|
||||||
|
uint32_t m_valueSet : 1;
|
||||||
|
float m_minValue = 0.0f;
|
||||||
|
float m_maxValue = 0.0f;
|
||||||
|
float m_value = 0.0f;
|
||||||
|
CSimpleTexture* m_barTexture = nullptr;
|
||||||
|
ORIENTATION m_orientation = ORIENTATION_HORIZONTAL;
|
||||||
|
ScriptIx m_onValueChanged;
|
||||||
|
ScriptIx m_onMinMaxChanged;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -1,5 +1,7 @@
|
|||||||
#include "ui/simple/CSimpleStatusBarScript.hpp"
|
#include "ui/simple/CSimpleStatusBarScript.hpp"
|
||||||
|
#include "ui/simple/CSimpleStatusBar.hpp"
|
||||||
#include "ui/FrameScript.hpp"
|
#include "ui/FrameScript.hpp"
|
||||||
|
#include "util/Lua.hpp"
|
||||||
#include "util/Unimplemented.hpp"
|
#include "util/Unimplemented.hpp"
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
@ -13,19 +15,65 @@ int32_t CSimpleStatusBar_SetOrientation(lua_State* L) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int32_t CSimpleStatusBar_GetMinMaxValues(lua_State* L) {
|
int32_t CSimpleStatusBar_GetMinMaxValues(lua_State* L) {
|
||||||
WHOA_UNIMPLEMENTED(0);
|
auto type = CSimpleStatusBar::GetObjectType();
|
||||||
|
auto statusBar = static_cast<CSimpleStatusBar*>(FrameScript_GetObjectThis(L, type));
|
||||||
|
|
||||||
|
lua_pushnumber(L, statusBar->GetMinValue());
|
||||||
|
lua_pushnumber(L, statusBar->GetMaxValue());
|
||||||
|
|
||||||
|
return 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t CSimpleStatusBar_SetMinMaxValues(lua_State* L) {
|
int32_t CSimpleStatusBar_SetMinMaxValues(lua_State* L) {
|
||||||
WHOA_UNIMPLEMENTED(0);
|
auto type = CSimpleStatusBar::GetObjectType();
|
||||||
|
auto statusBar = static_cast<CSimpleStatusBar*>(FrameScript_GetObjectThis(L, type));
|
||||||
|
|
||||||
|
if (!lua_isnumber(L, 2) || !lua_isnumber(L, 3)) {
|
||||||
|
luaL_error(L, "Usage: %s:SetMinMaxValues(min, max)", statusBar->GetDisplayName());
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto min = lua_tonumber(L, 2);
|
||||||
|
auto max = lua_tonumber(L, 3);
|
||||||
|
|
||||||
|
if (min < -1.0e12 || min > 1.0e12 || max < -1.0e12 || max > 1.0e12) {
|
||||||
|
luaL_error(L, "Min or Max out of range");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (max - min > 1.0e12) {
|
||||||
|
luaL_error(L, "Min and Max too far apart");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
statusBar->SetMinMaxValues(static_cast<float>(min), static_cast<float>(max));
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t CSimpleStatusBar_GetValue(lua_State* L) {
|
int32_t CSimpleStatusBar_GetValue(lua_State* L) {
|
||||||
WHOA_UNIMPLEMENTED(0);
|
auto type = CSimpleStatusBar::GetObjectType();
|
||||||
|
auto statusBar = static_cast<CSimpleStatusBar*>(FrameScript_GetObjectThis(L, type));
|
||||||
|
|
||||||
|
lua_pushnumber(L, statusBar->GetValue());
|
||||||
|
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t CSimpleStatusBar_SetValue(lua_State* L) {
|
int32_t CSimpleStatusBar_SetValue(lua_State* L) {
|
||||||
WHOA_UNIMPLEMENTED(0);
|
auto type = CSimpleStatusBar::GetObjectType();
|
||||||
|
auto statusBar = static_cast<CSimpleStatusBar*>(FrameScript_GetObjectThis(L, type));
|
||||||
|
|
||||||
|
if (!lua_isnumber(L, 2)) {
|
||||||
|
luaL_error(L, "Usage: %s:SetValue(value)", statusBar->GetDisplayName());
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto value = static_cast<float>(lua_tonumber(L, 2));
|
||||||
|
|
||||||
|
statusBar->SetValue(value);
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t CSimpleStatusBar_GetStatusBarTexture(lua_State* L) {
|
int32_t CSimpleStatusBar_GetStatusBarTexture(lua_State* L) {
|
||||||
@ -41,7 +89,15 @@ int32_t CSimpleStatusBar_GetStatusBarColor(lua_State* L) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int32_t CSimpleStatusBar_SetStatusBarColor(lua_State* L) {
|
int32_t CSimpleStatusBar_SetStatusBarColor(lua_State* L) {
|
||||||
WHOA_UNIMPLEMENTED(0);
|
auto type = CSimpleStatusBar::GetObjectType();
|
||||||
|
auto statusBar = static_cast<CSimpleStatusBar*>(FrameScript_GetObjectThis(L, type));
|
||||||
|
|
||||||
|
CImVector color = {};
|
||||||
|
FrameScript_GetColor(L, 2, color);
|
||||||
|
|
||||||
|
statusBar->SetStatusBarColor(color);
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t CSimpleStatusBar_GetRotatesTexture(lua_State* L) {
|
int32_t CSimpleStatusBar_GetRotatesTexture(lua_State* L) {
|
||||||
|
|||||||
@ -19,7 +19,25 @@ int32_t CSimpleTexture_GetDrawLayer(lua_State* L) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int32_t CSimpleTexture_SetDrawLayer(lua_State* L) {
|
int32_t CSimpleTexture_SetDrawLayer(lua_State* L) {
|
||||||
WHOA_UNIMPLEMENTED(0);
|
auto type = CSimpleTexture::GetObjectType();
|
||||||
|
auto texture = static_cast<CSimpleTexture*>(FrameScript_GetObjectThis(L, type));
|
||||||
|
|
||||||
|
if (!lua_isstring(L, 2)) {
|
||||||
|
luaL_error(L, "Usage: %s:SetDrawLayer(\"layer\")", texture->GetDisplayName());
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto drawlayerStr = lua_tostring(L, 2);
|
||||||
|
int32_t drawlayer = texture->m_drawlayer;
|
||||||
|
|
||||||
|
if (!StringToDrawLayer(drawlayerStr, drawlayer)) {
|
||||||
|
luaL_error(L, "Usage: %s:SetDrawLayer(\"layer\")", texture->GetDisplayName());
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
texture->SetFrame(texture->m_parent, drawlayer, texture->m_shown);
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t CSimpleTexture_GetBlendMode(lua_State* L) {
|
int32_t CSimpleTexture_GetBlendMode(lua_State* L) {
|
||||||
|
|||||||
@ -23,6 +23,8 @@ if(WHOA_SYSTEM_MAC)
|
|||||||
"-framework AppKit"
|
"-framework AppKit"
|
||||||
"-framework Carbon"
|
"-framework Carbon"
|
||||||
"-framework IOKit"
|
"-framework IOKit"
|
||||||
|
"-framework Metal"
|
||||||
|
"-framework QuartzCore"
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user