1
0
Fork 0

(svn r2499) -Codechange: Moved the semaphore bit from bit 2 to bit 3 in _map_hi for rails, in order to make way for pbs

release/0.4.5
celestar 2005-06-30 13:24:17 +00:00
parent 7ff19d7dfd
commit 27e61cbd84
5 changed files with 38 additions and 9 deletions

View File

@ -98,7 +98,7 @@ map5 bit 7 clear: railway track
<tr><td nowrap valign=top><tt>01</tt>: </td><td align=left>pre-signals</td></tr> <tr><td nowrap valign=top><tt>01</tt>: </td><td align=left>pre-signals</td></tr>
<tr><td nowrap valign=top><tt>10</tt>: </td><td align=left>exit-signals</td></tr> <tr><td nowrap valign=top><tt>10</tt>: </td><td align=left>exit-signals</td></tr>
<tr><td nowrap valign=top><tt>11</tt>: </td><td align=left>combo-signals</td></tr> <tr><td nowrap valign=top><tt>11</tt>: </td><td align=left>combo-signals</td></tr>
<tr><td nowrap valign=top>bit 2: </td><td align=left>set = semaphore signals, clear = light signals</td></tr> <tr><td nowrap valign=top>bit 3: </td><td align=left>set = semaphore signals, clear = light signals</td></tr>
</table></li> </table></li>
</ul></li> </ul></li>
<li>map_owner: <a href="#OwnershipInfo">owner</a> of the track <li>map_owner: <a href="#OwnershipInfo">owner</a> of the track

View File

@ -52,7 +52,7 @@ the array so you can quickly see what is used and what is not.
<td style="white-space: nowrap; text-align: center;"><span class="abuse">XXXX XXXX</span></td> <td style="white-space: nowrap; text-align: center;"><span class="abuse">XXXX XXXX</span></td>
<td style="white-space: nowrap; text-align: center;">XXXX XXXX <span class="freebits">OOOO OOOO</span><br> <td style="white-space: nowrap; text-align: center;">XXXX XXXX <span class="freebits">OOOO OOOO</span><br>
</td> </td>
<td style="white-space: nowrap; text-align: center;">XXXX XXXX XXX<span class="freebits">O OOOO</span><br> <td style="white-space: nowrap; text-align: center;">XXXX XXXX XX<span class="freebits">O</span>X<span class="freebits"> OOOO</span><br>
</td> </td>
<td style="white-space: nowrap; text-align: center;">XXXX&nbsp;&nbsp;&nbsp;&nbsp;XXXX</td> <td style="white-space: nowrap; text-align: center;">XXXX&nbsp;&nbsp;&nbsp;&nbsp;XXXX</td>
<td style="white-space: nowrap; text-align: center;">XXXX XXXX<br> <td style="white-space: nowrap; text-align: center;">XXXX XXXX<br>

View File

@ -1410,5 +1410,14 @@ bool AfterLoadGame(uint version)
} }
} }
if (version < 0xF00) {
BEGIN_TILE_LOOP(tile, MapSizeX(), MapSizeY(), 0) {
if (IsTileType(tile, MP_RAILWAY) && HasSignals(tile) && HASBIT(_map3_hi[tile], 2)) {
CLRBIT(_map3_hi[tile], 2);
SETBIT(_map3_hi[tile], 3);
}
} END_TILE_LOOP(tile, MapSizeX(), MapSizeY(), 0);
}
return true; return true;
} }

View File

