OpenTTD Source: src/ai/ai_gui.cpp File Reference

OpenTTD Source 1.11.0-RC1

Data Structures | Functions | Variables
ai_gui.cpp File Reference
`#include "../stdafx.h"`
`#include "../table/sprites.h"`
`#include "../error.h"`
`#include "../settings_gui.h"`
`#include "../querystring_gui.h"`
`#include "../stringfilter_type.h"`
`#include "../company_base.h"`
`#include "../company_gui.h"`
`#include "../strings_func.h"`
`#include "../window_func.h"`
`#include "../gfx_func.h"`
`#include "../command_func.h"`
`#include "../network/network.h"`
`#include "../settings_func.h"`
`#include "../network/network_content.h"`
`#include "../textfile_gui.h"`
`#include "../widgets/dropdown_type.h"`
`#include "../widgets/dropdown_func.h"`
`#include "../hotkeys.h"`
`#include "../core/geometry_func.hpp"`
`#include "../guitimer_func.h"`
`#include "ai.hpp"`
`#include "ai_gui.hpp"`
`#include "../script/api/script_log.hpp"`
`#include "ai_config.hpp"`
`#include "ai_info.hpp"`
`#include "ai_instance.hpp"`
`#include "../game/game.hpp"`
`#include "../game/game_config.hpp"`
`#include "../game/game_info.hpp"`
`#include "../game/game_instance.hpp"`
`#include "table/strings.h"`
`#include <vector>`
`#include "../safeguards.h"`

Go to the source code of this file.

## Data Structures
struct | AIListWindow
| Window that let you choose an available AI. More...
struct | AISettingsWindow
| Window for settings the parameters of an AI. More...
struct | ScriptTextfileWindow
| Window for displaying the textfile of a AI. More...
struct | AIConfigWindow
| Window to configure which AIs will start. More...
struct | AIDebugWindow
| Window with everything an AI prints via ScriptLog. More...

## Functions
static ScriptConfig * | GetConfig (CompanyID slot)
static void | ShowAIListWindow (CompanyID slot)
| Open the AI list window to chose an AI for the given company slot. More...
static void | ShowAISettingsWindow (CompanyID slot)
| Open the AI settings window to change the AI settings for an AI. More...
void | ShowScriptTextfileWindow (TextfileType file_type, CompanyID slot)
| Open the AI version of the textfile window. More...
void | ShowAIConfigWindow ()
| Open the AI config window.
static bool | SetScriptButtonColour (NWidgetCore &button, bool dead, bool paused)
| Set the widget colour of a button based on the state of the script. More...
NWidgetBase * | MakeCompanyButtonRowsAIDebug (int *biggest_index)
| Make a number of rows with buttons for each company for the AI debug window.
static EventState | AIDebugGlobalHotkeys (int hotkey)
| Handler for global hotkeys of the AIDebugWindow. More...
Window * | ShowAIDebugWindow (CompanyID show_company)
| Open the AI debug window and select the given company. More...
void | InitializeAIGui ()
| Reset the AI windows to their initial state.
void | ShowAIDebugWindowIfAIError ()
| Open the AI debug window if one of the AI scripts has crashed.

## Variables
static const NWidgetPart | _nested_ai_list_widgets []
| Widgets for the AI list window. More...
static WindowDesc | _ai_list_desc (WDP_CENTER, "settings_script_list", 200, 234, WC_AI_LIST, WC_NONE, 0, _nested_ai_list_widgets, lengthof(_nested_ai_list_widgets))
| Window definition for the ai list window.
static const NWidgetPart | _nested_ai_settings_widgets []
| Widgets for the AI settings window. More...
static WindowDesc | _ai_settings_desc (WDP_CENTER, "settings_script", 500, 208, WC_AI_SETTINGS, WC_NONE, 0, _nested_ai_settings_widgets, lengthof(_nested_ai_settings_widgets))
| Window definition for the AI settings window.
static const NWidgetPart | _nested_ai_config_widgets []
| Widgets for the configure AI window.
static WindowDesc | _ai_config_desc (WDP_CENTER, "settings_script_config", 0, 0, WC_GAME_OPTIONS, WC_NONE, 0, _nested_ai_config_widgets, lengthof(_nested_ai_config_widgets))
| Window definition for the configure AI window.
static Hotkey | aidebug_hotkeys []
static const NWidgetPart | _nested_ai_debug_widgets []
| Widgets for the AI debug window.
static WindowDesc | _ai_debug_desc (WDP_AUTO, "script_debug", 600, 450, WC_AI_DEBUG, WC_NONE, 0, _nested_ai_debug_widgets, lengthof(_nested_ai_debug_widgets), &AIDebugWindow::hotkeys)
| Window definition for the AI debug window.

