Clear old tree counter in map array on load of old savegames

See: https://github.com/OpenTTD/OpenTTD/pull/10018
pull/436/head
Jonathan G Rennison 2 years ago
parent 30bc490292
commit 12eb23f0ab

@ -178,7 +178,7 @@ the array so you can quickly see what is used and what is not.
<td>4</td>
<td class="caption">trees</td>
<td class="bits"><span class="free">O</span><span class="used" title="Water class">XX</span><span class="usable" title="Owner (always OWNER_NONE)">1 OOOO</span></td>
<td class="bits"><span class="free">OOOO OOO</span><span class="used" title="Tree ground">XXX</span> <span class="used" title="Tree density">XX</span> <span class="used" title="Tree counter">XXXX</span></td>
<td class="bits"><span class="free">OOOO OOO</span><span class="used" title="Tree ground">XXX</span> <span class="used" title="Tree density">XX</span> <span class="free" title="Old tree counter">OOOO</span></td>
<td class="bits"><span class="usable" title="Tree type unused bits">XX</span><span class="used" title="Tree type">XX XXXX</span></td>
<td class="bits"><span class="free">OOOO OOOO</span></td>
<td class="bits"><span class="used" title="Number of trees on tile (+1)">XX</span><span class="free">OO O</span><span class="used" title="Tree growth">XXX</span></td>

@ -4098,6 +4098,14 @@ bool AfterLoadGame()
}
}
if (SlXvIsFeatureMissing(XSLFI_NO_TREE_COUNTER)) {
for (TileIndex t = 0; t < map_size; t++) {
if (IsTileType(t, MP_TREES)) {
ClearOldTreeCounter(t);
}
}
}
InitializeRoadGUI();
/* This needs to be done after conversion. */

@ -175,6 +175,7 @@ const SlxiSubChunkInfo _sl_xv_sub_chunk_infos[] = {
{ XSLFI_INDUSTRY_ANIM_MASK, XSCF_IGNORABLE_ALL, 1, 1, "industry_anim_mask", nullptr, nullptr, nullptr },
{ XSLFI_NEW_SIGNAL_STYLES, XSCF_NULL, 2, 2, "new_signal_styles", nullptr, nullptr, "XBST,NSID" },
{ XSLFI_SCRIPT_INT64, XSCF_NULL, 1, 1, "script_int64", nullptr, nullptr, nullptr },
{ XSLFI_NO_TREE_COUNTER, XSCF_IGNORABLE_ALL, 1, 1, "no_tree_counter", nullptr, nullptr, nullptr },
{ XSLFI_NULL, XSCF_NULL, 0, 0, nullptr, nullptr, nullptr, nullptr },// This is the end marker
};

@ -127,6 +127,7 @@ enum SlXvFeatureIndex {
XSLFI_GRF_ROADSTOPS, ///< NewGRF road stops
XSLFI_INDUSTRY_ANIM_MASK, ///< Industry tile animation masking
XSLFI_NEW_SIGNAL_STYLES, ///< New signal styles
XSLFI_NO_TREE_COUNTER, ///< No tree counter
XSLFI_SCRIPT_INT64, ///< See: SLV_SCRIPT_INT64

@ -215,6 +215,18 @@ static inline void SetTreeGrowth(TileIndex t, uint g)
SB(_m[t].m5, 0, 3, g);
}
/**
* Clear the old tick counter for a tree-tile
*
* @param t The tile to clear the old tick counter
* @pre Tile must be of type MP_TREES
*/
static inline void ClearOldTreeCounter(TileIndex t)
{
assert_tile(IsTileType(t, MP_TREES), t);
SB(_m[t].m2, 0, 4, 0);
}
/**
* Make a tree-tile.
*

Loading…
Cancel
Save