mirror of
https://github.com/azerothcore/mod-ale
synced 2025-11-29 15:38:17 +08:00
Eluna
Improved pushing so that a single userdata is used per object pushed. Made everything use the singleton less, allowing more free code and easier to implement multithreading later. Made macros for hookmgr and fixed the issue with hooks called inside hooks.
This commit is contained in:
102
ObjectMethods.h
102
ObjectMethods.h
@@ -12,90 +12,90 @@ namespace LuaObject
|
||||
/* BOOLEAN */
|
||||
int HasFlag(lua_State* L, Object* obj)
|
||||
{
|
||||
uint16 index = sEluna->CHECKVAL<uint16>(L, 2);
|
||||
uint32 flag = sEluna->CHECKVAL<uint32>(L, 3);
|
||||
uint16 index = Eluna::CHECKVAL<uint16>(L, 2);
|
||||
uint32 flag = Eluna::CHECKVAL<uint32>(L, 3);
|
||||
|
||||
sEluna->Push(L, obj->HasFlag(index, flag));
|
||||
Eluna::Push(L, obj->HasFlag(index, flag));
|
||||
return 1;
|
||||
}
|
||||
|
||||
int IsInWorld(lua_State* L, Object* obj)
|
||||
{
|
||||
sEluna->Push(L, obj->IsInWorld());
|
||||
Eluna::Push(L, obj->IsInWorld());
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* GETTERS */
|
||||
int GetInt32Value(lua_State* L, Object* obj)
|
||||
{
|
||||
uint16 index = sEluna->CHECKVAL<uint16>(L, 2);
|
||||
sEluna->Push(L, obj->GetInt32Value(index));
|
||||
uint16 index = Eluna::CHECKVAL<uint16>(L, 2);
|
||||
Eluna::Push(L, obj->GetInt32Value(index));
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetUInt32Value(lua_State* L, Object* obj)
|
||||
{
|
||||
uint16 index = sEluna->CHECKVAL<uint16>(L, 2);
|
||||
sEluna->Push(L, obj->GetUInt32Value(index));
|
||||
uint16 index = Eluna::CHECKVAL<uint16>(L, 2);
|
||||
Eluna::Push(L, obj->GetUInt32Value(index));
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetFloatValue(lua_State* L, Object* obj)
|
||||
{
|
||||
uint16 index = sEluna->CHECKVAL<uint16>(L, 2);
|
||||
sEluna->Push(L, obj->GetFloatValue(index));
|
||||
uint16 index = Eluna::CHECKVAL<uint16>(L, 2);
|
||||
Eluna::Push(L, obj->GetFloatValue(index));
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetByteValue(lua_State* L, Object* obj)
|
||||
{
|
||||
uint16 index = sEluna->CHECKVAL<uint16>(L, 2);
|
||||
uint8 offset = sEluna->CHECKVAL<uint8>(L, 3);
|
||||
sEluna->Push(L, obj->GetByteValue(index, offset));
|
||||
uint16 index = Eluna::CHECKVAL<uint16>(L, 2);
|
||||
uint8 offset = Eluna::CHECKVAL<uint8>(L, 3);
|
||||
Eluna::Push(L, obj->GetByteValue(index, offset));
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetUInt16Value(lua_State* L, Object* obj)
|
||||
{
|
||||
uint16 index = sEluna->CHECKVAL<uint16>(L, 2);
|
||||
uint8 offset = sEluna->CHECKVAL<uint8>(L, 3);
|
||||
sEluna->Push(L, obj->GetUInt16Value(index, offset));
|
||||
uint16 index = Eluna::CHECKVAL<uint16>(L, 2);
|
||||
uint8 offset = Eluna::CHECKVAL<uint8>(L, 3);
|
||||
Eluna::Push(L, obj->GetUInt16Value(index, offset));
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetScale(lua_State* L, Object* obj)
|
||||
{
|
||||
sEluna->Push(L, obj->GetObjectScale());
|
||||
Eluna::Push(L, obj->GetObjectScale());
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetEntry(lua_State* L, Object* obj)
|
||||
{
|
||||
sEluna->Push(L, obj->GetEntry());
|
||||
Eluna::Push(L, obj->GetEntry());
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetGUID(lua_State* L, Object* obj)
|
||||
{
|
||||
sEluna->Push(L, obj->GET_GUID());
|
||||
Eluna::Push(L, obj->GET_GUID());
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetGUIDLow(lua_State* L, Object* obj)
|
||||
{
|
||||
sEluna->Push(L, obj->GetGUIDLow());
|
||||
Eluna::Push(L, obj->GetGUIDLow());
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetTypeId(lua_State* L, Object* obj)
|
||||
{
|
||||
sEluna->Push(L, obj->GetTypeId());
|
||||
Eluna::Push(L, obj->GetTypeId());
|
||||
return 1;
|
||||
}
|
||||
|
||||
int GetUInt64Value(lua_State* L, Object* obj)
|
||||
{
|
||||
uint16 index = sEluna->CHECKVAL<uint16>(L, 2);
|
||||
uint16 index = Eluna::CHECKVAL<uint16>(L, 2);
|
||||
obj->GetUInt64Value(index);
|
||||
return 0;
|
||||
}
|
||||
@@ -103,8 +103,8 @@ namespace LuaObject
|
||||
/* SETTERS */
|
||||
int SetFlag(lua_State* L, Object* obj)
|
||||
{
|
||||
uint16 index = sEluna->CHECKVAL<uint16>(L, 2);
|
||||
uint32 flag = sEluna->CHECKVAL<uint32>(L, 3);
|
||||
uint16 index = Eluna::CHECKVAL<uint16>(L, 2);
|
||||
uint32 flag = Eluna::CHECKVAL<uint32>(L, 3);
|
||||
|
||||
obj->SetFlag(index, flag);
|
||||
return 0;
|
||||
@@ -112,24 +112,24 @@ namespace LuaObject
|
||||
|
||||
int SetInt32Value(lua_State* L, Object* obj)
|
||||
{
|
||||
uint16 index = sEluna->CHECKVAL<uint16>(L, 2);
|
||||
int32 value = sEluna->CHECKVAL<int32>(L, 3);
|
||||
uint16 index = Eluna::CHECKVAL<uint16>(L, 2);
|
||||
int32 value = Eluna::CHECKVAL<int32>(L, 3);
|
||||
obj->SetInt32Value(index, value);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int SetUInt32Value(lua_State* L, Object* obj)
|
||||
{
|
||||
uint16 index = sEluna->CHECKVAL<uint16>(L, 2);
|
||||
uint32 value = sEluna->CHECKVAL<uint32>(L, 3);
|
||||
uint16 index = Eluna::CHECKVAL<uint16>(L, 2);
|
||||
uint32 value = Eluna::CHECKVAL<uint32>(L, 3);
|
||||
obj->SetUInt32Value(index, value);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int SetFloatValue(lua_State* L, Object* obj)
|
||||
{
|
||||
uint16 index = sEluna->CHECKVAL<uint16>(L, 2);
|
||||
float value = sEluna->CHECKVAL<float>(L, 3);
|
||||
uint16 index = Eluna::CHECKVAL<uint16>(L, 2);
|
||||
float value = Eluna::CHECKVAL<float>(L, 3);
|
||||
|
||||
obj->SetFloatValue(index, value);
|
||||
return 0;
|
||||
@@ -137,34 +137,34 @@ namespace LuaObject
|
||||
|
||||
int SetByteValue(lua_State* L, Object* obj)
|
||||
{
|
||||
uint16 index = sEluna->CHECKVAL<uint16>(L, 2);
|
||||
uint8 offset = sEluna->CHECKVAL<uint8>(L, 3);
|
||||
uint8 value = sEluna->CHECKVAL<uint8>(L, 4);
|
||||
uint16 index = Eluna::CHECKVAL<uint16>(L, 2);
|
||||
uint8 offset = Eluna::CHECKVAL<uint8>(L, 3);
|
||||
uint8 value = Eluna::CHECKVAL<uint8>(L, 4);
|
||||
obj->SetByteValue(index, offset, value);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int SetUInt16Value(lua_State* L, Object* obj)
|
||||
{
|
||||
uint16 index = sEluna->CHECKVAL<uint16>(L, 2);
|
||||
uint8 offset = sEluna->CHECKVAL<uint8>(L, 3);
|
||||
uint16 value = sEluna->CHECKVAL<uint16>(L, 4);
|
||||
uint16 index = Eluna::CHECKVAL<uint16>(L, 2);
|
||||
uint8 offset = Eluna::CHECKVAL<uint8>(L, 3);
|
||||
uint16 value = Eluna::CHECKVAL<uint16>(L, 4);
|
||||
obj->SetUInt16Value(index, offset, value);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int SetInt16Value(lua_State* L, Object* obj)
|
||||
{
|
||||
uint16 index = sEluna->CHECKVAL<uint16>(L, 2);
|
||||
uint8 offset = sEluna->CHECKVAL<uint8>(L, 3);
|
||||
int16 value = sEluna->CHECKVAL<int16>(L, 4);
|
||||
uint16 index = Eluna::CHECKVAL<uint16>(L, 2);
|
||||
uint8 offset = Eluna::CHECKVAL<uint8>(L, 3);
|
||||
int16 value = Eluna::CHECKVAL<int16>(L, 4);
|
||||
obj->SetInt16Value(index, offset, value);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int SetScale(lua_State* L, Object* obj)
|
||||
{
|
||||
float size = sEluna->CHECKVAL<float>(L, 2);
|
||||
float size = Eluna::CHECKVAL<float>(L, 2);
|
||||
|
||||
obj->SetObjectScale(size);
|
||||
return 0;
|
||||
@@ -172,8 +172,8 @@ namespace LuaObject
|
||||
|
||||
int SetUInt64Value(lua_State* L, Object* obj)
|
||||
{
|
||||
uint16 index = sEluna->CHECKVAL<uint16>(L, 2);
|
||||
uint64 value = sEluna->CHECKVAL<uint64>(L, 3);
|
||||
uint16 index = Eluna::CHECKVAL<uint16>(L, 2);
|
||||
uint64 value = Eluna::CHECKVAL<uint64>(L, 3);
|
||||
obj->SetUInt64Value(index, value);
|
||||
return 0;
|
||||
}
|
||||
@@ -181,8 +181,8 @@ namespace LuaObject
|
||||
/* OTHER */
|
||||
int RemoveFlag(lua_State* L, Object* obj)
|
||||
{
|
||||
uint16 index = sEluna->CHECKVAL<uint16>(L, 2);
|
||||
uint32 flag = sEluna->CHECKVAL<uint32>(L, 3);
|
||||
uint16 index = Eluna::CHECKVAL<uint16>(L, 2);
|
||||
uint32 flag = Eluna::CHECKVAL<uint32>(L, 3);
|
||||
|
||||
obj->RemoveFlag(index, flag);
|
||||
return 0;
|
||||
@@ -190,39 +190,39 @@ namespace LuaObject
|
||||
|
||||
int UpdateUInt32Value(lua_State* L, Object* obj)
|
||||
{
|
||||
uint16 index = sEluna->CHECKVAL<uint16>(L, 2);
|
||||
uint32 value = sEluna->CHECKVAL<uint32>(L, 3);
|
||||
uint16 index = Eluna::CHECKVAL<uint16>(L, 2);
|
||||
uint32 value = Eluna::CHECKVAL<uint32>(L, 3);
|
||||
obj->UpdateUInt32Value(index, value);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int ToCorpse(lua_State* L, Object* obj)
|
||||
{
|
||||
sEluna->Push(L, obj->ToCorpse());
|
||||
Eluna::Push(L, obj->ToCorpse());
|
||||
return 1;
|
||||
}
|
||||
|
||||
int ToGameObject(lua_State* L, Object* obj)
|
||||
{
|
||||
sEluna->Push(L, obj->ToGameObject());
|
||||
Eluna::Push(L, obj->ToGameObject());
|
||||
return 1;
|
||||
}
|
||||
|
||||
int ToUnit(lua_State* L, Object* obj)
|
||||
{
|
||||
sEluna->Push(L, obj->ToUnit());
|
||||
Eluna::Push(L, obj->ToUnit());
|
||||
return 1;
|
||||
}
|
||||
|
||||
int ToCreature(lua_State* L, Object* obj)
|
||||
{
|
||||
sEluna->Push(L, obj->ToCreature());
|
||||
Eluna::Push(L, obj->ToCreature());
|
||||
return 1;
|
||||
}
|
||||
|
||||
int ToPlayer(lua_State* L, Object* obj)
|
||||
{
|
||||
sEluna->Push(L, obj->ToPlayer());
|
||||
Eluna::Push(L, obj->ToPlayer());
|
||||
return 1;
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user