OpenTTD Source: ScriptInstance Class Reference

OpenTTD Source 15.0-RC2

Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Private Types | Private Member Functions | Static Private Member Functions | Private Attributes | Friends
ScriptInstance Class Referenceabstract

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

`#include <script_instance.hpp>`

Inheritance diagram for ScriptInstance:

## Public Types
typedef std::variant< SQInteger, std::string, SQBool, SQSaveLoadType > | ScriptDataVariant
typedef std::list< ScriptDataVariant > | ScriptData

## Public Member Functions
| ScriptInstance (std::string_view api_name)
| Create a new script.
void | Initialize (const std::string &main_script, const std::string &instance_name, CompanyID company)
| Initialize the script and prepare it for its first run.
virtual int | GetSetting (const std::string &name)=0
| Get the value of a setting of the current instance.
virtual class ScriptInfo * | FindLibrary (const std::string &library, int version)=0
| Find a library.
void | Continue ()
| A script in multiplayer waits for the server to handle its DoCommand.
void | GameLoop ()
| Run the GameLoop of a script.
void | CollectGarbage ()
| Let the VM collect any garbage.
class ScriptStorage & | GetStorage ()
| Get the storage of this script.
ScriptLogTypes::LogData & | GetLogData ()
| Get the log pointer of this script.
class ScriptController & | GetController ()
| Get the controller attached to the instance.
bool | IsDead () const
| Return the "this script died" value.
bool | IsAlive () const
| Return whether the script is alive.
void | Save ()
| Call the script Save function and save all data in the savegame.
void | LoadOnStack (ScriptData *data)
| Store loaded data on the stack.
void | Pause ()
| Suspends the script for the current tick and then pause the execution of script.
bool | IsPaused ()
| Checks if the script is paused.
void | Unpause ()
| Resume execution of the script.
SQInteger | GetOpsTillSuspend ()
| Get the number of operations the script can execute before being suspended.
bool | DoCommandCallback (const CommandCost &result, const CommandDataBuffer &data, CommandDataBuffer result_data, Commands cmd)
| DoCommand callback function for all commands executed by scripts.
void | InsertEvent (class ScriptEvent *event)
| Insert an event for this script.
bool | IsSleeping ()
| Check if the instance is sleeping, which either happened because the script executed a DoCommand, executed this.Sleep() or it has been paused.
size_t | GetAllocatedMemory () const
bool | InShutdown () const
| Indicate whether this instance is currently being destroyed.
void | ReleaseSQObject (HSQOBJECT *obj)
| Decrease the ref count of a squirrel object.

## Static Public Member Functions
static void | DoCommandReturn (ScriptInstance &instance)
| Return a true/false reply for a DoCommand.
static void | DoCommandReturnVehicleID (ScriptInstance &instance)
| Return a VehicleID reply for a DoCommand.
static void | DoCommandReturnSignID (ScriptInstance &instance)
| Return a SignID reply for a DoCommand.
static void | DoCommandReturnGroupID (ScriptInstance &instance)
| Return a GroupID reply for a DoCommand.
static void | DoCommandReturnGoalID (ScriptInstance &instance)
| Return a GoalID reply for a DoCommand.
static void | DoCommandReturnStoryPageID (ScriptInstance &instance)
| Return a StoryPageID reply for a DoCommand.
static void | DoCommandReturnStoryPageElementID (ScriptInstance &instance)
| Return a StoryPageElementID reply for a DoCommand.
static void | DoCommandReturnLeagueTableID (ScriptInstance &instance)
| Return a LeagueTableID reply for a DoCommand.
static void | DoCommandReturnLeagueTableElementID (ScriptInstance &instance)
| Return a LeagueTableElementID reply for a DoCommand.
static void | SaveEmpty ()
| Don't save any data in the savegame.
static ScriptData * | Load (int version)
| Load data from a savegame.
static void | LoadEmpty ()
| Load and discard data from a savegame.

