# AI Class Reference

## Public Types

enum | StartNext { START_NEXT_EASY = DAYS_IN_YEAR * 2, START_NEXT_MEDIUM = DAYS_IN_YEAR, START_NEXT_HARD = DAYS_IN_YEAR / 2, START_NEXT_MIN = 1, START_NEXT_MAX = 3600, START_NEXT_DEVIATION = 60 }
| The default months AIs start after eachother.

## Static Public Member Functions

static bool | CanStartNew ()
| Is it possible to start a new AI company?
static void | StartNew (CompanyID company, bool rerandomise_ai=true)
| Start a new AI company.
static void | GameLoop ()
| Called every game-tick to let AIs do something.
static uint | GetTick ()
| Get the current AI tick.
static void | Stop (CompanyID company)
| Stop a company to be controlled by an AI.
static void | KillAll ()
| Kill any and all AIs we manage.
static void | Initialize ()
| Initialize the AI system.
static void | Uninitialize (bool keepConfig)
| Uninitialize the AI system.
static void | ResetConfig ()
| Reset all AIConfigs, and make them reload their AIInfo.
static void | NewEvent (CompanyID company, AIEvent *event)
| Queue a new event for an AI.
static void | BroadcastNewEvent (AIEvent *event, CompanyID skip_company=MAX_COMPANIES)
| Broadcast a new event to all active AIs.
static void | Save (CompanyID company)
| Save data from an AI to a savegame.
static void | Load (CompanyID company, int version)
| Load data for an AI from a savegame.
static int | GetStartNextTime ()
| Get the number of days before the next AI should start.
static char * | GetConsoleList (char *p, const char *last)
static const AIInfoList * | GetInfoList ()
static const AIInfoList * | GetUniqueInfoList ()
static AIInfo * | FindInfo (const char *name, int version, bool force_exact_match)
static bool | ImportLibrary (const char *library, const char *class_name, int version, HSQUIRRELVM vm)
static void | Rescan ()
static bool | HasAI (const struct ContentInfo *ci, bool md5sum)

## Static Private Attributes

static uint | frame_counter = 0
static class AIScanner * | ai_scanner = NULL

## Detailed Description

Definition at line 24 of file ai.hpp.

## Member Function Documentation

bool AI::CanStartNew | ( |  | ) | `[static]`

Is it possible to start a new AI company?

Returns:
  True if a new AI company can be started.

Definition at line 28 of file ai_core.cpp.

References _network_server, _networking, _settings_game, GameSettings::ai, and AISettings::ai_in_multiplayer.

void AI::ResetConfig | ( |  | ) | `[static]`

Reset all AIConfigs, and make them reload their AIInfo.

If the AIInfo could no longer be found, an error is reported to the user.

Definition at line 155 of file ai_core.cpp.

References _settings_game, _settings_newgame, GameSettings::ai_config, AIConfig::ChangeAI(), COMPANY_FIRST, AIConfig::GetName(), AIConfig::HasAI(), MAX_COMPANIES, and AIConfig::ResetInfo().

void AI::StartNew | ( | CompanyID | company,
|  | bool | rerandomise_ai = `true` |
| ) |  |  | `[static]`

Start a new AI company.

Parameters:

  | company | At which slot the AI company should start.
  | rerandomise_ai | Whether to rerandomise the configured AI.

Definition at line 34 of file ai_core.cpp.

References _network_server, _networking, AIConfig::ChangeAI(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_company_pool >::Get(), AIConfig::GetConfig(), AIConfig::GetInfo(), ScriptFileInfo::GetName(), InvalidateWindowData(), AIConfig::IsRandomAI(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_company_pool >::IsValidID(), and AIScanner::SelectRandomAI().

Referenced by DoStartupNewCompany().

void AI::Stop | ( | CompanyID | company | ) | `[static]`

Stop a company to be controlled by an AI.

Parameters:

  | company | The company from which the AI needs to detach.

Precondition:
  Company::IsValidAiID(company)

Definition at line 94 of file ai_core.cpp.

References _network_server, _networking, DeleteWindowById(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_company_pool >::Get(), and InvalidateWindowData().

Referenced by CmdCompanyCtrl(), and KillAll().

void AI::Uninitialize | ( | bool | keepConfig | ) | `[static]`

Uninitialize the AI system.

Parameters:

  | keepConfig | Should we keep AIConfigs, or can we free that memory?

Definition at line 130 of file ai_core.cpp.

References _settings_game, _settings_newgame, GameSettings::ai_config, COMPANY_FIRST, KillAll(), and MAX_COMPANIES.

Referenced by Initialize(), ShowHelp(), and ShutdownGame().

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

- src/ai/ai.hpp
- src/ai/ai_core.cpp