Files @ r10346:abb5a49d7f1a
Branch filter:

Location: cpp/openttd-patchpack/source/src/cheat.cpp

translators
(svn r14597) -Update: WebTranslator2 update to 2008-11-19 18:43:03
afrikaans - 165 fixed, 227 changed by nubllett (156), burgerd (236)
dutch - 2 fixed, 5 changed by Excel20 (7)
french - 2 fixed by glx (2)
german - 6 fixed, 2 changed by jonathan159 (2), MaSch (6)
hungarian - 1 fixed, 20 changed by oklmernok (21)
macedonian - 90 fixed by sashozs (90)
serbian - 560 fixed by AtzaMan (560)
slovak - 1 fixed by James (1)
spanish - 1 fixed by eusebio (1)
/* $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}
};