## Protected Member Functions
virtual void | RegisterAPI ()
| Register all API functions to the VM.
bool | LoadCompatibilityScripts (Subdirectory dir, std::span< const std::string_view > api_versions)
| Load squirrel scripts to emulate an older API.
virtual void | Died ()
| Tell the script it died.
virtual CommandCallbackData * | GetDoCommandCallback ()=0
| Get the callback handling DoCommands in case of networking.
virtual void | LoadDummyScript ()=0
| Load the dummy script.

## Protected Attributes
std::unique_ptr< class Squirrel > | engine
| A wrapper around the squirrel vm.
std::string | api_version {}
| Current API used by this script.

## Private Types
enum | SQSaveLoadType : uint8_t { SQSL_INT = 0x00 , SQSL_STRING = 0x01 , SQSL_ARRAY = 0x02 , SQSL_TABLE = 0x03 , SQSL_BOOL = 0x04 , SQSL_NULL = 0x05 , SQSL_INSTANCE = 0x06 , SQSL_ARRAY_TABLE_END = 0xFF }
| The type of the data that follows in the savegame. More...

## Private Member Functions
bool | CallLoad ()
| Call the script Load function if it exists and data was loaded from a savegame.
bool | LoadCompatibilityScript (std::string_view api_version, Subdirectory dir)
| Load squirrel script for a specific version to emulate an older API.

## 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 (ScriptData *data)
| Load all objects from a savegame.
static bool | LoadObjects (HSQUIRRELVM vm, ScriptData *data)

## Private Attributes
std::unique_ptr< class ScriptStorage > | storage
| Some global information for each running script.
std::unique_ptr< class ScriptController > | controller
| The script main class.
std::unique_ptr< SQObject > | instance
| Squirrel-pointer to the script main class.
bool | is_started = false
| Is the scripts constructor executed?
bool | is_dead = false
| True if the script has been stopped.
bool | is_save_data_on_stack = false
| Is the save data still on the squirrel stack?
int | suspend = 0
| The amount of ticks to suspend this script before it's allowed to continue.
bool | is_paused = false
| Is the script paused? (a paused script will not be executed until unpaused)
bool | in_shutdown = false
| Is this instance currently being destructed?
Script_SuspendCallbackProc * | callback = nullptr
| Callback that should be called in the next tick the script runs.
size_t | last_allocated_memory = 0
| Last known allocated memory value (for display for crashed scripts)

## Friends
class | ScriptObject
class | ScriptController

## Detailed Description

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

Definition at line 25 of file script_instance.hpp.

## Member Typedef Documentation

## ◆ ScriptData

typedef std::list<ScriptDataVariant> ScriptInstance::ScriptData

Definition at line 44 of file script_instance.hpp.

## ◆ ScriptDataVariant

typedef std::variant<SQInteger, std::string, SQBool, SQSaveLoadType> ScriptInstance::ScriptDataVariant

Definition at line 43 of file script_instance.hpp.

## Member Enumeration Documentation

## ◆ SQSaveLoadType

enum ScriptInstance::SQSaveLoadType : uint8_t
| private

The type of the data that follows in the savegame.

Enumerator
SQSL_INT | The following data is an integer.
SQSL_STRING | The following data is an string.
SQSL_ARRAY | The following data is an array.
SQSL_TABLE | The following data is an table.
SQSL_BOOL | The following data is a boolean.
SQSL_NULL | A null variable.
SQSL_INSTANCE | The following data is an instance.
SQSL_ARRAY_TABLE_END | Marks the end of an array or table, no data follows.

Definition at line 28 of file script_instance.hpp.

## Constructor & Destructor Documentation

## ◆ ScriptInstance()

ScriptInstance::ScriptInstance | ( | std::string_view | api_name | ) |

Create a new script.

Definition at line 51 of file script_instance.cpp.

References engine, PrintFunc(), and storage.

## ◆ ~ScriptInstance()

ScriptInstance::~ScriptInstance | ( |  | ) |
| virtual

Definition at line 155 of file script_instance.cpp.

## Member Function Documentation

## ◆ CallLoad()

bool ScriptInstance::CallLoad | ( |  | ) |
| private

Call the script Load function if it exists and data was loaded from a savegame.

