Esempio n. 1
0
void CGEEngine::syncHeader(Common::Serializer &s) {
	debugC(1, kCGEDebugEngine, "CGEEngine::syncHeader(s)");

	int i = kDemo;

	s.syncAsUint16LE(_now);
	s.syncAsUint16LE(_oldLev);
	s.syncAsUint16LE(i);        // unused Demo string id
	for (i = 0; i < 5; i++)
		s.syncAsUint16LE(_game);
	s.syncAsSint16LE(i);		// unused VGA::Mono variable
	s.syncAsUint16LE(_music);
	s.syncBytes(_volume, 2);
	for (i = 0; i < 4; i++)
		s.syncAsUint16LE(_flag[i]);

	if (s.isLoading()) {
		// Reset scene values
		initSceneValues();
	}

	for (i = 0; i < kSceneMax; i++) {
		s.syncAsSint16LE(_heroXY[i].x);
		s.syncAsUint16LE(_heroXY[i].y);
	}
	for (i = 0; i < 1 + kSceneMax; i++) {
		s.syncAsByte(_barriers[i]._horz);
		s.syncAsByte(_barriers[i]._vert);
	}
	for (i = 0; i < kPocketNX; i++)
		s.syncAsUint16LE(_pocref[i]);

	if (s.isSaving()) {
		// Write checksum
		int checksum = kSavegameCheckSum;
		s.syncAsUint16LE(checksum);
	} else {
		// Read checksum and validate it
		uint16 checksum = 0;
		s.syncAsUint16LE(checksum);
		if (checksum != kSavegameCheckSum)
			error("%s", _text->getText(kBadSVG));
	}
}
Esempio n. 2
0
void CGEEngine::init() {
	debugC(1, kCGEDebugEngine, "CGEEngine::setup()");

	// Initialise fields
	_lastFrame = 0;
	_lastTick = 0;
	_hero = NULL;
	_shadow = NULL;
	_miniScene = NULL;
	_miniShp = NULL;
	_miniShpList = NULL;
	_sprite = NULL;
	_resman = new ResourceManager();

	// Create debugger console
	_console = new CGEConsole(this);

	// Initialise engine objects
	_font = new Font(this, "CGE");
	_text = new Text(this, "CGE");
	_talk = NULL;
	_vga = new Vga(this);
	_sys = new System(this);
	_pocLight = new PocLight(this);
	for (int i = 0; i < kPocketNX; i++)
		_pocket[i] = NULL;
	_horzLine = new HorizLine(this);
	_infoLine = new InfoLine(this, kInfoW);
	_sceneLight = new SceneLight(this);
	_debugLine = new InfoLine(this, kScrWidth);
	_commandHandler = new CommandHandler(this, false);
	_commandHandlerTurbo = new CommandHandler(this, true);
	_midiPlayer = new MusicPlayer(this);
	_mouse = new Mouse(this);
	_keyboard = new Keyboard(this);
	_eventManager = new EventManager(this);
	_fx = new Fx(this, 16);   // must precede SOUND!!
	_sound = new Sound(this);

	_offUseCount = atoi(_text->getText(kOffUseCount));
	_music = true;

	for (int i = 0; i < kPocketNX; i++)
		_pocref[i] = -1;
	_volume[0] = 0;
	_volume[1] = 0;

	initSceneValues();

	_maxScene   =  0;
	_dark       = false;
	_game       = false;
	_finis      = false;
	_now        =  1;
	_lev        = -1;
	_recentStep = -2;

	for (int i = 0; i < 4; i++)
		_flag[i] = false;

	_mode = 0;
	_soundOk = 1;
	_sprTv = NULL;
	_gameCase2Cpt = 0;
	_offUseCount = 0;

	_startGameSlot = ConfMan.hasKey("save_slot") ? ConfMan.getInt("save_slot") : -1;
}