ai_instance.hpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00012 #ifndef AI_INSTANCE_HPP
00013 #define AI_INSTANCE_HPP
00014
00018 typedef void (AISuspendCallbackProc)(class AIInstance *instance);
00019
00023 class AI_VMSuspend {
00024 public:
00025 AI_VMSuspend(int time, AISuspendCallbackProc *callback) :
00026 time(time),
00027 callback(callback)
00028 {}
00029
00030 int GetSuspendTime() { return time; }
00031 AISuspendCallbackProc *GetSuspendCallback() { return callback; }
00032
00033 private:
00034 int time;
00035 AISuspendCallbackProc *callback;
00036 };
00037
00041 class AI_FatalError {
00042 public:
00043 AI_FatalError(const char *msg) :
00044 msg(msg)
00045 {}
00046
00047 const char *GetErrorMessage() { return msg; }
00048
00049 private:
00050 const char *msg;
00051 };
00052
00053 class AIInstance {
00054 public:
00055 friend class AIObject;
00056 AIInstance(class AIInfo *info);
00057 ~AIInstance();
00058
00063 void Continue();
00064
00068 void GameLoop();
00069
00073 void CollectGarbage();
00074
00078 static class AIStorage *GetStorage();
00079
00083 static void DoCommandReturn(AIInstance *instance);
00084
00088 static void DoCommandReturnVehicleID(AIInstance *instance);
00089
00093 static void DoCommandReturnSignID(AIInstance *instance);
00094
00098 static void DoCommandReturnGroupID(AIInstance *instance);
00099
00103 class AIController *GetController() { return controller; }
00104
00108 inline bool IsDead() { return this->is_dead; }
00109
00113 void Save();
00114
00118 static void SaveEmpty();
00119
00125 void Load(int version);
00126
00131 bool CallLoad();
00132
00136 static void LoadEmpty();
00137
00138 private:
00139 class AIController *controller;
00140 class AIStorage *storage;
00141 class Squirrel *engine;
00142 SQObject *instance;
00143
00144 bool is_started;
00145 bool is_dead;
00146 bool is_save_data_on_stack;
00147 int suspend;
00148 AISuspendCallbackProc *callback;
00149
00153 void RegisterAPI();
00154
00158 bool LoadCompatibilityScripts(const char *api_version);
00159
00163 void Died();
00164
00175 static bool SaveObject(HSQUIRRELVM vm, SQInteger index, int max_depth, bool test);
00176
00181 static bool LoadObjects(HSQUIRRELVM vm);
00182 };
00183
00184 #endif