Definition at line 771 of file script_instance.cpp.

References Squirrel::GetVM(), instance, is_save_data_on_stack, MAX_SL_OPS, and Squirrel::MethodExists().

Referenced by GameLoop().

## ◆ CollectGarbage()

void ScriptInstance::CollectGarbage | ( |  | ) |

Let the VM collect any garbage.

Definition at line 275 of file script_instance.cpp.

References engine, is_started, and IsDead().

## ◆ Continue()

void ScriptInstance::Continue | ( |  | ) |

A script in multiplayer waits for the server to handle its DoCommand.

It keeps waiting for this until this function is called.

Definition at line 166 of file script_instance.cpp.

References suspend.

Referenced by CcGame().

## ◆ Died()

void ScriptInstance::Died | ( |  | ) |
| protectedvirtual

Tell the script it died.

Reimplemented in AIInstance, and GameInstance.

Definition at line 172 of file script_instance.cpp.

References Debug, engine, in_shutdown, instance, is_dead, and last_allocated_memory.

Referenced by AIInstance::Died(), GameInstance::Died(), GameLoop(), and Initialize().

## ◆ DoCommandCallback()

bool ScriptInstance::DoCommandCallback | ( | const CommandCost & | result,
|  | const CommandDataBuffer & | data,
|  | CommandDataBuffer | result_data,
|  | Commands | cmd
| ) |  |

DoCommand callback function for all commands executed by scripts.

Parameters

  result | The result of the command.
  tile | The tile on which the command was executed.
  data | Command data as given to DoCommandPInternal.
  result_data | Extra data return from the command.
  cmd | cmd as given to DoCommandPInternal.

Returns
  true if we handled result.

Definition at line 813 of file script_instance.cpp.

References CMD_END, Debug, CommandCost::Failed(), CommandCost::GetCost(), CommandCost::GetErrorMessage(), and CommandCost::Succeeded().

## ◆ DoCommandReturn()

void ScriptInstance::DoCommandReturn | ( | ScriptInstance & | instance | ) |
| static

Return a true/false reply for a DoCommand.

Definition at line 283 of file script_instance.cpp.

References instance.

## ◆ DoCommandReturnGoalID()

void ScriptInstance::DoCommandReturnGoalID | ( | ScriptInstance & | instance | ) |
| static

Return a GoalID reply for a DoCommand.

Definition at line 303 of file script_instance.cpp.

References instance.

## ◆ DoCommandReturnGroupID()

void ScriptInstance::DoCommandReturnGroupID | ( | ScriptInstance & | instance | ) |
| static

Return a GroupID reply for a DoCommand.

Definition at line 298 of file script_instance.cpp.

References instance.

## ◆ DoCommandReturnLeagueTableElementID()

void ScriptInstance::DoCommandReturnLeagueTableElementID | ( | ScriptInstance & | instance | ) |
| static

Return a LeagueTableElementID reply for a DoCommand.

Definition at line 318 of file script_instance.cpp.

References instance.

## ◆ DoCommandReturnLeagueTableID()

void ScriptInstance::DoCommandReturnLeagueTableID | ( | ScriptInstance & | instance | ) |
| static

Return a LeagueTableID reply for a DoCommand.

Definition at line 323 of file script_instance.cpp.

References instance.

## ◆ DoCommandReturnSignID()

void ScriptInstance::DoCommandReturnSignID | ( | ScriptInstance & | instance | ) |
| static

Return a SignID reply for a DoCommand.

Definition at line 293 of file script_instance.cpp.

References instance.

## ◆ DoCommandReturnStoryPageElementID()

void ScriptInstance::DoCommandReturnStoryPageElementID | ( | ScriptInstance & | instance | ) |
| static

Return a StoryPageElementID reply for a DoCommand.

Definition at line 313 of file script_instance.cpp.

References instance.

## ◆ DoCommandReturnStoryPageID()

void ScriptInstance::DoCommandReturnStoryPageID | ( | ScriptInstance & | instance | ) |
| static

Return a StoryPageID reply for a DoCommand.

