summaryrefslogtreecommitdiff
path: root/src/command.cpp
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2007-09-04 11:58:27 +0000
committerrubidium <rubidium@openttd.org>2007-09-04 11:58:27 +0000
commit9706c32ed69f560199ea6232fb5078876912e1e9 (patch)
treeeb509837e511a15770453fc1943e2b7c7180be64 /src/command.cpp
parentb1effc466eac33997567e2f2e68812afb1c0a7f6 (diff)
downloadopenttd-9706c32ed69f560199ea6232fb5078876912e1e9.tar.xz
(svn r11040) -Fix [FS#1179]: removing CMD_AUTO from some commands could remotely trigger an assertion.
Diffstat (limited to 'src/command.cpp')
-rw-r--r--src/command.cpp57
1 files changed, 29 insertions, 28 deletions
diff --git a/src/command.cpp b/src/command.cpp
index c48b3418d..6d26279e2 100644
--- a/src/command.cpp
+++ b/src/command.cpp
@@ -184,20 +184,20 @@ DEF_COMMAND(CmdAutofillTimetable);
/* The master command table */
static const Command _command_proc_table[] = {
- {CmdBuildRailroadTrack, 0}, /* 0 */
- {CmdRemoveRailroadTrack, 0}, /* 1 */
- {CmdBuildSingleRail, 0}, /* 2 */
- {CmdRemoveSingleRail, 0}, /* 3 */
+ {CmdBuildRailroadTrack, CMD_AUTO}, /* 0 */
+ {CmdRemoveRailroadTrack, CMD_AUTO}, /* 1 */
+ {CmdBuildSingleRail, CMD_AUTO}, /* 2 */
+ {CmdRemoveSingleRail, CMD_AUTO}, /* 3 */
{CmdLandscapeClear, 0}, /* 4 */
- {CmdBuildBridge, 0}, /* 5 */
- {CmdBuildRailroadStation, 0}, /* 6 */
- {CmdBuildTrainDepot, 0}, /* 7 */
- {CmdBuildSingleSignal, 0}, /* 8 */
- {CmdRemoveSingleSignal, 0}, /* 9 */
- {CmdTerraformLand, 0}, /* 10 */
- {CmdPurchaseLandArea, 0}, /* 11 */
+ {CmdBuildBridge, CMD_AUTO}, /* 5 */
+ {CmdBuildRailroadStation, CMD_AUTO}, /* 6 */
+ {CmdBuildTrainDepot, CMD_AUTO}, /* 7 */
+ {CmdBuildSingleSignal, CMD_AUTO}, /* 8 */
+ {CmdRemoveSingleSignal, CMD_AUTO}, /* 9 */
+ {CmdTerraformLand, CMD_AUTO}, /* 10 */
+ {CmdPurchaseLandArea, CMD_AUTO}, /* 11 */
{CmdSellLandArea, 0}, /* 12 */
- {CmdBuildTunnel, 0}, /* 13 */
+ {CmdBuildTunnel, CMD_AUTO}, /* 13 */
{CmdRemoveFromRailroadStation, 0}, /* 14 */
{CmdConvertRail, 0}, /* 15 */
{CmdBuildTrainWaypoint, 0}, /* 16 */
@@ -205,19 +205,19 @@ static const Command _command_proc_table[] = {
{CmdRemoveTrainWaypoint, 0}, /* 18 */
{NULL, 0}, /* 19 */
{NULL, 0}, /* 20 */
- {CmdBuildRoadStop, 0}, /* 21 */
+ {CmdBuildRoadStop, CMD_AUTO}, /* 21 */
{CmdRemoveRoadStop, 0}, /* 22 */
- {CmdBuildLongRoad, 0}, /* 23 */
- {CmdRemoveLongRoad, 0}, /* 24 */
+ {CmdBuildLongRoad, CMD_AUTO}, /* 23 */
+ {CmdRemoveLongRoad, CMD_AUTO}, /* 24 */
{CmdBuildRoad, 0}, /* 25 */
{CmdRemoveRoad, 0}, /* 26 */
- {CmdBuildRoadDepot, 0}, /* 27 */
+ {CmdBuildRoadDepot, CMD_AUTO}, /* 27 */
{NULL, 0}, /* 28 */
- {CmdBuildAirport, 0}, /* 29 */
- {CmdBuildDock, 0}, /* 30 */
- {CmdBuildShipDepot, 0}, /* 31 */
- {CmdBuildBuoy, 0}, /* 32 */
- {CmdPlantTree, 0}, /* 33 */
+ {CmdBuildAirport, CMD_AUTO}, /* 29 */
+ {CmdBuildDock, CMD_AUTO}, /* 30 */
+ {CmdBuildShipDepot, CMD_AUTO}, /* 31 */
+ {CmdBuildBuoy, CMD_AUTO}, /* 32 */
+ {CmdPlantTree, CMD_AUTO}, /* 33 */
{CmdBuildRailVehicle, 0}, /* 34 */
{CmdMoveRailVehicle, 0}, /* 35 */
{CmdStartStopTrain, 0}, /* 36 */
@@ -235,7 +235,7 @@ static const Command _command_proc_table[] = {
{CmdChangeServiceInt, 0}, /* 46 */
{CmdBuildIndustry, 0}, /* 47 */
- {CmdBuildCompanyHQ, 0}, /* 48 */
+ {CmdBuildCompanyHQ, CMD_AUTO}, /* 48 */
{CmdSetPlayerFace, 0}, /* 49 */
{CmdSetPlayerColor, 0}, /* 50 */
@@ -308,17 +308,17 @@ static const Command _command_proc_table[] = {
{NULL, 0}, /* 101 */
{CmdMoneyCheat, CMD_OFFLINE}, /* 102 */
- {CmdBuildCanal, 0}, /* 103 */
+ {CmdBuildCanal, CMD_AUTO}, /* 103 */
{CmdPlayerCtrl, 0}, /* 104 */
- {CmdLevelLand, 0}, /* 105 */
+ {CmdLevelLand, CMD_AUTO}, /* 105 */
{CmdRefitRailVehicle, 0}, /* 106 */
{CmdRestoreOrderIndex, 0}, /* 107 */
- {CmdBuildLock, 0}, /* 108 */
+ {CmdBuildLock, CMD_AUTO}, /* 108 */
{NULL, 0}, /* 109 */
- {CmdBuildSignalTrack, 0}, /* 110 */
- {CmdRemoveSignalTrack, 0}, /* 111 */
+ {CmdBuildSignalTrack, CMD_AUTO}, /* 110 */
+ {CmdRemoveSignalTrack, CMD_AUTO}, /* 111 */
{NULL, 0}, /* 112 */
{CmdGiveMoney, 0}, /* 113 */
{CmdChangePatchSetting, CMD_SERVER}, /* 114 */
@@ -462,7 +462,6 @@ bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, CommandCallback *callback,
}
flags = 0;
- if (cmd & CMD_AUTO) flags |= DC_AUTO;
if (cmd & CMD_NO_WATER) flags |= DC_NO_WATER;
/* get pointer to command handler */
@@ -473,6 +472,8 @@ bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, CommandCallback *callback,
return false;
}
+ if (GetCommandFlags(cmd) & CMD_AUTO) flags |= DC_AUTO;
+
/* Some commands have a different output in dryrun than the realrun
* e.g.: if you demolish a whole town, the dryrun would say okay.
* but by really destroying, your rating drops and at a certain point