mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-02-11 16:54:42 +00:00
Feature: [NewGRF] Increase size of persistent storage to 256.
This commit is contained in:
parent
6391d49277
commit
4b0b4e0643
@ -7898,6 +7898,8 @@ static void InitializeGRFSpecial()
|
||||
| ((_settings_game.vehicle.dynamic_engines ? 1 : 0) << 0x18) // dynamic engines
|
||||
| (1 << 0x1E) // variablerunningcosts
|
||||
| (1 << 0x1F); // any switch is on
|
||||
|
||||
_ttdpatch_flags[4] = (1 << 0x00); // larger persistent storage
|
||||
}
|
||||
|
||||
/** Reset and clear all NewGRF stations */
|
||||
|
@ -220,7 +220,7 @@ extern PersistentStoragePool _persistent_storage_pool;
|
||||
/**
|
||||
* Class for pooled persistent storage of data.
|
||||
*/
|
||||
struct PersistentStorage : PersistentStorageArray<int32, 16>, PersistentStoragePool::PoolItem<&_persistent_storage_pool> {
|
||||
struct PersistentStorage : PersistentStorageArray<int32, 256>, PersistentStoragePool::PoolItem<&_persistent_storage_pool> {
|
||||
/** We don't want GCC to zero our struct! It already is zeroed and has an index! */
|
||||
PersistentStorage(const uint32 new_grfid, byte feature, TileIndex tile)
|
||||
{
|
||||
@ -230,7 +230,7 @@ struct PersistentStorage : PersistentStorageArray<int32, 16>, PersistentStorageP
|
||||
}
|
||||
};
|
||||
|
||||
assert_compile(cpp_lengthof(OldPersistentStorage, storage) == cpp_lengthof(PersistentStorage, storage));
|
||||
assert_compile(cpp_lengthof(OldPersistentStorage, storage) <= cpp_lengthof(PersistentStorage, storage));
|
||||
|
||||
#define FOR_ALL_STORAGES_FROM(var, start) FOR_ALL_ITEMS_FROM(PersistentStorage, storage_index, var, start)
|
||||
#define FOR_ALL_STORAGES(var) FOR_ALL_STORAGES_FROM(var, 0)
|
||||
|
@ -101,7 +101,7 @@ static void Load_INDY()
|
||||
/* Store the old persistent storage. The GRFID will be added later. */
|
||||
assert(PersistentStorage::CanAllocateItem());
|
||||
i->psa = new PersistentStorage(0, 0, 0);
|
||||
memcpy(i->psa->storage, _old_ind_persistent_storage.storage, sizeof(i->psa->storage));
|
||||
memcpy(i->psa->storage, _old_ind_persistent_storage.storage, sizeof(_old_ind_persistent_storage.storage));
|
||||
}
|
||||
Industry::IncIndustryTypeCount(i->type);
|
||||
}
|
||||
|
@ -268,8 +268,9 @@
|
||||
* 198
|
||||
* 199
|
||||
* 200 #6805 Extend railtypes to 64, adding uint16 to map array.
|
||||
* 201 #6885 Extend NewGRF persistant storages.
|
||||
*/
|
||||
extern const uint16 SAVEGAME_VERSION = 200; ///< Current savegame version of OpenTTD.
|
||||
extern const uint16 SAVEGAME_VERSION = 201; ///< Current savegame version of OpenTTD.
|
||||
|
||||
SavegameType _savegame_type; ///< type of savegame we are loading
|
||||
FileToSaveLoad _file_to_saveload; ///< File to save or load in the openttd loop.
|
||||
|
@ -538,7 +538,7 @@ static void Load_STNN()
|
||||
/* Store the old persistent storage. The GRFID will be added later. */
|
||||
assert(PersistentStorage::CanAllocateItem());
|
||||
st->airport.psa = new PersistentStorage(0, 0, 0);
|
||||
memcpy(st->airport.psa->storage, _old_st_persistent_storage.storage, sizeof(st->airport.psa->storage));
|
||||
memcpy(st->airport.psa->storage, _old_st_persistent_storage.storage, sizeof(_old_st_persistent_storage.storage));
|
||||
}
|
||||
|
||||
for (CargoID i = 0; i < num_cargo; i++) {
|
||||
|
@ -18,7 +18,8 @@
|
||||
/** Description of the data to save and load in #PersistentStorage. */
|
||||
static const SaveLoad _storage_desc[] = {
|
||||
SLE_CONDVAR(PersistentStorage, grfid, SLE_UINT32, 6, SL_MAX_VERSION),
|
||||
SLE_CONDARR(PersistentStorage, storage, SLE_UINT32, 16, 161, SL_MAX_VERSION),
|
||||
SLE_CONDARR(PersistentStorage, storage, SLE_UINT32, 16, 161, 200),
|
||||
SLE_CONDARR(PersistentStorage, storage, SLE_UINT32, 256, 201, SL_MAX_VERSION),
|
||||
SLE_END()
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user