AIInstance Class Reference

Runtime information about an AI like a pointer to the squirrel vm and the current state. More...

#include <ai_instance.hpp>

Public Member Functions

 AIInstance (class AIInfo *info)
 Create a new AI.
void Continue ()
 An AI in multiplayer waits for the server to handle his DoCommand.
void GameLoop ()
 Run the GameLoop of an AI.
void CollectGarbage () const
 Let the VM collect any garbage.
class AIControllerGetController ()
 Get the controller attached to the instance.
bool IsDead () const
 Return the "this AI died" value.
void Save ()
 Call the AI Save function and save all data in the savegame.
void Load (int version)
 Load data from a savegame and store it on the stack.
bool CallLoad ()
 Call the AI Load function if it exists and data was loaded from a savegame.
void Suspend ()
 Reduces the number of opcodes the AI have left to zero.

Static Public Member Functions

static class AIStorageGetStorage ()
 Get the storage of this AI.
static void DoCommandReturn (AIInstance *instance)
 Return a true/false reply for a DoCommand.
static void DoCommandReturnVehicleID (AIInstance *instance)
 Return a VehicleID reply for a DoCommand.
static void DoCommandReturnSignID (AIInstance *instance)
 Return a SignID reply for a DoCommand.
static void DoCommandReturnGroupID (AIInstance *instance)
 Return a GroupID reply for a DoCommand.
static void SaveEmpty ()
 Don't save any data in the savegame.
static void LoadEmpty ()
 Load and discard data from a savegame.

Private Member Functions

void RegisterAPI ()
 Register all API functions to the VM.
bool LoadCompatibilityScripts (const char *api_version)
 Load squirrel scripts to emulate an older API.
void Died ()
 Tell the AI it died.

Static Private Member Functions

static bool SaveObject (HSQUIRRELVM vm, SQInteger index, int max_depth, bool test)
 Save one object (int / string / array / table) to the savegame.
static bool LoadObjects (HSQUIRRELVM vm)
 Load all objects from a savegame.

Private Attributes

class AIControllercontroller
 The AI main class.
class AIStoragestorage
 Some global information for each running AI.
class Squirrelengine
 A wrapper around the squirrel vm.
SQObject * instance
 Squirrel-pointer to the AI main class.
bool is_started
 Is the AIs constructor executed?
bool is_dead
 True if the AI has been stopped.
bool is_save_data_on_stack
 Is the save data still on the squirrel stack?
int suspend
 The amount of ticks to suspend this AI before it's allowed to continue.
AISuspendCallbackProccallback
 Callback that should be called in the next tick the AI runs.

Friends

class AIObject

Detailed Description

Runtime information about an AI like a pointer to the squirrel vm and the current state.

Definition at line 78 of file ai_instance.hpp.


Constructor & Destructor Documentation

AIInstance::AIInstance ( class AIInfo info  ) 

Member Function Documentation

void AIInstance::Continue (  ) 

An AI in multiplayer waits for the server to handle his DoCommand.

It keeps waiting for this until this function is called.

Definition at line 287 of file ai_instance.cpp.

References suspend.

void AIInstance::Load ( int  version  ) 

Load data from a savegame and store it on the stack.

Parameters:
version The version of the AI when saving, or -1 if this was not the original AI saving the game.

Definition at line 739 of file ai_instance.cpp.

References engine, Squirrel::GetVM(), is_save_data_on_stack, LoadEmpty(), LoadObjects(), and SlObject().

Referenced by AI::Load().

bool AIInstance::LoadObjects ( HSQUIRRELVM  vm  )  [static, private]

Load all objects from a savegame.

Returns:
True if the loading was successful.

Definition at line 673 of file ai_instance.cpp.

References SlArray(), SlObject(), SQSL_ARRAY, SQSL_ARRAY_TABLE_END, SQSL_BOOL, SQSL_INT, SQSL_NULL, SQSL_STRING, and SQSL_TABLE.

Referenced by Load(), and LoadEmpty().

bool AIInstance::SaveObject ( HSQUIRRELVM  vm,
SQInteger  index,
int  max_depth,
bool  test 
) [static, private]

Save one object (int / string / array / table) to the savegame.

Parameters:
vm The virtual machine to get all the data from.
index The index on the squirrel stack of the element to save.
max_depth The maximum depth recursive arrays / tables will be stored with before an error is returned.
test If true, don't really store the data but only check if it is valid.
Returns:
True if the saving was successful.

Definition at line 473 of file ai_instance.cpp.

References AILog::Error(), SlArray(), SlObject(), SQSL_ARRAY, SQSL_ARRAY_TABLE_END, SQSL_BOOL, SQSL_INT, SQSL_NULL, SQSL_STRING, and SQSL_TABLE.

Referenced by Save().

void AIInstance::Suspend (  ) 

Reduces the number of opcodes the AI have left to zero.

Unless the AI is in a state where it cannot suspend it will be suspended for the reminder of the current tick. This function is safe to call from within a function called by the AI.

Definition at line 667 of file ai_instance.cpp.

References _settings_game, GameSettings::ai, AISettings::ai_max_opcode_till_suspend, Squirrel::DecreaseOps(), engine, and Squirrel::GetVM().


The documentation for this class was generated from the following files:

Generated on Sun May 8 07:30:52 2011 for OpenTTD by  doxygen 1.6.1