raze/source/games/exhumed/src/save.cpp

115 lines
3 KiB
C++
Raw Normal View History

//-------------------------------------------------------------------------
/*
Copyright (C) 2010-2019 EDuke32 developers and contributors
Copyright (C) 2019 sirlemonhead, Nuke.YKT
This file is part of PCExhumed.
PCExhumed is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License version 2
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
//-------------------------------------------------------------------------
#include "ns.h"
#include <stdio.h>
#include <stdarg.h>
#include "build.h"
2020-04-12 06:08:31 +00:00
#include "raze_music.h"
#include "engine.h"
#include "exhumed.h"
#include "savegamehelp.h"
#include "sound.h"
#include "mapinfo.h"
BEGIN_PS_NS
void SerializeState(FSerializer& arc);
2020-11-29 23:47:53 +00:00
void SerializeAnim(FSerializer& arc);
2020-11-30 00:10:52 +00:00
void SerializeBullet(FSerializer& arc);
2020-11-30 00:07:14 +00:00
void SerializeGun(FSerializer& arc);
2020-11-30 00:08:19 +00:00
void SerializeInit(FSerializer& arc);
2020-11-29 23:51:56 +00:00
void SerializeItems(FSerializer& arc);
void SerializeMove(FSerializer& arc);
2020-11-30 00:05:17 +00:00
void SerializeLighting(FSerializer& arc);
2020-11-29 23:49:25 +00:00
void SerializeObjects(FSerializer& arc);
2020-11-29 23:47:53 +00:00
void SerializePlayer(FSerializer& arc);
void SerializeRa(FSerializer& arc);
2020-11-29 23:23:57 +00:00
void SerializeRand(FSerializer& arc);
void SerializeRunList(FSerializer& arc);
void SerializeSequence(FSerializer& arc);
void SerializeSnake(FSerializer& arc);
void SerializeSwitch(FSerializer& arc);
void SerializeView(FSerializer& arc);
2020-11-29 23:40:25 +00:00
void SerializeQueen(FSerializer& arc);
2020-11-29 19:39:27 +00:00
void SerializeRat(FSerializer& arc);
void GameInterface::SerializeGameState(FSerializer& arc)
{
if (arc.BeginObject("exhumed"))
{
SerializeState(arc);
SerializeAnim(arc);
SerializeBullet(arc);
SerializeGun(arc);
SerializeInit(arc);
SerializeItems(arc);
SerializeMove(arc);
SerializeLighting(arc);
SerializeObjects(arc);
SerializePlayer(arc);
SerializeRa(arc);
SerializeRand(arc);
SerializeRunList(arc);
SerializeSequence(arc);
SerializeSnake(arc);
SerializeSwitch(arc);
SerializeView(arc);
SerializeQueen(arc);
SerializeRat(arc);
arc.EndObject();
}
if (arc.isReading())
{
// reset the sky in case it hasn't been done yet.
psky_t* pSky = tileSetupSky(DEFAULTPSKY);
pSky->tileofs[0] = 0;
pSky->tileofs[1] = 0;
pSky->tileofs[2] = 0;
pSky->tileofs[3] = 0;
pSky->yoffs = 256;
pSky->yoffs2 = 256;
pSky->lognumtiles = 2;
pSky->horizfrac = 65536;
pSky->yscale = 65536;
parallaxtype = 2;
g_visibility = 1024;
if (currentLevel->gameflags & LEVEL_EX_ALTSOUND)
{
nSwitchSound = 35;
nStoneSound = 23;
nElevSound = 51;
nStopSound = 35;
}
else
{
nSwitchSound = 33;
nStoneSound = 23;
nElevSound = 23;
nStopSound = 66;
}
Mus_ResumeSaved();
}
}
END_PS_NS