src/cheat.cpp
author translators
Tue, 09 Sep 2008 17:40:23 +0000
changeset 10100 115b73724f1a
parent 9390 88d36f907e96
permissions -rw-r--r--
(svn r14282) -Update: WebTranslator2 update to 2008-09-09 17:38:39
czech - 1 fixed, 7 changed by Hadez (7), joeprusa (1)
danish - 61 fixed, 6 changed by ThomasA (28), MiR (39)
dutch - 6 fixed by habell (5), webfreakz (1)
estonian - 1 fixed by kristjans (1)
finnish - 66 fixed by habazi (66)
french - 2 fixed, 2 changed by glx (4)
galician - 14 fixed by Condex (14)
german - 63 fixed, 16 changed by sulai (41), dih (38)
italian - 1 fixed, 1 changed by lorenzodv (2)
piglatin - 27 fixed by adammw (27)
romanian - 57 fixed by kneekoo (57)
russian - 13 fixed by Smoky555 (13)
slovenian - 6 fixed by Necrolyte (6)
spanish - 9 fixed by eusebio (9)
ukrainian - 6 fixed by mad (6)
/* $Id$ */

/** @file cheat.cpp Handling (loading/saving/initializing) of cheats. */

#include "stdafx.h"
#include "saveload.h"
#include "cheat_type.h"

Cheats _cheats;

void InitializeCheats()
{
	memset(&_cheats, 0, sizeof(Cheats));
}

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);
	}
}

bool CheatHasBeenUsed()
{
	/* Cannot use lengthof because _cheats is of type Cheats, not Cheat */
	const Cheat* cht = (Cheat*)&_cheats;
	const Cheat* cht_last = &cht[sizeof(_cheats) / sizeof(Cheat)];

	for (; cht != cht_last; cht++) {
		if (cht->been_used) return true;
	}

	return false;
}


extern const ChunkHandler _cheat_chunk_handlers[] = {
	{ 'CHTS', Save_CHTS,     Load_CHTS,     CH_RIFF | CH_LAST}
};