mirror of
https://github.com/whoahq/whoa.git
synced 2026-03-18 21:51:06 +03:00
Compare commits
5 Commits
0cf12c9c90
...
184d3b041f
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
184d3b041f | ||
|
|
bc3b469266 | ||
|
|
f5171c0c6c | ||
|
|
1891bdc5ea | ||
|
|
e7abae1102 |
@ -1,6 +1,7 @@
|
|||||||
#ifndef OBJECT_CLIENT_HPP
|
#ifndef OBJECT_CLIENT_HPP
|
||||||
#define OBJECT_CLIENT_HPP
|
#define OBJECT_CLIENT_HPP
|
||||||
|
|
||||||
|
#include "client/CGPlayer_C.hpp"
|
||||||
#include "client/ObjMgr.hpp"
|
#include "client/ObjMgr.hpp"
|
||||||
#include "object/Types.hpp"
|
#include "object/Types.hpp"
|
||||||
|
|
||||||
|
|||||||
@ -23,3 +23,7 @@ uint32_t CGObject::TotalFields() {
|
|||||||
uint32_t CGObject::TotalFieldsSaved() {
|
uint32_t CGObject::TotalFieldsSaved() {
|
||||||
return CGObject::GetBaseOffsetSaved() + 3;
|
return CGObject::GetBaseOffsetSaved() + 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
WOWGUID CGObject::GetGUID() const {
|
||||||
|
return this->m_obj->m_guid;
|
||||||
|
}
|
||||||
|
|||||||
@ -29,6 +29,9 @@ class CGObject {
|
|||||||
uint32_t* m_objSaved;
|
uint32_t* m_objSaved;
|
||||||
uint32_t m_memHandle;
|
uint32_t m_memHandle;
|
||||||
OBJECT_TYPE_ID m_typeID;
|
OBJECT_TYPE_ID m_typeID;
|
||||||
|
|
||||||
|
// Public member functions
|
||||||
|
WOWGUID GetGUID() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -149,6 +149,12 @@ void CGGameUI::InitializeGame() {
|
|||||||
// TODO
|
// TODO
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int32_t CGGameUI::IsRaidMember(const WOWGUID& guid) {
|
||||||
|
// TODO
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
void CGGameUI::RegisterFrameFactories() {
|
void CGGameUI::RegisterFrameFactories() {
|
||||||
FrameXML_RegisterFactory("WorldFrame", &CGWorldFrame::Create, true);
|
FrameXML_RegisterFactory("WorldFrame", &CGWorldFrame::Create, true);
|
||||||
FrameXML_RegisterFactory("GameTooltip", &CGTooltip::Create, false);
|
FrameXML_RegisterFactory("GameTooltip", &CGTooltip::Create, false);
|
||||||
|
|||||||
@ -16,6 +16,7 @@ class CGGameUI {
|
|||||||
static WOWGUID& GetLockedTarget();
|
static WOWGUID& GetLockedTarget();
|
||||||
static void Initialize();
|
static void Initialize();
|
||||||
static void InitializeGame();
|
static void InitializeGame();
|
||||||
|
static int32_t IsRaidMember(const WOWGUID& guid);
|
||||||
static void RegisterFrameFactories();
|
static void RegisterFrameFactories();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@ -1,6 +1,11 @@
|
|||||||
#include "ui/game/ScriptEvents.hpp"
|
#include "ui/game/ScriptEvents.hpp"
|
||||||
|
#include "object/client/ObjMgr.hpp"
|
||||||
#include "ui/FrameScript.hpp"
|
#include "ui/FrameScript.hpp"
|
||||||
#include "ui/ScriptFunctionsSystem.hpp"
|
#include "ui/ScriptFunctionsSystem.hpp"
|
||||||
|
#include "ui/game/CGGameUI.hpp"
|
||||||
|
#include "ui/game/ScriptUtil.hpp"
|
||||||
|
#include "util/GUID.hpp"
|
||||||
|
#include "util/Lua.hpp"
|
||||||
#include "util/Unimplemented.hpp"
|
#include "util/Unimplemented.hpp"
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
@ -18,7 +23,19 @@ int32_t Script_UnitIsUnit(lua_State* L) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int32_t Script_UnitIsPlayer(lua_State* L) {
|
int32_t Script_UnitIsPlayer(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_PLAYER, __FILE__, __LINE__);
|
||||||
|
|
||||||
|
if (object || CGGameUI::IsRaidMember(guid)) {
|
||||||
|
lua_pushnumber(L, 1.0);
|
||||||
|
} else {
|
||||||
|
lua_pushnil(L);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t Script_UnitIsInMyGuild(lua_State* L) {
|
int32_t Script_UnitIsInMyGuild(lua_State* L) {
|
||||||
|
|||||||
157
src/ui/game/ScriptUtil.cpp
Normal file
157
src/ui/game/ScriptUtil.cpp
Normal file
@ -0,0 +1,157 @@
|
|||||||
|
#include "ui/game/ScriptUtil.hpp"
|
||||||
|
#include "object/Client.hpp"
|
||||||
|
#include "ui/game/CGGameUI.hpp"
|
||||||
|
#include <storm/String.hpp>
|
||||||
|
|
||||||
|
bool Script_GetGUIDFromToken(const char* token, WOWGUID& guid, bool defaultToTarget) {
|
||||||
|
auto activePlayer = static_cast<CGPlayer_C*>(ClntObjMgrObjectPtr(ClntObjMgrGetActivePlayer(), TYPE_PLAYER, __FILE__, __LINE__));
|
||||||
|
|
||||||
|
// Null or empty token
|
||||||
|
if (token == nullptr || *token == '\0') {
|
||||||
|
if (defaultToTarget) {
|
||||||
|
guid = CGGameUI::GetLockedTarget();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
guid = 0;
|
||||||
|
auto parseToken = token;
|
||||||
|
|
||||||
|
// player - active player
|
||||||
|
if (!SStrCmpI(parseToken, "player", 6)) {
|
||||||
|
parseToken += 6;
|
||||||
|
|
||||||
|
if (activePlayer) {
|
||||||
|
guid = activePlayer->GetGUID();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// vehicle - active player's vehicle
|
||||||
|
else if (!SStrCmpI(parseToken, "vehicle", 7)) {
|
||||||
|
parseToken += 7;
|
||||||
|
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
// pet - active player's pet
|
||||||
|
else if (!SStrCmpI(parseToken, "pet", 3)) {
|
||||||
|
parseToken += 3;
|
||||||
|
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
// target - current locked target
|
||||||
|
else if (!SStrCmpI(parseToken, "target", 6)) {
|
||||||
|
parseToken += 6;
|
||||||
|
|
||||||
|
guid = CGGameUI::GetLockedTarget();
|
||||||
|
}
|
||||||
|
|
||||||
|
// partypet1-4 - party member's pet
|
||||||
|
else if (!SStrCmpI(parseToken, "partypet", 8)) {
|
||||||
|
parseToken += 8;
|
||||||
|
|
||||||
|
auto index = SStrToUnsigned(parseToken);
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
// party1-4 - party member
|
||||||
|
else if (!SStrCmpI(parseToken, "party", 5)) {
|
||||||
|
parseToken += 5;
|
||||||
|
|
||||||
|
auto index = SStrToUnsigned(parseToken);
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
// raidpet1-40 - raid member's pet
|
||||||
|
else if (!SStrCmpI(parseToken, "raidpet", 7)) {
|
||||||
|
parseToken += 7;
|
||||||
|
|
||||||
|
auto index = SStrToUnsigned(parseToken);
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
// raid1-40 - raid member
|
||||||
|
else if (!SStrCmpI(parseToken, "raid", 4)) {
|
||||||
|
parseToken += 4;
|
||||||
|
|
||||||
|
auto index = SStrToUnsigned(parseToken);
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
// boss1-5 - boss unit
|
||||||
|
else if (!SStrCmpI(parseToken, "boss", 4)) {
|
||||||
|
parseToken += 4;
|
||||||
|
|
||||||
|
auto index = SStrToUnsigned(parseToken);
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
// arenapet1-5 - arena opponent's pet
|
||||||
|
else if (!SStrCmpI(parseToken, "arenapet", 8)) {
|
||||||
|
parseToken += 8;
|
||||||
|
|
||||||
|
auto index = SStrToUnsigned(parseToken);
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
// arena1-5 - arena opponent
|
||||||
|
else if (!SStrCmpI(parseToken, "arena", 5)) {
|
||||||
|
parseToken += 5;
|
||||||
|
|
||||||
|
auto index = SStrToUnsigned(parseToken);
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
// commentator1-N - commentator arena member
|
||||||
|
else if (!SStrCmpI(parseToken, "commentator", 11)) {
|
||||||
|
parseToken += 11;
|
||||||
|
|
||||||
|
auto index = SStrToUnsigned(parseToken);
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
// mouseover - object under cursor
|
||||||
|
else if (!SStrCmpI(parseToken, "mouseover", 9)) {
|
||||||
|
parseToken += 9;
|
||||||
|
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
// focus - focus target
|
||||||
|
else if (!SStrCmpI(parseToken, "focus", 5)) {
|
||||||
|
parseToken += 5;
|
||||||
|
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
// npc - NPC interaction target
|
||||||
|
else if (!SStrCmpI(parseToken, "npc")) {
|
||||||
|
parseToken += 3;
|
||||||
|
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
// questnpc - quest giver NPC
|
||||||
|
else if (!SStrCmpI(parseToken, "questnpc")) {
|
||||||
|
parseToken += 8;
|
||||||
|
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
// none
|
||||||
|
else if (!SStrCmpI(parseToken, "none")) {
|
||||||
|
parseToken += 4;
|
||||||
|
|
||||||
|
guid = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO ParseTrailingTokens
|
||||||
|
// TODO Script_GetGUIDFromString
|
||||||
|
// TODO guid -2
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
8
src/ui/game/ScriptUtil.hpp
Normal file
8
src/ui/game/ScriptUtil.hpp
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
#ifndef UI_GAME_SCRIPT_UTIL_HPP
|
||||||
|
#define UI_GAME_SCRIPT_UTIL_HPP
|
||||||
|
|
||||||
|
#include "util/GUID.hpp"
|
||||||
|
|
||||||
|
bool Script_GetGUIDFromToken(const char* token, WOWGUID& guid, bool defaultToTarget);
|
||||||
|
|
||||||
|
#endif
|
||||||
Loading…
Reference in New Issue
Block a user