ai_instance.hpp

Go to the documentation of this file.
00001 /* $Id: ai_instance.hpp 17236 2009-08-20 13:25:21Z rubidium $ */
00002 
00005 #ifndef AI_INSTANCE_HPP
00006 #define AI_INSTANCE_HPP
00007 
00011 typedef void (AISuspendCallbackProc)(class AIInstance *instance);
00012 
00016 class AI_VMSuspend {
00017 public:
00018   AI_VMSuspend(int time, AISuspendCallbackProc *callback) :
00019     time(time),
00020     callback(callback)
00021   {}
00022 
00023   int GetSuspendTime() { return time; }
00024   AISuspendCallbackProc *GetSuspendCallback() { return callback; }
00025 
00026 private:
00027   int time;
00028   AISuspendCallbackProc *callback;
00029 };
00030 
00034 class AI_FatalError {
00035 public:
00036   AI_FatalError(const char *msg) :
00037     msg(msg)
00038   {}
00039 
00040   const char *GetErrorMessage() { return msg; }
00041 
00042 private:
00043   const char *msg;
00044 };
00045 
00046 class AIInstance {
00047 public:
00048   friend class AIObject;
00049   AIInstance(class AIInfo *info);
00050   ~AIInstance();
00051 
00056   void Continue();
00057 
00061   void GameLoop();
00062 
00066   void CollectGarbage();
00067 
00071   static class AIStorage *GetStorage();
00072 
00076   static void DoCommandReturn(AIInstance *instance);
00077 
00081   static void DoCommandReturnVehicleID(AIInstance *instance);
00082 
00086   static void DoCommandReturnSignID(AIInstance *instance);
00087 
00091   static void DoCommandReturnGroupID(AIInstance *instance);
00092 
00096   class AIController *GetController() { return controller; }
00097 
00101   inline bool IsDead() { return this->is_dead; }
00102 
00106   void Save();
00107 
00111   static void SaveEmpty();
00112 
00118   void Load(int version);
00119 
00124   bool CallLoad();
00125 
00129   static void LoadEmpty();
00130 
00131 private:
00132   static class AIInstance *current_instance; 
00133 
00134   class AIController *controller;
00135   class AIStorage *storage;
00136   class Squirrel *engine;
00137   SQObject *instance;
00138 
00139   bool is_started;
00140   bool is_dead;
00141   bool is_save_data_on_stack;
00142   int suspend;
00143   AISuspendCallbackProc *callback;
00144 
00148   void RegisterAPI();
00149 
00153   void Died();
00154 
00164   static bool SaveObject(HSQUIRRELVM vm, SQInteger index, int max_depth, bool test);
00165 
00170   static bool LoadObjects(HSQUIRRELVM vm);
00171 };
00172 
00173 #endif /* AI_INSTANCE_HPP */

Generated on Mon Dec 14 20:59:57 2009 for OpenTTD by  doxygen 1.5.6