mirror of
https://github.com/ZDoom/Raze.git
synced 2025-05-31 01:11:15 +00:00
- added a serializer for the flamethrower's fire map.
This commit is contained in:
parent
0656beeb2b
commit
7253b4eb74
5 changed files with 54 additions and 38 deletions
|
@ -218,7 +218,7 @@ FSerializer &Serialize(FSerializer &arc, const char *key, TArray<T, TT> &value,
|
||||||
{
|
{
|
||||||
if (arc.isWriting())
|
if (arc.isWriting())
|
||||||
{
|
{
|
||||||
if (value.Size() == 0) return arc; // do not save empty arrays
|
if (value.Size() == 0 && key) return arc; // do not save empty arrays
|
||||||
}
|
}
|
||||||
bool res = arc.BeginArray(key);
|
bool res = arc.BeginArray(key);
|
||||||
if (arc.isReading())
|
if (arc.isReading())
|
||||||
|
|
|
@ -46,6 +46,8 @@ This file is a combination of code from the following sources:
|
||||||
|
|
||||||
BEGIN_DUKE_NS
|
BEGIN_DUKE_NS
|
||||||
|
|
||||||
|
int otherp;
|
||||||
|
|
||||||
int adjustfall(spritetype* s, int c);
|
int adjustfall(spritetype* s, int c);
|
||||||
|
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
|
@ -378,7 +380,6 @@ void movedummyplayers(void)
|
||||||
//
|
//
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
int otherp;
|
|
||||||
void moveplayers(void) //Players
|
void moveplayers(void) //Players
|
||||||
{
|
{
|
||||||
short i, nexti;
|
short i, nexti;
|
||||||
|
|
|
@ -38,6 +38,7 @@ This file contains parts of DukeGDX by Alexander Makarov-[M210] (m210-2007@mail.
|
||||||
#include "global.h"
|
#include "global.h"
|
||||||
#include "zz_actors.h"
|
#include "zz_actors.h"
|
||||||
#include "names.h"
|
#include "names.h"
|
||||||
|
#include "serializer.h"
|
||||||
|
|
||||||
BEGIN_DUKE_NS
|
BEGIN_DUKE_NS
|
||||||
|
|
||||||
|
@ -49,6 +50,54 @@ struct FireProj
|
||||||
|
|
||||||
static TMap<int, FireProj> fire;
|
static TMap<int, FireProj> fire;
|
||||||
|
|
||||||
|
static FSerializer& Serialize(FSerializer& arc, const char* key, FireProj& p, FireProj* def)
|
||||||
|
{
|
||||||
|
if (arc.BeginObject(key))
|
||||||
|
{
|
||||||
|
arc("x", p.x)
|
||||||
|
("y", p.y)
|
||||||
|
("z", p.z)
|
||||||
|
("xv", p.xv)
|
||||||
|
("yv", p.yv)
|
||||||
|
("zv", p.zv)
|
||||||
|
.EndObject();
|
||||||
|
}
|
||||||
|
return arc;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SerializeActorGlobals(FSerializer& arc)
|
||||||
|
{
|
||||||
|
if (arc.isWriting() && fire.CountUsed() == 0) return;
|
||||||
|
bool res = arc.BeginArray("FireProj");
|
||||||
|
if (arc.isReading())
|
||||||
|
{
|
||||||
|
fire.Clear();
|
||||||
|
if (!res) return;
|
||||||
|
auto length = arc.ArraySize() / 2;
|
||||||
|
int key;
|
||||||
|
FireProj value;
|
||||||
|
|
||||||
|
for (int i = 0; i < length; i++)
|
||||||
|
{
|
||||||
|
Serialize(arc, nullptr, key, nullptr);
|
||||||
|
Serialize(arc, nullptr, value, nullptr);
|
||||||
|
fire.Insert(key, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TMap<int, FireProj>::Iterator it(fire);
|
||||||
|
TMap<int, FireProj>::Pair* pair;
|
||||||
|
while (it.NextPair(pair))
|
||||||
|
{
|
||||||
|
int k = pair->Key;
|
||||||
|
Serialize(arc, nullptr, k, nullptr);
|
||||||
|
Serialize(arc, nullptr, pair->Value, nullptr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
arc.EndArray();
|
||||||
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
|
|
|
@ -45,14 +45,6 @@ void resetpins(short sect);
|
||||||
void resetlanepics(void);
|
void resetlanepics(void);
|
||||||
|
|
||||||
|
|
||||||
struct FireProj
|
|
||||||
{
|
|
||||||
int x, y, z;
|
|
||||||
int xv, yv, zv;
|
|
||||||
};
|
|
||||||
|
|
||||||
static TMap<int, FireProj> fire;
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
|
|
|
@ -1698,34 +1698,8 @@ void G_BonusScreenRRRA(int32_t bonusonly)
|
||||||
|
|
||||||
if (g_mostConcurrentPlayers > 1 && (g_gametypeFlags[ud.coop]&GAMETYPE_SCORESHEET))
|
if (g_mostConcurrentPlayers > 1 && (g_gametypeFlags[ud.coop]&GAMETYPE_SCORESHEET))
|
||||||
{
|
{
|
||||||
videoClearScreen(0);
|
if (!isRR()) ShowMPBonusScreen_d(g_mostConcurrentPlayers, [](bool) {});
|
||||||
G_DisplayMPResultsScreen();
|
else ShowMPBonusScreen_r(g_mostConcurrentPlayers, [](bool) {});
|
||||||
|
|
||||||
PlayBonusMusic();
|
|
||||||
|
|
||||||
videoNextPage();
|
|
||||||
inputState.ClearAllInput();
|
|
||||||
fadepal(0, 0, 0, 252, 0, -4);
|
|
||||||
totalclock = 0;
|
|
||||||
|
|
||||||
while (totalclock < TICRATE*10)
|
|
||||||
{
|
|
||||||
G_HandleAsync();
|
|
||||||
|
|
||||||
if (G_FPSLimit())
|
|
||||||
{
|
|
||||||
videoClearScreen(0);
|
|
||||||
G_DisplayMPResultsScreen();
|
|
||||||
videoNextPage();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (inputState.CheckAllInput())
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fadepal(0, 0, 0, 0, 252, 4);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bonusonly || (g_netServer || ud.multimode > 1)) return;
|
if (bonusonly || (g_netServer || ud.multimode > 1)) return;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue