From 9706c32ed69f560199ea6232fb5078876912e1e9 Mon Sep 17 00:00:00 2001 From: rubidium Date: Tue, 4 Sep 2007 11:58:27 +0000 Subject: (svn r11040) -Fix [FS#1179]: removing CMD_AUTO from some commands could remotely trigger an assertion. --- src/command.cpp | 57 +++++++++++++++++++++++++++++---------------------------- 1 file changed, 29 insertions(+), 28 deletions(-) (limited to 'src/command.cpp') 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 -- cgit v1.2.3-54-g00ecf