author | Darkvater |
Sat, 14 May 2005 12:36:16 +0000 | |
changeset 1802 | 448f187042d3 |
parent 1796 | cae31916ae54 |
child 1804 | 7810fc0aa941 |
permissions | -rw-r--r-- |
0 | 1 |
#include "stdafx.h" |
2 |
#include "ttd.h" |
|
507
8aa8100b0b22
(svn r815) Include strings.h only in the files which need it.
tron
parents:
467
diff
changeset
|
3 |
#include "table/strings.h" |
679
e959706a3e4d
(svn r1117) Move map arrays and some related macros into their own files map.c and map.h
tron
parents:
652
diff
changeset
|
4 |
#include "map.h" |
0 | 5 |
#include "gui.h" |
6 |
#include "command.h" |
|
7 |
#include "player.h" |
|
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
8 |
#include "network.h" |
0 | 9 |
|
10 |
#define DEF_COMMAND(yyyy) int32 yyyy(int x, int y, uint32 flags, uint32 p1, uint32 p2) |
|
11 |
||
12 |
DEF_COMMAND(CmdBuildRailroadTrack); |
|
13 |
DEF_COMMAND(CmdRemoveRailroadTrack); |
|
14 |
DEF_COMMAND(CmdBuildSingleRail); |
|
15 |
DEF_COMMAND(CmdRemoveSingleRail); |
|
16 |
||
17 |
DEF_COMMAND(CmdLandscapeClear); |
|
18 |
||
19 |
DEF_COMMAND(CmdBuildBridge); |
|
20 |
||
21 |
DEF_COMMAND(CmdBuildRailroadStation); |
|
22 |
DEF_COMMAND(CmdRemoveFromRailroadStation); |
|
23 |
DEF_COMMAND(CmdConvertRail); |
|
24 |
||
1227
3552f20fcfcb
(svn r1731) - Fix: [ 1106930 ] BugFix: placing signals with 2x1 drags workaround is completely rewritten. Also features checks for hacked/modified clients. Thanks a lot Hackykid!
darkvater
parents:
1217
diff
changeset
|
25 |
DEF_COMMAND(CmdBuildSingleSignal); |
3552f20fcfcb
(svn r1731) - Fix: [ 1106930 ] BugFix: placing signals with 2x1 drags workaround is completely rewritten. Also features checks for hacked/modified clients. Thanks a lot Hackykid!
darkvater
parents:
1217
diff
changeset
|
26 |
DEF_COMMAND(CmdRemoveSingleSignal); |
0 | 27 |
|
28 |
DEF_COMMAND(CmdTerraformLand); |
|
29 |
||
30 |
DEF_COMMAND(CmdPurchaseLandArea); |
|
31 |
DEF_COMMAND(CmdSellLandArea); |
|
32 |
||
33 |
DEF_COMMAND(CmdBuildTunnel); |
|
34 |
||
35 |
DEF_COMMAND(CmdBuildTrainDepot); |
|
395
4c990f33dab7
(svn r587) -newgrf: Rename all /Checkpoint/i tokens to 'Waypoint's. The name actually makes some sense and is also compatible with TTDPatch (pasky).
darkvater
parents:
215
diff
changeset
|
36 |
DEF_COMMAND(CmdBuildTrainWaypoint); |
4c990f33dab7
(svn r587) -newgrf: Rename all /Checkpoint/i tokens to 'Waypoint's. The name actually makes some sense and is also compatible with TTDPatch (pasky).
darkvater
parents:
215
diff
changeset
|
37 |
DEF_COMMAND(CmdRenameWaypoint); |
4c990f33dab7
(svn r587) -newgrf: Rename all /Checkpoint/i tokens to 'Waypoint's. The name actually makes some sense and is also compatible with TTDPatch (pasky).
darkvater
parents:
215
diff
changeset
|
38 |
DEF_COMMAND(CmdRemoveTrainWaypoint); |
0 | 39 |
|
1217
ab9f02a224ab
(svn r1721) -Feature: It is now possible to build multiple road stations (up to 8) on
celestar
parents:
1093
diff
changeset
|
40 |
DEF_COMMAND(CmdBuildRoadStop); |
0 | 41 |
|
42 |
DEF_COMMAND(CmdBuildLongRoad); |
|
43 |
DEF_COMMAND(CmdRemoveLongRoad); |
|
44 |
DEF_COMMAND(CmdBuildRoad); |
|
45 |
DEF_COMMAND(CmdRemoveRoad); |
|
46 |
||
47 |
DEF_COMMAND(CmdBuildRoadDepot); |
|
48 |
||
49 |
DEF_COMMAND(CmdBuildAirport); |
|
50 |
||
51 |
DEF_COMMAND(CmdBuildDock); |
|
52 |
||
53 |
DEF_COMMAND(CmdBuildShipDepot); |
|
54 |
||
55 |
DEF_COMMAND(CmdBuildBuoy); |
|
56 |
||
57 |
DEF_COMMAND(CmdPlantTree); |
|
58 |
||
59 |
DEF_COMMAND(CmdBuildRailVehicle); |
|
60 |
DEF_COMMAND(CmdMoveRailVehicle); |
|
61 |
||
62 |
DEF_COMMAND(CmdStartStopTrain); |
|
63 |
||
64 |
DEF_COMMAND(CmdSellRailWagon); |
|
65 |
||
1794
44f9deff97ed
(svn r2298) - CodeChange: removed CmdAbuses: CmdSetTownNameType(), CmdStartNewGame(), CmdCreateScenario(), CmdSetNewLandscapeType() and CmdGenRandomNewGame().
Darkvater
parents:
1786
diff
changeset
|
66 |
DEF_COMMAND(CmdSendTrainToDepot); |
0 | 67 |
DEF_COMMAND(CmdForceTrainProceed); |
68 |
DEF_COMMAND(CmdReverseTrainDirection); |
|
69 |
||
70 |
DEF_COMMAND(CmdModifyOrder); |
|
71 |
DEF_COMMAND(CmdSkipOrder); |
|
72 |
DEF_COMMAND(CmdDeleteOrder); |
|
73 |
DEF_COMMAND(CmdInsertOrder); |
|
74 |
DEF_COMMAND(CmdChangeTrainServiceInt); |
|
75 |
DEF_COMMAND(CmdRestoreOrderIndex); |
|
76 |
||
77 |
DEF_COMMAND(CmdBuildIndustry); |
|
78 |
||
79 |
DEF_COMMAND(CmdBuildCompanyHQ); |
|
80 |
DEF_COMMAND(CmdSetPlayerFace); |
|
81 |
DEF_COMMAND(CmdSetPlayerColor); |
|
82 |
||
83 |
DEF_COMMAND(CmdIncreaseLoan); |
|
84 |
DEF_COMMAND(CmdDecreaseLoan); |
|
85 |
||
86 |
DEF_COMMAND(CmdWantEnginePreview); |
|
87 |
||
88 |
DEF_COMMAND(CmdNameVehicle); |
|
89 |
DEF_COMMAND(CmdRenameEngine); |
|
90 |
||
91 |
DEF_COMMAND(CmdChangeCompanyName); |
|
92 |
DEF_COMMAND(CmdChangePresidentName); |
|
93 |
||
94 |
DEF_COMMAND(CmdRenameStation); |
|
95 |
||
96 |
DEF_COMMAND(CmdSellAircraft); |
|
97 |
DEF_COMMAND(CmdStartStopAircraft); |
|
98 |
DEF_COMMAND(CmdBuildAircraft); |
|
99 |
DEF_COMMAND(CmdSendAircraftToHangar); |
|
100 |
DEF_COMMAND(CmdChangeAircraftServiceInt); |
|
101 |
DEF_COMMAND(CmdRefitAircraft); |
|
102 |
||
103 |
DEF_COMMAND(CmdPlaceSign); |
|
104 |
DEF_COMMAND(CmdRenameSign); |
|
105 |
||
106 |
DEF_COMMAND(CmdBuildRoadVeh); |
|
107 |
DEF_COMMAND(CmdStartStopRoadVeh); |
|
108 |
DEF_COMMAND(CmdSellRoadVeh); |
|
109 |
DEF_COMMAND(CmdSendRoadVehToDepot); |
|
110 |
DEF_COMMAND(CmdTurnRoadVeh); |
|
111 |
DEF_COMMAND(CmdChangeRoadVehServiceInt); |
|
112 |
||
113 |
DEF_COMMAND(CmdPause); |
|
114 |
||
115 |
DEF_COMMAND(CmdBuyShareInCompany); |
|
116 |
DEF_COMMAND(CmdSellShareInCompany); |
|
117 |
DEF_COMMAND(CmdBuyCompany); |
|
118 |
||
119 |
DEF_COMMAND(CmdBuildTown); |
|
120 |
||
121 |
DEF_COMMAND(CmdRenameTown); |
|
122 |
DEF_COMMAND(CmdDoTownAction); |
|
123 |
||
124 |
DEF_COMMAND(CmdSetRoadDriveSide); |
|
125 |
||
126 |
DEF_COMMAND(CmdChangeDifficultyLevel); |
|
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
127 |
DEF_COMMAND(CmdChangePatchSetting); |
0 | 128 |
|
129 |
DEF_COMMAND(CmdStartStopShip); |
|
130 |
DEF_COMMAND(CmdSellShip); |
|
131 |
DEF_COMMAND(CmdBuildShip); |
|
132 |
DEF_COMMAND(CmdSendShipToDepot); |
|
133 |
DEF_COMMAND(CmdChangeShipServiceInt); |
|
134 |
DEF_COMMAND(CmdRefitShip); |
|
135 |
||
136 |
DEF_COMMAND(CmdCloneOrder); |
|
137 |
||
138 |
DEF_COMMAND(CmdClearArea); |
|
139 |
||
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
140 |
DEF_COMMAND(CmdGiveMoney); |
0 | 141 |
DEF_COMMAND(CmdMoneyCheat); |
142 |
DEF_COMMAND(CmdBuildCanal); |
|
147
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
143 |
DEF_COMMAND(CmdBuildLock); |
0 | 144 |
|
145 |
DEF_COMMAND(CmdPlayerCtrl); |
|
146 |
||
147 |
DEF_COMMAND(CmdLevelLand); |
|
148 |
||
149 |
DEF_COMMAND(CmdRefitRailVehicle); |
|
150 |
||
1227
3552f20fcfcb
(svn r1731) - Fix: [ 1106930 ] BugFix: placing signals with 2x1 drags workaround is completely rewritten. Also features checks for hacked/modified clients. Thanks a lot Hackykid!
darkvater
parents:
1217
diff
changeset
|
151 |
DEF_COMMAND(CmdBuildSignalTrack); |
3552f20fcfcb
(svn r1731) - Fix: [ 1106930 ] BugFix: placing signals with 2x1 drags workaround is completely rewritten. Also features checks for hacked/modified clients. Thanks a lot Hackykid!
darkvater
parents:
1217
diff
changeset
|
152 |
DEF_COMMAND(CmdRemoveSignalTrack); |
58
b9fdcc9b5c90
(svn r59) -Feature: Added Autosignals, just like Autorail. Can copy signal style, convert signal<->semaphore, etc. Big thanks to betatesters Dribbel and Testman57 (Darkvater)
darkvater
parents:
0
diff
changeset
|
153 |
|
842 | 154 |
DEF_COMMAND(CmdReplaceVehicle); |
812
79c99885ad00
(svn r1283) -Add: AutoRenew is now a client-side patch instead of a game-side patch
truelight
parents:
679
diff
changeset
|
155 |
|
0 | 156 |
/* The master command table */ |
157 |
static CommandProc * const _command_proc_table[] = { |
|
147
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
158 |
CmdBuildRailroadTrack, /* 0 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
159 |
CmdRemoveRailroadTrack, /* 1 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
160 |
CmdBuildSingleRail, /* 2 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
161 |
CmdRemoveSingleRail, /* 3 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
162 |
CmdLandscapeClear, /* 4 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
163 |
CmdBuildBridge, /* 5 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
164 |
CmdBuildRailroadStation, /* 6 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
165 |
CmdBuildTrainDepot, /* 7 */ |
1227
3552f20fcfcb
(svn r1731) - Fix: [ 1106930 ] BugFix: placing signals with 2x1 drags workaround is completely rewritten. Also features checks for hacked/modified clients. Thanks a lot Hackykid!
darkvater
parents:
1217
diff
changeset
|
166 |
CmdBuildSingleSignal, /* 8 */ |
3552f20fcfcb
(svn r1731) - Fix: [ 1106930 ] BugFix: placing signals with 2x1 drags workaround is completely rewritten. Also features checks for hacked/modified clients. Thanks a lot Hackykid!
darkvater
parents:
1217
diff
changeset
|
167 |
CmdRemoveSingleSignal, /* 9 */ |
147
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
168 |
CmdTerraformLand, /* 10 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
169 |
CmdPurchaseLandArea, /* 11 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
170 |
CmdSellLandArea, /* 12 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
171 |
CmdBuildTunnel, /* 13 */ |
0 | 172 |
CmdRemoveFromRailroadStation, /* 14 */ |
147
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
173 |
CmdConvertRail, /* 15 */ |
395
4c990f33dab7
(svn r587) -newgrf: Rename all /Checkpoint/i tokens to 'Waypoint's. The name actually makes some sense and is also compatible with TTDPatch (pasky).
darkvater
parents:
215
diff
changeset
|
174 |
CmdBuildTrainWaypoint, /* 16 */ |
4c990f33dab7
(svn r587) -newgrf: Rename all /Checkpoint/i tokens to 'Waypoint's. The name actually makes some sense and is also compatible with TTDPatch (pasky).
darkvater
parents:
215
diff
changeset
|
175 |
CmdRenameWaypoint, /* 17 */ |
4c990f33dab7
(svn r587) -newgrf: Rename all /Checkpoint/i tokens to 'Waypoint's. The name actually makes some sense and is also compatible with TTDPatch (pasky).
darkvater
parents:
215
diff
changeset
|
176 |
CmdRemoveTrainWaypoint, /* 18 */ |
1217
ab9f02a224ab
(svn r1721) -Feature: It is now possible to build multiple road stations (up to 8) on
celestar
parents:
1093
diff
changeset
|
177 |
NULL, /* 19 */ |
147
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
178 |
NULL, /* 20 */ |
1217
ab9f02a224ab
(svn r1721) -Feature: It is now possible to build multiple road stations (up to 8) on
celestar
parents:
1093
diff
changeset
|
179 |
CmdBuildRoadStop, /* 21 */ |
147
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
180 |
NULL, /* 22 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
181 |
CmdBuildLongRoad, /* 23 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
182 |
CmdRemoveLongRoad, /* 24 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
183 |
CmdBuildRoad, /* 25 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
184 |
CmdRemoveRoad, /* 26 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
185 |
CmdBuildRoadDepot, /* 27 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
186 |
NULL, /* 28 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
187 |
CmdBuildAirport, /* 29 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
188 |
CmdBuildDock, /* 30 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
189 |
CmdBuildShipDepot, /* 31 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
190 |
CmdBuildBuoy, /* 32 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
191 |
CmdPlantTree, /* 33 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
192 |
CmdBuildRailVehicle, /* 34 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
193 |
CmdMoveRailVehicle, /* 35 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
194 |
CmdStartStopTrain, /* 36 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
195 |
NULL, /* 37 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
196 |
CmdSellRailWagon, /* 38 */ |
1794
44f9deff97ed
(svn r2298) - CodeChange: removed CmdAbuses: CmdSetTownNameType(), CmdStartNewGame(), CmdCreateScenario(), CmdSetNewLandscapeType() and CmdGenRandomNewGame().
Darkvater
parents:
1786
diff
changeset
|
197 |
CmdSendTrainToDepot, /* 39 */ |
147
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
198 |
CmdForceTrainProceed, /* 40 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
199 |
CmdReverseTrainDirection, /* 41 */ |
0 | 200 |
|
147
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
201 |
CmdModifyOrder, /* 42 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
202 |
CmdSkipOrder, /* 43 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
203 |
CmdDeleteOrder, /* 44 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
204 |
CmdInsertOrder, /* 45 */ |
0 | 205 |
|
147
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
206 |
CmdChangeTrainServiceInt, /* 46 */ |
0 | 207 |
|
147
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
208 |
CmdBuildIndustry, /* 47 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
209 |
CmdBuildCompanyHQ, /* 48 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
210 |
CmdSetPlayerFace, /* 49 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
211 |
CmdSetPlayerColor, /* 50 */ |
0 | 212 |
|
147
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
213 |
CmdIncreaseLoan, /* 51 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
214 |
CmdDecreaseLoan, /* 52 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
215 |
|
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
216 |
CmdWantEnginePreview, /* 53 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
217 |
|
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
218 |
CmdNameVehicle, /* 54 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
219 |
CmdRenameEngine, /* 55 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
220 |
|
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
221 |
CmdChangeCompanyName, /* 56 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
222 |
CmdChangePresidentName, /* 57 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
223 |
|
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
224 |
CmdRenameStation, /* 58 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
225 |
|
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
226 |
CmdSellAircraft, /* 59 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
227 |
CmdStartStopAircraft, /* 60 */ |
1794
44f9deff97ed
(svn r2298) - CodeChange: removed CmdAbuses: CmdSetTownNameType(), CmdStartNewGame(), CmdCreateScenario(), CmdSetNewLandscapeType() and CmdGenRandomNewGame().
Darkvater
parents:
1786
diff
changeset
|
228 |
|
147
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
229 |
CmdBuildAircraft, /* 61 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
230 |
CmdSendAircraftToHangar, /* 62 */ |
0 | 231 |
CmdChangeAircraftServiceInt, /* 63 */ |
1802
448f187042d3
(svn r2306) - CodeChange: Check the last commands; refits. This needed an extensive rewrite and global/local-cargo ID juggling and bitmasking. However with this done it looks better as well and is compatible with newgrf handling. Big thanks to HackyKid for doing most of the work. This also closes patch "[ 1199277 ] Command checks"
Darkvater
parents:
1796
diff
changeset
|
232 |
CmdRefitAircraft, /* 64 */ |
0 | 233 |
|
147
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
234 |
CmdPlaceSign, /* 65 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
235 |
CmdRenameSign, /* 66 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
236 |
|
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
237 |
CmdBuildRoadVeh, /* 67 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
238 |
CmdStartStopRoadVeh, /* 68 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
239 |
CmdSellRoadVeh, /* 69 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
240 |
CmdSendRoadVehToDepot, /* 70 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
241 |
CmdTurnRoadVeh, /* 71 */ |
0 | 242 |
CmdChangeRoadVehServiceInt, /* 72 */ |
243 |
||
1794
44f9deff97ed
(svn r2298) - CodeChange: removed CmdAbuses: CmdSetTownNameType(), CmdStartNewGame(), CmdCreateScenario(), CmdSetNewLandscapeType() and CmdGenRandomNewGame().
Darkvater
parents:
1786
diff
changeset
|
244 |
CmdPause, /* 73 <-- TODO: check/enforce by server */ |
0 | 245 |
|
147
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
246 |
CmdBuyShareInCompany, /* 74 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
247 |
CmdSellShareInCompany, /* 75 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
248 |
CmdBuyCompany, /* 76 */ |
0 | 249 |
|
1796
cae31916ae54
(svn r2300) - CodeChange: check the last number of commands, now only the refit ones remain, and some server-only commands.
Darkvater
parents:
1794
diff
changeset
|
250 |
CmdBuildTown, /* 77 <-- offline */ |
147
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
251 |
NULL, /* 78 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
252 |
NULL, /* 79 */ |
1794
44f9deff97ed
(svn r2298) - CodeChange: removed CmdAbuses: CmdSetTownNameType(), CmdStartNewGame(), CmdCreateScenario(), CmdSetNewLandscapeType() and CmdGenRandomNewGame().
Darkvater
parents:
1786
diff
changeset
|
253 |
CmdRenameTown, /* 80 <-- TODO: check/enforce by server */ |
147
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
254 |
CmdDoTownAction, /* 81 */ |
0 | 255 |
|
1794
44f9deff97ed
(svn r2298) - CodeChange: removed CmdAbuses: CmdSetTownNameType(), CmdStartNewGame(), CmdCreateScenario(), CmdSetNewLandscapeType() and CmdGenRandomNewGame().
Darkvater
parents:
1786
diff
changeset
|
256 |
CmdSetRoadDriveSide, /* 82 <-- TODO: check/enforce by server */ |
44f9deff97ed
(svn r2298) - CodeChange: removed CmdAbuses: CmdSetTownNameType(), CmdStartNewGame(), CmdCreateScenario(), CmdSetNewLandscapeType() and CmdGenRandomNewGame().
Darkvater
parents:
1786
diff
changeset
|
257 |
NULL, /* 83 */ |
147
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
258 |
NULL, /* 84 */ |
1794
44f9deff97ed
(svn r2298) - CodeChange: removed CmdAbuses: CmdSetTownNameType(), CmdStartNewGame(), CmdCreateScenario(), CmdSetNewLandscapeType() and CmdGenRandomNewGame().
Darkvater
parents:
1786
diff
changeset
|
259 |
CmdChangeDifficultyLevel, /* 85 <-- TODO: check/enforce by server */ |
0 | 260 |
|
147
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
261 |
CmdStartStopShip, /* 86 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
262 |
CmdSellShip, /* 87 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
263 |
CmdBuildShip, /* 88 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
264 |
CmdSendShipToDepot, /* 89 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
265 |
CmdChangeShipServiceInt, /* 90 */ |
1802
448f187042d3
(svn r2306) - CodeChange: Check the last commands; refits. This needed an extensive rewrite and global/local-cargo ID juggling and bitmasking. However with this done it looks better as well and is compatible with newgrf handling. Big thanks to HackyKid for doing most of the work. This also closes patch "[ 1199277 ] Command checks"
Darkvater
parents:
1796
diff
changeset
|
266 |
CmdRefitShip, /* 91 */ |
147
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
267 |
|
1794
44f9deff97ed
(svn r2298) - CodeChange: removed CmdAbuses: CmdSetTownNameType(), CmdStartNewGame(), CmdCreateScenario(), CmdSetNewLandscapeType() and CmdGenRandomNewGame().
Darkvater
parents:
1786
diff
changeset
|
268 |
NULL, /* 92 */ |
1728 | 269 |
NULL, /* 93 */ |
1794
44f9deff97ed
(svn r2298) - CodeChange: removed CmdAbuses: CmdSetTownNameType(), CmdStartNewGame(), CmdCreateScenario(), CmdSetNewLandscapeType() and CmdGenRandomNewGame().
Darkvater
parents:
1786
diff
changeset
|
270 |
NULL, /* 94 */ |
1728 | 271 |
NULL, /* 95 */ |
147
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
272 |
NULL, /* 96 */ |
1794
44f9deff97ed
(svn r2298) - CodeChange: removed CmdAbuses: CmdSetTownNameType(), CmdStartNewGame(), CmdCreateScenario(), CmdSetNewLandscapeType() and CmdGenRandomNewGame().
Darkvater
parents:
1786
diff
changeset
|
273 |
NULL, /* 97 */ |
44f9deff97ed
(svn r2298) - CodeChange: removed CmdAbuses: CmdSetTownNameType(), CmdStartNewGame(), CmdCreateScenario(), CmdSetNewLandscapeType() and CmdGenRandomNewGame().
Darkvater
parents:
1786
diff
changeset
|
274 |
NULL, /* 98 */ |
147
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
275 |
|
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
276 |
CmdCloneOrder, /* 99 */ |
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
277 |
|
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
278 |
CmdClearArea, /* 100 */ |
1728 | 279 |
NULL, /* 101 */ |
1794
44f9deff97ed
(svn r2298) - CodeChange: removed CmdAbuses: CmdSetTownNameType(), CmdStartNewGame(), CmdCreateScenario(), CmdSetNewLandscapeType() and CmdGenRandomNewGame().
Darkvater
parents:
1786
diff
changeset
|
280 |
|
1796
cae31916ae54
(svn r2300) - CodeChange: check the last number of commands, now only the refit ones remain, and some server-only commands.
Darkvater
parents:
1794
diff
changeset
|
281 |
CmdMoneyCheat, /* 102 <-- offline (debug) */ |
cae31916ae54
(svn r2300) - CodeChange: check the last number of commands, now only the refit ones remain, and some server-only commands.
Darkvater
parents:
1794
diff
changeset
|
282 |
CmdBuildCanal, /* 103 */ |
cae31916ae54
(svn r2300) - CodeChange: check the last number of commands, now only the refit ones remain, and some server-only commands.
Darkvater
parents:
1794
diff
changeset
|
283 |
CmdPlayerCtrl, /* 104 */ |
cae31916ae54
(svn r2300) - CodeChange: check the last number of commands, now only the refit ones remain, and some server-only commands.
Darkvater
parents:
1794
diff
changeset
|
284 |
|
cae31916ae54
(svn r2300) - CodeChange: check the last number of commands, now only the refit ones remain, and some server-only commands.
Darkvater
parents:
1794
diff
changeset
|
285 |
CmdLevelLand, /* 105 */ |
cae31916ae54
(svn r2300) - CodeChange: check the last number of commands, now only the refit ones remain, and some server-only commands.
Darkvater
parents:
1794
diff
changeset
|
286 |
|
1802
448f187042d3
(svn r2306) - CodeChange: Check the last commands; refits. This needed an extensive rewrite and global/local-cargo ID juggling and bitmasking. However with this done it looks better as well and is compatible with newgrf handling. Big thanks to HackyKid for doing most of the work. This also closes patch "[ 1199277 ] Command checks"
Darkvater
parents:
1796
diff
changeset
|
287 |
CmdRefitRailVehicle, /* 106 */ |
147
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
288 |
CmdRestoreOrderIndex, /* 107 */ |
1796
cae31916ae54
(svn r2300) - CodeChange: check the last number of commands, now only the refit ones remain, and some server-only commands.
Darkvater
parents:
1794
diff
changeset
|
289 |
CmdBuildLock, /* 108 */ |
cae31916ae54
(svn r2300) - CodeChange: check the last number of commands, now only the refit ones remain, and some server-only commands.
Darkvater
parents:
1794
diff
changeset
|
290 |
NULL, /* 109 */ |
cae31916ae54
(svn r2300) - CodeChange: check the last number of commands, now only the refit ones remain, and some server-only commands.
Darkvater
parents:
1794
diff
changeset
|
291 |
CmdBuildSignalTrack, /* 110 */ |
cae31916ae54
(svn r2300) - CodeChange: check the last number of commands, now only the refit ones remain, and some server-only commands.
Darkvater
parents:
1794
diff
changeset
|
292 |
CmdRemoveSignalTrack, /* 111 */ |
cae31916ae54
(svn r2300) - CodeChange: check the last number of commands, now only the refit ones remain, and some server-only commands.
Darkvater
parents:
1794
diff
changeset
|
293 |
NULL, /* 112 */ |
1227
3552f20fcfcb
(svn r1731) - Fix: [ 1106930 ] BugFix: placing signals with 2x1 drags workaround is completely rewritten. Also features checks for hacked/modified clients. Thanks a lot Hackykid!
darkvater
parents:
1217
diff
changeset
|
294 |
CmdGiveMoney, /* 113 */ |
1794
44f9deff97ed
(svn r2298) - CodeChange: removed CmdAbuses: CmdSetTownNameType(), CmdStartNewGame(), CmdCreateScenario(), CmdSetNewLandscapeType() and CmdGenRandomNewGame().
Darkvater
parents:
1786
diff
changeset
|
295 |
CmdChangePatchSetting, /* 114 <-- TODO: check/enforce by server */ |
1796
cae31916ae54
(svn r2300) - CodeChange: check the last number of commands, now only the refit ones remain, and some server-only commands.
Darkvater
parents:
1794
diff
changeset
|
296 |
CmdReplaceVehicle, /* 115 */ |
0 | 297 |
}; |
298 |
||
903
f860c7234167
(svn r1389) -Add: [Network] Added packet protection. No longer a client or server
truelight
parents:
889
diff
changeset
|
299 |
/* This function range-checks a cmd, and checks if the cmd is not NULL */ |
959
b031d88c76f3
(svn r1451) Fix some of the signed/unsigned comparison warnings
tron
parents:
926
diff
changeset
|
300 |
bool IsValidCommand(uint cmd) |
903
f860c7234167
(svn r1389) -Add: [Network] Added packet protection. No longer a client or server
truelight
parents:
889
diff
changeset
|
301 |
{ |
f860c7234167
(svn r1389) -Add: [Network] Added packet protection. No longer a client or server
truelight
parents:
889
diff
changeset
|
302 |
cmd = cmd & 0xFF; |
f860c7234167
(svn r1389) -Add: [Network] Added packet protection. No longer a client or server
truelight
parents:
889
diff
changeset
|
303 |
|
959
b031d88c76f3
(svn r1451) Fix some of the signed/unsigned comparison warnings
tron
parents:
926
diff
changeset
|
304 |
if (cmd >= lengthof(_command_proc_table) || _command_proc_table[cmd] == NULL) |
903
f860c7234167
(svn r1389) -Add: [Network] Added packet protection. No longer a client or server
truelight
parents:
889
diff
changeset
|
305 |
return false; |
f860c7234167
(svn r1389) -Add: [Network] Added packet protection. No longer a client or server
truelight
parents:
889
diff
changeset
|
306 |
|
f860c7234167
(svn r1389) -Add: [Network] Added packet protection. No longer a client or server
truelight
parents:
889
diff
changeset
|
307 |
return true; |
f860c7234167
(svn r1389) -Add: [Network] Added packet protection. No longer a client or server
truelight
parents:
889
diff
changeset
|
308 |
} |
f860c7234167
(svn r1389) -Add: [Network] Added packet protection. No longer a client or server
truelight
parents:
889
diff
changeset
|
309 |
|
0 | 310 |
int32 DoCommandByTile(TileIndex tile, uint32 p1, uint32 p2, uint32 flags, uint procc) |
311 |
{ |
|
926
bd4312619522
(svn r1414) Move TileIndex, TILE_MASK and GET_TILE_[XY] to map.h and turn the latter into inline functions names Tile[XY]
tron
parents:
903
diff
changeset
|
312 |
return DoCommand(TileX(tile) * 16, TileY(tile) * 16, p1, p2, flags, procc); |
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
147
diff
changeset
|
313 |
} |
0 | 314 |
|
315 |
||
316 |
//extern void _stdcall Sleep(int s); |
|
317 |
||
318 |
int32 DoCommand(int x, int y, uint32 p1, uint32 p2, uint32 flags, uint procc) |
|
319 |
{ |
|
320 |
int32 res; |
|
321 |
CommandProc *proc; |
|
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
147
diff
changeset
|
322 |
|
1776
fa776997bba2
(svn r2280) - Fix: Check if the passed tile to DoCommand is within the current mapsize
Darkvater
parents:
1728
diff
changeset
|
323 |
/* Do not even think about executing out-of-bounds tile-commands */ |
fa776997bba2
(svn r2280) - Fix: Check if the passed tile to DoCommand is within the current mapsize
Darkvater
parents:
1728
diff
changeset
|
324 |
if (TILE_FROM_XY(x,y) > MapSize()) return CMD_ERROR; |
fa776997bba2
(svn r2280) - Fix: Check if the passed tile to DoCommand is within the current mapsize
Darkvater
parents:
1728
diff
changeset
|
325 |
|
0 | 326 |
proc = _command_proc_table[procc]; |
327 |
||
328 |
if (_docommand_recursive == 0) { |
|
329 |
_error_message = INVALID_STRING_ID; |
|
330 |
// update last build coord of player |
|
331 |
if ( (x|y) != 0 && _current_player < MAX_PLAYERS) { |
|
332 |
DEREF_PLAYER(_current_player)->last_build_coordinate = TILE_FROM_XY(x,y); |
|
333 |
} |
|
334 |
} |
|
335 |
||
336 |
_docommand_recursive++; |
|
337 |
||
338 |
// only execute the test call if it's toplevel, or we're not execing. |
|
339 |
if (_docommand_recursive == 1 || !(flags & DC_EXEC) || (flags & DC_FORCETEST) ) { |
|
340 |
res = proc(x, y, flags&~DC_EXEC, p1, p2); |
|
1691
fcd9fefaed02
(svn r2195) Add CmdFailed() as the One True Way(tm) to check if a command failed.
tron
parents:
1623
diff
changeset
|
341 |
if (CmdFailed(res)) { |
0 | 342 |
if (res & 0xFFFF) _error_message = res & 0xFFFF; |
343 |
goto error; |
|
344 |
} |
|
345 |
||
346 |
if (_docommand_recursive == 1) { |
|
347 |
if (!(flags&DC_QUERY_COST) && res != 0 && !CheckPlayerHasMoney(res)) |
|
348 |
goto error; |
|
349 |
} |
|
350 |
||
351 |
if (!(flags & DC_EXEC)) { |
|
352 |
_docommand_recursive--; |
|
353 |
return res; |
|
354 |
} |
|
355 |
} |
|
356 |
||
889
7f8630bfea41
(svn r1375) -Fix: [1050990] Buying trains sometimes accounted for incorrectly. Was the result of the cost getting reset in a recursive call of docommand. That is fixed. In addition all cost-commands are typed explicitely. Please do not forget to do so or your costs will be credited to construction if you are unlucky.
darkvater
parents:
842
diff
changeset
|
357 |
/* Execute the command here. All cost-relevant functions set the expenses type |
7f8630bfea41
(svn r1375) -Fix: [1050990] Buying trains sometimes accounted for incorrectly. Was the result of the cost getting reset in a recursive call of docommand. That is fixed. In addition all cost-commands are typed explicitely. Please do not forget to do so or your costs will be credited to construction if you are unlucky.
darkvater
parents:
842
diff
changeset
|
358 |
* themselves with "SET_EXPENSES_TYPE(...);" at the beginning of the function */ |
0 | 359 |
res = proc(x, y, flags, p1, p2); |
1691
fcd9fefaed02
(svn r2195) Add CmdFailed() as the One True Way(tm) to check if a command failed.
tron
parents:
1623
diff
changeset
|
360 |
if (CmdFailed(res)) { |
0 | 361 |
if (res & 0xFFFF) _error_message = res & 0xFFFF; |
362 |
error: |
|
363 |
_docommand_recursive--; |
|
364 |
return CMD_ERROR; |
|
365 |
} |
|
366 |
||
367 |
// if toplevel, subtract the money. |
|
368 |
if (--_docommand_recursive == 0) { |
|
369 |
SubtractMoneyFromPlayer(res); |
|
370 |
} |
|
371 |
||
372 |
return res; |
|
373 |
} |
|
374 |
||
1093
e8d26c7dc42f
(svn r1594) Convert all undefined parameter lists to (void) and add the appropriate warning flags in the Makefile
tron
parents:
959
diff
changeset
|
375 |
int32 GetAvailableMoneyForCommand(void) |
0 | 376 |
{ |
1794
44f9deff97ed
(svn r2298) - CodeChange: removed CmdAbuses: CmdSetTownNameType(), CmdStartNewGame(), CmdCreateScenario(), CmdSetNewLandscapeType() and CmdGenRandomNewGame().
Darkvater
parents:
1786
diff
changeset
|
377 |
PlayerID pid = _current_player; |
147
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
378 |
if (pid >= MAX_PLAYERS) return 0x7FFFFFFF; // max int |
0 | 379 |
return DEREF_PLAYER(pid)->player_money; |
380 |
} |
|
381 |
||
382 |
// toplevel network safe docommand function for the current player. must not be called recursively. |
|
383 |
// the callback is called when the command succeeded or failed. |
|
384 |
bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, CommandCallback *callback, uint32 cmd) |
|
385 |
{ |
|
386 |
int32 res = 0,res2; |
|
387 |
CommandProc *proc; |
|
388 |
uint32 flags; |
|
389 |
bool notest; |
|
390 |
||
926
bd4312619522
(svn r1414) Move TileIndex, TILE_MASK and GET_TILE_[XY] to map.h and turn the latter into inline functions names Tile[XY]
tron
parents:
903
diff
changeset
|
391 |
int x = TileX(tile) * 16; |
bd4312619522
(svn r1414) Move TileIndex, TILE_MASK and GET_TILE_[XY] to map.h and turn the latter into inline functions names Tile[XY]
tron
parents:
903
diff
changeset
|
392 |
int y = TileY(tile) * 16; |
0 | 393 |
|
1776
fa776997bba2
(svn r2280) - Fix: Check if the passed tile to DoCommand is within the current mapsize
Darkvater
parents:
1728
diff
changeset
|
394 |
/* Do not even think about executing out-of-bounds tile-commands */ |
fa776997bba2
(svn r2280) - Fix: Check if the passed tile to DoCommand is within the current mapsize
Darkvater
parents:
1728
diff
changeset
|
395 |
if (tile > MapSize()) return false; |
fa776997bba2
(svn r2280) - Fix: Check if the passed tile to DoCommand is within the current mapsize
Darkvater
parents:
1728
diff
changeset
|
396 |
|
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
147
diff
changeset
|
397 |
assert(_docommand_recursive == 0); |
0 | 398 |
|
399 |
_error_message = INVALID_STRING_ID; |
|
400 |
_error_message_2 = cmd >> 16; |
|
401 |
_additional_cash_required = 0; |
|
402 |
||
403 |
// spectator has no rights. |
|
147
d0c8100d18cf
(svn r148) -Feature: Company HQ can now be moved somewhere else (cost 1% of company value). Water floods HQ.
darkvater
parents:
58
diff
changeset
|
404 |
if (_current_player == OWNER_SPECTATOR) { |
0 | 405 |
ShowErrorMessage(_error_message, _error_message_2, x, y); |
406 |
return false; |
|
407 |
} |
|
408 |
||
409 |
flags = 0; |
|
410 |
if (cmd & CMD_AUTO) flags |= DC_AUTO; |
|
411 |
if (cmd & CMD_NO_WATER) flags |= DC_NO_WATER; |
|
412 |
||
413 |
// get pointer to command handler |
|
414 |
assert((cmd & 0xFF) < lengthof(_command_proc_table)); |
|
415 |
proc = _command_proc_table[cmd & 0xFF]; |
|
416 |
||
826 | 417 |
// Some commands have a different output in dryrun than the realrun |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
418 |
// e.g.: if you demolish a whole town, the dryrun would say okay. |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
419 |
// but by really destroying, your rating drops and at a certain point |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
420 |
// it will fail. so res and res2 are different |
467
6f3e282fdce4
(svn r697) Fix the town road removal crash _still_ present there.
pasky
parents:
395
diff
changeset
|
421 |
// CMD_REMOVE_ROAD: This command has special local authority |
6f3e282fdce4
(svn r697) Fix the town road removal crash _still_ present there.
pasky
parents:
395
diff
changeset
|
422 |
// restrictions which may cause the test run to fail (the previous |
6f3e282fdce4
(svn r697) Fix the town road removal crash _still_ present there.
pasky
parents:
395
diff
changeset
|
423 |
// road fragments still stay there and the town won't let you |
6f3e282fdce4
(svn r697) Fix the town road removal crash _still_ present there.
pasky
parents:
395
diff
changeset
|
424 |
// disconnect the road system), but the exec will succeed and this |
6f3e282fdce4
(svn r697) Fix the town road removal crash _still_ present there.
pasky
parents:
395
diff
changeset
|
425 |
// fact will trigger an assertion failure. --pasky |
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
147
diff
changeset
|
426 |
notest = |
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
147
diff
changeset
|
427 |
(cmd & 0xFF) == CMD_CLEAR_AREA || |
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
147
diff
changeset
|
428 |
(cmd & 0xFF) == CMD_CONVERT_RAIL || |
0 | 429 |
(cmd & 0xFF) == CMD_LEVEL_LAND || |
1701
e46ac9ca353e
(svn r2205) - Fixup of revision 2200, not twice CMD_REMOVE_LONG_ROAD :p. Thanks TrueLight.
Darkvater
parents:
1696
diff
changeset
|
430 |
(cmd & 0xFF) == CMD_REMOVE_ROAD || |
1696
b3979425aa5a
(svn r2200) - Fix [ 1179892 ] click & drag removal of road assertion fail. Add CMD_REMOVE_LONG_ROAD to the 'notest' section as it might have difficulties with town ratings, etc. Read the comment for more info (mgasterix)
Darkvater
parents:
1691
diff
changeset
|
431 |
(cmd & 0xFF) == CMD_REMOVE_LONG_ROAD; |
0 | 432 |
|
433 |
_docommand_recursive = 1; |
|
434 |
||
435 |
// cost estimation only? |
|
842 | 436 |
if (_shift_pressed && _current_player == _local_player && !(cmd & (CMD_NETWORK_COMMAND | CMD_SHOW_NO_ERROR))) { |
0 | 437 |
// estimate the cost. |
438 |
res = proc(x, y, flags, p1, p2); |
|
1691
fcd9fefaed02
(svn r2195) Add CmdFailed() as the One True Way(tm) to check if a command failed.
tron
parents:
1623
diff
changeset
|
439 |
if (CmdFailed(res)) { |
0 | 440 |
if (res & 0xFFFF) _error_message = res & 0xFFFF; |
441 |
ShowErrorMessage(_error_message, _error_message_2, x, y); |
|
442 |
} else { |
|
443 |
ShowEstimatedCostOrIncome(res, x, y); |
|
444 |
} |
|
445 |
||
446 |
_docommand_recursive = 0; |
|
447 |
return false; |
|
448 |
} |
|
449 |
||
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
147
diff
changeset
|
450 |
|
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
451 |
if (!((cmd & CMD_NO_TEST_IF_IN_NETWORK) && _networking)) { |
0 | 452 |
// first test if the command can be executed. |
453 |
res = proc(x,y, flags, p1, p2); |
|
1691
fcd9fefaed02
(svn r2195) Add CmdFailed() as the One True Way(tm) to check if a command failed.
tron
parents:
1623
diff
changeset
|
454 |
if (CmdFailed(res)) { |
0 | 455 |
if (res & 0xFFFF) _error_message = res & 0xFFFF; |
456 |
goto show_error; |
|
457 |
} |
|
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
458 |
// no money? Only check if notest is off |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
459 |
if (!notest && res != 0 && !CheckPlayerHasMoney(res)) goto show_error; |
0 | 460 |
} |
461 |
||
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
462 |
#ifdef ENABLE_NETWORK |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
463 |
// If we are in network, and the command is not from the network |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
464 |
// send it to the command-queue and abort execution |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
465 |
if (_networking && !(cmd & CMD_NETWORK_COMMAND)) { |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
466 |
NetworkSend_Command(tile, p1, p2, cmd, callback); |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
467 |
_docommand_recursive = 0; |
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
468 |
return true; |
0 | 469 |
} |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
470 |
#endif /* ENABLE_NETWORK */ |
0 | 471 |
|
472 |
// update last build coordinate of player. |
|
473 |
if ( tile != 0 && _current_player < MAX_PLAYERS) DEREF_PLAYER(_current_player)->last_build_coordinate = tile; |
|
474 |
||
889
7f8630bfea41
(svn r1375) -Fix: [1050990] Buying trains sometimes accounted for incorrectly. Was the result of the cost getting reset in a recursive call of docommand. That is fixed. In addition all cost-commands are typed explicitely. Please do not forget to do so or your costs will be credited to construction if you are unlucky.
darkvater
parents:
842
diff
changeset
|
475 |
/* Actually try and execute the command. If no cost-type is given |
7f8630bfea41
(svn r1375) -Fix: [1050990] Buying trains sometimes accounted for incorrectly. Was the result of the cost getting reset in a recursive call of docommand. That is fixed. In addition all cost-commands are typed explicitely. Please do not forget to do so or your costs will be credited to construction if you are unlucky.
darkvater
parents:
842
diff
changeset
|
476 |
* use the construction one */ |
7f8630bfea41
(svn r1375) -Fix: [1050990] Buying trains sometimes accounted for incorrectly. Was the result of the cost getting reset in a recursive call of docommand. That is fixed. In addition all cost-commands are typed explicitely. Please do not forget to do so or your costs will be credited to construction if you are unlucky.
darkvater
parents:
842
diff
changeset
|
477 |
_yearly_expenses_type = EXPENSES_CONSTRUCTION; |
0 | 478 |
res2 = proc(x,y, flags|DC_EXEC, p1, p2); |
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
147
diff
changeset
|
479 |
|
826 | 480 |
// If notest is on, it means the result of the test can be different than |
543
e3b43338096b
(svn r942) -Merged branch/network back into the trunk
truelight
parents:
534
diff
changeset
|
481 |
// the real command.. so ignore the test |
652
0f553238c98a
(svn r1085) -Fix: [Network] [ 1084834 ] If IF_IN_NETWORK flag was on, an error
truelight
parents:
601
diff
changeset
|
482 |
if (!notest && !((cmd & CMD_NO_TEST_IF_IN_NETWORK) && _networking)) { |
0 | 483 |
assert(res == res2); // sanity check |
484 |
} else { |
|
1702
6402cfbb9772
(svn r2206) - Regression Fix: slight typo of res2 into res, this also fixes recent bug "[ 1183396 ] Train can't find depot, it gives money in Multiplayer"
Darkvater
parents:
1701
diff
changeset
|
485 |
if (CmdFailed(res2)) { |
0 | 486 |
if (res2 & 0xFFFF) _error_message = res2 & 0xFFFF; |
487 |
goto show_error; |
|
488 |
} |
|
489 |
} |
|
490 |
||
491 |
SubtractMoneyFromPlayer(res2); |
|
492 |
||
493 |
if (_current_player == _local_player && _game_mode != GM_EDITOR) { |
|
494 |
if (res2 != 0) |
|
495 |
ShowCostOrIncomeAnimation(x, y, GetSlopeZ(x, y), res2); |
|
496 |
if (_additional_cash_required) { |
|
534
17ab2f22ff74
(svn r901) Small step in the process to clean up the DPARAM mess:
tron
parents:
507
diff
changeset
|
497 |
SetDParam(0, _additional_cash_required); |
0 | 498 |
ShowErrorMessage(STR_0003_NOT_ENOUGH_CASH_REQUIRES, _error_message_2, x,y); |
499 |
if (res2 == 0) goto callb_err; |
|
500 |
} |
|
501 |
} |
|
502 |
||
503 |
_docommand_recursive = 0; |
|
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
147
diff
changeset
|
504 |
|
0 | 505 |
if (callback) callback(true, tile, p1, p2); |
506 |
return true; |
|
507 |
||
508 |
show_error: |
|
509 |
// show error message if the command fails? |
|
510 |
if (_current_player == _local_player && _error_message_2 != 0) |
|
511 |
ShowErrorMessage(_error_message, _error_message_2, x,y); |
|
512 |
||
513 |
callb_err: |
|
514 |
_docommand_recursive = 0; |
|
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
147
diff
changeset
|
515 |
|
0 | 516 |
if (callback) callback(false, tile, p1, p2); |
517 |
return false; |
|
518 |
} |