iw7-mod/src/client/game/game.hpp
2024-07-15 20:07:53 +03:00

80 lines
1.5 KiB
C++

#pragma once
#include "structs.hpp"
#define PROTOCOL 1
namespace game
{
extern uint64_t base_address;
template <typename T>
class symbol
{
public:
symbol(const size_t address)
: address_(reinterpret_cast<T*>(address))
{
}
T* get() const
{
return reinterpret_cast<T*>(reinterpret_cast<uint64_t>(address_));
}
operator T* () const
{
return this->get();
}
T* operator->() const
{
return this->get();
}
private:
T* address_;
};
namespace environment
{
bool is_dedi();
}
namespace shared
{
void client_println(int client_num, const std::string& text);
bool cheats_ok(int client_num = 0, bool print = false);
}
int Cmd_Argc();
const char* Cmd_Argv(int index);
int SV_Cmd_Argc();
const char* SV_Cmd_Argv(int index);
extern const char* G_GAME_MODE_STRINGS_FORMATTED[];
const char* Com_GameMode_GetActiveGameModeStr();
const char* Com_GameMode_GetGameModeStr(GameModeType gameMode);
bool CL_IsGameClientActive(const int localClientNum);
extern const char* g_assetNames[ASSET_TYPE_COUNT];
const char* DB_GetXAssetName(const XAsset* asset);
void DB_EnumXAssets(const std::int32_t type, const std::function<void(XAssetHeader)>& callback);
void SV_CmdsMP_RequestMapRestart(bool loadScripts, bool migrate);
bool SV_ClientIsBot(client_t* client);
bool SV_ClientIsBot(unsigned int client_num);
void G_LogPrintf(const char* fmt, ...);
void Key_Bindlist_f();
}
size_t reverse_b(const size_t ptr);
size_t reverse_b(const void* ptr);
#include "symbols.hpp"