MCPcopy Create free account
hub / github.com/OpenTTD/OpenTTD / FixTTOMapArray

Function FixTTOMapArray

src/saveload/oldloader_sl.cpp:210–336  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

208}
209
210static bool FixTTOMapArray()
211{
212 for (auto tile : Map::Iterate()) {
213 TileType tt = GetTileType(tile);
214 if (tt == 11) {
215 /* TTO has a different way of storing monorail.
216 * Instead of using bits in m3 it uses a different tile type. */
217 tile.m3() = 1; // rail type = monorail (in TTD)
218 SetTileType(tile, MP_RAILWAY);
219 tile.m2() = 1; // set monorail ground to RailGroundType::Grass
220 tt = MP_RAILWAY;
221 }
222
223 switch (tt) {
224 case MP_CLEAR:
225 break;
226
227 case MP_RAILWAY:
228 switch (GB(tile.m5(), 6, 2)) {
229 case 0: // RailTileType::Normal
230 break;
231 case 1: // RailTileType::Signals
232 tile.m4() = (~tile.m5() & 1) << 2; // signal variant (present only in OTTD)
233 SB(tile.m2(), 6, 2, GB(tile.m5(), 3, 2)); // signal status
234 tile.m3() |= 0xC0; // both signals are present
235 tile.m5() = HasBit(tile.m5(), 5) ? 2 : 1; // track direction (only X or Y)
236 tile.m5() |= 0x40; // RailTileType::Signals
237 break;
238 case 3: // RailTileType::Depot
239 tile.m2() = 0;
240 break;
241 default:
242 return false;
243 }
244 break;
245
246 case MP_ROAD: // road (depot) or level crossing
247 switch (GB(tile.m5(), 4, 4)) {
248 case 0: // RoadTileType::Normal
249 if (tile.m2() == 4) tile.m2() = 5; // 'small trees' -> Roadside::Trees
250 break;
251 case 1: // RoadTileType::Crossing (there aren't monorail crossings in TTO)
252 tile.m3() = tile.m1(); // set owner of road = owner of rail
253 break;
254 case 2: // RoadTileType::Depot
255 break;
256 default:
257 return false;
258 }
259 break;
260
261 case MP_HOUSE:
262 tile.m3() = tile.m2() & 0xC0; // construction stage
263 tile.m2() &= 0x3F; // building type
264 if (tile.m2() >= 5) tile.m2()++; // skip "large office block on snow"
265 break;
266
267 case MP_TREES:

Callers 1

LoadTTOMainFunction · 0.85

Calls 6

GetTileTypeFunction · 0.85
SetTileTypeFunction · 0.85
GBFunction · 0.85
SBFunction · 0.85
HasBitFunction · 0.85
FixOldMapArrayFunction · 0.85

Tested by

no test coverage detected