Definition at line 308 of file script_instance.cpp.

References instance.

## ◆ DoCommandReturnVehicleID()

void ScriptInstance::DoCommandReturnVehicleID | ( | ScriptInstance & | instance | ) |
| static

Return a VehicleID reply for a DoCommand.

Definition at line 288 of file script_instance.cpp.

References instance.

## ◆ FindLibrary()

virtual class ScriptInfo * ScriptInstance::FindLibrary | ( | const std::string & | library,
|  | int | version
| ) |  |
| pure virtual

Find a library.

Parameters

  library | The library name to find.
  version | The version the library should have.

Returns
  The library if found, nullptr otherwise.

Implemented in AIInstance, and GameInstance.

## ◆ GameLoop()

void ScriptInstance::GameLoop | ( |  | ) |

Run the GameLoop of a script.

Definition at line 185 of file script_instance.cpp.

References _current_company, _settings_game, callback, CallLoad(), controller, Died(), engine, Script_Suspend::GetSuspendCallback(), Script_Suspend::GetSuspendTime(), is_dead, is_paused, is_save_data_on_stack, is_started, IsDead(), MAX_CONSTRUCTOR_OPS, GameSettings::script, ScriptSettings::script_max_opcode_till_suspend, and suspend.

## ◆ GetAllocatedMemory()

size_t ScriptInstance::GetAllocatedMemory | ( |  | ) | const

Definition at line 844 of file script_instance.cpp.

## ◆ GetController()

class ScriptController & ScriptInstance::GetController | ( |  | ) |
| inline

Get the controller attached to the instance.

Definition at line 149 of file script_instance.hpp.

References controller.

## ◆ GetDoCommandCallback()

virtual CommandCallbackData * ScriptInstance::GetDoCommandCallback | ( |  | ) |
| protectedpure virtual

Get the callback handling DoCommands in case of networking.

Implemented in AIInstance, and GameInstance.

## ◆ GetLogData()

ScriptLogTypes::LogData & ScriptInstance::GetLogData | ( |  | ) |

Get the log pointer of this script.

Definition at line 335 of file script_instance.cpp.

## ◆ GetOpsTillSuspend()

SQInteger ScriptInstance::GetOpsTillSuspend | ( |  | ) |

Get the number of operations the script can execute before being suspended.

This function is safe to call from within a function called by the script.

Returns
  The number of operations to execute.

Definition at line 808 of file script_instance.cpp.

References Squirrel::GetOpsTillSuspend().

Referenced by Save().

## ◆ GetSetting()

virtual int ScriptInstance::GetSetting | ( | const std::string & | name | ) |
| pure virtual

Get the value of a setting of the current instance.

Parameters

  name | The name of the setting.

Returns
  the value for the setting, or -1 if the setting is not known.

Implemented in AIInstance, and GameInstance.

## ◆ GetStorage()

ScriptStorage & ScriptInstance::GetStorage | ( |  | ) |

Get the storage of this script.

Definition at line 329 of file script_instance.cpp.

References storage.

## ◆ Initialize()

void ScriptInstance::Initialize | ( | const std::string & | main_script,
|  | const std::string & | instance_name,
|  | CompanyID | company
| ) |  |

Initialize the script and prepare it for its first run.

Parameters

  main_script | The full path of the script to load.
  instance_name | The name of the instance out of the script to load.
  company | Which company this script is serving.

Definition at line 58 of file script_instance.cpp.

References controller, Died(), engine, Script_FatalError::GetErrorMessage(), instance, is_dead, IsDead(), LoadDummyScript(), and RegisterAPI().

Referenced by AIInstance::Initialize(), and GameInstance::Initialize().

## ◆ InsertEvent()

void ScriptInstance::InsertEvent | ( | class ScriptEvent * | event | ) |

Insert an event for this script.

Parameters

  event | The event to insert.

Definition at line 837 of file script_instance.cpp.

## ◆ InShutdown()

bool ScriptInstance::InShutdown | ( |  | ) | const
| inline

Indicate whether this instance is currently being destroyed.

