mirror of
https://github.com/whoahq/whoa.git
synced 2026-03-19 14:11:06 +03:00
Compare commits
49 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 |
@ -16,4 +16,5 @@ target_include_directories(object
|
||||
target_link_libraries(object
|
||||
PRIVATE
|
||||
db
|
||||
ui
|
||||
)
|
||||
|
||||
@ -36,6 +36,14 @@ OBJECT_TYPE_ID CGObject::GetTypeID() const {
|
||||
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 {
|
||||
return this->m_obj;
|
||||
}
|
||||
|
||||
@ -31,6 +31,8 @@ class CGObject {
|
||||
WOWGUID GetGUID() const;
|
||||
OBJECT_TYPE GetType() const;
|
||||
OBJECT_TYPE_ID GetTypeID() const;
|
||||
int32_t IsA(OBJECT_TYPE type) const;
|
||||
int32_t IsExactlyA(OBJECT_TYPE_ID typeID) const;
|
||||
|
||||
protected:
|
||||
// Protected member variables
|
||||
|
||||
@ -31,6 +31,14 @@ void CGObject_C::AddWorldObject() {
|
||||
// TODO
|
||||
}
|
||||
|
||||
int32_t CGObject_C::CanBeTargetted() {
|
||||
return false;
|
||||
}
|
||||
|
||||
int32_t CGObject_C::CanHighlight() {
|
||||
return false;
|
||||
}
|
||||
|
||||
void CGObject_C::Disable() {
|
||||
// TODO
|
||||
|
||||
|
||||
@ -33,6 +33,8 @@ class CGObject_C : public CGObject, public TSHashObject<CGObject_C, CHashKeyGUID
|
||||
void PostReenable();
|
||||
virtual void HandleOutOfRange(OUT_OF_RANGE_TYPE type) {};
|
||||
// TODO
|
||||
virtual int32_t CanHighlight();
|
||||
virtual int32_t CanBeTargetted();
|
||||
|
||||
// Public member functions
|
||||
CGObject_C() = default;
|
||||
|
||||
@ -41,6 +41,14 @@ uint32_t CGPlayer::TotalRemoteFieldsSaved() {
|
||||
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 {
|
||||
return this->m_player;
|
||||
}
|
||||
|
||||
@ -148,6 +148,10 @@ class CGPlayer {
|
||||
static uint32_t TotalFieldsSaved();
|
||||
static uint32_t TotalRemoteFieldsSaved();
|
||||
|
||||
// Public member functions
|
||||
uint32_t GetNextLevelXP() const;
|
||||
uint32_t GetXP() const;
|
||||
|
||||
protected:
|
||||
// Protected member variables
|
||||
CGPlayerData* m_player;
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
#include "object/client/CGPlayer_C.hpp"
|
||||
#include "db/Db.hpp"
|
||||
#include "object/client/ObjMgr.hpp"
|
||||
#include "object/Types.hpp"
|
||||
#include <storm/Error.hpp>
|
||||
|
||||
@ -11,6 +12,22 @@ CGPlayer_C::~CGPlayer_C() {
|
||||
// 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) {
|
||||
// TODO
|
||||
|
||||
|
||||
@ -15,6 +15,8 @@ class CGPlayer_C : public CGUnit_C, public CGPlayer {
|
||||
|
||||
// Public member functions
|
||||
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 SetStorage(uint32_t* storage, uint32_t* saved);
|
||||
};
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
#include "object/client/CGUnit_C.hpp"
|
||||
#include "object/client/ObjMgr.hpp"
|
||||
#include "db/Db.hpp"
|
||||
#include "ui/Game.hpp"
|
||||
|
||||
WOWGUID CGUnit_C::s_activeMover;
|
||||
|
||||
@ -99,6 +101,20 @@ CGUnit_C::~CGUnit_C() {
|
||||
// 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) {
|
||||
// TODO
|
||||
|
||||
|
||||
@ -21,6 +21,10 @@ class CGUnit_C : public CGObject_C, public CGUnit {
|
||||
|
||||
// Virtual public member functions
|
||||
virtual ~CGUnit_C();
|
||||
// TODO
|
||||
virtual int32_t CanHighlight();
|
||||
virtual int32_t CanBeTargetted();
|
||||
// TODO
|
||||
|
||||
// Public member functions
|
||||
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) {
|
||||
return nullptr;
|
||||
}
|
||||
@ -353,8 +357,20 @@ int32_t CLayoutFrame::GetRect(CRect* rect) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
float CLayoutFrame::GetHeight() {
|
||||
return this->m_height;
|
||||
void CLayoutFrame::GetSize(float& width, float& height, int32_t a4) {
|
||||
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() {
|
||||
|
||||
@ -51,6 +51,7 @@ class CLayoutFrame {
|
||||
virtual void SetHeight(float height);
|
||||
virtual float GetWidth();
|
||||
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 int32_t IsAttachmentOrigin();
|
||||
virtual CLayoutFrame* GetLayoutFrameByName(const char* name);
|
||||
|
||||
@ -11,8 +11,6 @@
|
||||
#include <storm/String.hpp>
|
||||
#include <tempest/Vector.hpp>
|
||||
|
||||
const char* g_scriptEvents[722];
|
||||
|
||||
int32_t g_glueFrameScriptGenders[] = {
|
||||
2, // UNIT_SEX_MALE
|
||||
3, // UNIT_SEX_FEMALE
|
||||
@ -154,8 +152,10 @@ void FrameScript_CreateEvents(const char* names[], uint32_t count) {
|
||||
FrameScript::s_scriptEvents.SetCount(count);
|
||||
|
||||
for (int32_t i = 0; i < count; i++) {
|
||||
auto event = FrameScript::s_scriptEventsHash.New(names[i], 0, 0);
|
||||
FrameScript::s_scriptEvents[i] = event;
|
||||
if (names[i]) {
|
||||
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 const char* g_scriptEvents[722];
|
||||
|
||||
namespace FrameScript {
|
||||
extern void* s_mempool;
|
||||
@ -103,6 +102,4 @@ void FrameScript_UnregisterFunction(const char* name);
|
||||
|
||||
void FrameScript_UnregisterScriptEvent(FrameScript_Object* object, FrameScript_EventObject* event);
|
||||
|
||||
void ScriptEventsInitialize();
|
||||
|
||||
#endif
|
||||
|
||||
@ -35,6 +35,33 @@ const char* FrameScript_Object::GetDisplayName() {
|
||||
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) {
|
||||
if (!SStrCmpI(name, "OnEvent", STORM_MAX_STR)) {
|
||||
data.wrapper = "return function(self,event,...) %s end";
|
||||
|
||||
@ -43,6 +43,7 @@ class FrameScript_Object {
|
||||
|
||||
// Member functions
|
||||
const char* GetDisplayName();
|
||||
int32_t GetScript(lua_State* L);
|
||||
int32_t RegisterScriptEvent(const char* name);
|
||||
void RegisterScriptObject(const char* name);
|
||||
void RunScript(ScriptIx const& script, int32_t argCount, const char* a4);
|
||||
|
||||
@ -2,5 +2,7 @@
|
||||
#define UI_GAME_HPP
|
||||
|
||||
#include "ui/game/CGGameUI.hpp"
|
||||
#include "ui/game/CGPetInfo.hpp"
|
||||
#include "ui/game/ScriptEvents.hpp"
|
||||
|
||||
#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/FrameXML.hpp"
|
||||
#include "ui/Key.hpp"
|
||||
#include "ui/game/ActionBarScript.hpp"
|
||||
#include "ui/game/BattlefieldInfoScript.hpp"
|
||||
#include "ui/game/CGCharacterModelBase.hpp"
|
||||
#include "ui/game/CGCooldown.hpp"
|
||||
@ -46,6 +47,10 @@ void LoadScriptFunctions() {
|
||||
|
||||
// TODO
|
||||
|
||||
ActionBarRegisterScriptFunctions();
|
||||
|
||||
// TODO
|
||||
|
||||
CharacterInfoRegisterScriptFunctions();
|
||||
|
||||
// TODO
|
||||
@ -75,6 +80,7 @@ void CGGameUI::Initialize() {
|
||||
// TODO
|
||||
|
||||
LoadScriptFunctions();
|
||||
ScriptEventsRegisterEvents();
|
||||
|
||||
// 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 "object/client/ObjMgr.hpp"
|
||||
#include "db/Db.hpp"
|
||||
#include "object/Client.hpp"
|
||||
#include "ui/FrameScript.hpp"
|
||||
#include "ui/ScriptFunctionsSystem.hpp"
|
||||
#include "ui/game/CGGameUI.hpp"
|
||||
#include "ui/game/ScriptUtil.hpp"
|
||||
#include "util/GUID.hpp"
|
||||
#include "util/Lua.hpp"
|
||||
#include "util/StringTo.hpp"
|
||||
#include "util/Unimplemented.hpp"
|
||||
|
||||
#define NUM_SCRIPT_EVENTS 722
|
||||
|
||||
const char* g_scriptEvents[NUM_SCRIPT_EVENTS];
|
||||
|
||||
namespace {
|
||||
|
||||
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) {
|
||||
@ -159,11 +177,43 @@ int32_t Script_UnitPVPName(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) {
|
||||
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) {
|
||||
@ -695,7 +745,29 @@ int32_t Script_IsXPUserDisabled(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);
|
||||
}
|
||||
}
|
||||
|
||||
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
|
||||
#define UI_GAME_SCRIPT_EVENTS_HPP
|
||||
|
||||
extern const char* g_scriptEvents[];
|
||||
|
||||
void ScriptEventsInitialize();
|
||||
|
||||
void ScriptEventsRegisterEvents();
|
||||
|
||||
void ScriptEventsRegisterFunctions();
|
||||
|
||||
#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) {
|
||||
// TODO
|
||||
return true;
|
||||
|
||||
@ -3,6 +3,10 @@
|
||||
|
||||
#include "util/GUID.hpp"
|
||||
|
||||
class CGUnit_C;
|
||||
|
||||
CGUnit_C* Script_GetUnitFromName(const char* name);
|
||||
|
||||
bool Script_GetGUIDFromString(const char*& token, WOWGUID& guid);
|
||||
|
||||
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) {
|
||||
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) {
|
||||
|
||||
@ -162,7 +162,17 @@ int32_t CSimpleFontString_SetFont(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) {
|
||||
|
||||
@ -95,6 +95,10 @@ void CSimpleFrame::AddFrameRegion(CSimpleRegion* region, uint32_t drawlayer) {
|
||||
this->NotifyDrawLayerChanged(drawlayer);
|
||||
}
|
||||
|
||||
int32_t CSimpleFrame::AttributeChangesAllowed() {
|
||||
return true;
|
||||
}
|
||||
|
||||
void CSimpleFrame::DisableDrawLayer(uint32_t drawlayer) {
|
||||
this->m_drawenabled[drawlayer] = 0;
|
||||
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) {
|
||||
if (this->m_onChar.luaRef) {
|
||||
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) {
|
||||
if (this->IsResizePending()) {
|
||||
this->Resize(1);
|
||||
@ -737,7 +776,69 @@ int32_t CSimpleFrame::HideThis() {
|
||||
}
|
||||
|
||||
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) {
|
||||
@ -1317,6 +1418,18 @@ void CSimpleFrame::RemoveFrameRegion(CSimpleRegion* region, uint32_t 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) {
|
||||
if (this->m_backdrop) {
|
||||
delete this->m_backdrop;
|
||||
|
||||
@ -6,6 +6,7 @@
|
||||
#include "ui/CScriptRegion.hpp"
|
||||
#include "ui/Types.hpp"
|
||||
#include "ui/simple/CSimpleRegion.hpp"
|
||||
#include <storm/Hash.hpp>
|
||||
#include <storm/List.hpp>
|
||||
#include <cstdint>
|
||||
|
||||
@ -17,6 +18,10 @@ class CSimpleTitleRegion;
|
||||
class CSimpleTop;
|
||||
struct lua_State;
|
||||
|
||||
struct FRAMEATTR : TSHashObject<FRAMEATTR, HASHKEY_STRI> {
|
||||
int32_t luaRef;
|
||||
};
|
||||
|
||||
class CSimpleFrame : public CScriptRegion {
|
||||
public:
|
||||
// Static members
|
||||
@ -71,6 +76,7 @@ class CSimpleFrame : public CScriptRegion {
|
||||
ScriptIx m_onAttributeChange;
|
||||
ScriptIx m_onEnable;
|
||||
ScriptIx m_onDisable;
|
||||
TSHashTable<FRAMEATTR, HASHKEY_STRI> m_attributes;
|
||||
int32_t m_drawenabled[NUM_SIMPLEFRAME_DRAWLAYERS];
|
||||
CBackdropGenerator* m_backdrop = nullptr;
|
||||
STORM_EXPLICIT_LIST(CSimpleRegion, m_regionLink) m_regions;
|
||||
@ -122,10 +128,12 @@ class CSimpleFrame : public CScriptRegion {
|
||||
// Member functions
|
||||
CSimpleFrame(CSimpleFrame* parent);
|
||||
void AddFrameRegion(CSimpleRegion* region, uint32_t drawlayer);
|
||||
int32_t AttributeChangesAllowed();
|
||||
void DisableDrawLayer(uint32_t drawlayer);
|
||||
void DisableEvent(CSimpleEventType eventType);
|
||||
void EnableDrawLayer(uint32_t drawlayer);
|
||||
void EnableEvent(CSimpleEventType eventType, int32_t priority);
|
||||
bool GetAttribute(const char* name, int32_t& luaRef);
|
||||
int32_t GetHitRect(CRect& rect);
|
||||
void Hide();
|
||||
void LoadXML_Attributes(const XMLNode* node, CStatus* status);
|
||||
@ -139,6 +147,7 @@ class CSimpleFrame : public CScriptRegion {
|
||||
void RegisterForEvents(int32_t a2);
|
||||
void RegisterRegion(CSimpleRegion* region);
|
||||
void RemoveFrameRegion(CSimpleRegion* region, uint32_t drawlayer);
|
||||
void RunOnAttributeChangedScript(const char* name, int32_t luaRef);
|
||||
void RunOnCharScript(const char* chr);
|
||||
void RunOnEnableScript();
|
||||
void RunOnEnterScript(int32_t a2);
|
||||
@ -152,6 +161,7 @@ class CSimpleFrame : public CScriptRegion {
|
||||
void RunOnShowScript();
|
||||
void RunOnSizeChangedScript(float width, float height);
|
||||
void RunOnUpdateScript(float elapsedSec);
|
||||
void SetAttribute(const char* name, int32_t luaRef);
|
||||
void SetBackdrop(CBackdropGenerator* backdrop);
|
||||
void SetBeingScrolled(int32_t a2, int32_t a3);
|
||||
void SetFrameAlpha(uint8_t alpha);
|
||||
|
||||
@ -2,10 +2,13 @@
|
||||
#include "gx/Coordinate.hpp"
|
||||
#include "ui/CBackdropGenerator.hpp"
|
||||
#include "ui/FrameScript.hpp"
|
||||
#include "ui/FrameXML.hpp"
|
||||
#include "ui/simple/CSimpleFrame.hpp"
|
||||
#include "ui/simple/CSimpleTexture.hpp"
|
||||
#include "util/Lua.hpp"
|
||||
#include "util/StringTo.hpp"
|
||||
#include "util/Unimplemented.hpp"
|
||||
#include <storm/Memory.hpp>
|
||||
#include <algorithm>
|
||||
#include <cstdint>
|
||||
#include <limits>
|
||||
@ -19,7 +22,66 @@ int32_t CSimpleFrame_CreateTitleRegion(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) {
|
||||
@ -126,7 +188,10 @@ int32_t CSimpleFrame_HasScript(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) {
|
||||
@ -180,11 +245,197 @@ int32_t CSimpleFrame_CanChangeAttributes(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) {
|
||||
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) {
|
||||
|
||||
@ -1,5 +1,11 @@
|
||||
#include "ui/simple/CSimpleStatusBar.hpp"
|
||||
#include "ui/LoadXML.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_objectType;
|
||||
@ -22,10 +28,260 @@ void CSimpleStatusBar::RegisterScriptMethods(lua_State* L) {
|
||||
FrameScript_Object::FillScriptMethodTable(L, SimpleStatusBarMethods, NUM_SIMPLE_STATUS_BAR_SCRIPT_METHODS);
|
||||
}
|
||||
|
||||
CSimpleStatusBar::CSimpleStatusBar(CSimpleFrame* parent) : CSimpleFrame(parent) {
|
||||
// TODO
|
||||
float CSimpleStatusBar::GetAnimValue() const {
|
||||
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() {
|
||||
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 {
|
||||
public:
|
||||
// Static variables
|
||||
// Public static variables
|
||||
static int32_t s_metatable;
|
||||
static int32_t s_objectType;
|
||||
|
||||
// Static functions
|
||||
// Public static functions
|
||||
static void CreateScriptMetaTable();
|
||||
static int32_t GetObjectType();
|
||||
static void RegisterScriptMethods(lua_State* L);
|
||||
|
||||
// Member variables
|
||||
// TODO
|
||||
|
||||
// Virtual member functions
|
||||
// Public virtual member functions
|
||||
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
|
||||
CSimpleStatusBar(CSimpleFrame* parent);
|
||||
// Public member functions
|
||||
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
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
#include "ui/simple/CSimpleStatusBarScript.hpp"
|
||||
#include "ui/simple/CSimpleStatusBar.hpp"
|
||||
#include "ui/FrameScript.hpp"
|
||||
#include "util/Lua.hpp"
|
||||
#include "util/Unimplemented.hpp"
|
||||
|
||||
namespace {
|
||||
@ -13,19 +15,65 @@ int32_t CSimpleStatusBar_SetOrientation(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) {
|
||||
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) {
|
||||
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) {
|
||||
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) {
|
||||
@ -41,7 +89,15 @@ int32_t CSimpleStatusBar_GetStatusBarColor(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) {
|
||||
|
||||
@ -19,7 +19,25 @@ int32_t CSimpleTexture_GetDrawLayer(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) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user