From 7368c740a646c958797b5dff90d6c5b51236e2a4 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/cheat_sl.cpp | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 src/saveload/cheat_sl.cpp (limited to 'src/saveload/cheat_sl.cpp') diff --git a/src/saveload/cheat_sl.cpp b/src/saveload/cheat_sl.cpp new file mode 100644 index 000000000..a8c939fed --- /dev/null +++ b/src/saveload/cheat_sl.cpp @@ -0,0 +1,37 @@ +/* $Id$ */ + +/** @file cheat_sl.cpp Code handling saving and loading of cheats */ + +#include "../stdafx.h" +#include "../cheat_type.h" + +#include "saveload.h" + +static void Save_CHTS() +{ + /* Cannot use lengthof because _cheats is of type Cheats, not Cheat */ + byte count = sizeof(_cheats) / sizeof(Cheat); + Cheat *cht = (Cheat*) &_cheats; + Cheat *cht_last = &cht[count]; + + SlSetLength(count * 2); + for (; cht != cht_last; cht++) { + SlWriteByte(cht->been_used); + SlWriteByte(cht->value); + } +} + +static void Load_CHTS() +{ + Cheat *cht = (Cheat*)&_cheats; + size_t count = SlGetFieldLength() / 2; + + for (uint i = 0; i < count; i++) { + cht[i].been_used = (SlReadByte() != 0); + cht[i].value = (SlReadByte() != 0); + } +} + +extern const ChunkHandler _cheat_chunk_handlers[] = { + { 'CHTS', Save_CHTS, Load_CHTS, CH_RIFF | CH_LAST} +}; -- cgit v1.2.3-70-g09d2