Definition at line 250 of file script_instance.hpp.

References in_shutdown.

## ◆ IsAlive()

bool ScriptInstance::IsAlive | ( |  | ) | const
| inline

Return whether the script is alive.

Definition at line 163 of file script_instance.hpp.

References in_shutdown, and IsDead().

Referenced by GameInstance::RegisterAPI().

## ◆ IsDead()

bool ScriptInstance::IsDead | ( |  | ) | const
| inline

Return the "this script died" value.

Definition at line 158 of file script_instance.hpp.

References is_dead.

Referenced by CollectGarbage(), GameLoop(), Initialize(), IsAlive(), ScriptDebugWindow::IsDead(), LoadOnStack(), ShowScriptDebugWindowIfScriptError(), and ScriptDebugWindow::UpdateGSButtonState().

## ◆ IsPaused()

bool ScriptInstance::IsPaused | ( |  | ) |

Checks if the script is paused.

Returns
  true if the script is paused, otherwise false

Definition at line 595 of file script_instance.cpp.

References is_paused.

Referenced by ScriptDebugWindow::UpdateGSButtonState().

## ◆ IsSleeping()

bool ScriptInstance::IsSleeping | ( |  | ) |
| inline

Check if the instance is sleeping, which either happened because the script executed a DoCommand, executed this.Sleep() or it has been paused.

Definition at line 243 of file script_instance.hpp.

References suspend.

## ◆ Load()

ScriptInstance::ScriptData * ScriptInstance::Load | ( | int | version | ) |
| static

Load data from a savegame.

Parameters

  version | The version of the script when saving, or -1 if this was not the original script saving the game.

Returns
  a pointer to loaded data.

Definition at line 732 of file script_instance.cpp.

References _script_byte, _script_sl_byte, LoadEmpty(), LoadObjects(), and SlObject().

Referenced by AIPLChunkHandler::Load(), and GSDTChunkHandler::Load().

## ◆ LoadCompatibilityScript()

bool ScriptInstance::LoadCompatibilityScript | ( | std::string_view | api_version,
|  | Subdirectory | dir
| ) |  |
| private

Load squirrel script for a specific version to emulate an older API.

Parameters

  api_version | API version to load scripts for.
  dir | Subdirectory to find the scripts in.

Returns
  true iff script loading should proceed.

Definition at line 105 of file script_instance.cpp.

References api_version, Debug, engine, and FileExists().

Referenced by LoadCompatibilityScripts().

## ◆ LoadCompatibilityScripts()

bool ScriptInstance::LoadCompatibilityScripts | ( | Subdirectory | dir,
|  | std::span< const std::string_view > | api_versions
| ) |  |
| protected

Load squirrel scripts to emulate an older API.

Parameters

  dir | Subdirectory to find the scripts in.
  api_versions | List of available versions of the script type.

Returns
  true iff script loading should proceed.

Definition at line 125 of file script_instance.cpp.

References api_version, engine, and LoadCompatibilityScript().

Referenced by AIInstance::RegisterAPI(), and GameInstance::RegisterAPI().

## ◆ LoadDummyScript()

virtual void ScriptInstance::LoadDummyScript | ( |  | ) |
| protectedpure virtual

Load the dummy script.

Implemented in AIInstance, and GameInstance.

Referenced by Initialize().

## ◆ LoadEmpty()

void ScriptInstance::LoadEmpty | ( |  | ) |
| static

Load and discard data from a savegame.

Definition at line 723 of file script_instance.cpp.

References _script_byte, _script_sl_byte, LoadObjects(), and SlObject().

Referenced by AIPLChunkHandler::Load(), GSDTChunkHandler::Load(), and Load().

## ◆ LoadObjects() [1/2]

bool ScriptInstance::LoadObjects | ( | HSQUIRRELVM | vm,
|  | ScriptData * | data
| ) |  |
| staticprivate

Definition at line 651 of file script_instance.cpp.

## ◆ LoadObjects() [2/2]

bool ScriptInstance::LoadObjects | ( | ScriptData * | data | ) |
| staticprivate

Load all objects from a savegame.

