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