src/command.cpp
changeset 8017 8c46e61c510f
parent 8002 589569211928
child 8055 07697c701048
equal deleted inserted replaced
8016:35b14d118dd3 8017:8c46e61c510f
   182 DEF_COMMAND(CmdSetVehicleOnTime);
   182 DEF_COMMAND(CmdSetVehicleOnTime);
   183 DEF_COMMAND(CmdAutofillTimetable);
   183 DEF_COMMAND(CmdAutofillTimetable);
   184 
   184 
   185 /* The master command table */
   185 /* The master command table */
   186 static const Command _command_proc_table[] = {
   186 static const Command _command_proc_table[] = {
   187 	{CmdBuildRailroadTrack,                  0}, /*   0 */
   187 	{CmdBuildRailroadTrack,           CMD_AUTO}, /*   0 */
   188 	{CmdRemoveRailroadTrack,                 0}, /*   1 */
   188 	{CmdRemoveRailroadTrack,          CMD_AUTO}, /*   1 */
   189 	{CmdBuildSingleRail,                     0}, /*   2 */
   189 	{CmdBuildSingleRail,              CMD_AUTO}, /*   2 */
   190 	{CmdRemoveSingleRail,                    0}, /*   3 */
   190 	{CmdRemoveSingleRail,             CMD_AUTO}, /*   3 */
   191 	{CmdLandscapeClear,                      0}, /*   4 */
   191 	{CmdLandscapeClear,                      0}, /*   4 */
   192 	{CmdBuildBridge,                         0}, /*   5 */
   192 	{CmdBuildBridge,                  CMD_AUTO}, /*   5 */
   193 	{CmdBuildRailroadStation,                0}, /*   6 */
   193 	{CmdBuildRailroadStation,         CMD_AUTO}, /*   6 */
   194 	{CmdBuildTrainDepot,                     0}, /*   7 */
   194 	{CmdBuildTrainDepot,              CMD_AUTO}, /*   7 */
   195 	{CmdBuildSingleSignal,                   0}, /*   8 */
   195 	{CmdBuildSingleSignal,            CMD_AUTO}, /*   8 */
   196 	{CmdRemoveSingleSignal,                  0}, /*   9 */
   196 	{CmdRemoveSingleSignal,           CMD_AUTO}, /*   9 */
   197 	{CmdTerraformLand,                       0}, /*  10 */
   197 	{CmdTerraformLand,                CMD_AUTO}, /*  10 */
   198 	{CmdPurchaseLandArea,                    0}, /*  11 */
   198 	{CmdPurchaseLandArea,             CMD_AUTO}, /*  11 */
   199 	{CmdSellLandArea,                        0}, /*  12 */
   199 	{CmdSellLandArea,                        0}, /*  12 */
   200 	{CmdBuildTunnel,                         0}, /*  13 */
   200 	{CmdBuildTunnel,                  CMD_AUTO}, /*  13 */
   201 	{CmdRemoveFromRailroadStation,           0}, /*  14 */
   201 	{CmdRemoveFromRailroadStation,           0}, /*  14 */
   202 	{CmdConvertRail,                         0}, /*  15 */
   202 	{CmdConvertRail,                         0}, /*  15 */
   203 	{CmdBuildTrainWaypoint,                  0}, /*  16 */
   203 	{CmdBuildTrainWaypoint,                  0}, /*  16 */
   204 	{CmdRenameWaypoint,                      0}, /*  17 */
   204 	{CmdRenameWaypoint,                      0}, /*  17 */
   205 	{CmdRemoveTrainWaypoint,                 0}, /*  18 */
   205 	{CmdRemoveTrainWaypoint,                 0}, /*  18 */
   206 	{NULL,                                   0}, /*  19 */
   206 	{NULL,                                   0}, /*  19 */
   207 	{NULL,                                   0}, /*  20 */
   207 	{NULL,                                   0}, /*  20 */
   208 	{CmdBuildRoadStop,                       0}, /*  21 */
   208 	{CmdBuildRoadStop,                CMD_AUTO}, /*  21 */
   209 	{CmdRemoveRoadStop,                      0}, /*  22 */
   209 	{CmdRemoveRoadStop,                      0}, /*  22 */
   210 	{CmdBuildLongRoad,                       0}, /*  23 */
   210 	{CmdBuildLongRoad,                CMD_AUTO}, /*  23 */
   211 	{CmdRemoveLongRoad,                      0}, /*  24 */
   211 	{CmdRemoveLongRoad,               CMD_AUTO}, /*  24 */
   212 	{CmdBuildRoad,                           0}, /*  25 */
   212 	{CmdBuildRoad,                           0}, /*  25 */
   213 	{CmdRemoveRoad,                          0}, /*  26 */
   213 	{CmdRemoveRoad,                          0}, /*  26 */
   214 	{CmdBuildRoadDepot,                      0}, /*  27 */
   214 	{CmdBuildRoadDepot,               CMD_AUTO}, /*  27 */
   215 	{NULL,                                   0}, /*  28 */
   215 	{NULL,                                   0}, /*  28 */
   216 	{CmdBuildAirport,                        0}, /*  29 */
   216 	{CmdBuildAirport,                 CMD_AUTO}, /*  29 */
   217 	{CmdBuildDock,                           0}, /*  30 */
   217 	{CmdBuildDock,                    CMD_AUTO}, /*  30 */
   218 	{CmdBuildShipDepot,                      0}, /*  31 */
   218 	{CmdBuildShipDepot,               CMD_AUTO}, /*  31 */
   219 	{CmdBuildBuoy,                           0}, /*  32 */
   219 	{CmdBuildBuoy,                    CMD_AUTO}, /*  32 */
   220 	{CmdPlantTree,                           0}, /*  33 */
   220 	{CmdPlantTree,                    CMD_AUTO}, /*  33 */
   221 	{CmdBuildRailVehicle,                    0}, /*  34 */
   221 	{CmdBuildRailVehicle,                    0}, /*  34 */
   222 	{CmdMoveRailVehicle,                     0}, /*  35 */
   222 	{CmdMoveRailVehicle,                     0}, /*  35 */
   223 	{CmdStartStopTrain,                      0}, /*  36 */
   223 	{CmdStartStopTrain,                      0}, /*  36 */
   224 	{NULL,                                   0}, /*  37 */
   224 	{NULL,                                   0}, /*  37 */
   225 	{CmdSellRailWagon,                       0}, /*  38 */
   225 	{CmdSellRailWagon,                       0}, /*  38 */
   233 	{CmdInsertOrder,                         0}, /*  45 */
   233 	{CmdInsertOrder,                         0}, /*  45 */
   234 
   234 
   235 	{CmdChangeServiceInt,                    0}, /*  46 */
   235 	{CmdChangeServiceInt,                    0}, /*  46 */
   236 
   236 
   237 	{CmdBuildIndustry,                       0}, /*  47 */
   237 	{CmdBuildIndustry,                       0}, /*  47 */
   238 	{CmdBuildCompanyHQ,                      0}, /*  48 */
   238 	{CmdBuildCompanyHQ,               CMD_AUTO}, /*  48 */
   239 	{CmdSetPlayerFace,                       0}, /*  49 */
   239 	{CmdSetPlayerFace,                       0}, /*  49 */
   240 	{CmdSetPlayerColor,                      0}, /*  50 */
   240 	{CmdSetPlayerColor,                      0}, /*  50 */
   241 
   241 
   242 	{CmdIncreaseLoan,                        0}, /*  51 */
   242 	{CmdIncreaseLoan,                        0}, /*  51 */
   243 	{CmdDecreaseLoan,                        0}, /*  52 */
   243 	{CmdDecreaseLoan,                        0}, /*  52 */
   306 
   306 
   307 	{CmdClearArea,                           0}, /* 100 */
   307 	{CmdClearArea,                           0}, /* 100 */
   308 	{NULL,                                   0}, /* 101 */
   308 	{NULL,                                   0}, /* 101 */
   309 
   309 
   310 	{CmdMoneyCheat,                CMD_OFFLINE}, /* 102 */
   310 	{CmdMoneyCheat,                CMD_OFFLINE}, /* 102 */
   311 	{CmdBuildCanal,                          0}, /* 103 */
   311 	{CmdBuildCanal,                   CMD_AUTO}, /* 103 */
   312 	{CmdPlayerCtrl,                          0}, /* 104 */
   312 	{CmdPlayerCtrl,                          0}, /* 104 */
   313 
   313 
   314 	{CmdLevelLand,                           0}, /* 105 */
   314 	{CmdLevelLand,                    CMD_AUTO}, /* 105 */
   315 
   315 
   316 	{CmdRefitRailVehicle,                    0}, /* 106 */
   316 	{CmdRefitRailVehicle,                    0}, /* 106 */
   317 	{CmdRestoreOrderIndex,                   0}, /* 107 */
   317 	{CmdRestoreOrderIndex,                   0}, /* 107 */
   318 	{CmdBuildLock,                           0}, /* 108 */
   318 	{CmdBuildLock,                    CMD_AUTO}, /* 108 */
   319 	{NULL,                                   0}, /* 109 */
   319 	{NULL,                                   0}, /* 109 */
   320 	{CmdBuildSignalTrack,                    0}, /* 110 */
   320 	{CmdBuildSignalTrack,             CMD_AUTO}, /* 110 */
   321 	{CmdRemoveSignalTrack,                   0}, /* 111 */
   321 	{CmdRemoveSignalTrack,            CMD_AUTO}, /* 111 */
   322 	{NULL,                                   0}, /* 112 */
   322 	{NULL,                                   0}, /* 112 */
   323 	{CmdGiveMoney,                           0}, /* 113 */
   323 	{CmdGiveMoney,                           0}, /* 113 */
   324 	{CmdChangePatchSetting,         CMD_SERVER}, /* 114 */
   324 	{CmdChangePatchSetting,         CMD_SERVER}, /* 114 */
   325 	{CmdSetAutoReplace,                      0}, /* 115 */
   325 	{CmdSetAutoReplace,                      0}, /* 115 */
   326 	{CmdCloneVehicle,                        0}, /* 116 */
   326 	{CmdCloneVehicle,                        0}, /* 116 */
   460 		_cmd_text = NULL;
   460 		_cmd_text = NULL;
   461 		return false;
   461 		return false;
   462 	}
   462 	}
   463 
   463 
   464 	flags = 0;
   464 	flags = 0;
   465 	if (cmd & CMD_AUTO) flags |= DC_AUTO;
       
   466 	if (cmd & CMD_NO_WATER) flags |= DC_NO_WATER;
   465 	if (cmd & CMD_NO_WATER) flags |= DC_NO_WATER;
   467 
   466 
   468 	/* get pointer to command handler */
   467 	/* get pointer to command handler */
   469 	assert((cmd & 0xFF) < lengthof(_command_proc_table));
   468 	assert((cmd & 0xFF) < lengthof(_command_proc_table));
   470 	proc = _command_proc_table[cmd & 0xFF].proc;
   469 	proc = _command_proc_table[cmd & 0xFF].proc;
   471 	if (proc == NULL) {
   470 	if (proc == NULL) {
   472 		_cmd_text = NULL;
   471 		_cmd_text = NULL;
   473 		return false;
   472 		return false;
   474 	}
   473 	}
       
   474 
       
   475 	if (GetCommandFlags(cmd) & CMD_AUTO) flags |= DC_AUTO;
   475 
   476 
   476 	/* Some commands have a different output in dryrun than the realrun
   477 	/* Some commands have a different output in dryrun than the realrun
   477 	 *  e.g.: if you demolish a whole town, the dryrun would say okay.
   478 	 *  e.g.: if you demolish a whole town, the dryrun would say okay.
   478 	 *  but by really destroying, your rating drops and at a certain point
   479 	 *  but by really destroying, your rating drops and at a certain point
   479 	 *  it will fail. so res and res2 are different
   480 	 *  it will fail. so res and res2 are different