AIController Class Reference

The Controller, the class each AI should extend. More...

#include <ai_controller.hpp>

Public Member Functions

 AIController ()
 Initializer of the AIController.
 ~AIController ()
 Destructor of the AIController.
void Start ()
 This function is called to start your AI.

Static Public Member Functions

static const char * GetClassName ()
 Get the name of this class to identify it towards squirrel.
static uint GetTick ()
 Find at which tick your AI currently is.
static int GetSetting (const char *name)
 Get the value of one of your settings you set via info.nut.
static uint GetVersion ()
 Get the OpenTTD version of this executable.
static void SetCommandDelay (int ticks)
 Change the minimum amount of time the AI should be put in suspend mode when you execute a command.
static void Sleep (int ticks)
 Sleep for X ticks.
static void Print (bool error_msg, const char *message)
 When Squirrel triggers a print, this function is called.

Private Types

typedef std::map< const char
*, const char *, StringCompare
LoadedLibraryList

Private Member Functions

void RegisterClasses ()
 Register all classes that are known inside the NoAI API.
bool LoadedLibrary (const char *library_name, int *next_number, char *fake_class_name, int fake_class_name_len)
 Check if a library is already loaded.
void AddLoadedLibrary (const char *library_name, const char *fake_class_name)
 Add a library as loaded.

Private Attributes

uint ticks
LoadedLibraryList loaded_library
int loaded_library_count

Friends

class AIScanner
class AIInstance

Detailed Description

The Controller, the class each AI should extend.

It creates the AI, makes sure the logic kicks in correctly, and that GetTick() has a valid value.

Definition at line 22 of file ai_controller.hpp.


Member Function Documentation

static const char* AIController::GetClassName (  )  [inline, static]

Get the name of this class to identify it towards squirrel.

Definition at line 28 of file ai_controller.hpp.

int AIController::GetSetting ( const char *  name  )  [static]

Get the value of one of your settings you set via info.nut.

Parameters:
name The name of the setting.
Returns:
the value for the setting, or -1 if the setting is not known.

Definition at line 69 of file ai_controller.cpp.

References _current_company, AIConfig::GetConfig(), and AIConfig::GetSetting().

uint AIController::GetTick (  )  [static]

Find at which tick your AI currently is.

Returns:
returns the current tick.

Definition at line 64 of file ai_controller.cpp.

References _current_company.

uint AIController::GetVersion (  )  [static]

Get the OpenTTD version of this executable.

The version is formatted with the bits having the following meaning: 28-31 major version 24-27 minor version 20-23 build 19 1 if it is a release, 0 if it is not. 0-18 revision number; 0 when the revision is unknown.

Returns:
The version in newgrf format.

Definition at line 74 of file ai_controller.cpp.

bool AIController::LoadedLibrary ( const char *  library_name,
int *  next_number,
char *  fake_class_name,
int  fake_class_name_len 
) [private]

Check if a library is already loaded.

If found, fake_class_name is filled with the fake class name as given via AddLoadedLibrary. If not found, next_number is set to the next number available for the fake namespace.

Parameters:
library_name The library to check if already loaded.
next_number The next available number for a library if not already loaded.
fake_class_name The name the library has if already loaded.
fake_class_name_len The maximum length of fake_class_name.
Returns:
True if the library is already loaded.

Definition at line 79 of file ai_controller.cpp.

References ttd_strlcpy().

Referenced by AIScanner::ImportLibrary().

void AIController::Print ( bool  error_msg,
const char *  message 
) [static]

When Squirrel triggers a print, this function is called.

Squirrel calls this when 'print' is used, or when the script made an error.

Parameters:
error_msg If true, it is a Squirrel error message.
message The message Squirrel logged.
Note:
Use AILog.Info/Warning/Error instead of 'print'.

Definition at line 43 of file ai_controller.cpp.

References AILog::Log(), AILog::LOG_SQ_ERROR, and AILog::LOG_SQ_INFO.

Referenced by PrintFunc().

void AIController::SetCommandDelay ( int  ticks  )  [static]

Change the minimum amount of time the AI should be put in suspend mode when you execute a command.

Normally in SP this is 1, and in MP it is what ever delay the server has been programmed to delay commands (normally between 1 and 5). To give a more 'real' effect to your AI, you can control that number here.

Parameters:
ticks The minimum amount of ticks to wait.
Precondition:
Ticks should be positive. Too big values will influence performance of the AI.
Note:
If the number is lower than the MP setting, the MP setting wins.

Definition at line 23 of file ai_controller.cpp.

References AIObject::SetDoCommandDelay().

void AIController::Sleep ( int  ticks  )  [static]

Sleep for X ticks.

The code continues after this line when the X AI ticks are passed. Mind that an AI tick is different from in-game ticks and differ per AI speed.

Parameters:
ticks the ticks to wait
Precondition:
ticks > 0.
Postcondition:
the value of GetTick() will be changed exactly 'ticks' in value after calling this.

Definition at line 29 of file ai_controller.cpp.

References AIObject::CanSuspend(), and AILog::Warning().

void AIController::Start (  ) 

This function is called to start your AI.

Your AI starts here. If you return from this function, your AI dies, so make sure that doesn't happen.

Note:
Cannot be called from within your AI.

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

Generated on Fri Mar 4 21:37:40 2011 for OpenTTD by  doxygen 1.6.1