## Detailed Description

Window for configuring the AIs

Definition in file ai_gui.cpp.

## Function Documentation

## ◆ AIDebugGlobalHotkeys()

static EventState AIDebugGlobalHotkeys | ( | int | hotkey | ) |
| static

Handler for global hotkeys of the AIDebugWindow.

Parameters

  hotkey | Hotkey

Returns
  ES_HANDLED if hotkey was accepted.

Definition at line 1442 of file ai_gui.cpp.

## ◆ SetScriptButtonColour()

static bool SetScriptButtonColour | ( | NWidgetCore & | button,
|  | bool | dead,
|  | bool | paused
| ) |  |
| static

Set the widget colour of a button based on the state of the script.

(dead or alive)

Parameters

  button | the button to update.
  dead | true if the script is dead, otherwise false.
  paused | true if the script is paused, otherwise false.

Returns
  true if the colour was changed and the window need to be marked as dirty.

Definition at line 985 of file ai_gui.cpp.

Referenced by AIDebugWindow::OnPaint().

## ◆ ShowAIDebugWindow()

Window* ShowAIDebugWindow | ( | CompanyID | show_company | ) |

Open the AI debug window and select the given company.

Parameters

  show_company | Display debug information about this AI company.

Definition at line 1535 of file ai_gui.cpp.

References _ai_debug_desc, _network_server, _networking, BringWindowToFrontById(), AIDebugWindow::ChangeToAI(), INVALID_COMPANY, INVALID_STRING_ID, ShowErrorMessage(), WC_AI_DEBUG, and WL_INFO.

Referenced by AIInstance::Died(), GameInstance::Died(), and ShowAIDebugWindowIfAIError().

## ◆ ShowAIListWindow()

static void ShowAIListWindow | ( | CompanyID | slot | ) |
| static

Open the AI list window to chose an AI for the given company slot.

Parameters

  slot | The slot to change the AI of.

Definition at line 277 of file ai_gui.cpp.

References _ai_list_desc, DeleteWindowByClass(), and WC_AI_LIST.

## ◆ ShowAISettingsWindow()

static void ShowAISettingsWindow | ( | CompanyID | slot | ) |
| static

Open the AI settings window to change the AI settings for an AI.

Parameters

  slot | The CompanyID of the AI to change the settings.

Definition at line 629 of file ai_gui.cpp.

References _ai_settings_desc, DeleteWindowByClass(), WC_AI_LIST, and WC_AI_SETTINGS.

Referenced by AIDebugWindow::OnClick().

## ◆ ShowScriptTextfileWindow()

void ShowScriptTextfileWindow | ( | TextfileType | file_type,
|  | CompanyID | slot
| ) |  |

Open the AI version of the textfile window.

Parameters

  file_type | The type of textfile to display.
  slot | The slot the Script is using.

Definition at line 670 of file ai_gui.cpp.

References DeleteWindowById(), and WC_TEXTFILE.

## Variable Documentation

## ◆ _nested_ai_list_widgets

const NWidgetPart _nested_ai_list_widgets[]
| static

