OpenTTD
Data Structures | Typedefs | Enumerations | Functions | Variables
cheat_gui.cpp File Reference

GUI related to cheating. More...

#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. More...
 
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...
 
 assert_compile (CHT_NUM_CHEATS==lengthof(_cheats_ui))
 
void ShowCheatWindow ()
 Open cheat window. More...
 

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. More...
 

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 171 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 153 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 128 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 56 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 87 of file cheat_gui.cpp.

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

◆ EnginesMonthlyLoop()

void EnginesMonthlyLoop ( )

Monthly update of the availability, reliability, and preview offers of the engines.

Definition at line 967 of file engine.cpp.

Referenced by ClickChangeDateCheat(), and ClickSetProdCheat().

◆ ShowCheatWindow()

void ShowCheatWindow ( )

Open cheat window.

Definition at line 418 of file cheat_gui.cpp.

References DeleteWindowById(), and WC_CHEATS.

Variable Documentation

◆ _cheats_desc

WindowDesc _cheats_desc(WDP_AUTO, "cheats", 0, 0, WC_CHEATS, WC_NONE, 0, _nested_cheat_widgets, lengthof(_nested_cheat_widgets))
static

Window description of the cheats GUI.

◆ _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, NULL },
{SLE_BOOL, STR_CHEAT_CROSSINGTUNNELS, &_cheats.crossing_tunnels.value, &_cheats.crossing_tunnels.been_used, NULL },
{SLE_BOOL, STR_CHEAT_NO_JETCRASH, &_cheats.no_jetcrash.value, &_cheats.no_jetcrash.been_used, NULL },
{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 },
}
uint8 max_heightlevel
maximum allowed heightlevel
GameSettings _settings_game
Game settings of a running game or the scenario editor.
Definition: settings.cpp:77
Cheat switch_company
change to another company
Definition: cheat_type.h:30
static int32 ClickChangeCompanyCheat(int32 p1, int32 p2)
Handle changing of company.
Definition: cheat_gui.cpp:68
bool been_used
has this cheat been used before?
Definition: cheat_type.h:19
Year _cur_year
Current year, starting at 0.
Definition: date.cpp:26
Cheat money
get rich or poor
Definition: cheat_type.h:31
CompanyByte _local_company
Company controlled by the human player at this client. Can also be COMPANY_SPECTATOR.
Definition: company_cmd.cpp:46
Cheat no_jetcrash
no jet will crash on small airports anymore
Definition: cheat_type.h:34
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:39
Cheat change_date
changes date ingame
Definition: cheat_type.h:36
static int32 ClickMoneyCheat(int32 p1, int32 p2)
Handle cheating of money.
Definition: cheat_gui.cpp:56
bool value
tells if the bool cheat is active or not
Definition: cheat_type.h:20
Cheat setup_prod
setup raw-material production in game
Definition: cheat_type.h:37
static int32 _money_cheat_amount
The 'amount' to cheat with.
Definition: cheat_gui.cpp:45
static int32 ClickSetProdCheat(int32 p1, int32 p2)
Allow (or disallow) changing production of all industries.
Definition: cheat_gui.cpp:87
static int32 ClickChangeMaxHlCheat(int32 p1, int32 p2)
Allow (or disallow) a change of the maximum allowed heightlevel.
Definition: cheat_gui.cpp:128
Cheat crossing_tunnels
allow tunnels that cross each other
Definition: cheat_type.h:32
Cheat magic_bulldozer
dynamite industries, objects
Definition: cheat_type.h:29
ConstructionSettings construction
construction of things in-game
static int32 ClickChangeDateCheat(int32 p1, int32 p2)
Handle changing of the current year.
Definition: cheat_gui.cpp:102
Cheats _cheats
All the cheats.
Definition: cheat.cpp:18

The available cheats.

Order matches with the values of CheatNumbers

Definition at line 186 of file cheat_gui.cpp.

◆ _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 45 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(),
}
Horizontal container.
Definition: widget_type.h:75
Close box (at top-left of a window)
Definition: widget_type.h:69
static NWidgetPart SetDataTip(uint32 data, StringID tip)
Widget part function for setting the data and tooltip.
Definition: widget_type.h:1014
Simple depressed panel.
Definition: widget_type.h:50
static NWidgetPart NWidget(WidgetType tp, Colours col, int16 idx=-1)
Widget part function for starting a new 'real' widget.
Definition: widget_type.h:1114
Panel where all cheats are shown in.
Definition: cheat_widget.h:17
Window caption (window title between closebox and stickybox)
Definition: widget_type.h:61
static NWidgetPart EndContainer()
Widget part function for denoting the end of a container (horizontal, vertical, WWT_FRAME, WWT_INSET, or WWT_PANEL).
Definition: widget_type.h:999
Sticky box (at top-right of a window, after WWT_DEFSIZEBOX)
Definition: widget_type.h:66
Shade box (at top-right of a window, between WWT_DEBUGBOX and WWT_DEFSIZEBOX)
Definition: widget_type.h:64

Widget definitions of the cheat GUI.

Definition at line 200 of file cheat_gui.cpp.