Returns
  True if the loading was successful.

Definition at line 600 of file script_instance.cpp.

References _script_byte, _script_sl_byte, IsSavegameVersionBefore(), LoadObjects(), SlCopy(), SlErrorCorrupt(), SlObject(), SLV_SCRIPT_INT64, SQSL_ARRAY, SQSL_ARRAY_TABLE_END, SQSL_BOOL, SQSL_INSTANCE, SQSL_INT, SQSL_NULL, SQSL_STRING, SQSL_TABLE, and StrMakeValid().

Referenced by Load(), LoadEmpty(), LoadObjects(), and LoadOnStack().

## ◆ LoadOnStack()

void ScriptInstance::LoadOnStack | ( | ScriptData * | data | ) |

Store loaded data on the stack.

Parameters

  data | The loaded data to store on the stack.

Definition at line 749 of file script_instance.cpp.

References Script_FatalError::GetErrorMessage(), Squirrel::GetVM(), is_save_data_on_stack, IsDead(), and LoadObjects().

## ◆ Pause()

void ScriptInstance::Pause | ( |  | ) |

Suspends the script for the current tick and then pause the execution of script.

The script will not be resumed from its suspended state until the script has been unpaused.

Definition at line 581 of file script_instance.cpp.

References _settings_game, Squirrel::DecreaseOps(), engine, is_paused, GameSettings::script, and ScriptSettings::script_max_opcode_till_suspend.

## ◆ RegisterAPI()

void ScriptInstance::RegisterAPI | ( |  | ) |
| protectedvirtual

Register all API functions to the VM.

Reimplemented in AIInstance, and GameInstance.

Definition at line 100 of file script_instance.cpp.

References engine, and squirrel_register_std().

Referenced by Initialize(), AIInstance::RegisterAPI(), and GameInstance::RegisterAPI().

## ◆ ReleaseSQObject()

void ScriptInstance::ReleaseSQObject | ( | HSQOBJECT * | obj | ) |

Decrease the ref count of a squirrel object.

Parameters

  obj | The object to release.

Definition at line 850 of file script_instance.cpp.

References in_shutdown, and Squirrel::ReleaseObject().

## ◆ Save()

void ScriptInstance::Save | ( |  | ) |

Call the script Save function and save all data in the savegame.

Definition at line 513 of file script_instance.cpp.

References _script_byte, _script_sl_byte, engine, Script_FatalError::GetErrorMessage(), GetOpsTillSuspend(), is_dead, is_save_data_on_stack, is_started, MAX_SL_OPS, SaveEmpty(), SaveObject(), SlObject(), and SQUIRREL_MAX_DEPTH.

## ◆ SaveEmpty()

void ScriptInstance::SaveEmpty | ( |  | ) |
| static

Don't save any data in the savegame.

Definition at line 507 of file script_instance.cpp.

References _script_byte, _script_sl_byte, and SlObject().

Referenced by Game::Save(), Save(), and AI::Save().

## ◆ SaveObject()

bool ScriptInstance::SaveObject | ( | HSQUIRRELVM | vm,
|  | SQInteger | index,
|  | int | max_depth,
|  | bool | test
| ) |  |
| staticprivate

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 370 of file script_instance.cpp.

References _script_byte, _script_sl_byte, Squirrel::GetRealInstance(), SaveObject(), SlCopy(), SlObject(), SQSL_ARRAY, SQSL_ARRAY_TABLE_END, SQSL_BOOL, SQSL_INSTANCE, SQSL_INT, SQSL_NULL, SQSL_STRING, and SQSL_TABLE.

Referenced by Save(), and SaveObject().

## ◆ Unpause()

void ScriptInstance::Unpause | ( |  | ) |

Resume execution of the script.

This function will not actually execute the script, but set a flag so that the script is executed my the usual mechanism that executes the script.

Definition at line 590 of file script_instance.cpp.

References is_paused.

## Friends And Related Symbol Documentation

## ◆ ScriptController

friend class ScriptController
| friend

Definition at line 41 of file script_instance.hpp.

## ◆ ScriptObject

