From 91233ea596aa3cdf00447b23d68cae6083efb6bb Mon Sep 17 00:00:00 2001 From: smatz Date: Sun, 4 Jan 2009 15:32:25 +0000 Subject: (svn r14828) -Codechange: move most of save/load-specific code to separate files --- src/saveload/autoreplace_sl.cpp | 51 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 src/saveload/autoreplace_sl.cpp (limited to 'src/saveload/autoreplace_sl.cpp') diff --git a/src/saveload/autoreplace_sl.cpp b/src/saveload/autoreplace_sl.cpp new file mode 100644 index 000000000..d24c290a8 --- /dev/null +++ b/src/saveload/autoreplace_sl.cpp @@ -0,0 +1,51 @@ +/* $Id$ */ + +/** @file autoreplace_sl.cpp Code handling saving and loading of autoreplace rules */ + +#include "../stdafx.h" +#include "../autoreplace_type.h" +#include "../engine_type.h" +#include "../group_type.h" +#include "../autoreplace_base.h" + +#include "saveload.h" + +static const SaveLoad _engine_renew_desc[] = { + SLE_VAR(EngineRenew, from, SLE_UINT16), + SLE_VAR(EngineRenew, to, SLE_UINT16), + + SLE_REF(EngineRenew, next, REF_ENGINE_RENEWS), + SLE_CONDVAR(EngineRenew, group_id, SLE_UINT16, 60, SL_MAX_VERSION), + SLE_END() +}; + +static void Save_ERNW() +{ + EngineRenew *er; + + FOR_ALL_ENGINE_RENEWS(er) { + SlSetArrayIndex(er->index); + SlObject(er, _engine_renew_desc); + } +} + +static void Load_ERNW() +{ + int index; + + while ((index = SlIterateArray()) != -1) { + EngineRenew *er = new (index) EngineRenew(); + SlObject(er, _engine_renew_desc); + + /* Advanced vehicle lists, ungrouped vehicles got added */ + if (CheckSavegameVersion(60)) { + er->group_id = ALL_GROUP; + } else if (CheckSavegameVersion(71)) { + if (er->group_id == DEFAULT_GROUP) er->group_id = ALL_GROUP; + } + } +} + +extern const ChunkHandler _autoreplace_chunk_handlers[] = { + { 'ERNW', Save_ERNW, Load_ERNW, CH_ARRAY | CH_LAST}, +}; -- cgit v1.2.3-54-g00ecf