mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-12-31 22:00:46 +00:00
- more gamevar cleanup.
This commit is contained in:
parent
d01d4bf44c
commit
c9bb23ee42
15 changed files with 1462 additions and 242 deletions
|
@ -6,6 +6,7 @@ set( PCH_SOURCES
|
||||||
src/actors_lava.cpp
|
src/actors_lava.cpp
|
||||||
src/bowling.cpp
|
src/bowling.cpp
|
||||||
src/gamedef.cpp
|
src/gamedef.cpp
|
||||||
|
src/gamevar.cpp
|
||||||
src/zz_actors.cpp
|
src/zz_actors.cpp
|
||||||
src/sectors.cpp
|
src/sectors.cpp
|
||||||
src/sectors_d.cpp
|
src/sectors_d.cpp
|
||||||
|
|
|
@ -228,14 +228,14 @@ void checkavailweapon(struct player_struct* p)
|
||||||
p->curr_weapon = weap;
|
p->curr_weapon = weap;
|
||||||
if (isWW2GI())
|
if (isWW2GI())
|
||||||
{
|
{
|
||||||
SetGameVarID(g_iWeaponVarID, p->curr_weapon, p->i, snum);
|
SetGameVarID(g_iWeaponVarID, p->curr_weapon, snum, p->i);
|
||||||
if (p->curr_weapon >= 0)
|
if (p->curr_weapon >= 0)
|
||||||
{
|
{
|
||||||
SetGameVarID(g_iWorksLikeVarID, aplWeaponWorksLike[p->curr_weapon][snum], p->i, snum);
|
SetGameVarID(g_iWorksLikeVarID, aplWeaponWorksLike[p->curr_weapon][snum], snum, p->i);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SetGameVarID(g_iWorksLikeVarID, -1, p->i, snum);
|
SetGameVarID(g_iWorksLikeVarID, -1, snum, p->i);
|
||||||
}
|
}
|
||||||
OnEvent(EVENT_CHANGEWEAPON, p->i, snum, -1);
|
OnEvent(EVENT_CHANGEWEAPON, p->i, snum, -1);
|
||||||
}
|
}
|
||||||
|
|
|
@ -125,16 +125,16 @@ void addweapon_d(struct player_struct *p, int weapon)
|
||||||
short snum;
|
short snum;
|
||||||
snum = sprite[p->i].yvel;
|
snum = sprite[p->i].yvel;
|
||||||
|
|
||||||
SetGameVarID(g_iWeaponVarID,weapon, p->i, snum);
|
SetGameVarID(g_iWeaponVarID,weapon, snum, p->i);
|
||||||
if (p->curr_weapon >= 0)
|
if (p->curr_weapon >= 0)
|
||||||
{
|
{
|
||||||
SetGameVarID(g_iWorksLikeVarID, aplWeaponWorksLike[weapon][snum], p->i, snum);
|
SetGameVarID(g_iWorksLikeVarID, aplWeaponWorksLike[weapon][snum], snum, p->i);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SetGameVarID(g_iWorksLikeVarID, -1, p->i, snum);
|
SetGameVarID(g_iWorksLikeVarID, -1, snum, p->i);
|
||||||
}
|
}
|
||||||
SetGameVarID(g_iReturnVarID, 0, -1, snum);
|
SetGameVarID(g_iReturnVarID, 0, snum, -1);
|
||||||
OnEvent(EVENT_CHANGEWEAPON, p->i, snum, -1);
|
OnEvent(EVENT_CHANGEWEAPON, p->i, snum, -1);
|
||||||
if (GetGameVarID(g_iReturnVarID, -1, snum) == 0)
|
if (GetGameVarID(g_iReturnVarID, -1, snum) == 0)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,52 +0,0 @@
|
||||||
|
|
||||||
#ifndef EDUKE32_EVENTS_DEFS_H_
|
|
||||||
#define EDUKE32_EVENTS_DEFS_H_
|
|
||||||
|
|
||||||
// the order of these can't be changed or else compatibility with EDuke 2.0 mods will break
|
|
||||||
// KEEPINSYNC with EventNames[] and lunatic/con_lang.lua
|
|
||||||
enum GameEvent_t {
|
|
||||||
EVENT_INIT, // 0
|
|
||||||
EVENT_ENTERLEVEL,
|
|
||||||
EVENT_RESETWEAPONS,
|
|
||||||
EVENT_RESETINVENTORY,
|
|
||||||
EVENT_HOLSTER,
|
|
||||||
EVENT_LOOKLEFT, // 5
|
|
||||||
EVENT_LOOKRIGHT,
|
|
||||||
EVENT_SOARUP,
|
|
||||||
EVENT_SOARDOWN,
|
|
||||||
EVENT_CROUCH,
|
|
||||||
EVENT_JUMP, // 10
|
|
||||||
EVENT_RETURNTOCENTER,
|
|
||||||
EVENT_LOOKUP,
|
|
||||||
EVENT_LOOKDOWN,
|
|
||||||
EVENT_AIMUP,
|
|
||||||
EVENT_FIRE, // 15
|
|
||||||
EVENT_CHANGEWEAPON,
|
|
||||||
EVENT_GETSHOTRANGE,
|
|
||||||
EVENT_GETAUTOAIMANGLE,
|
|
||||||
EVENT_GETLOADTILE,
|
|
||||||
EVENT_CHEATGETSTEROIDS, // 20
|
|
||||||
EVENT_CHEATGETHEAT,
|
|
||||||
EVENT_CHEATGETBOOT,
|
|
||||||
EVENT_CHEATGETSHIELD,
|
|
||||||
EVENT_CHEATGETSCUBA,
|
|
||||||
EVENT_CHEATGETHOLODUKE, // 25
|
|
||||||
EVENT_CHEATGETJETPACK,
|
|
||||||
EVENT_CHEATGETFIRSTAID,
|
|
||||||
EVENT_QUICKKICK,
|
|
||||||
EVENT_INVENTORY,
|
|
||||||
EVENT_USENIGHTVISION, // 30
|
|
||||||
EVENT_USESTEROIDS,
|
|
||||||
EVENT_INVENTORYLEFT,
|
|
||||||
EVENT_INVENTORYRIGHT,
|
|
||||||
EVENT_HOLODUKEON,
|
|
||||||
EVENT_HOLODUKEOFF, // 35
|
|
||||||
EVENT_USEMEDKIT,
|
|
||||||
EVENT_USEJETPACK,
|
|
||||||
EVENT_TURNAROUND,
|
|
||||||
MAXEVENTS,
|
|
||||||
EVENT_MAXEVENT = MAXEVENTS,
|
|
||||||
EVENT_AIMDOWN = EVENT_AIMUP,
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -23,6 +23,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
#ifndef gamedef_h_
|
#ifndef gamedef_h_
|
||||||
#define gamedef_h_
|
#define gamedef_h_
|
||||||
|
|
||||||
|
#include "gamevar.h"
|
||||||
#include "actors.h"
|
#include "actors.h"
|
||||||
#include "build.h" // hashtable_t
|
#include "build.h" // hashtable_t
|
||||||
#include "cheats.h"
|
#include "cheats.h"
|
||||||
|
@ -31,20 +32,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
|
||||||
BEGIN_DUKE_NS
|
BEGIN_DUKE_NS
|
||||||
|
|
||||||
#if 0
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
LABEL_ANY = -1,
|
|
||||||
LABEL_DEFINE = 1,
|
|
||||||
LABEL_STATE = 2,
|
|
||||||
LABEL_ACTOR = 4,
|
|
||||||
LABEL_ACTION = 8,
|
|
||||||
LABEL_AI = 16,
|
|
||||||
LABEL_MOVE = 32,
|
|
||||||
LABEL_EVENT = 0x40,
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define LABEL_HASPARM2 1
|
#define LABEL_HASPARM2 1
|
||||||
#define LABEL_ISSTRING 2
|
#define LABEL_ISSTRING 2
|
||||||
|
|
||||||
|
@ -67,8 +54,7 @@ extern int32_t g_zRangeVarID; // var ID of "ZRANGE"
|
||||||
#define g_iWeaponVarID g_weaponVarID
|
#define g_iWeaponVarID g_weaponVarID
|
||||||
#define g_iWorksLikeVarID g_worksLikeVarID
|
#define g_iWorksLikeVarID g_worksLikeVarID
|
||||||
|
|
||||||
#include "events_defs.h"
|
extern intptr_t apScriptGameEvent[EVENT_NUMEVENTS];
|
||||||
extern intptr_t apScriptGameEvent[MAXEVENTS];
|
|
||||||
|
|
||||||
extern char g_scriptFileName[BMAX_PATH];
|
extern char g_scriptFileName[BMAX_PATH];
|
||||||
|
|
||||||
|
|
1317
source/games/duke/src/gamevar.cpp
Normal file
1317
source/games/duke/src/gamevar.cpp
Normal file
File diff suppressed because it is too large
Load diff
129
source/games/duke/src/gamevar.h
Normal file
129
source/games/duke/src/gamevar.h
Normal file
|
@ -0,0 +1,129 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
BEGIN_DUKE_NS
|
||||||
|
|
||||||
|
// gamedef.c
|
||||||
|
//void OnEvent(int iEventID, int i,int p,int x);
|
||||||
|
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
EVENT_INIT = 0,
|
||||||
|
EVENT_ENTERLEVEL,
|
||||||
|
EVENT_RESETWEAPONS, // for each player
|
||||||
|
EVENT_RESETINVENTORY, // for each player
|
||||||
|
EVENT_HOLSTER, // for each player
|
||||||
|
EVENT_LOOKLEFT, // for each player
|
||||||
|
EVENT_LOOKRIGHT, // for each player
|
||||||
|
EVENT_SOARUP, // for each player
|
||||||
|
EVENT_SOARDOWN, // for each player
|
||||||
|
EVENT_CROUCH, // for each player
|
||||||
|
EVENT_JUMP, // for each player
|
||||||
|
EVENT_RETURNTOCENTER, // for each player
|
||||||
|
EVENT_LOOKUP, // for each player
|
||||||
|
EVENT_LOOKDOWN, // for each player
|
||||||
|
EVENT_AIMUP, // for each player
|
||||||
|
EVENT_AIMDOWN, // for each player
|
||||||
|
EVENT_FIRE, // for each player
|
||||||
|
EVENT_CHANGEWEAPON, // for each player
|
||||||
|
EVENT_GETSHOTRANGE, // for each player
|
||||||
|
EVENT_GETAUTOAIMANGLE, // for each player
|
||||||
|
EVENT_GETLOADTILE,
|
||||||
|
|
||||||
|
EVENT_CHEATGETSTEROIDS,
|
||||||
|
EVENT_CHEATGETHEAT,
|
||||||
|
EVENT_CHEATGETBOOT,
|
||||||
|
EVENT_CHEATGETSHIELD,
|
||||||
|
EVENT_CHEATGETSCUBA,
|
||||||
|
EVENT_CHEATGETHOLODUKE,
|
||||||
|
EVENT_CHEATGETJETPACK,
|
||||||
|
EVENT_CHEATGETFIRSTAID,
|
||||||
|
EVENT_QUICKKICK,
|
||||||
|
EVENT_INVENTORY,
|
||||||
|
EVENT_USENIGHTVISION,
|
||||||
|
EVENT_USESTEROIDS,
|
||||||
|
EVENT_INVENTORYLEFT,
|
||||||
|
EVENT_INVENTORYRIGHT,
|
||||||
|
EVENT_HOLODUKEON,
|
||||||
|
EVENT_HOLODUKEOFF,
|
||||||
|
EVENT_USEMEDKIT,
|
||||||
|
EVENT_USEJETPACK,
|
||||||
|
EVENT_TURNAROUND,
|
||||||
|
|
||||||
|
EVENT_NUMEVENTS,
|
||||||
|
EVENT_MAXEVENT = EVENT_NUMEVENTS-1
|
||||||
|
};
|
||||||
|
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
// store global game definitions
|
||||||
|
MAXGAMEVARS = 512,
|
||||||
|
MAXVARLABEL = 26,
|
||||||
|
MAXGAMEEVENTS = 128
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
GAMEVAR_FLAG_PERPLAYER = 1, // per-player variable
|
||||||
|
GAMEVAR_FLAG_PERACTOR = 2, // per-actor variable
|
||||||
|
GAMEVAR_FLAG_USER_MASK = 3,
|
||||||
|
|
||||||
|
// internal flags only...
|
||||||
|
GAMEVAR_FLAG_DEFAULT = 256, // allow override
|
||||||
|
GAMEVAR_FLAG_SECRET = 512, // don't dump...
|
||||||
|
GAMEVAR_FLAG_NODEFAULT = 1024, // don't add to 'default' array.
|
||||||
|
GAMEVAR_FLAG_SYSTEM = 2048, // cannot change mode flags...(only default value)
|
||||||
|
GAMEVAR_FLAG_READONLY = 4096, // values are read-only (no setvar allowed)
|
||||||
|
GAMEVAR_FLAG_PLONG = 8192, // plValue is a pointer to a long
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
union
|
||||||
|
{
|
||||||
|
int lValue;
|
||||||
|
int* plValue;
|
||||||
|
};
|
||||||
|
int defaultValue;
|
||||||
|
unsigned int dwFlags;
|
||||||
|
char szLabel[MAXVARLABEL];
|
||||||
|
TArray<int> plArray;
|
||||||
|
} MATTGAMEVAR;
|
||||||
|
|
||||||
|
extern MATTGAMEVAR aGameVars[MAXGAMEVARS];
|
||||||
|
extern int iGameVarCount;
|
||||||
|
|
||||||
|
extern int g_iReturnVarID; // var ID of "RETURN"
|
||||||
|
extern int g_iWeaponVarID; // var ID of "WEAPON"
|
||||||
|
extern int g_iWorksLikeVarID; // var ID of "WORKSLIKE"
|
||||||
|
extern int g_iZRangeVarID; // var ID of "ZRANGE"
|
||||||
|
extern int g_iAngRangeVarID; // var ID of "ANGRANGE"
|
||||||
|
extern int g_iAimAngleVarID; // var ID of "AUTOAIMANGLE"
|
||||||
|
|
||||||
|
|
||||||
|
// global crap for event management
|
||||||
|
extern int g_i, g_p;
|
||||||
|
extern int g_x;
|
||||||
|
extern int* g_t;
|
||||||
|
extern uint8_t killit_flag;
|
||||||
|
//extern sprite_ype* g_sp;
|
||||||
|
|
||||||
|
bool AddGameVar(const char *pszLabel, intptr_t lValue, unsigned dwFlags);
|
||||||
|
int GetGameID(const char *szGameLabel);
|
||||||
|
int GetDefID(const char *szGameLabel);
|
||||||
|
void FreeGameVars(void);
|
||||||
|
void ClearGameVars(void);
|
||||||
|
void AddSystemVars();
|
||||||
|
void ResetGameVars(void);
|
||||||
|
int GetGameVarID(int id, int sActor, int sPlayer);
|
||||||
|
void SetGameVarID(int id, int lValue, int sActor, int sPlayer);
|
||||||
|
int GetGameVar(char* szGameLabel, int lDefault, int sActor, int sPlayer);
|
||||||
|
|
||||||
|
void ClearGameEvents();
|
||||||
|
bool IsGameEvent(int i);
|
||||||
|
void InitGameVarPointers(void);
|
||||||
|
void ResetSystemDefaults(void);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
END_DUKE_NS
|
|
@ -24,15 +24,10 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
#define gamevars_h_
|
#define gamevars_h_
|
||||||
|
|
||||||
#include "gamedef.h"
|
#include "gamedef.h"
|
||||||
|
#include "gamevar.h"
|
||||||
|
|
||||||
BEGIN_DUKE_NS
|
BEGIN_DUKE_NS
|
||||||
|
|
||||||
#define MAXGAMEVARS 2048 // must be a power of two
|
|
||||||
#define MAXVARLABEL 26
|
|
||||||
|
|
||||||
#define GV_FLAG_CONSTANT (MAXGAMEVARS)
|
|
||||||
#define GV_FLAG_NEGATIVE (MAXGAMEVARS<<1)
|
|
||||||
|
|
||||||
// store global game definitions
|
// store global game definitions
|
||||||
enum GamevarFlags_t
|
enum GamevarFlags_t
|
||||||
{
|
{
|
||||||
|
@ -46,9 +41,6 @@ enum GamevarFlags_t
|
||||||
GAMEVAR_READONLY = 0x00001000, // values are read-only (no setvar allowed)
|
GAMEVAR_READONLY = 0x00001000, // values are read-only (no setvar allowed)
|
||||||
GAMEVAR_INT32PTR = 0x00002000, // plValues is a pointer to an int32_t
|
GAMEVAR_INT32PTR = 0x00002000, // plValues is a pointer to an int32_t
|
||||||
GAMEVAR_INT16PTR = 0x00008000, // plValues is a pointer to a short
|
GAMEVAR_INT16PTR = 0x00008000, // plValues is a pointer to a short
|
||||||
GAMEVAR_FLAG_DEFAULT = GAMEVAR_DEFAULT,
|
|
||||||
GAMEVAR_FLAG_SECRET = 0x200, // placeholder
|
|
||||||
GAMEVAR_FLAG_READONLY = 0x1000, // placeholder
|
|
||||||
|
|
||||||
GAMEVAR_PTR_MASK = GAMEVAR_INT32PTR | GAMEVAR_INT16PTR,
|
GAMEVAR_PTR_MASK = GAMEVAR_INT32PTR | GAMEVAR_INT16PTR,
|
||||||
};
|
};
|
||||||
|
@ -85,7 +77,7 @@ int __fastcall Gv_GetVar(int const gameVar);
|
||||||
void __fastcall Gv_GetManyVars(int const numVars, int32_t * const outBuf);
|
void __fastcall Gv_GetManyVars(int const numVars, int32_t * const outBuf);
|
||||||
void __fastcall Gv_SetVar(int const gameVar, int const newValue);
|
void __fastcall Gv_SetVar(int const gameVar, int const newValue);
|
||||||
|
|
||||||
inline void SetGameVarID(int var, int newval, int pnum, int snum)
|
inline void SetGameVarID(int var, int newval, int snum, int pnum)
|
||||||
{
|
{
|
||||||
Gv_SetVar(var, newval, snum, pnum);
|
Gv_SetVar(var, newval, snum, pnum);
|
||||||
}
|
}
|
||||||
|
@ -105,7 +97,6 @@ inline int GetGameVar(const char* szGameLabel, int defaultValue, int spriteNum,
|
||||||
return Gv_GetVarByLabel(szGameLabel, defaultValue, spriteNum, playerNum);
|
return Gv_GetVarByLabel(szGameLabel, defaultValue, spriteNum, playerNum);
|
||||||
}
|
}
|
||||||
void Gv_NewVar(const char *pszLabel,intptr_t lValue,uint32_t dwFlags);
|
void Gv_NewVar(const char *pszLabel,intptr_t lValue,uint32_t dwFlags);
|
||||||
#define AddGameVar Gv_NewVar
|
|
||||||
|
|
||||||
int GetDefID(const char* label);
|
int GetDefID(const char* label);
|
||||||
|
|
||||||
|
|
|
@ -30,6 +30,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
#include "quotes.h"
|
#include "quotes.h"
|
||||||
#include "sector.h"
|
#include "sector.h"
|
||||||
#include "sounds.h"
|
#include "sounds.h"
|
||||||
|
#include "gamevars.h"
|
||||||
|
|
||||||
BEGIN_DUKE_NS
|
BEGIN_DUKE_NS
|
||||||
|
|
||||||
|
@ -204,7 +205,6 @@ G_EXTERN uint32_t g_ambientCnt;
|
||||||
G_EXTERN intptr_t *apScript;
|
G_EXTERN intptr_t *apScript;
|
||||||
G_EXTERN intptr_t *scriptptr;
|
G_EXTERN intptr_t *scriptptr;
|
||||||
|
|
||||||
G_EXTERN map_t g_mapInfo[(MAXVOLUMES + 1) * MAXLEVELS]; // +1 volume for "intro", "briefing" and "loading" music
|
|
||||||
G_EXTERN vec2_t g_origins[MAXANIMPOINTS];
|
G_EXTERN vec2_t g_origins[MAXANIMPOINTS];
|
||||||
struct msx_
|
struct msx_
|
||||||
{
|
{
|
||||||
|
|
|
@ -32,7 +32,6 @@ extern int32_t voting,vote_map,vote_episode;
|
||||||
int G_EnterLevel(int gameMode);
|
int G_EnterLevel(int gameMode);
|
||||||
int G_FindLevelByFile(const char *fileName);
|
int G_FindLevelByFile(const char *fileName);
|
||||||
void G_CacheMapData(void);
|
void G_CacheMapData(void);
|
||||||
void G_FreeMapState(int levelNum);
|
|
||||||
void G_NewGame(int volumeNum, int levelNum, int skillNum);
|
void G_NewGame(int volumeNum, int levelNum, int skillNum);
|
||||||
void G_ResetTimers(uint8_t keepgtics);
|
void G_ResetTimers(uint8_t keepgtics);
|
||||||
void G_UpdateScreenArea(void);
|
void G_UpdateScreenArea(void);
|
||||||
|
|
|
@ -45,64 +45,6 @@ typedef struct {
|
||||||
int16_t wallnum, tag;
|
int16_t wallnum, tag;
|
||||||
} animwalltype;
|
} animwalltype;
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
// this needs to have a copy of everything related to the map/actor state
|
|
||||||
// see savegame.c
|
|
||||||
int32_t g_animateGoal[MAXANIMATES], g_animateVel[MAXANIMATES], g_animateCnt;
|
|
||||||
intptr_t g_animatePtr[MAXANIMATES];
|
|
||||||
int32_t lockclock;
|
|
||||||
vec2_t origins[MAXANIMPOINTS];
|
|
||||||
int32_t randomseed, g_globalRandom;
|
|
||||||
int32_t pskyidx;
|
|
||||||
|
|
||||||
int16_t SpriteDeletionQueue[1024],g_spriteDeleteQueuePos;
|
|
||||||
int16_t g_animateSect[MAXANIMATES];
|
|
||||||
int16_t g_cyclers[MAXCYCLERS][6];
|
|
||||||
int16_t g_mirrorWall[64], g_mirrorSector[64], g_mirrorCount;
|
|
||||||
int16_t g_animWallCnt;
|
|
||||||
int16_t g_cloudCnt,g_cloudSect[256],g_cloudX,g_cloudY;
|
|
||||||
int16_t g_cyclerCnt;
|
|
||||||
|
|
||||||
int32_t numsprites;
|
|
||||||
int16_t tailspritefree;
|
|
||||||
int16_t headspritesect[MAXSECTORS+1];
|
|
||||||
int16_t headspritestat[MAXSTATUS+1];
|
|
||||||
int16_t nextspritesect[MAXSPRITES];
|
|
||||||
int16_t nextspritestat[MAXSPRITES];
|
|
||||||
int16_t numsectors;
|
|
||||||
int16_t numwalls;
|
|
||||||
int16_t prevspritesect[MAXSPRITES];
|
|
||||||
int16_t prevspritestat[MAXSPRITES];
|
|
||||||
|
|
||||||
uint16_t g_earthquakeTime;
|
|
||||||
int8_t g_playerSpawnCnt;
|
|
||||||
|
|
||||||
FixedBitArray<MAXSECTORS> show2dsector;
|
|
||||||
|
|
||||||
actor_t actor[MAXSPRITES];
|
|
||||||
playerspawn_t g_playerSpawnPoints[MAXPLAYERS];
|
|
||||||
animwalltype animwall[MAXANIMWALLS];
|
|
||||||
usectortype sector[MAXSECTORS];
|
|
||||||
spriteext_t spriteext[MAXSPRITES];
|
|
||||||
uspritetype sprite[MAXSPRITES];
|
|
||||||
uwalltype wall[MAXWALLS];
|
|
||||||
#ifndef NEW_MAP_FORMAT
|
|
||||||
wallext_t wallext[MAXWALLS];
|
|
||||||
#endif
|
|
||||||
intptr_t *vars[MAXGAMEVARS];
|
|
||||||
#ifdef YAX_ENABLE
|
|
||||||
int32_t numyaxbunches;
|
|
||||||
# if !defined NEW_MAP_FORMAT
|
|
||||||
int16_t yax_bunchnum[MAXSECTORS][2];
|
|
||||||
int16_t yax_nextwall[MAXWALLS][2];
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
} mapstate_t;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
mapstate_t *savedstate;
|
|
||||||
} map_t;
|
|
||||||
|
|
||||||
|
|
||||||
void breakwall(short newpn, short spr, short dawallnum);
|
void breakwall(short newpn, short spr, short dawallnum);
|
||||||
void activatebysector(int s, int sn);
|
void activatebysector(int s, int sn);
|
||||||
|
|
|
@ -6497,21 +6497,10 @@ int loaddefinitions_game(const char *fileName, int32_t firstPass)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void G_FreeHashAnim(const char * /*string*/, intptr_t key)
|
|
||||||
{
|
|
||||||
Xfree((void *)key);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void G_Cleanup(void)
|
static void G_Cleanup(void)
|
||||||
{
|
{
|
||||||
int32_t i;
|
int32_t i;
|
||||||
|
|
||||||
for (i=(MAXLEVELS*(MAXVOLUMES+1))-1; i>=0; i--) // +1 volume for "intro", "briefing" music
|
|
||||||
{
|
|
||||||
G_FreeMapState(i);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i=MAXPLAYERS-1; i>=0; i--)
|
for (i=MAXPLAYERS-1; i>=0; i--)
|
||||||
{
|
{
|
||||||
Xfree(g_player[i].ps);
|
Xfree(g_player[i].ps);
|
||||||
|
|
|
@ -101,7 +101,7 @@ static void VM_DeleteSprite(int const spriteNum, int const playerNum)
|
||||||
A_DeleteSprite(spriteNum);
|
A_DeleteSprite(spriteNum);
|
||||||
}
|
}
|
||||||
|
|
||||||
intptr_t apScriptGameEvent[MAXEVENTS];
|
intptr_t apScriptGameEvent[EVENT_NUMEVENTS];
|
||||||
static uspritetype dummy_sprite;
|
static uspritetype dummy_sprite;
|
||||||
static actor_t dummy_actor;
|
static actor_t dummy_actor;
|
||||||
|
|
||||||
|
@ -2717,53 +2717,7 @@ GAMEEXEC_STATIC void VM_Execute(native_t loop)
|
||||||
|
|
||||||
case concmd_addlogvar:
|
case concmd_addlogvar:
|
||||||
insptr++;
|
insptr++;
|
||||||
{
|
continue;
|
||||||
int32_t m = 1;
|
|
||||||
char szBuf[256];
|
|
||||||
int32_t lVarID = *insptr;
|
|
||||||
|
|
||||||
if ((lVarID >= g_gameVarCount) || lVarID < 0)
|
|
||||||
{
|
|
||||||
if (*insptr == MAXGAMEVARS) // addlogvar for a constant? Har.
|
|
||||||
insptr++;
|
|
||||||
else if (EDUKE32_PREDICT_TRUE(*insptr & GV_FLAG_NEGATIVE))
|
|
||||||
{
|
|
||||||
m = -m;
|
|
||||||
lVarID ^= GV_FLAG_NEGATIVE;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// invalid varID
|
|
||||||
CON_ERRPRINTF("invalid variable\n");
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Bsprintf(tempbuf, "CONLOGVAR: L=%d %s ", VM_DECODE_LINE_NUMBER(g_tw), aaGameVars[lVarID].szLabel);
|
|
||||||
|
|
||||||
if (aaGameVars[lVarID].flags & GAMEVAR_READONLY)
|
|
||||||
{
|
|
||||||
Bsprintf(szBuf, " (read-only)");
|
|
||||||
Bstrcat(tempbuf, szBuf);
|
|
||||||
}
|
|
||||||
if (aaGameVars[lVarID].flags & GAMEVAR_PERPLAYER)
|
|
||||||
{
|
|
||||||
Bsprintf(szBuf, " (Per Player. Player=%d)", vm.playerNum);
|
|
||||||
}
|
|
||||||
else if (aaGameVars[lVarID].flags & GAMEVAR_PERACTOR)
|
|
||||||
{
|
|
||||||
Bsprintf(szBuf, " (Per Actor. Actor=%d)", vm.spriteNum);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Bsprintf(szBuf, " (Global)");
|
|
||||||
}
|
|
||||||
Bstrcat(tempbuf, szBuf);
|
|
||||||
Bsprintf(szBuf, " =%d\n", Gv_GetVar(lVarID) * m);
|
|
||||||
Bstrcat(tempbuf, szBuf);
|
|
||||||
Printf(TEXTCOLOR_GREEN "%s", tempbuf);
|
|
||||||
insptr++;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
case concmd_ifvare:
|
case concmd_ifvare:
|
||||||
insptr++;
|
insptr++;
|
||||||
|
@ -2788,13 +2742,6 @@ GAMEEXEC_STATIC void VM_Execute(native_t loop)
|
||||||
debug_break();
|
debug_break();
|
||||||
VM_ScriptInfo(insptr, 64);
|
VM_ScriptInfo(insptr, 64);
|
||||||
G_GameExit("An error has occurred in the " GAMENAME " virtual machine.\n\n");
|
G_GameExit("An error has occurred in the " GAMENAME " virtual machine.\n\n");
|
||||||
#if 0
|
|
||||||
"If you are an end user, please e-mail the file " GAMENAMELOWERCASE ".log\n"
|
|
||||||
"along with links to any mods you're using to development@voidpoint.com.\n\n"
|
|
||||||
"If you are a developer, please attach all of your script files\n"
|
|
||||||
"along with instructions on how to reproduce this error.\n\n"
|
|
||||||
"Thank you!");
|
|
||||||
#endif
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -119,22 +119,6 @@ void Gv_ResetVars(void) /* this is called during a new game and nowhere else */
|
||||||
|
|
||||||
void Gv_NewVar(const char *pszLabel, intptr_t lValue, uint32_t dwFlags)
|
void Gv_NewVar(const char *pszLabel, intptr_t lValue, uint32_t dwFlags)
|
||||||
{
|
{
|
||||||
if (EDUKE32_PREDICT_FALSE(g_gameVarCount >= MAXGAMEVARS))
|
|
||||||
{
|
|
||||||
errorcount++;
|
|
||||||
ReportError(-1);
|
|
||||||
Printf("%s:%d: error: too many gamevars!\n",g_scriptFileName,line_number);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (EDUKE32_PREDICT_FALSE(Bstrlen(pszLabel) > (MAXVARLABEL-1)))
|
|
||||||
{
|
|
||||||
errorcount++;
|
|
||||||
ReportError(-1);
|
|
||||||
Printf("%s:%d: error: variable name `%s' exceeds limit of %d characters.\n",g_scriptFileName,line_number,pszLabel, MAXVARLABEL);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
int gV = hash_find(&h_gamevars,pszLabel);
|
int gV = hash_find(&h_gamevars,pszLabel);
|
||||||
|
|
||||||
if (gV >= 0 && !(aaGameVars[gV].flags & GAMEVAR_RESET))
|
if (gV >= 0 && !(aaGameVars[gV].flags & GAMEVAR_RESET))
|
||||||
|
@ -241,7 +225,7 @@ static FORCE_INLINE int __fastcall getvar__(int const gameVar, int const spriteN
|
||||||
case GAMEVAR_INT16PTR: returnValue = *(int16_t *)var.global; break;
|
case GAMEVAR_INT16PTR: returnValue = *(int16_t *)var.global; break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return NEGATE_ON_CONDITION(returnValue, gameVar & GV_FLAG_NEGATIVE);
|
return returnValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
int __fastcall Gv_GetVar(int const gameVar, int const spriteNum, int const playerNum) { return getvar__(gameVar, spriteNum, playerNum); }
|
int __fastcall Gv_GetVar(int const gameVar, int const spriteNum, int const playerNum) { return getvar__(gameVar, spriteNum, playerNum); }
|
||||||
|
|
|
@ -1940,9 +1940,6 @@ end_vol4a:
|
||||||
|
|
||||||
//AddLog("Newgame");
|
//AddLog("Newgame");
|
||||||
|
|
||||||
for (bssize_t i=0; i<(MAXVOLUMES*MAXLEVELS); i++)
|
|
||||||
G_FreeMapState(i);
|
|
||||||
|
|
||||||
if (m_coop != 1)
|
if (m_coop != 1)
|
||||||
{
|
{
|
||||||
for (bssize_t weaponNum = 0; weaponNum < MAX_WEAPONS; weaponNum++)
|
for (bssize_t weaponNum = 0; weaponNum < MAX_WEAPONS; weaponNum++)
|
||||||
|
@ -2478,16 +2475,6 @@ int G_EnterLevel(int gameMode)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void G_FreeMapState(int levelNum)
|
|
||||||
{
|
|
||||||
map_t *const pMapInfo = &g_mapInfo[levelNum];
|
|
||||||
|
|
||||||
if (pMapInfo->savedstate == NULL)
|
|
||||||
return;
|
|
||||||
|
|
||||||
ALIGNED_FREE_AND_NULL(pMapInfo->savedstate);
|
|
||||||
}
|
|
||||||
|
|
||||||
void G_SetFog(int fogtype)
|
void G_SetFog(int fogtype)
|
||||||
{
|
{
|
||||||
GLInterface.SetMapFog(fogtype != 0);
|
GLInterface.SetMapFog(fogtype != 0);
|
||||||
|
|
Loading…
Reference in a new issue