iw4x-client/src/Components/Modules/Script.hpp

71 lines
2.4 KiB
C++
Raw Normal View History

2017-01-20 08:36:52 -05:00
#pragma once
2022-02-27 07:53:44 -05:00
#include <Game/Structs.hpp>
2017-01-20 08:36:52 -05:00
2017-01-19 16:23:59 -05:00
namespace Components
{
class Script : public Component
{
public:
Script();
~Script();
2018-12-17 08:29:18 -05:00
static int LoadScriptAndLabel(const std::string& script, const std::string& label);
static void AddFunction(const char* name, Game::xfunction_t func, int type = 0);
static void AddMethod(const char* name, Game::xmethod_t func, int type = 0);
2017-01-19 16:23:59 -05:00
static void OnVMShutdown(Utils::Slot<Scheduler::Callback> callback);
2017-05-14 14:14:52 -04:00
static Game::client_t* GetClient(const Game::gentity_t* gentity);
2017-01-19 16:23:59 -05:00
private:
static std::string ScriptName;
static std::vector<int> ScriptHandles;
static std::unordered_map<std::string, Game::BuiltinFunctionDef> CustomScrFunctions;
static std::unordered_map<std::string, Game::BuiltinMethodDef> CustomScrMethods;
2017-01-19 16:23:59 -05:00
static std::vector<std::string> ScriptNameStack;
static unsigned short FunctionName;
static std::unordered_map<std::string, std::string> ScriptStorage;
static std::unordered_map<int, std::string> ScriptBaseProgramNum;
2021-11-13 08:15:27 -05:00
static std::unordered_map<const char*, const char*> ReplacedFunctions;
static const char* ReplacedPos;
2020-12-19 17:50:51 -05:00
static int LastFrameTime;
2017-01-19 16:23:59 -05:00
static Utils::Signal<Scheduler::Callback> VMShutdownSignal;
2017-05-14 14:14:52 -04:00
2017-01-19 16:23:59 -05:00
static void CompileError(unsigned int offset, const char* message, ...);
static void PrintSourcePos(const char* filename, unsigned int offset);
static void FunctionError();
static void StoreFunctionNameStub();
2022-01-23 14:32:20 -05:00
static void RuntimeError(const char* codePos, unsigned int index, const char* msg, const char* dialogMessage);
2017-01-19 16:23:59 -05:00
static void StoreScriptName(const char* name);
static void StoreScriptNameStub();
static void RestoreScriptName();
static void RestoreScriptNameStub();
static void LoadGameType();
static void LoadGameTypeScript();
2017-04-29 17:08:41 -04:00
static Game::xfunction_t BuiltIn_GetFunctionStub(const char** pName, int* type);
2022-04-10 08:00:55 -04:00
static Game::xmethod_t BuiltIn_GetMethod(const char** pName, int* type);
2022-04-09 10:29:58 -04:00
static void ScrShutdownSystemStub(unsigned char sys);
static void StoreScriptBaseProgramNumStub();
static void StoreScriptBaseProgramNum();
static void Scr_PrintPrevCodePosStub();
static void Scr_PrintPrevCodePos(int);
2017-05-14 14:14:52 -04:00
2021-11-13 08:22:06 -05:00
static unsigned int SetExpFogStub();
static const char* GetCodePosForParam(int index);
2021-11-13 08:15:27 -05:00
static void GetReplacedPos(const char* pos);
static void SetReplacedPos(const char* what, const char* with);
static void VMExecuteInternalStub();
static void AddFunctions();
2017-01-19 16:23:59 -05:00
};
}