@ -749,7 +749,7 @@ int32 CmdBuildSingleSignal(int x, int y, uint32 flags, uint32 p1, uint32 p2)
_map5[tile] |= RAIL_TYPE_SIGNALS; // change into signals _map5[tile] |= RAIL_TYPE_SIGNALS; // change into signals
_map2[tile] |= 0xF0; // all signals are on _map2[tile] |= 0xF0; // all signals are on
_map3_lo[tile] &= ~0xF0; // no signals built by default _map3_lo[tile] &= ~0xF0; // no signals built by default
_map3_hi[tile] = semaphore ? 4 : 0; _map3_hi[tile] = semaphore ? 0x08 : 0;
} }
if (p2 == 0) { if (p2 == 0) {
@ -792,9 +792,9 @@ int32 CmdBuildSingleSignal(int x, int y, uint32 flags, uint32 p1, uint32 p2)
_map3_lo[tile] |= p2 & SignalOnTrack(track); _map3_lo[tile] |= p2 & SignalOnTrack(track);
// convert between signal<->semaphores when dragging // convert between signal<->semaphores when dragging
if (semaphore) if (semaphore)
SETBIT(_map3_hi[tile], 2); SETBIT(_map3_hi[tile], 3);
else else
CLRBIT(_map3_hi[tile], 2); CLRBIT(_map3_hi[tile], 3);
} }
MarkTileDirtyByTile(tile); MarkTileDirtyByTile(tile);
@ -931,7 +931,7 @@ int32 CmdRemoveSingleSignal(int x, int y, uint32 flags, uint32 p1, uint32 p2)
if ((_map3_lo[tile] & 0xF0) == 0) { if ((_map3_lo[tile] & 0xF0) == 0) {
_map5[tile] &= ~RAIL_TYPE_SIGNALS; _map5[tile] &= ~RAIL_TYPE_SIGNALS;
_map2[tile] &= ~0xF0; _map2[tile] &= ~0xF0;
CLRBIT(_map3_hi[tile], 2); // remove any possible semaphores CLRBIT(_map3_hi[tile], 3); // remove any possible semaphores
} }
SetSignalsOnBothDir(tile, track); SetSignalsOnBothDir(tile, track);
@ -1118,28 +1118,48 @@ static int32 ClearTile_Track(TileIndex tile, byte flags)
#include "table/track_land.h" #include "table/track_land.h"
// used for presignals // used for presignals
static const SpriteID _signal_base_sprites[16] = { static const SpriteID _signal_base_sprites[32] = {
0x4FB, 0x4FB,
0x1323, 0x1323,
0x1333, 0x1333,
0x1343, 0x1343,
0x0, //PBS place, light signal
0x0, //reserved for future use
0x0, //reserved for future use
0x0, //reserved for future use
// use semaphores instead of signals? // use semaphores instead of signals?
0x1353, 0x1353,
0x1363, 0x1363,
0x1373, 0x1373,
0x1383, 0x1383,
0x0, //PBS place, semaphore
0x0, //reserved for future use
0x0, //reserved for future use
0x0, //reserved for future use
// mirrored versions // mirrored versions
0x4FB, 0x4FB,
0x1323, 0x1323,
0x1333, 0x1333,
0x1343, 0x1343,
0x0, //PBS place, semaphore
0x0, //reserved for future use
0x0, //reserved for future use
0x0, //reserved for future use
0x13C6, 0x13C6,
0x13D6, 0x13D6,
0x13E6, 0x13E6,
0x13F6, 0x13F6,
0x0, //PBS place, semaphore
0x0, //reserved for future use
0x0, //reserved for future use
0x0, //reserved for future use
}; };
// used to determine the side of the road for the signal // used to determine the side of the road for the signal
@ -1157,7 +1177,7 @@ static void DrawSignalHelper(TileInfo *ti, byte condition, uint32 image_and_pos)
uint v = _signal_position[(image_and_pos & 0xF) + (otherside ? 12 : 0)]; uint v = _signal_position[(image_and_pos & 0xF) + (otherside ? 12 : 0)];
uint x = ti->x | (v&0xF); uint x = ti->x | (v&0xF);
uint y = ti->y | (v>>4); uint y = ti->y | (v>>4);
uint sprite = _signal_base_sprites[(_map3_hi[ti->tile] & 7) + (otherside ? 8 : 0)] + (image_and_pos>>4) + ((condition != 0) ? 1 : 0); uint sprite = _signal_base_sprites[(_map3_hi[ti->tile] & 0xF) + (otherside ? 0x10 : 0)] + (image_and_pos>>4) + ((condition != 0) ? 1 : 0);
AddSortableSpriteToDraw(sprite, x, y, 1, 1, 10, GetSlopeZ(x,y)); AddSortableSpriteToDraw(sprite, x, y, 1, 1, 10, GetSlopeZ(x,y));
} }

View File

@ -23,7 +23,7 @@
#include "saveload.h" #include "saveload.h"
enum { enum {
SAVEGAME_MAJOR_VERSION = 14, SAVEGAME_MAJOR_VERSION = 15,
SAVEGAME_MINOR_VERSION = 0, SAVEGAME_MINOR_VERSION = 0,
SAVEGAME_LOADABLE_VERSION = (SAVEGAME_MAJOR_VERSION << 8) + SAVEGAME_MINOR_VERSION SAVEGAME_LOADABLE_VERSION = (SAVEGAME_MAJOR_VERSION << 8) + SAVEGAME_MINOR_VERSION