Mercurial > hg > openttd
comparison src/station_cmd.cpp @ 8300:ae1baac75172 draft
(svn r11864) -Codechange: pass owner whose signals we will update instead of complex detection later
author | smatz <smatz@openttd.org> |
---|---|
date | Tue, 15 Jan 2008 15:00:01 +0000 |
parents | f3452c2b7b01 |
children | 56a9dfa21fe7 |
comparison
equal
deleted
inserted
replaced
8299:8879221d0548 | 8300:ae1baac75172 |
---|---|
1071 if (callback != CALLBACK_FAILED && callback < 8) SetStationGfx(tile, (callback & ~1) + axis); | 1071 if (callback != CALLBACK_FAILED && callback < 8) SetStationGfx(tile, (callback & ~1) + axis); |
1072 } | 1072 } |
1073 | 1073 |
1074 tile += tile_delta; | 1074 tile += tile_delta; |
1075 } while (--w); | 1075 } while (--w); |
1076 SetSignalsOnBothDir(tile_org, track); | 1076 SetSignalsOnBothDir(tile_org, track, _current_player); |
1077 YapfNotifyTrackLayoutChange(tile_org, track); | 1077 YapfNotifyTrackLayoutChange(tile_org, track); |
1078 tile_org += tile_delta ^ TileDiffXY(1, 1); // perpendicular to tile_delta | 1078 tile_org += tile_delta ^ TileDiffXY(1, 1); // perpendicular to tile_delta |
1079 } while (--numtracks); | 1079 } while (--numtracks); |
1080 | 1080 |
1081 st->MarkTilesDirty(false); | 1081 st->MarkTilesDirty(false); |
1200 | 1200 |
1201 /* If we reached here, the tile is valid so increase the quantity of tiles we will remove */ | 1201 /* If we reached here, the tile is valid so increase the quantity of tiles we will remove */ |
1202 quantity++; | 1202 quantity++; |
1203 | 1203 |
1204 if (flags & DC_EXEC) { | 1204 if (flags & DC_EXEC) { |
1205 /* read variables before the station tile is removed */ | |
1205 uint specindex = GetCustomStationSpecIndex(tile2); | 1206 uint specindex = GetCustomStationSpecIndex(tile2); |
1206 Track track = GetRailStationTrack(tile2); | 1207 Track track = GetRailStationTrack(tile2); |
1208 Owner owner = GetTileOwner(tile2); | |
1209 | |
1207 DoClearSquare(tile2); | 1210 DoClearSquare(tile2); |
1208 st->rect.AfterRemoveTile(st, tile2); | 1211 st->rect.AfterRemoveTile(st, tile2); |
1209 SetSignalsOnBothDir(tile2, track); | 1212 SetSignalsOnBothDir(tile2, track, owner); |
1210 YapfNotifyTrackLayoutChange(tile2, track); | 1213 YapfNotifyTrackLayoutChange(tile2, track); |
1211 | 1214 |
1212 DeallocateSpecFromStation(st, specindex); | 1215 DeallocateSpecFromStation(st, specindex); |
1213 | 1216 |
1214 /* now we need to make the "spanned" area of the railway station smaller | 1217 /* now we need to make the "spanned" area of the railway station smaller |
1255 CommandCost cost(EXPENSES_CONSTRUCTION); | 1258 CommandCost cost(EXPENSES_CONSTRUCTION); |
1256 /* clear all areas of the station */ | 1259 /* clear all areas of the station */ |
1257 do { | 1260 do { |
1258 int w_bak = w; | 1261 int w_bak = w; |
1259 do { | 1262 do { |
1260 // for nonuniform stations, only remove tiles that are actually train station tiles | 1263 /* for nonuniform stations, only remove tiles that are actually train station tiles */ |
1261 if (st->TileBelongsToRailStation(tile)) { | 1264 if (st->TileBelongsToRailStation(tile)) { |
1262 if (!EnsureNoVehicleOnGround(tile)) | 1265 if (!EnsureNoVehicleOnGround(tile)) |
1263 return CMD_ERROR; | 1266 return CMD_ERROR; |
1264 cost.AddCost(_price.remove_rail_station); | 1267 cost.AddCost(_price.remove_rail_station); |
1265 if (flags & DC_EXEC) { | 1268 if (flags & DC_EXEC) { |
1269 /* read variables before the station tile is removed */ | |
1266 Track track = GetRailStationTrack(tile); | 1270 Track track = GetRailStationTrack(tile); |
1271 Owner owner = GetTileOwner(tile); // _current_player can be OWNER_WATER | |
1267 DoClearSquare(tile); | 1272 DoClearSquare(tile); |
1268 SetSignalsOnBothDir(tile, track); | 1273 SetSignalsOnBothDir(tile, track, owner); |
1269 YapfNotifyTrackLayoutChange(tile, track); | 1274 YapfNotifyTrackLayoutChange(tile, track); |
1270 } | 1275 } |
1271 } | 1276 } |
1272 tile += TileDiffXY(1, 0); | 1277 tile += TileDiffXY(1, 0); |
1273 } while (--w); | 1278 } while (--w); |