mirror of
https://github.com/ZDoom/raze-gles.git
synced 2025-01-07 08:50:47 +00:00
78afb67c7f
The main problem here is that there's two data arrays representing an actor - sprite and hittype and the engine only uses indices for reference. By setting up hittype to contain a sprite reference, the function and iterator interface can be rewritten to use a single pointer instead to represent an actor. The main objective is to reduce the number of accesses to the global arrays which constitute the biggest refactoring blocker.
143 lines
3.8 KiB
C++
143 lines
3.8 KiB
C++
//-------------------------------------------------------------------------
|
|
/*
|
|
Copyright (C) 1996, 2003 - 3D Realms Entertainment
|
|
Copyright (C) 2017-2019 Nuke.YKT
|
|
Copyright (C) 2020 - Christoph Oelckers
|
|
|
|
This file is part of Duke Nukem 3D version 1.5 - Atomic Edition
|
|
|
|
Duke Nukem 3D is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU General Public License
|
|
as published by the Free Software Foundation; either version 2
|
|
of the License, or (at your option) any later version.
|
|
|
|
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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
|
|
Original Source: 1996 - Todd Replogle
|
|
Prepared for public release: 03/21/2003 - Charlie Wiederhold, 3D Realms
|
|
*/
|
|
//-------------------------------------------------------------------------
|
|
|
|
#include "ns.h"
|
|
|
|
#include "global.h"
|
|
#include "duke3d.h"
|
|
|
|
BEGIN_DUKE_NS
|
|
|
|
user_defs ud;
|
|
|
|
// Variables that do not need to be saved.
|
|
int respawnactortime = 768;
|
|
int bouncemineblastradius = 2500;
|
|
int respawnitemtime = 768;
|
|
int morterblastradius = 2500;
|
|
int numfreezebounces = 3;
|
|
int pipebombblastradius = 2500;
|
|
int dukefriction = 0xCFD0;
|
|
int rpgblastradius = 1780;
|
|
int seenineblastradius = 2048;
|
|
int shrinkerblastradius = 650;
|
|
int gc = 176;
|
|
int tripbombblastradius = 3880;
|
|
int camerashitable;
|
|
int max_player_health;
|
|
int max_armour_amount;
|
|
int lasermode;
|
|
|
|
int cameradist = 0, cameraclock = 0;
|
|
int otherp;
|
|
TileInfo tileinfo[MAXTILES]; // This is not from EDuke32.
|
|
ActorInfo actorinfo[MAXTILES];
|
|
int actor_tog;
|
|
int16_t max_ammo_amount[MAX_WEAPONS];
|
|
int16_t weaponsandammosprites[15];
|
|
int PHEIGHT = PHEIGHT_DUKE;
|
|
int duke3d_globalflags;
|
|
int playerswhenstarted;
|
|
int show_shareware;
|
|
int screenpeek;
|
|
|
|
|
|
|
|
// Variables that must be saved
|
|
uint8_t sectorextra[MAXSECTORS]; // move these back into the base structs!
|
|
|
|
int rtsplaying;
|
|
int tempwallptr;
|
|
weaponhit hittype[MAXSPRITES+1]; // +1 to have a blank entry for serialization.
|
|
bool sound445done; // this was local state inside a function, but this must be maintained globally and serialized
|
|
uint16_t frags[MAXPLAYERS][MAXPLAYERS];
|
|
player_struct ps[MAXPLAYERS];
|
|
int spriteqamount = 64;
|
|
uint8_t shadedsector[MAXSECTORS];
|
|
int lastvisinc;
|
|
animwalltype animwall[MAXANIMWALLS];
|
|
int numanimwalls;
|
|
int animatecnt;
|
|
int numclouds;
|
|
int camsprite;
|
|
int numcyclers;
|
|
int earthquaketime;
|
|
int freezerhurtowner;
|
|
int global_random;
|
|
int impact_damage;
|
|
int mirrorcnt;
|
|
int numplayersprites;
|
|
int spriteqloc;
|
|
int thunder_brightness;
|
|
|
|
int16_t animatesect[MAXANIMATES];
|
|
int8_t animatetype[MAXANIMATES];
|
|
int16_t animatetarget[MAXANIMATES];
|
|
int animategoal[MAXANIMATES];
|
|
int animatevel[MAXANIMATES];
|
|
|
|
int16_t clouds[256];
|
|
int16_t cloudx;
|
|
int16_t cloudy;
|
|
int cloudclock;
|
|
|
|
int16_t spriteq[1024];
|
|
int16_t cyclers[MAXCYCLERS][6];
|
|
int16_t mirrorsector[64];
|
|
int16_t mirrorwall[64];
|
|
|
|
// Redneck Rampage
|
|
int wupass;
|
|
int chickenplant;
|
|
int thunderon;
|
|
int ufospawn;
|
|
int ufocnt;
|
|
int hulkspawn;
|
|
int lastlevel;
|
|
|
|
int geosectorwarp[MAXGEOSECTORS];
|
|
int geosectorwarp2[MAXGEOSECTORS];
|
|
int geosector[MAXGEOSECTORS];
|
|
int geox[MAXGEOSECTORS];
|
|
int geoy[MAXGEOSECTORS];
|
|
int geox2[MAXGEOSECTORS];
|
|
int geoy2[MAXGEOSECTORS];
|
|
int geocnt;
|
|
|
|
short ambientlotag[64];
|
|
short ambienthitag[64];
|
|
unsigned ambientfx;
|
|
int msx[MAXANIMPOINTS], msy[MAXANIMPOINTS];
|
|
int WindTime, WindDir;
|
|
short fakebubba_spawn, mamaspawn_count, banjosound;
|
|
short BellTime, BellSprite /* word_119BE0*/;
|
|
uint8_t enemysizecheat /*raat607*/, ufospawnsminion, pistonsound, chickenphase /* raat605*/, RRRA_ExitedLevel, fogactive;
|
|
uint32_t everyothertime;
|
|
player_orig po[MAXPLAYERS];
|
|
|
|
END_DUKE_NS
|