OpenTTD Source: src/cheat_gui.cpp File Reference

OpenTTD Source 12.2

Data Structures | Typedefs | Enumerations | Functions | Variables
cheat_gui.cpp File Reference
`#include "stdafx.h"`
`#include "command_func.h"`
`#include "cheat_type.h"`
`#include "company_base.h"`
`#include "company_func.h"`
`#include "date_func.h"`
`#include "saveload/saveload.h"`
`#include "vehicle_base.h"`
`#include "textbuf_gui.h"`
`#include "window_gui.h"`
`#include "string_func.h"`
`#include "strings_func.h"`
`#include "window_func.h"`
`#include "rail_gui.h"`
`#include "settings_gui.h"`
`#include "company_gui.h"`
`#include "linkgraph/linkgraphschedule.h"`
`#include "map_func.h"`
`#include "tile_map.h"`
`#include "newgrf.h"`
`#include "error.h"`
`#include "widgets/cheat_widget.h"`
`#include "table/sprites.h"`
`#include "safeguards.h"`

Go to the source code of this file.

## Data Structures
struct | CheatEntry
| Information of a cheat. More...
struct | CheatWindow
| GUI for the cheats. More...

## Typedefs
typedef int32 | CheckButtonClick(int32 p1, int32 p2)
| Signature of handler function when user clicks at a cheat. More...

## Enumerations
enum | CheatNumbers { CHT_MONEY, CHT_CHANGE_COMPANY, CHT_EXTRA_DYNAMITE, CHT_CROSSINGTUNNELS, CHT_NO_JETCRASH, CHT_SETUP_PROD, CHT_EDIT_MAX_HL, CHT_CHANGE_DATE, CHT_NUM_CHEATS }
| Available cheats. More...

## Functions
static int32 | ClickMoneyCheat (int32 p1, int32 p2)
| Handle cheating of money. More...
static int32 | ClickChangeCompanyCheat (int32 p1, int32 p2)
| Handle changing of company. More...
static int32 | ClickSetProdCheat (int32 p1, int32 p2)
| Allow (or disallow) changing production of all industries. More...
void | EnginesMonthlyLoop ()
| Monthly update of the availability, reliability, and preview offers of the engines.
static int32 | ClickChangeDateCheat (int32 p1, int32 p2)
| Handle changing of the current year. More...
static int32 | ClickChangeMaxHlCheat (int32 p1, int32 p2)
| Allow (or disallow) a change of the maximum allowed heightlevel. More...
void | ShowCheatWindow ()
| Open cheat window.

## Variables
static int32 | _money_cheat_amount = 10000000
| The 'amount' to cheat with. More...
static const CheatEntry | _cheats_ui []
| The available cheats. More...
static const NWidgetPart | _nested_cheat_widgets []
| Widget definitions of the cheat GUI. More...
static WindowDesc | _cheats_desc (WDP_AUTO, "cheats", 0, 0, WC_CHEATS, WC_NONE, 0, _nested_cheat_widgets, lengthof(_nested_cheat_widgets))
| Window description of the cheats GUI.

## Detailed Description

GUI related to cheating.

Definition in file cheat_gui.cpp.

## Typedef Documentation

## ◆ CheckButtonClick

typedef int32 CheckButtonClick(int32 p1, int32 p2)

Signature of handler function when user clicks at a cheat.

Parameters

  p1 | The new value.
  p2 | Change direction (+1, +1), `0` for boolean settings.

Definition at line 171 of file cheat_gui.cpp.

## Enumeration Type Documentation

## ◆ CheatNumbers

enum CheatNumbers

Available cheats.

Enumerator
CHT_MONEY | Change amount of money.
CHT_CHANGE_COMPANY | Switch company.
CHT_EXTRA_DYNAMITE | Dynamite anything.
CHT_CROSSINGTUNNELS | Allow tunnels to cross each other.
CHT_NO_JETCRASH | Disable jet-airplane crashes.
CHT_SETUP_PROD | Allow manually editing of industry production.
CHT_EDIT_MAX_HL | Edit maximum allowed heightlevel.
CHT_CHANGE_DATE | Do time traveling.
CHT_NUM_CHEATS | Number of cheats.