Initial value:
= {
NWidget(NWID_HORIZONTAL),
NWidget(WWT_CLOSEBOX, COLOUR_MAUVE),
NWidget(WWT_CAPTION, COLOUR_MAUVE, WID_AIL_CAPTION), SetDataTip(STR_AI_LIST_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
NWidget(WWT_DEFSIZEBOX, COLOUR_MAUVE),
EndContainer(),
NWidget(NWID_HORIZONTAL),
NWidget(WWT_MATRIX, COLOUR_MAUVE, WID_AIL_LIST), SetMinimalSize(188, 112), SetFill(1, 1), SetResize(1, 1), SetMatrixDataTip(1, 0, STR_AI_LIST_TOOLTIP), SetScrollbar(WID_AIL_SCROLLBAR),
NWidget(NWID_VSCROLLBAR, COLOUR_MAUVE, WID_AIL_SCROLLBAR),
EndContainer(),
NWidget(WWT_PANEL, COLOUR_MAUVE, WID_AIL_INFO_BG), SetMinimalTextLines(8, WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM), SetResize(1, 0),
EndContainer(),
NWidget(NWID_HORIZONTAL),
NWidget(NWID_HORIZONTAL, NC_EQUALSIZE),
NWidget(WWT_PUSHTXTBTN, COLOUR_MAUVE, WID_AIL_ACCEPT), SetResize(1, 0), SetFill(1, 0), SetDataTip(STR_AI_LIST_ACCEPT, STR_AI_LIST_ACCEPT_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, COLOUR_MAUVE, WID_AIL_CANCEL), SetResize(1, 0), SetFill(1, 0), SetDataTip(STR_AI_LIST_CANCEL, STR_AI_LIST_CANCEL_TOOLTIP),
EndContainer(),
NWidget(WWT_RESIZEBOX, COLOUR_MAUVE),
EndContainer(),
}

Widgets for the AI list window.

Definition at line 244 of file ai_gui.cpp.

## ◆ _nested_ai_settings_widgets

const NWidgetPart _nested_ai_settings_widgets[]
| static

Initial value:
= {
NWidget(NWID_HORIZONTAL),
NWidget(WWT_CLOSEBOX, COLOUR_MAUVE),
NWidget(WWT_CAPTION, COLOUR_MAUVE, WID_AIS_CAPTION), SetDataTip(STR_AI_SETTINGS_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
NWidget(WWT_DEFSIZEBOX, COLOUR_MAUVE),
EndContainer(),
NWidget(NWID_HORIZONTAL),
NWidget(WWT_MATRIX, COLOUR_MAUVE, WID_AIS_BACKGROUND), SetMinimalSize(188, 182), SetResize(1, 1), SetFill(1, 0), SetMatrixDataTip(1, 0, STR_NULL), SetScrollbar(WID_AIS_SCROLLBAR),
NWidget(NWID_VSCROLLBAR, COLOUR_MAUVE, WID_AIS_SCROLLBAR),
EndContainer(),
NWidget(NWID_HORIZONTAL),
NWidget(NWID_HORIZONTAL, NC_EQUALSIZE),
NWidget(WWT_PUSHTXTBTN, COLOUR_MAUVE, WID_AIS_ACCEPT), SetResize(1, 0), SetFill(1, 0), SetDataTip(STR_AI_SETTINGS_CLOSE, STR_NULL),
NWidget(WWT_PUSHTXTBTN, COLOUR_MAUVE, WID_AIS_RESET), SetResize(1, 0), SetFill(1, 0), SetDataTip(STR_AI_SETTINGS_RESET, STR_NULL),
EndContainer(),
NWidget(WWT_RESIZEBOX, COLOUR_MAUVE),
EndContainer(),
}

Widgets for the AI settings window.

Definition at line 598 of file ai_gui.cpp.

## ◆ aidebug_hotkeys

Hotkey aidebug_hotkeys[]
| static

Initial value:
= {
Hotkey('1', "company_1", WID_AID_COMPANY_BUTTON_START),
Hotkey('2', "company_2", WID_AID_COMPANY_BUTTON_START + 1),
Hotkey('3', "company_3", WID_AID_COMPANY_BUTTON_START + 2),
Hotkey('4', "company_4", WID_AID_COMPANY_BUTTON_START + 3),
Hotkey('5', "company_5", WID_AID_COMPANY_BUTTON_START + 4),
Hotkey('6', "company_6", WID_AID_COMPANY_BUTTON_START + 5),
Hotkey('7', "company_7", WID_AID_COMPANY_BUTTON_START + 6),
Hotkey('8', "company_8", WID_AID_COMPANY_BUTTON_START + 7),
Hotkey('9', "company_9", WID_AID_COMPANY_BUTTON_START + 8),
Hotkey((uint16)0, "company_10", WID_AID_COMPANY_BUTTON_START + 9),
Hotkey((uint16)0, "company_11", WID_AID_COMPANY_BUTTON_START + 10),
Hotkey((uint16)0, "company_12", WID_AID_COMPANY_BUTTON_START + 11),
Hotkey((uint16)0, "company_13", WID_AID_COMPANY_BUTTON_START + 12),
Hotkey((uint16)0, "company_14", WID_AID_COMPANY_BUTTON_START + 13),
Hotkey((uint16)0, "company_15", WID_AID_COMPANY_BUTTON_START + 14),
Hotkey('S', "settings", WID_AID_SETTINGS),
Hotkey('0', "game_script", WID_AID_SCRIPT_GAME),
Hotkey((uint16)0, "reload", WID_AID_RELOAD_TOGGLE),
Hotkey('B', "break_toggle", WID_AID_BREAK_STR_ON_OFF_BTN),
Hotkey('F', "break_string", WID_AID_BREAK_STR_EDIT_BOX),
Hotkey('C', "match_case", WID_AID_MATCH_CASE_BTN),
Hotkey(WKC_RETURN, "continue", WID_AID_CONTINUE_BTN),
HOTKEY_LIST_END
}

Definition at line 1450 of file ai_gui.cpp.

WID_AIL_ACCEPT
@ WID_AIL_ACCEPT
Accept button.
Definition: ai_widget.h:22
WD_FRAMERECT_TOP
@ WD_FRAMERECT_TOP
Offset at top to draw the frame rectangular area.
Definition: window_gui.h:62
SetScrollbar
static NWidgetPart SetScrollbar(int index)
Attach a scrollbar to a widget.
Definition: widget_type.h:1094
WID_AIS_RESET
@ WID_AIS_RESET
Reset button.
Definition: ai_widget.h:32
WID_AID_BREAK_STR_ON_OFF_BTN
@ WID_AID_BREAK_STR_ON_OFF_BTN
Enable breaking on string.
Definition: ai_widget.h:65
WID_AID_RELOAD_TOGGLE
@ WID_AID_RELOAD_TOGGLE
Reload button.
Definition: ai_widget.h:59
WWT_CAPTION
@ WWT_CAPTION
Window caption (window title between closebox and stickybox)
Definition: widget_type.h:59
WWT_DEFSIZEBOX
@ WWT_DEFSIZEBOX
Default window size box (at top-right of a window, between WWT_SHADEBOX and WWT_STICKYBOX)
Definition: widget_type.h:63
NWID_HORIZONTAL
@ NWID_HORIZONTAL
Horizontal container.
Definition: widget_type.h:73
WWT_MATRIX
@ WWT_MATRIX
Grid of rows and columns.
Definition: widget_type.h:57
WID_AIL_SCROLLBAR
@ WID_AIL_SCROLLBAR
Scrollbar next to the AI list.
Definition: ai_widget.h:20
SetResize
static NWidgetPart SetResize(int16 dx, int16 dy)
Widget part function for setting the resize step.
Definition: widget_type.h:929
WID_AID_SETTINGS
@ WID_AID_SETTINGS
Settings button.
Definition: ai_widget.h:57
WID_AIS_ACCEPT
@ WID_AIS_ACCEPT
Accept button.
Definition: ai_widget.h:31
WID_AID_MATCH_CASE_BTN
@ WID_AID_MATCH_CASE_BTN
Checkbox to use match caching or not.
Definition: ai_widget.h:67
SetDataTip
static NWidgetPart SetDataTip(uint32 data, StringID tip)
Widget part function for setting the data and tooltip.
Definition: widget_type.h:1013
WID_AIS_SCROLLBAR
@ WID_AIS_SCROLLBAR
Scrollbar to scroll through all settings.
Definition: ai_widget.h:30
NC_EQUALSIZE
@ NC_EQUALSIZE
Value of the NCB_EQUALSIZE flag.
Definition: widget_type.h:428
WID_AIL_CANCEL
@ WID_AIL_CANCEL
Cancel button.
Definition: ai_widget.h:23
WD_FRAMERECT_BOTTOM
@ WD_FRAMERECT_BOTTOM
Offset at bottom to draw the frame rectangular area.
Definition: window_gui.h:63
WWT_PUSHTXTBTN
@ WWT_PUSHTXTBTN
Normal push-button (no toggle button) with text caption.
Definition: widget_type.h:102
WID_AID_COMPANY_BUTTON_START
@ WID_AID_COMPANY_BUTTON_START
Buttons in the VIEW.
Definition: ai_widget.h:62
SetMatrixDataTip
static NWidgetPart SetMatrixDataTip(uint8 cols, uint8 rows, StringID tip)
Widget part function for setting the data and tooltip of WWT_MATRIX widgets.
Definition: widget_type.h:1031
WID_AIS_BACKGROUND
@ WID_AIS_BACKGROUND
Panel to draw the settings on.
Definition: ai_widget.h:29
WWT_CLOSEBOX
@ WWT_CLOSEBOX
Close box (at top-left of a window)
Definition: widget_type.h:67
WWT_RESIZEBOX
@ WWT_RESIZEBOX
Resize box (normally at bottom-right of a window)
Definition: widget_type.h:66
WID_AID_CONTINUE_BTN
@ WID_AID_CONTINUE_BTN
Continue button.
Definition: ai_widget.h:68
EndContainer
static NWidgetPart EndContainer()
Widget part function for denoting the end of a container (horizontal, vertical, WWT_FRAME,...
Definition: widget_type.h:998
NWID_VSCROLLBAR
@ NWID_VSCROLLBAR
Vertical scrollbar.
Definition: widget_type.h:82
WID_AID_BREAK_STR_EDIT_BOX
@ WID_AID_BREAK_STR_EDIT_BOX
Edit box for the string to break on.
Definition: ai_widget.h:66
WID_AIL_INFO_BG
@ WID_AIL_INFO_BG
Panel to draw some AI information on.
Definition: ai_widget.h:21
NWidget
static NWidgetPart NWidget(WidgetType tp, Colours col, int16 idx=-1)
Widget part function for starting a new 'real' widget.
Definition: widget_type.h:1113
WID_AIS_CAPTION
@ WID_AIS_CAPTION
Caption of the window.
Definition: ai_widget.h:28
SetMinimalSize
static NWidgetPart SetMinimalSize(int16 x, int16 y)
Widget part function for setting the minimal size.
Definition: widget_type.h:946
WWT_PANEL
@ WWT_PANEL
Simple depressed panel.
Definition: widget_type.h:48
WID_AID_SCRIPT_GAME
@ WID_AID_SCRIPT_GAME
Game Script button.
Definition: ai_widget.h:58
WID_AIL_LIST
@ WID_AIL_LIST
The matrix with all available AIs.
Definition: ai_widget.h:19
SetFill
static NWidgetPart SetFill(uint fill_x, uint fill_y)
Widget part function for setting filling.
Definition: widget_type.h:982
WID_AIL_CAPTION
@ WID_AIL_CAPTION
Caption of the window.
Definition: ai_widget.h:18
SetMinimalTextLines
static NWidgetPart SetMinimalTextLines(uint8 lines, uint8 spacing, FontSize size=FS_NORMAL)
Widget part function for setting the minimal text lines.
Definition: widget_type.h:964
Hotkey
All data for a single hotkey.
Definition: hotkeys.h:22