#pragma once #include #include // Squirrel核心头文件 #include // Squirrel标准IO库 #include // 新增:包含 sqstd_seterrorhandlers 等辅助函数 #include // 新增:包含 sqstd_register_bloblib 函数 #include // 新增:包含 sqstd_register_systemlib 函数 #include // 新增:包含 sqstd_register_mathlib 函数 #include // 新增:包含 sqstd_register_stringlib 函数 #include #include #include "Tool/Tool_Network.h" #ifdef SQUNICODE #define scvprintf vfwprintf #else #define scvprintf vfprintf #endif class SquirrelEx { public: SquirrelEx(const SquirrelEx &) = delete; SquirrelEx &operator=(const SquirrelEx &) = delete; SquirrelEx(SquirrelEx &&) = delete; SquirrelEx &operator=(SquirrelEx &&) = delete; // 全局访问点 static SquirrelEx &GetInstance() { static SquirrelEx instance; // 局部静态变量,保证只初始化一次 return instance; } // 打印控制台 static void printfunc(HSQUIRRELVM v, const SQChar *s, ...); // 错误打印控制台 static void errorfunc(HSQUIRRELVM v, const SQChar *s, ...); // 从字符串编译Sqr脚本 bool Compilebuffer(std::string Path, std::string Code); public: // 初始化 void Init(); // 请求网络脚本 void RequestNetScript(std::string Ip, std::string Port); // 运行 void Run(); // UiRender入口 void UiRender(float deltaTime); // 清理 void Clean(); private: SquirrelEx(/* args */); ~SquirrelEx(); HSQUIRRELVM v = nullptr; };