diff --git a/src/saveload/saveload.h b/src/saveload/saveload.h --- a/src/saveload/saveload.h +++ b/src/saveload/saveload.h @@ -384,7 +384,6 @@ void DoExitSave(); SaveOrLoadResult SaveWithFilter(struct SaveFilter *writer, bool threaded); SaveOrLoadResult LoadWithFilter(struct LoadFilter *reader); -typedef void ChunkSaveLoadProc(); typedef void AutolengthProc(void *arg); /** Type of a chunk. */ @@ -402,37 +401,23 @@ enum ChunkType { /** Handlers and description of chunk. */ struct ChunkHandler { uint32 id; ///< Unique ID (4 letters). - ChunkSaveLoadProc *save_proc; ///< Save procedure of the chunk. - ChunkSaveLoadProc *load_proc; ///< Load procedure of the chunk. - ChunkSaveLoadProc *ptrs_proc; ///< Manipulate pointers in the chunk. - ChunkSaveLoadProc *load_check_proc; ///< Load procedure for game preview. ChunkType type; ///< Type of the chunk. @see ChunkType - bool fix_pointers = false; - bool load_check = false; - ChunkHandler(uint32 id, ChunkType type) : id(id), type(type) {} - ChunkHandler(uint32 id, ChunkSaveLoadProc *save_proc, ChunkSaveLoadProc *load_proc, ChunkSaveLoadProc *ptrs_proc, ChunkSaveLoadProc *load_check_proc, ChunkType type) - : id(id), save_proc(save_proc), load_proc(load_proc), ptrs_proc(ptrs_proc), load_check_proc(load_check_proc), type(type) - { - this->fix_pointers = ptrs_proc != nullptr; - this->load_check = load_check_proc != nullptr; - } - virtual ~ChunkHandler() {} /** * Save the chunk. * Must be overridden, unless Chunk type is CH_READONLY. */ - virtual void Save() const; + virtual void Save() const { NOT_REACHED(); } /** * Load the chunk. * Must be overridden. */ - virtual void Load() const; + virtual void Load() const = 0; /** * Fix the pointers. @@ -440,7 +425,7 @@ struct ChunkHandler { * On load, pointers are filled with indices and need to be fixed to point to the real object. * Must be overridden if the chunk saves any pointer. */ - virtual void FixPointers() const; + virtual void FixPointers() const {} /** * Load the chunk for game preview.