16 #include "../tile_type.h" 18 static const uint BUFFER_SIZE = 4096;
19 static const uint OLD_MAP_SIZE = 256 * 256;
31 byte buffer[BUFFER_SIZE];
60 OC_FILE_I16 = 3 << 16,
61 OC_FILE_U16 = 4 << 16,
62 OC_FILE_I32 = 5 << 16,
63 OC_FILE_U32 = 6 << 16,
66 OC_INT8 = OC_VAR_I8 | OC_FILE_I8,
67 OC_UINT8 = OC_VAR_U8 | OC_FILE_U8,
68 OC_INT16 = OC_VAR_I16 | OC_FILE_I16,
69 OC_UINT16 = OC_VAR_U16 | OC_FILE_U16,
70 OC_INT32 = OC_VAR_I32 | OC_FILE_I32,
71 OC_UINT32 = OC_VAR_U32 | OC_FILE_U32,
73 OC_TILE = OC_VAR_U32 | OC_FILE_U16,
100 extern uint _bump_assert_value;
115 uint16 x = ReadUint16(ls);
116 return x | ReadUint16(ls) << 16;
128 #define OCL_SVAR(type, base, offset) { type, 1, NULL, (uint)cpp_offsetof(base, offset), NULL } 129 #define OCL_VAR(type, amount, pointer) { type, amount, pointer, 0, NULL } 130 #define OCL_END() { OC_END, 0, NULL, 0, NULL } 131 #define OCL_CNULL(type, amount) { OC_NULL | type, amount, NULL, 0, NULL } 132 #define OCL_CCHUNK(type, amount, proc) { OC_CHUNK | type, amount, NULL, 0, proc } 133 #define OCL_ASSERT(type, size) { OC_ASSERT | type, 1, NULL, size, NULL } 134 #define OCL_NULL(amount) OCL_CNULL((OldChunkType)0, amount) 135 #define OCL_CHUNK(amount, proc) OCL_CCHUNK((OldChunkType)0, amount, proc)
DECLARE_ENUM_AS_BIT_SET(GenderEthnicity) enum CompanyManagerFaceVariable
Bitgroups of the CompanyManagerFace variable.
void * ptr
Pointer where to save the data (may only be set if offset is 0)
-//- TTO (default is neither of these)
chunk is valid ONLY for TTD savegames
OldChunkType type
Type of field.
Functions/types related to saving and loading games.
bool LoadChunk(LoadgameState *ls, void *base, const OldChunks *chunks)
Loads a chunk from the old savegame.
uint offset
Offset from basepointer (may only be set if ptr is NULL)
uint32 TileIndex
The index/ID of a Tile.
uint32 amount
Amount of fields.
End of the whole chunk, all 32 bits set to zero.
byte ReadByte(LoadgameState *ls)
Reads a byte from the buffer and decompress if needed.
Dereference the pointer once before writing to it, so we do not have to use big static arrays...