2010-08-02 08:13:51 +00:00
|
|
|
//-------------------------------------------------------------------------
|
|
|
|
/*
|
|
|
|
Copyright (C) 2010 EDuke32 developers and contributors
|
|
|
|
|
|
|
|
This file is part of EDuke32.
|
|
|
|
|
|
|
|
EDuke32 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
|
2014-07-20 08:55:56 +00:00
|
|
|
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
2010-08-02 08:13:51 +00:00
|
|
|
*/
|
|
|
|
//-------------------------------------------------------------------------
|
|
|
|
|
2014-11-22 12:32:56 +00:00
|
|
|
#ifndef global_h_
|
|
|
|
#define global_h_
|
2010-08-02 08:13:51 +00:00
|
|
|
|
2014-11-22 12:32:56 +00:00
|
|
|
#ifdef global_c_
|
2010-08-02 08:13:51 +00:00
|
|
|
#define G_EXTERN
|
|
|
|
#else
|
|
|
|
#define G_EXTERN extern
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#define MAXINTERPOLATIONS MAXSPRITES
|
2012-06-17 19:45:41 +00:00
|
|
|
// KEEPINSYNC lunatic/con_lang.lua
|
2012-03-25 22:00:27 +00:00
|
|
|
#define MAXSKILLS 7
|
2010-08-02 08:13:51 +00:00
|
|
|
|
2012-11-05 02:49:08 +00:00
|
|
|
// duke3d global soup :(
|
|
|
|
|
2015-04-18 21:59:21 +00:00
|
|
|
// XXX: we don't #include everything we need.
|
2012-11-05 02:49:08 +00:00
|
|
|
#include "compat.h"
|
|
|
|
#include "build.h"
|
|
|
|
|
2016-08-27 01:42:01 +00:00
|
|
|
G_EXTERN int32_t g_interpolationCnt;
|
2012-11-05 02:49:08 +00:00
|
|
|
G_EXTERN int32_t g_interpolationLock;
|
|
|
|
G_EXTERN int32_t oldipos[MAXINTERPOLATIONS];
|
|
|
|
G_EXTERN int32_t *curipos[MAXINTERPOLATIONS];
|
|
|
|
G_EXTERN int32_t bakipos[MAXINTERPOLATIONS];
|
2014-07-28 06:43:16 +00:00
|
|
|
|
|
|
|
#include "mmulti.h"
|
2011-04-07 01:16:29 +00:00
|
|
|
|
2012-11-05 02:49:08 +00:00
|
|
|
#include "duke3d.h"
|
|
|
|
#include "sector.h"
|
|
|
|
#include "quotes.h"
|
|
|
|
|
2014-11-26 04:39:23 +00:00
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
2015-04-24 00:08:46 +00:00
|
|
|
G_EXTERN int32_t duke3d_globalflags;
|
|
|
|
|
2015-12-20 05:18:53 +00:00
|
|
|
// KEEPINSYNC astub.c (used values only)
|
|
|
|
enum DUKE3D_GLOBALFLAGS {
|
2015-04-24 00:08:46 +00:00
|
|
|
DUKE3D_NO_WIDESCREEN_PINNING = 1<<0,
|
2015-10-03 11:53:19 +00:00
|
|
|
DUKE3D_NO_HARDCODED_FOGPALS = 1<<1,
|
2015-12-20 05:18:53 +00:00
|
|
|
DUKE3D_NO_PALETTE_CHANGES = 1<<2,
|
2015-04-24 00:08:46 +00:00
|
|
|
};
|
|
|
|
|
2010-08-02 08:13:51 +00:00
|
|
|
G_EXTERN DukeStatus_t sbar;
|
|
|
|
G_EXTERN actor_t actor[MAXSPRITES];
|
2012-11-11 17:57:06 +00:00
|
|
|
// g_tile: tile-specific data THAT DOES NOT CHANGE during the course of a game
|
2012-10-30 15:54:35 +00:00
|
|
|
G_EXTERN tiledata_t g_tile[MAXTILES];
|
2010-08-02 08:13:51 +00:00
|
|
|
G_EXTERN animwalltype animwall[MAXANIMWALLS];
|
2016-08-27 01:40:35 +00:00
|
|
|
G_EXTERN char *apStrings[MAXQUOTES],*apXStrings[MAXQUOTES];
|
2010-08-02 08:13:51 +00:00
|
|
|
G_EXTERN char *label;
|
2012-06-04 22:01:45 +00:00
|
|
|
G_EXTERN int32_t g_musicIndex;
|
2012-08-16 21:48:13 +00:00
|
|
|
G_EXTERN char g_loadFromGroupOnly;
|
2016-08-27 01:42:01 +00:00
|
|
|
G_EXTERN char g_skillCnt;
|
2010-08-02 08:13:51 +00:00
|
|
|
G_EXTERN char pus,pub;
|
|
|
|
G_EXTERN char ready2send;
|
2014-05-17 12:36:40 +00:00
|
|
|
#define MAXPLAYERNAME 32
|
|
|
|
G_EXTERN char szPlayerName[MAXPLAYERNAME];
|
2017-06-19 23:07:18 +00:00
|
|
|
G_EXTERN char tempbuf[MAXSECTORS<<1],packbuf[PACKBUF_SIZE],buf[1024];
|
2014-05-17 12:36:40 +00:00
|
|
|
#define TYPEBUFSIZE 141
|
|
|
|
G_EXTERN char typebuf[TYPEBUFSIZE];
|
2016-08-27 01:40:35 +00:00
|
|
|
|
2016-08-27 01:42:01 +00:00
|
|
|
|
2016-08-27 01:40:46 +00:00
|
|
|
G_EXTERN input_t localInput;
|
2010-08-02 08:13:51 +00:00
|
|
|
G_EXTERN input_t recsync[RECSYNCBUFSIZ];
|
2016-08-27 01:42:01 +00:00
|
|
|
|
2017-01-01 13:23:29 +00:00
|
|
|
G_EXTERN int32_t g_animWallCnt;
|
|
|
|
G_EXTERN int32_t g_animateCnt;
|
|
|
|
G_EXTERN int32_t g_cloudCnt;
|
|
|
|
G_EXTERN int32_t g_curViewscreen;
|
|
|
|
G_EXTERN int32_t g_frameRate;
|
|
|
|
G_EXTERN int32_t g_cyclerCnt;
|
|
|
|
G_EXTERN int32_t g_damageCameras;
|
|
|
|
G_EXTERN int32_t g_defaultLabelCnt;
|
|
|
|
G_EXTERN int32_t g_doQuickSave;
|
|
|
|
G_EXTERN int32_t g_earthquakeTime;
|
|
|
|
G_EXTERN int32_t g_freezerSelfDamage;
|
|
|
|
G_EXTERN int32_t g_gameQuit;
|
|
|
|
G_EXTERN int32_t g_globalRandom;
|
|
|
|
G_EXTERN int32_t g_impactDamage;
|
|
|
|
G_EXTERN int32_t g_labelCnt;
|
|
|
|
G_EXTERN int32_t g_maxPlayerHealth;
|
|
|
|
G_EXTERN int32_t g_mirrorCount;
|
|
|
|
G_EXTERN int32_t g_mostConcurrentPlayers;
|
|
|
|
G_EXTERN int32_t g_musicSize;
|
|
|
|
G_EXTERN int32_t g_playerSpawnCnt;
|
|
|
|
G_EXTERN int32_t g_scriptDebug;
|
|
|
|
G_EXTERN int32_t g_showShareware;
|
|
|
|
G_EXTERN int32_t g_spriteDeleteQueuePos;
|
|
|
|
G_EXTERN int32_t g_startArmorAmount;
|
|
|
|
G_EXTERN int32_t g_tripbombLaserMode;
|
|
|
|
G_EXTERN int32_t screenpeek;
|
2016-08-27 01:42:01 +00:00
|
|
|
|
|
|
|
G_EXTERN int16_t g_animateSect[MAXANIMATES];
|
|
|
|
G_EXTERN int32_t *g_animatePtr[MAXANIMATES];
|
|
|
|
G_EXTERN int32_t g_animateGoal[MAXANIMATES];
|
|
|
|
G_EXTERN int32_t g_animateVel[MAXANIMATES];
|
|
|
|
|
|
|
|
G_EXTERN int16_t g_cloudSect[256];
|
|
|
|
G_EXTERN int16_t g_cloudX;
|
|
|
|
G_EXTERN int16_t g_cloudY;
|
|
|
|
G_EXTERN int32_t g_cloudClock;
|
|
|
|
|
|
|
|
G_EXTERN int16_t SpriteDeletionQueue[1024];
|
|
|
|
G_EXTERN int16_t g_cyclers[MAXCYCLERS][6];
|
|
|
|
G_EXTERN int16_t g_mirrorSector[64];
|
|
|
|
G_EXTERN int16_t g_mirrorWall[64];
|
|
|
|
G_EXTERN int32_t *labelcode;
|
|
|
|
G_EXTERN int32_t *labeltype;
|
|
|
|
G_EXTERN int32_t lockclock;
|
Clean up some player code a bit... make bobposx/bobposy a vec2_t, make fricxv/fricyv a per-player vec2_t (TODO: CON access), promote angvel in input_t to int16_t and allow for player angle changes that result in odd numbered angles (we were effectively artificially limiting the angle to 1024 values before), fix some HUD model ID stuff that should help with the weapons in the HRP, clean up a bunch of random functions (P_FireWeapon(), P_DisplayTip(), P_DisplayAccess(), P_DisplayWeapon(), P_GetInput(), etc). Also clean up G_SetupFilenameBasedMusic() to loop through flac/ogg/mid when searching for usermap music replacements. Some of this really needs a BYTEVERSION bump, but these commits aren't for synthesis to build so we're not doing it yet. DONT_BUILD.
git-svn-id: https://svn.eduke32.com/eduke32@4703 1a8010ca-5511-0410-912e-c29ae57300e0
2014-10-29 17:07:11 +00:00
|
|
|
G_EXTERN int32_t ototalclock;
|
2016-08-27 01:42:01 +00:00
|
|
|
|
2016-08-27 01:40:35 +00:00
|
|
|
G_EXTERN intptr_t *apScript;
|
2016-08-27 01:42:01 +00:00
|
|
|
G_EXTERN intptr_t *g_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];
|
2015-02-07 17:29:11 +00:00
|
|
|
|
|
|
|
// XXX: I think this pragma pack is meaningless here.
|
|
|
|
// MSDN (https://msdn.microsoft.com/en-us/library/2e70t5y1%28VS.80%29.aspx) says:
|
|
|
|
// "pack takes effect at the first struct, union, or class declaration after
|
|
|
|
// the pragma is seen; pack has no effect on definitions."
|
2012-11-05 02:49:08 +00:00
|
|
|
#pragma pack(push,1)
|
2015-02-07 17:29:11 +00:00
|
|
|
#ifdef global_c_
|
|
|
|
static playerdata_t g_player_s[1 + MAXPLAYERS];
|
|
|
|
playerdata_t *const g_player = &g_player_s[1];
|
|
|
|
#else
|
|
|
|
extern playerdata_t *const g_player;
|
|
|
|
#endif
|
2010-08-02 08:13:51 +00:00
|
|
|
G_EXTERN playerspawn_t g_playerSpawnPoints[MAXPLAYERS];
|
2012-11-05 02:49:08 +00:00
|
|
|
G_EXTERN input_t inputfifo[MOVEFIFOSIZ][MAXPLAYERS];
|
|
|
|
#pragma pack(pop)
|
2015-02-07 17:29:11 +00:00
|
|
|
|
2016-08-27 01:42:01 +00:00
|
|
|
G_EXTERN char g_soundlocks[MAXSOUNDS];
|
2017-01-01 13:23:29 +00:00
|
|
|
G_EXTERN int32_t g_noEnemies;
|
|
|
|
G_EXTERN int32_t g_restorePalette;
|
|
|
|
G_EXTERN int32_t g_screenCapture;
|
2012-10-30 15:54:35 +00:00
|
|
|
G_EXTERN projectile_t SpriteProjectile[MAXSPRITES];
|
2010-08-02 08:13:51 +00:00
|
|
|
G_EXTERN sound_t g_sounds[MAXSOUNDS];
|
|
|
|
G_EXTERN uint32_t everyothertime;
|
|
|
|
G_EXTERN uint32_t g_moveThingsCount;
|
2018-05-08 17:32:11 +00:00
|
|
|
G_EXTERN uint32_t g_gameUpdateTime;
|
|
|
|
G_EXTERN uint32_t g_gameUpdateAndDrawTime;
|
2010-08-02 08:13:51 +00:00
|
|
|
|
2014-11-22 12:32:56 +00:00
|
|
|
#ifndef global_c_
|
2016-08-27 01:42:01 +00:00
|
|
|
extern char CheatKeys[2];
|
|
|
|
extern char g_gametypeNames[MAXGAMETYPES][33];
|
|
|
|
extern char g_setupFileName[BMAX_PATH];
|
|
|
|
extern char g_skillNames[MAXSKILLS][33];
|
|
|
|
extern char g_volumeNames[MAXVOLUMES][33];
|
|
|
|
|
2017-01-01 13:23:29 +00:00
|
|
|
extern int32_t g_actorRespawnTime;
|
|
|
|
extern int32_t g_bouncemineRadius;
|
|
|
|
extern int32_t g_deleteQueueSize;
|
|
|
|
extern int32_t g_gametypeCnt;
|
|
|
|
extern int32_t g_itemRespawnTime;
|
|
|
|
extern int32_t g_morterRadius;
|
|
|
|
extern int32_t g_numFreezeBounces;
|
|
|
|
extern int32_t g_pipebombRadius;
|
|
|
|
extern int32_t g_playerFriction;
|
|
|
|
extern int32_t g_rpgRadius;
|
|
|
|
extern int32_t g_scriptSize;
|
|
|
|
extern int32_t g_seenineRadius;
|
|
|
|
extern int32_t g_shrinkerRadius;
|
|
|
|
extern int32_t g_spriteGravity;
|
|
|
|
extern int32_t g_timerTicsPerSecond;
|
|
|
|
extern int32_t g_tripbombRadius;
|
|
|
|
extern int32_t g_volumeCnt;
|
2016-08-27 01:42:01 +00:00
|
|
|
|
|
|
|
extern int16_t g_blimpSpawnItems[15];
|
|
|
|
extern int32_t g_gametypeFlags[MAXGAMETYPES];
|
|
|
|
extern int32_t g_volumeFlags[MAXVOLUMES];
|
|
|
|
|
2015-02-07 17:29:11 +00:00
|
|
|
extern const char *s_buildDate;
|
2012-12-29 10:58:38 +00:00
|
|
|
#endif
|
|
|
|
|
2015-02-22 22:15:20 +00:00
|
|
|
enum
|
|
|
|
{
|
|
|
|
EF_HIDEFROMSP = 1<<0,
|
2015-03-08 07:56:45 +00:00
|
|
|
// EF_HIDEFROMMP = 1<<1,
|
2015-02-22 22:15:20 +00:00
|
|
|
};
|
|
|
|
|
2016-01-08 01:33:35 +00:00
|
|
|
EXTERN_INLINE_HEADER void G_UpdateInterpolations(void);
|
|
|
|
EXTERN_INLINE_HEADER void G_RestoreInterpolations(void);
|
|
|
|
|
2014-11-26 04:39:23 +00:00
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
2016-01-08 01:33:35 +00:00
|
|
|
#if defined global_c_ || !defined DISABLE_INLINING
|
|
|
|
|
|
|
|
EXTERN_INLINE void G_UpdateInterpolations(void) //Stick at beginning of G_DoMoveThings
|
|
|
|
{
|
2016-08-27 01:42:01 +00:00
|
|
|
for (bssize_t i=g_interpolationCnt-1; i>=0; i--) oldipos[i] = *curipos[i];
|
2016-01-08 01:33:35 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
EXTERN_INLINE void G_RestoreInterpolations(void) //Stick at end of drawscreen
|
|
|
|
{
|
2016-08-27 01:42:01 +00:00
|
|
|
int32_t i=g_interpolationCnt-1;
|
2016-01-08 01:33:35 +00:00
|
|
|
|
|
|
|
if (--g_interpolationLock)
|
|
|
|
return;
|
|
|
|
|
|
|
|
for (; i>=0; i--) *curipos[i] = bakipos[i];
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
2010-08-02 08:13:51 +00:00
|
|
|
#endif
|