Definition at line 153 of file cheat_gui.cpp.

## Function Documentation

## ◆ ClickChangeCompanyCheat()

static int32 ClickChangeCompanyCheat | ( | int32 | p1,
|  | int32 | p2
| ) |  |
| static

Handle changing of company.

Parameters

  p1 | company to set to
  p2 | is -1 or +1 (down/up)

Returns
  The new company.

Definition at line 67 of file cheat_gui.cpp.

References _local_company, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::GetPoolSize(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::IsValidID(), and SetLocalCompany().

## ◆ ClickChangeDateCheat()

static int32 ClickChangeDateCheat | ( | int32 | p1,
|  | int32 | p2
| ) |  |
| static

Handle changing of the current year.

Parameters

  p1 | Unused.
  p2 | +1 (increase) or -1 (decrease).

Returns
  New year.

Definition at line 101 of file cheat_gui.cpp.

References _cur_year, _date, _date_fract, Clamp(), ConvertDateToYMD(), ConvertYMDToDate(), YearMonthDay::day, EnginesMonthlyLoop(), LinkGraphSchedule::instance, InvalidateWindowClassesData(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_vehicle_pool >::Iterate(), MAX_YEAR, MIN_YEAR, YearMonthDay::month, ResetSignalVariant(), SetDate(), SetWindowDirty(), LinkGraphSchedule::ShiftDates(), WC_BUILD_OBJECT, WC_BUILD_STATION, and WC_STATUS_BAR.

## ◆ ClickChangeMaxHlCheat()

static int32 ClickChangeMaxHlCheat | ( | int32 | p1,
|  | int32 | p2
| ) |  |
| static

Allow (or disallow) a change of the maximum allowed heightlevel.

Parameters

  p1 | new value
  p2 | unused

Returns
  New value (or unchanged old value) of the maximum allowed heightlevel value.

Definition at line 128 of file cheat_gui.cpp.

References _settings_game, Clamp(), GameSettings::construction, INVALID_STRING_ID, InvalidateWindowClassesData(), ConstructionSettings::map_height_limit, MapSize(), MAX_MAP_HEIGHT_LIMIT, MIN_MAP_HEIGHT_LIMIT, ReloadNewGRFData(), ShowErrorMessage(), TileHeight(), WC_SMALLMAP, and WL_ERROR.

## ◆ ClickMoneyCheat()

static int32 ClickMoneyCheat | ( | int32 | p1,
|  | int32 | p2
| ) |  |
| static

Handle cheating of money.

Note that the amount of money of a company must be changed through a command rather than by setting a variable. Since the cheat data structure expects a variable, the amount of given/taken money is used for this purpose.

Parameters

  p1 | not used.
  p2 | is -1 or +1 (down/up)

Returns
  Amount of money cheat.

Definition at line 55 of file cheat_gui.cpp.

References _money_cheat_amount, CMD_MONEY_CHEAT, and DoCommandP().

## ◆ ClickSetProdCheat()

static int32 ClickSetProdCheat | ( | int32 | p1,
|  | int32 | p2
| ) |  |
| static

Allow (or disallow) changing production of all industries.

Parameters

  p1 | new value
  p2 | unused

Returns
  New value allowing change of industry production.

Definition at line 86 of file cheat_gui.cpp.

References _cheats, InvalidateWindowClassesData(), Cheats::setup_prod, Cheat::value, and WC_INDUSTRY_VIEW.

## Variable Documentation

## ◆ _cheats_ui

const CheatEntry _cheats_ui[]
| static

Initial value:
= {
{SLE_INT32, STR_CHEAT_MONEY, &_money_cheat_amount, &_cheats.money.been_used, &ClickMoneyCheat },
{SLE_UINT8, STR_CHEAT_CHANGE_COMPANY, &_local_company, &_cheats.switch_company.been_used, &ClickChangeCompanyCheat },
{SLE_BOOL, STR_CHEAT_EXTRA_DYNAMITE, &_cheats.magic_bulldozer.value, &_cheats.magic_bulldozer.been_used, nullptr },
{SLE_BOOL, STR_CHEAT_CROSSINGTUNNELS, &_cheats.crossing_tunnels.value, &_cheats.crossing_tunnels.been_used, nullptr },
{SLE_BOOL, STR_CHEAT_NO_JETCRASH, &_cheats.no_jetcrash.value, &_cheats.no_jetcrash.been_used, nullptr },
{SLE_BOOL, STR_CHEAT_SETUP_PROD, &_cheats.setup_prod.value, &_cheats.setup_prod.been_used, &ClickSetProdCheat },
{SLE_UINT8, STR_CHEAT_EDIT_MAX_HL, &_settings_game.construction.map_height_limit, &_cheats.edit_max_hl.been_used, &ClickChangeMaxHlCheat },
{SLE_INT32, STR_CHEAT_CHANGE_DATE, &_cur_year, &_cheats.change_date.been_used, &ClickChangeDateCheat },
}

The available cheats.

Order matches with the values of CheatNumbers

Definition at line 186 of file cheat_gui.cpp.

Referenced by CheatWindow::OnQueryTextFinished(), and CheatWindow::UpdateWidgetSize().

## ◆ _money_cheat_amount

int32 _money_cheat_amount = 10000000
| static

The 'amount' to cheat with.

This variable is semantically a constant value, but because the cheat code requires to be able to write to the variable it is not constified.

Definition at line 44 of file cheat_gui.cpp.

Referenced by ClickMoneyCheat().

## ◆ _nested_cheat_widgets

const NWidgetPart _nested_cheat_widgets[]
| static

Initial value:
= {
NWidget(NWID_HORIZONTAL),
NWidget(WWT_CLOSEBOX, COLOUR_GREY),
NWidget(WWT_CAPTION, COLOUR_GREY), SetDataTip(STR_CHEATS, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
NWidget(WWT_SHADEBOX, COLOUR_GREY),
NWidget(WWT_STICKYBOX, COLOUR_GREY),
EndContainer(),
NWidget(WWT_PANEL, COLOUR_GREY, WID_C_PANEL), SetDataTip(0x0, STR_CHEATS_TOOLTIP), EndContainer(),
NWidget(WWT_PANEL, COLOUR_GREY),
NWidget(WWT_LABEL, COLOUR_GREY, WID_C_NOTE), SetFill(1, 1), SetDataTip(STR_CHEATS_NOTE, STR_NULL), SetPadding(WD_PAR_VSEP_NORMAL, 4, WD_PAR_VSEP_NORMAL, 4),
EndContainer(),
}

Widget definitions of the cheat GUI.

Definition at line 200 of file cheat_gui.cpp.

Cheats::no_jetcrash
Cheat no_jetcrash
no jet will crash on small airports anymore
Definition: cheat_type.h:31
Cheats::crossing_tunnels
Cheat crossing_tunnels
allow tunnels that cross each other
Definition: cheat_type.h:30
Cheats::magic_bulldozer
Cheat magic_bulldozer
dynamite industries, objects
Definition: cheat_type.h:27
WID_C_NOTE
@ WID_C_NOTE
Note on top of panel for use of cheat.
Definition: cheat_widget.h:15
WWT_STICKYBOX
@ WWT_STICKYBOX
Sticky box (at top-right of a window, after WWT_DEFSIZEBOX)
Definition: widget_type.h:64
SetPadding
static NWidgetPart SetPadding(uint8 top, uint8 right, uint8 bottom, uint8 left)
Widget part function for setting additional space around a widget.
Definition: widget_type.h:1139
_money_cheat_amount
static int32 _money_cheat_amount
The 'amount' to cheat with.
Definition: cheat_gui.cpp:44
Cheats::edit_max_hl
Cheat edit_max_hl
edit the maximum heightlevel; this is a cheat because of the fact that it needs to reset NewGRF game ...
Definition: cheat_type.h:34
_cur_year
Year _cur_year
Current year, starting at 0.
Definition: date.cpp:26
WWT_CAPTION
@ WWT_CAPTION
Window caption (window title between closebox and stickybox)
Definition: widget_type.h:59
WWT_LABEL
@ WWT_LABEL
Centered label.
Definition: widget_type.h:55
ConstructionSettings::map_height_limit
uint8 map_height_limit
the maximum allowed heightlevel
Definition: settings_type.h:334
NWID_HORIZONTAL
@ NWID_HORIZONTAL
Horizontal container.
Definition: widget_type.h:73
Cheats::setup_prod
Cheat setup_prod
setup raw-material production in game
Definition: cheat_type.h:33
ClickChangeMaxHlCheat
static int32 ClickChangeMaxHlCheat(int32 p1, int32 p2)
Allow (or disallow) a change of the maximum allowed heightlevel.
Definition: cheat_gui.cpp:128
SetDataTip
static NWidgetPart SetDataTip(uint32 data, StringID tip)
Widget part function for setting the data and tooltip.
Definition: widget_type.h:1107
ClickChangeDateCheat
static int32 ClickChangeDateCheat(int32 p1, int32 p2)
Handle changing of the current year.
Definition: cheat_gui.cpp:101
Cheats::money
Cheat money
get rich or poor
Definition: cheat_type.h:29
_cheats
Cheats _cheats
All the cheats.
Definition: cheat.cpp:16
WD_PAR_VSEP_NORMAL
@ WD_PAR_VSEP_NORMAL
Normal amount of vertical space between two paragraphs of text.
Definition: window_gui.h:139
_settings_game
GameSettings _settings_game
Game settings of a running game or the scenario editor.
Definition: settings.cpp:53
_local_company
CompanyID _local_company
Company controlled by the human player at this client. Can also be COMPANY_SPECTATOR.
Definition: company_cmd.cpp:46
ClickMoneyCheat
static int32 ClickMoneyCheat(int32 p1, int32 p2)
Handle cheating of money.
Definition: cheat_gui.cpp:55
Cheat::value
bool value
tells if the bool cheat is active or not
Definition: cheat_type.h:18
WWT_CLOSEBOX
@ WWT_CLOSEBOX
Close box (at top-left of a window)
Definition: widget_type.h:67
EndContainer
static NWidgetPart EndContainer()
Widget part function for denoting the end of a container (horizontal, vertical, WWT_FRAME,...
Definition: widget_type.h:1092
ClickSetProdCheat
static int32 ClickSetProdCheat(int32 p1, int32 p2)
Allow (or disallow) changing production of all industries.
Definition: cheat_gui.cpp:86
NWidget
static NWidgetPart NWidget(WidgetType tp, Colours col, int16 idx=-1)
Widget part function for starting a new 'real' widget.
Definition: widget_type.h:1207
WWT_PANEL
@ WWT_PANEL
Simple depressed panel.
Definition: widget_type.h:48
Cheats::change_date
Cheat change_date
changes date ingame
Definition: cheat_type.h:32
ClickChangeCompanyCheat
static int32 ClickChangeCompanyCheat(int32 p1, int32 p2)
Handle changing of company.
Definition: cheat_gui.cpp:67
SetFill
static NWidgetPart SetFill(uint fill_x, uint fill_y)
Widget part function for setting filling.
Definition: widget_type.h:1076
GameSettings::construction
ConstructionSettings construction
construction of things in-game
Definition: settings_type.h:578
Cheat::been_used
bool been_used
has this cheat been used before?
Definition: cheat_type.h:17
WID_C_PANEL
@ WID_C_PANEL
Panel where all cheats are shown in.
Definition: cheat_widget.h:16
Cheats::switch_company
Cheat switch_company
change to another company
Definition: cheat_type.h:28
WWT_SHADEBOX
@ WWT_SHADEBOX
Shade box (at top-right of a window, between WWT_DEBUGBOX and WWT_DEFSIZEBOX)
Definition: widget_type.h:62