OpenTTD Source  1.11.0-beta2
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 "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
p1The new value.
p2Change direction (+1, +1), 0 for boolean settings.

Definition at line 169 of file cheat_gui.cpp.

Enumeration Type Documentation

◆ 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 151 of file cheat_gui.cpp.

Function Documentation

◆ ClickChangeCompanyCheat()

static int32 ClickChangeCompanyCheat ( int32  p1,
int32  p2 
)
static

◆ ClickChangeDateCheat()

static int32 ClickChangeDateCheat ( int32  p1,
int32  p2 
)
static

◆ ClickChangeMaxHlCheat()

static int32 ClickChangeMaxHlCheat ( int32  p1,
int32  p2 
)
static

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

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

Definition at line 126 of file cheat_gui.cpp.

References _settings_game, Clamp(), GameSettings::construction, INVALID_STRING_ID, InvalidateWindowClassesData(), MapSize(), ConstructionSettings::max_heightlevel, MAX_MAX_HEIGHTLEVEL, MIN_MAX_HEIGHTLEVEL, 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
p1not used.
p2is -1 or +1 (down/up)
Returns
Amount of money cheat.

Definition at line 54 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
p1new value
p2unused
Returns
New value allowing change of industry production.

Definition at line 85 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_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 184 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 43 of file cheat_gui.cpp.

Referenced by ClickMoneyCheat().

◆ _nested_cheat_widgets

const NWidgetPart _nested_cheat_widgets[]
static
Initial value:
= {
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),
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),
}

Widget definitions of the cheat GUI.

Definition at line 198 of file cheat_gui.cpp.

Cheats::no_jetcrash
Cheat no_jetcrash
no jet will crash on small airports anymore
Definition: cheat_type.h:32
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:1045
ConstructionSettings::max_heightlevel
uint8 max_heightlevel
maximum allowed heightlevel
Definition: settings_type.h:307
_money_cheat_amount
static int32 _money_cheat_amount
The 'amount' to cheat with.
Definition: cheat_gui.cpp:43
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:37
_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
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:35
ClickChangeMaxHlCheat
static int32 ClickChangeMaxHlCheat(int32 p1, int32 p2)
Allow (or disallow) a change of the maximum allowed heightlevel.
Definition: cheat_gui.cpp:126
SetDataTip
static NWidgetPart SetDataTip(uint32 data, StringID tip)
Widget part function for setting the data and tooltip.
Definition: widget_type.h:1013
ClickChangeDateCheat
static int32 ClickChangeDateCheat(int32 p1, int32 p2)
Handle changing of the current year.
Definition: cheat_gui.cpp:100
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:137
_settings_game
GameSettings _settings_game
Game settings of a running game or the scenario editor.
Definition: settings.cpp:80
_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:54
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:998
ClickSetProdCheat
static int32 ClickSetProdCheat(int32 p1, int32 p2)
Allow (or disallow) changing production of all industries.
Definition: cheat_gui.cpp:85
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
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:34
ClickChangeCompanyCheat
static int32 ClickChangeCompanyCheat(int32 p1, int32 p2)
Handle changing of company.
Definition: cheat_gui.cpp:66
SetFill
static NWidgetPart SetFill(uint fill_x, uint fill_y)
Widget part function for setting filling.
Definition: widget_type.h:982
GameSettings::construction
ConstructionSettings construction
construction of things in-game
Definition: settings_type.h:551
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