#pragma once #include "include/squirrel.h" #include "include/sqstdaux.h" #include "include/sqstdblob.h" #include "include/sqstdio.h" #include "include/sqstdmath.h" #include "include/sqstdstring.h" #include "include/sqstdsystem.h" #include using namespace kiwano; #include using namespace kiwano::audio; #include using namespace kiwano::imgui; #include "WThreadPool.h" #include "SquirrelStage.h" #include "SquirrelTownStage.h" #include "Cursor.h" #include "SquirrelButton.h" #include "SpriteEx.h" #include "SquirrelCamera.h" #include "Npk.h" #include "json.hpp" #include #include #include #include #include #include #include #include #include #include #ifdef SQUNICODE #define scfprintf fwprintf #define scfopen _wfopen #define scvprintf vwprintf #define _SST(a) (SQChar*)##a #else #define scfprintf fprintf #define scfopen fopen #define scvprintf vprintf #endif class SquirrelClassEx { public://输出拓展 static int Sout(HSQUIRRELVM v);//输出 static int Error(HSQUIRRELVM v);//输出 public://API类 //重载Nut脚本 static SQInteger ReloadingScript(); //退出游戏 static SQInteger Exit(HSQUIRRELVM v); //执行Cmd static SQInteger Cmd(HSQUIRRELVM v); //调用脚本 static void RunSceneScript(std::string FuncName, SquirrelStagePtr scene); static void RunSceneScript(std::string FuncName, SquirrelStagePtr scene,SQInteger dt); static void RunSceneScript(std::string FuncName, SquirrelStagePtr scene, SQFloat dt); static void RunSceneScript(std::string FuncName, SquirrelTownStagePtr scene); static void RunUpdateScript(std::string FuncName, SQInteger ObjectIdx); static void RunUpdateScript(std::string FuncName, std::string string); static void RunUpdateScript(std::string FuncName, SQInteger ObjectIdx, SQInteger Buf); static void RunUpdateScript(std::string FuncName, SQInteger ObjectIdx, SQInteger Buf , SQInteger Buf2); static void RunUpdateScriptPlayer(std::string FuncName, SQInteger ObjectIdx, SQFloat Buf); //Push图层对象至Map static void PushLayerActorPtrToMap(LayerActorPtr Ptr); //读取List static void LoadingListScript(); public: //纹理类 static TexturePtr GetTexturePtrByImg(const std::string ImgPath , const int Frame); static void ReleaseTextureByImg(const std::string ImgPath); public://类扩展 //字符串类 static void Split(const std::string& src, std::vector& dest, const std::string& separator); static char* U8ToUnicode(const char* szU8); static char* SquirrelU2W(const char* Str); //文件类 //static int WriteFile(HSQUIRRELVM v);//文件写出 public://注册闭包函数 //新增nut接口funcName绑定C语言函数funcAddr static void RegisterNutApi(const SQChar* funcName, void* funcAddr, HSQUIRRELVM v); //注册接口 void R_Register_Nut(HSQUIRRELVM v); public: SquirrelClassEx(); //初始化 void Init(); //运行 void Run(); //关闭 void Close(); }; static SquirrelClassEx* Object; static HSQUIRRELVM v;