friend class ScriptObject
| friend

Definition at line 40 of file script_instance.hpp.

## Field Documentation

## ◆ api_version

std::string ScriptInstance::api_version {}
| protected

Current API used by this script.

Definition at line 260 of file script_instance.hpp.

Referenced by AIInstance::Initialize(), GameInstance::Initialize(), LoadCompatibilityScript(), and LoadCompatibilityScripts().

## ◆ callback

Script_SuspendCallbackProc* ScriptInstance::callback = nullptr
| private

Callback that should be called in the next tick the script runs.

Definition at line 301 of file script_instance.hpp.

Referenced by GameLoop().

## ◆ controller

std::unique_ptr<class ScriptController> ScriptInstance::controller
| private

The script main class.

Definition at line 292 of file script_instance.hpp.

Referenced by GameLoop(), GetController(), and Initialize().

## ◆ engine

std::unique_ptr<class Squirrel> ScriptInstance::engine
| protected

A wrapper around the squirrel vm.

Definition at line 259 of file script_instance.hpp.

Referenced by CollectGarbage(), Died(), GameLoop(), AIInstance::Initialize(), GameInstance::Initialize(), Initialize(), LoadCompatibilityScript(), LoadCompatibilityScripts(), AIInstance::LoadDummyScript(), Pause(), RegisterAPI(), AIInstance::RegisterAPI(), GameInstance::RegisterAPI(), Save(), and ScriptInstance().

## ◆ in_shutdown

bool ScriptInstance::in_shutdown = false
| private

Is this instance currently being destructed?

Definition at line 300 of file script_instance.hpp.

Referenced by Died(), InShutdown(), IsAlive(), and ReleaseSQObject().

## ◆ instance

std::unique_ptr<SQObject> ScriptInstance::instance
| private

Squirrel-pointer to the script main class.

Definition at line 293 of file script_instance.hpp.

Referenced by CallLoad(), Died(), DoCommandReturn(), DoCommandReturnGoalID(), DoCommandReturnGroupID(), DoCommandReturnLeagueTableElementID(), DoCommandReturnLeagueTableID(), DoCommandReturnSignID(), DoCommandReturnStoryPageElementID(), DoCommandReturnStoryPageID(), DoCommandReturnVehicleID(), and Initialize().

## ◆ is_dead

bool ScriptInstance::is_dead = false
| private

True if the script has been stopped.

Definition at line 296 of file script_instance.hpp.

Referenced by Died(), GameLoop(), Initialize(), IsDead(), and Save().

## ◆ is_paused

bool ScriptInstance::is_paused = false
| private

Is the script paused? (a paused script will not be executed until unpaused)

Definition at line 299 of file script_instance.hpp.

Referenced by GameLoop(), IsPaused(), Pause(), and Unpause().

## ◆ is_save_data_on_stack

bool ScriptInstance::is_save_data_on_stack = false
| private

Is the save data still on the squirrel stack?

Definition at line 297 of file script_instance.hpp.

Referenced by CallLoad(), GameLoop(), LoadOnStack(), and Save().

## ◆ is_started

bool ScriptInstance::is_started = false
| private

Is the scripts constructor executed?

Definition at line 295 of file script_instance.hpp.

Referenced by CollectGarbage(), GameLoop(), and Save().

## ◆ last_allocated_memory

size_t ScriptInstance::last_allocated_memory = 0
| private

Last known allocated memory value (for display for crashed scripts)

Definition at line 302 of file script_instance.hpp.

Referenced by Died().

## ◆ storage

std::unique_ptr<class ScriptStorage> ScriptInstance::storage
| private

Some global information for each running script.

Definition at line 291 of file script_instance.hpp.

Referenced by GetStorage(), and ScriptInstance().

## ◆ suspend

int ScriptInstance::suspend = 0
| private

The amount of ticks to suspend this script before it's allowed to continue.

Definition at line 298 of file script_instance.hpp.

Referenced by Continue(), GameLoop(), and IsSleeping().

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

- src/script/script_instance.hpp
- src/script/script_instance.cpp