OpenTTD
command_type.h
Go to the documentation of this file.
1 /* $Id: command_type.h 26802 2014-09-07 16:12:58Z alberth $ */
2 
3 /*
4  * This file is part of OpenTTD.
5  * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
6  * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
7  * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
8  */
9 
12 #ifndef COMMAND_TYPE_H
13 #define COMMAND_TYPE_H
14 
15 #include "economy_type.h"
16 #include "strings_type.h"
17 #include "tile_type.h"
18 
19 struct GRFFile;
20 
25 class CommandCost {
29  bool success;
32 
33  static uint32 textref_stack[16];
34 
35 public:
39  CommandCost() : expense_type(INVALID_EXPENSES), cost(0), message(INVALID_STRING_ID), success(true), textref_stack_grffile(NULL), textref_stack_size(0) {}
40 
44  explicit CommandCost(StringID msg) : expense_type(INVALID_EXPENSES), cost(0), message(msg), success(false), textref_stack_grffile(NULL), textref_stack_size(0) {}
45 
50  explicit CommandCost(ExpensesType ex_t) : expense_type(ex_t), cost(0), message(INVALID_STRING_ID), success(true), textref_stack_grffile(NULL), textref_stack_size(0) {}
51 
57  CommandCost(ExpensesType ex_t, const Money &cst) : expense_type(ex_t), cost(cst), message(INVALID_STRING_ID), success(true), textref_stack_grffile(NULL), textref_stack_size(0) {}
58 
59 
64  inline void AddCost(const Money &cost)
65  {
66  this->cost += cost;
67  }
68 
69  void AddCost(const CommandCost &cmd_cost);
70 
75  inline void MultiplyCost(int factor)
76  {
77  this->cost *= factor;
78  }
79 
84  inline Money GetCost() const
85  {
86  return this->cost;
87  }
88 
94  {
95  return this->expense_type;
96  }
97 
102  void MakeError(StringID message)
103  {
104  assert(message != INVALID_STRING_ID);
105  this->success = false;
106  this->message = message;
107  }
108 
109  void UseTextRefStack(const GRFFile *grffile, uint num_registers);
110 
116  {
117  return this->textref_stack_grffile;
118  }
119 
124  uint GetTextRefStackSize() const
125  {
126  return this->textref_stack_size;
127  }
128 
133  const uint32 *GetTextRefStack() const
134  {
135  return textref_stack;
136  }
137 
143  {
144  if (this->success) return INVALID_STRING_ID;
145  return this->message;
146  }
147 
152  inline bool Succeeded() const
153  {
154  return this->success;
155  }
156 
161  inline bool Failed() const
162  {
163  return !this->success;
164  }
165 };
166 
177 enum Commands {
191 
194 
198 
205 
207 
209 
212 
214 
220 
224 
230 
232 
234 
237 
240 
242 
249 
252 
254 
256 
260 
269 
273 
277 
297 
299 
302 
306 
308 
315 
323 
329 
331 
333 };
334 
341  DC_NONE = 0x000,
342  DC_EXEC = 0x001,
343  DC_AUTO = 0x002,
344  DC_QUERY_COST = 0x004,
345  DC_NO_WATER = 0x008,
348  DC_BANKRUPT = 0x040,
349  DC_AUTOREPLACE = 0x080,
351  DC_ALL_TILES = 0x200,
354 };
356 
357 
366 #define CMD_MSG(x) ((x) << 16)
367 
375  CMD_FLAGS_MASK = 0xFF00,
376  CMD_ID_MASK = 0x00FF,
377 };
378 
385  CMD_SERVER = 0x001,
386  CMD_SPECTATOR = 0x002,
387  CMD_OFFLINE = 0x004,
388  CMD_AUTO = 0x008,
389  CMD_ALL_TILES = 0x010,
390  CMD_NO_TEST = 0x020,
391  CMD_NO_WATER = 0x040,
392  CMD_CLIENT_ID = 0x080,
393  CMD_DEITY = 0x100,
394  CMD_STR_CTRL = 0x200,
395 };
397 
398 
409 
411 };
412 
419 };
420 
439 typedef CommandCost CommandProc(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text);
440 
447 struct Command {
449  const char *name;
452 };
453 
467 typedef void CommandCallback(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2);
468 
474  uint32 p1;
475  uint32 p2;
476  uint32 cmd;
478  char text[32 * MAX_CHAR_LENGTH];
479 };
480 
481 #endif /* COMMAND_TYPE_H */
CommandType
Types of commands we have.
Definition: command_type.h:399
clear the order backup of a given user/tile
Definition: command_type.h:225
don&#39;t allow building on structures
Definition: command_type.h:343
do not change town rating
Definition: command_type.h:352
change the timetable for a vehicle
Definition: command_type.h:325
DECLARE_ENUM_AS_BIT_SET(GenderEthnicity) enum CompanyManagerFaceVariable
Bitgroups of the CompanyManagerFace variable.
rename a depot
Definition: command_type.h:248
used in multiplayer to create a new companies etc.
Definition: command_type.h:279
set the DC_NO_WATER flag on this command
Definition: command_type.h:391
build a waypoint
Definition: command_type.h:195
do not only remove the object on the tile, but also clear any water left on it
Definition: command_type.h:353
No landscaping actions may be executed.
Definition: command_type.h:417
rename a sign
Definition: command_type.h:251
build a dock
Definition: command_type.h:208
rename a town
Definition: command_type.h:262
open/close an airport to incoming aircraft
Definition: command_type.h:330
set the vehicle on time feature (timetable)
Definition: command_type.h:326
rename a whole vehicle
Definition: command_type.h:243
build a complete road (not a "half" one)
Definition: command_type.h:201
create a new goal
Definition: command_type.h:281
set p2 with the ClientID of the sending client.
Definition: command_type.h:392
remove a complete road (not a "half" one)
Definition: command_type.h:202
plant a tree
Definition: command_type.h:213
static uint32 textref_stack[16]
Values to put on the TextRefStack for the error message.
Definition: command_type.h:33
remove signals along a track (by dragging)
Definition: command_type.h:301
change bank balance to charge costs or give money from a GS
Definition: command_type.h:275
change the server interval of a vehicle
Definition: command_type.h:231
terraform a tile
Definition: command_type.h:188
ExpensesType GetExpensesType() const
The expense type of the cost.
Definition: command_type.h:93
query cost only, don&#39;t build.
Definition: command_type.h:344
CommandType type
The type of command.
Definition: command_type.h:451
set the DC_AUTO flag on this command
Definition: command_type.h:388
no flag is set
Definition: command_type.h:341
uint32 p2
parameter p2.
Definition: command_type.h:475
autofill the timetable
Definition: command_type.h:327
change a company setting
Definition: command_type.h:305
CommandFlags
Command flags for the command table _command_proc_table.
Definition: command_type.h:384
buy a company which is bankrupt
Definition: command_type.h:259
add signals along a track (by dragging)
Definition: command_type.h:300
All actions may be executed.
Definition: command_type.h:418
demolish a tile
Definition: command_type.h:182
CommandCost(StringID msg)
Creates a command return value the is failed with the given message.
Definition: command_type.h:44
void UseTextRefStack(const GRFFile *grffile, uint num_registers)
Activate usage of the NewGRF TextRefStack for the error message.
Definition: command.cpp:795
update title of a story page
Definition: command_type.h:291
build a "half" road
Definition: command_type.h:203
build a rail station
Definition: command_type.h:184
do a action from the town detail window (like advertises or bribe)
Definition: command_type.h:263
Define a command with the flags which belongs to it.
Definition: command_type.h:447
const char * name
A human readable name for the procedure.
Definition: command_type.h:449
clone (and share) an order
Definition: command_type.h:271
Money GetCost() const
The costs as made up to this moment.
Definition: command_type.h:84
update date of a story page
Definition: command_type.h:292
Common return value for all commands.
Definition: command_type.h:25
set the custom text of a town
Definition: command_type.h:266
void MultiplyCost(int factor)
Multiplies the cost of the command by the given factor.
Definition: command_type.h:75
void AddCost(const Money &cost)
Adds the given cost to the cost of the command.
Definition: command_type.h:64
void MakeError(StringID message)
Makes this CommandCost behave like an error command.
Definition: command_type.h:102
skip an order to the next of specific one
Definition: command_type.h:227
const GRFFile * GetTextRefStackGRF() const
Returns the NewGRF providing the TextRefStack of the error message.
Definition: command_type.h:115
delete a group
Definition: command_type.h:317
when autoreplace/autorenew is in progress, this shall prevent truncating the amount of cargo in the v...
Definition: command_type.h:350
build an airport
Definition: command_type.h:206
replace/renew a vehicle while it is in a depot
Definition: command_type.h:312
company bankrupts, skip money check, skip vehicle on tile check in some cases
Definition: command_type.h:348
start or stop a vehicle
Definition: command_type.h:310
alter a group
Definition: command_type.h:318
Pausing/removing companies/server settings.
Definition: command_type.h:407
build a single rail track
Definition: command_type.h:180
hide or unhide a vehicle in the build vehicle and autoreplace GUIs
Definition: command_type.h:219
proceed a train to pass a red signal
Definition: command_type.h:222
add all other shared vehicles to a group which are missing
Definition: command_type.h:320
static const int MAX_CHAR_LENGTH
Max. length of UTF-8 encoded unicode character.
Definition: strings_type.h:20
decrease the loan from the bank
Definition: command_type.h:239
CommandPauseLevel
Different command pause levels.
Definition: command_type.h:414
remove all vehicles from a group
Definition: command_type.h:321
mask for all command flags
Definition: command_type.h:375
set the town growth rate
Definition: command_type.h:265
create a custom news message
Definition: command_type.h:280
Types related to the economy.
A cheat of some sorts.
Definition: command_type.h:408
remove a story page element
Definition: command_type.h:295
execute the command without sending it on the network
Definition: command_type.h:374
found a town
Definition: command_type.h:261
mask for the command ID
Definition: command_type.h:376
increase the loan from the bank
Definition: command_type.h:238
uint32 p1
parameter p1.
Definition: command_type.h:474
refit the cargo space of a vehicle
Definition: command_type.h:217
remove a goal
Definition: command_type.h:282
StringID GetErrorMessage() const
Returns the error message of a command.
Definition: command_type.h:142
Construction, modification (incl. refit) and destruction of vehicles.
Definition: command_type.h:401
Structure for buffering the build command when selecting a station to join.
Definition: command_type.h:472
DoCommandFlag
List of flags for a command.
Definition: command_type.h:340
build a tunnel
Definition: command_type.h:190
bool Succeeded() const
Did this command succeed?
Definition: command_type.h:152
the command may be executed by COMPANY_DEITY
Definition: command_type.h:393
build a vehicle
Definition: command_type.h:215
const GRFFile * textref_stack_grffile
NewGRF providing the TextRefStack content.
Definition: command_type.h:30
remove a story page
Definition: command_type.h:294
CommandCost(ExpensesType ex_t, const Money &cst)
Creates a command return value with the given start cost and expense type.
Definition: command_type.h:57
ExpensesType expense_type
the type of expence as shown on the finances view
Definition: command_type.h:26
set the manager&#39;s face of the company
Definition: command_type.h:235
insert a new order
Definition: command_type.h:229
the command&#39;s output may differ between test and execute due to town rating changes etc...
Definition: command_type.h:390
delete a town
Definition: command_type.h:268
set the date that a timetable should start
Definition: command_type.h:328
show a story page
Definition: command_type.h:293
StringID message
Warning message for when success is unset.
Definition: command_type.h:28
expand a town
Definition: command_type.h:267
const uint32 * GetTextRefStack() const
Returns a pointer to the values for the TextRefStack of the error message.
Definition: command_type.h:133
change the company name
Definition: command_type.h:245
don&#39;t allow building on water
Definition: command_type.h:345
set the colour of the company
Definition: command_type.h:236
CommandCost(ExpensesType ex_t)
Creates a command cost with given expense type and start cost of 0.
Definition: command_type.h:50
uint textref_stack_size
Number of uint32 values to put on the TextRefStack for the error message.
Definition: command_type.h:31
ExpensesType
Types of expenses.
Definition: economy_type.h:150
Renaming stuff, changing company colours, placing signs, etc.
Definition: command_type.h:405
set the goal of a cargo for a town
Definition: command_type.h:264
place a sign
Definition: command_type.h:250
give money to another company
Definition: command_type.h:303
Construction and destruction of objects on the map.
Definition: command_type.h:400
do the money cheat
Definition: command_type.h:274
the command can only be initiated by the server
Definition: command_type.h:385
build a road depot
Definition: command_type.h:204
uint32 StringID
Numeric value that represents a string, independent of the selected language.
Definition: strings_type.h:18
the command&#39;s string may contain control strings
Definition: command_type.h:394
bool Failed() const
Did this command fail?
Definition: command_type.h:161
rename a waypoint
Definition: command_type.h:196
Magic end marker.
Definition: command_type.h:410
update a story page element
Definition: command_type.h:290
build a signal
Definition: command_type.h:186
force the autoreplace to take action in a given depot
Definition: command_type.h:314
No construction actions may be executed.
Definition: command_type.h:416
the command may be initiated by a spectator
Definition: command_type.h:386
allow this command also on MP_VOID tiles
Definition: command_type.h:351
autoreplace/autorenew is in progress, this shall disable vehicle limits when building, and ignore certain restrictions when undoing things (like vehicle attach callback)
Definition: command_type.h:349
CommandCallback * callback
any callback function executed upon successful completion of the command.
Definition: command_type.h:477
create a new story page
Definition: command_type.h:288
convert a rail type
Definition: command_type.h:193
Management of money, i.e. loans and shares.
Definition: command_type.h:402
update goal progress text of a goal
Definition: command_type.h:284
confirm the preview of an engine
Definition: command_type.h:241
change a setting
Definition: command_type.h:304
execute the given command
Definition: command_type.h:342
uint GetTextRefStackSize() const
Returns the number of uint32 values for the TextRefStack of the error message.
Definition: command_type.h:124
build a road stop
Definition: command_type.h:199
add a vehicle to a group
Definition: command_type.h:319
sell a vehicle
Definition: command_type.h:216
CommandProc * proc
The procedure to actually executing.
Definition: command_type.h:448
Must ALWAYS be on the end of this list!! (period)
Definition: command_type.h:332
uint32 TileIndex
The index/ID of a Tile.
Definition: tile_type.h:80
CommandFlags flags
The (command) flags to that apply to this command.
Definition: command_type.h:450
Modifications to route management (orders, groups, etc).
Definition: command_type.h:404
sell a share from a company
Definition: command_type.h:258
create a new story page element
Definition: command_type.h:289
turn a train around
Definition: command_type.h:223
change the president name
Definition: command_type.h:246
FlaggedCommands
Defines some flags.
Definition: command_type.h:373
change the refit information of an order (for "goto depot" )
Definition: command_type.h:270
build a canal
Definition: command_type.h:276
ask a goal related question
Definition: command_type.h:286
CommandCost CommandProc(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
Defines the callback type for all command handler functions.
Definition: command_type.h:439
clear an area
Definition: command_type.h:272
create a new group
Definition: command_type.h:316
sell all vehicles which are in a given depot
Definition: command_type.h:313
Stopping, starting, sending to depot, turning around, replace orders etc.
Definition: command_type.h:403
remove a single rail track
Definition: command_type.h:181
set the autoreplace-protection for a group
Definition: command_type.h:322
clone a vehicle
Definition: command_type.h:309
build a buoy
Definition: command_type.h:211
rename a engine (in the engine list)
Definition: command_type.h:244
TileIndex tile
tile command being executed on.
Definition: command_type.h:473
build a train depot
Definition: command_type.h:185
rename a station
Definition: command_type.h:247
start/stop all vehicles (in a depot)
Definition: command_type.h:311
create a new subsidy
Definition: command_type.h:278
Types related to strings.
build a bridge
Definition: command_type.h:183
bool success
Whether the comment went fine up to this moment.
Definition: command_type.h:29
static const StringID INVALID_STRING_ID
Constant representing an invalid string (16bit in case it is used in savegames)
Definition: strings_type.h:19
void CommandCallback(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
Define a callback function for the client, after the command is finished.
Definition: command_type.h:467
the command cannot be executed in a multiplayer game; single-player only
Definition: command_type.h:387
Commands
List of commands.
Definition: command_type.h:177
remove a signal
Definition: command_type.h:187
don&#39;t allow overlap of rails (used in buildrail)
Definition: command_type.h:346
remove a (rectangle of) tiles from a rail station
Definition: command_type.h:192
Changing settings related to a company.
Definition: command_type.h:406
update goal text of a goal
Definition: command_type.h:283
remove a rail track
Definition: command_type.h:179
answer(s) to CMD_GOAL_QUESTION
Definition: command_type.h:287
send a vehicle to a depot
Definition: command_type.h:218
Invalid expense type.
Definition: economy_type.h:165
buy a share from a company
Definition: command_type.h:257
No user actions may be executed.
Definition: command_type.h:415
build a ship depot
Definition: command_type.h:210
CommandCost()
Creates a command cost return with no cost and no error.
Definition: command_type.h:39
Types related to tiles.
town rating does not disallow you from building
Definition: command_type.h:347
move a rail vehicle (in the depot)
Definition: command_type.h:221
set an autoreplace entry
Definition: command_type.h:307
move an order
Definition: command_type.h:324
Money cost
The cost of this action.
Definition: command_type.h:27
remove a (rectangle of) tiles from a rail waypoint
Definition: command_type.h:197
uint32 cmd
command being executed.
Definition: command_type.h:476
remove a road stop
Definition: command_type.h:200
level land
Definition: command_type.h:296
modify an order (like set full-load)
Definition: command_type.h:226
allow this command also on MP_VOID tiles
Definition: command_type.h:389
build a new industry
Definition: command_type.h:233
turn a road vehicle around
Definition: command_type.h:253
update goal completed status of a goal
Definition: command_type.h:285
delete an order
Definition: command_type.h:228
build a lock
Definition: command_type.h:298
build an object
Definition: command_type.h:189
build a rail track
Definition: command_type.h:178
Dynamic data of a loaded NewGRF.
Definition: newgrf.h:104
pause the game
Definition: command_type.h:255