mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-12-30 13:21:04 +00:00
- handle all level access and indexing through the mapinfo data.
No more level numbers will be stored in the game code.
This commit is contained in:
parent
9700b8435b
commit
532b11467f
20 changed files with 98 additions and 436 deletions
|
@ -84,7 +84,7 @@ void Logo(const CompletionFunc& completion)
|
||||||
};
|
};
|
||||||
static const int logoframetimes[] = { 360, 8, 128 };
|
static const int logoframetimes[] = { 360, 8, 128 };
|
||||||
|
|
||||||
if (!AutoNet && !userConfig.nologo)
|
if (!userConfig.nologo)
|
||||||
{
|
{
|
||||||
JobDesc jobs[3];
|
JobDesc jobs[3];
|
||||||
int job = 0;
|
int job = 0;
|
||||||
|
|
|
@ -432,7 +432,6 @@ PreCacheActor(void)
|
||||||
|
|
||||||
void DoTheCache(void)
|
void DoTheCache(void)
|
||||||
{
|
{
|
||||||
extern char CacheLastLevel[32],LevelName[20];
|
|
||||||
int i, cnt=0;
|
int i, cnt=0;
|
||||||
|
|
||||||
PreCacheActor();
|
PreCacheActor();
|
||||||
|
@ -449,7 +448,6 @@ void DoTheCache(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
memset(gotpic,0,sizeof(gotpic));
|
memset(gotpic,0,sizeof(gotpic));
|
||||||
strcpy(CacheLastLevel, LevelName);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
@ -79,16 +79,18 @@ bool RoomCheat(cheatseq_t* c)
|
||||||
bool NextCheat(cheatseq_t* c)
|
bool NextCheat(cheatseq_t* c)
|
||||||
{
|
{
|
||||||
if (!checkCheat(c)) return false;
|
if (!checkCheat(c)) return false;
|
||||||
Level++;
|
if (!currentLevel) return true;
|
||||||
ExitLevel = TRUE;
|
NextLevel = FindMapByLevelNum(currentLevel->levelNumber + 1);
|
||||||
|
if (NextLevel) ExitLevel = TRUE;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool PrevCheat(cheatseq_t* c)
|
bool PrevCheat(cheatseq_t* c)
|
||||||
{
|
{
|
||||||
if (!checkCheat(c)) return false;
|
if (!checkCheat(c)) return false;
|
||||||
Level--;
|
if (!currentLevel) return true;
|
||||||
ExitLevel = TRUE;
|
NextLevel = FindMapByLevelNum(currentLevel->levelNumber - 1);
|
||||||
|
if (NextLevel) ExitLevel = TRUE;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -207,18 +209,11 @@ bool WarpCheat(cheatseq_t* c)
|
||||||
int level_num;
|
int level_num;
|
||||||
|
|
||||||
level_num = atol((char*)c->Args);
|
level_num = atol((char*)c->Args);
|
||||||
|
auto maprec = FindMapByLevelNum(level_num);
|
||||||
//int episode_num;
|
if (!maprec) return false;
|
||||||
//DSPRINTF(ds,"ep %d, lev %d",episode_num, level_num);
|
|
||||||
//MONO_PRINT(ds);
|
|
||||||
|
|
||||||
if (!pp) return true;
|
if (!pp) return true;
|
||||||
if (!SW_SHAREWARE)
|
if (SW_SHAREWARE)
|
||||||
{
|
|
||||||
if (level_num > 28 || level_num < 1)
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
if (level_num > 4 || level_num < 1)
|
if (level_num > 4 || level_num < 1)
|
||||||
return false;
|
return false;
|
||||||
|
@ -227,10 +222,10 @@ bool WarpCheat(cheatseq_t* c)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
|
||||||
Level = level_num;
|
NextLevel = maprec;
|
||||||
ExitLevel = TRUE;
|
ExitLevel = TRUE;
|
||||||
|
|
||||||
sprintf(ds, "%s %1d", GStrings("TXT_ENTERING"), Level);
|
sprintf(ds, "%s %s", GStrings("TXT_ENTERING"), maprec->DisplayName());
|
||||||
PutStringInfo(pp, ds);
|
PutStringInfo(pp, ds);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,7 +37,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
#include "keydef.h"
|
#include "keydef.h"
|
||||||
|
|
||||||
#include "gamecontrol.h"
|
#include "gamecontrol.h"
|
||||||
#include "gamedefs.h"
|
|
||||||
#include "network.h"
|
#include "network.h"
|
||||||
#include "misc.h"
|
#include "misc.h"
|
||||||
#include "version.h"
|
#include "version.h"
|
||||||
|
@ -198,10 +197,11 @@ void GameInterface::StartGame(FNewGameStartup& gs)
|
||||||
ready2send = 0;
|
ready2send = 0;
|
||||||
|
|
||||||
if (gs.Episode >= 1)
|
if (gs.Episode >= 1)
|
||||||
Level = 5;
|
NextLevel = FindMapByLevelNum(5);
|
||||||
else
|
else
|
||||||
Level = 1;
|
NextLevel = FindMapByLevelNum(1);
|
||||||
|
|
||||||
|
if (!NextLevel) return;
|
||||||
ExitLevel = TRUE;
|
ExitLevel = TRUE;
|
||||||
NewGame = TRUE;
|
NewGame = TRUE;
|
||||||
CameraTestMode = FALSE;
|
CameraTestMode = FALSE;
|
||||||
|
|
|
@ -55,8 +55,8 @@ Prepared for public release: 03/28/2005 - Charlie Wiederhold, 3D Realms
|
||||||
#define DIST_NORMAL 0 // Just play sound normaly
|
#define DIST_NORMAL 0 // Just play sound normaly
|
||||||
#define DIST_MAXNORMAL 16384 // This is max distance constant for normal sounds
|
#define DIST_MAXNORMAL 16384 // This is max distance constant for normal sounds
|
||||||
// This is the limiting constant in Sound_Dist function.
|
// This is the limiting constant in Sound_Dist function.
|
||||||
#define DIST_WIDE 65536 // Half Level at full volume before sound begins to fade.
|
#define DIST_WIDE 65536 // Half level at full volume before sound begins to fade.
|
||||||
#define DIST_LEVELWIDE 131072 // Full Level
|
#define DIST_LEVELWIDE 131072 // Full level
|
||||||
|
|
||||||
// VOC Flag definitions
|
// VOC Flag definitions
|
||||||
#define VF_NORMAL 0
|
#define VF_NORMAL 0
|
||||||
|
|
|
@ -53,7 +53,6 @@ Prepared for public release: 03/28/2005 - Charlie Wiederhold, 3D Realms
|
||||||
#include "menus.h"
|
#include "menus.h"
|
||||||
|
|
||||||
#include "gamecontrol.h"
|
#include "gamecontrol.h"
|
||||||
#include "gamedefs.h"
|
|
||||||
|
|
||||||
#include "misc.h"
|
#include "misc.h"
|
||||||
|
|
||||||
|
@ -108,7 +107,6 @@ int Follow_posx=0,Follow_posy=0;
|
||||||
|
|
||||||
SWBOOL NoMeters = FALSE;
|
SWBOOL NoMeters = FALSE;
|
||||||
SWBOOL GraphicsMode = FALSE;
|
SWBOOL GraphicsMode = FALSE;
|
||||||
char CacheLastLevel[32] = "";
|
|
||||||
char PlayerNameArg[32] = "";
|
char PlayerNameArg[32] = "";
|
||||||
SWBOOL CleanExit = FALSE;
|
SWBOOL CleanExit = FALSE;
|
||||||
SWBOOL FinishAnim = 0;
|
SWBOOL FinishAnim = 0;
|
||||||
|
@ -149,8 +147,6 @@ short Skill = 2;
|
||||||
short BetaVersion = 900;
|
short BetaVersion = 900;
|
||||||
short TotalKillable;
|
short TotalKillable;
|
||||||
|
|
||||||
AUTO_NET Auto;
|
|
||||||
SWBOOL AutoNet = FALSE;
|
|
||||||
SWBOOL HasAutoColor = FALSE;
|
SWBOOL HasAutoColor = FALSE;
|
||||||
uint8_t AutoColor;
|
uint8_t AutoColor;
|
||||||
|
|
||||||
|
@ -158,7 +154,6 @@ const GAME_SET gs_defaults =
|
||||||
{
|
{
|
||||||
// Network game settings
|
// Network game settings
|
||||||
0, // GameType
|
0, // GameType
|
||||||
0, // Level
|
|
||||||
0, // Monsters
|
0, // Monsters
|
||||||
FALSE, // HurtTeammate
|
FALSE, // HurtTeammate
|
||||||
TRUE, // SpawnMarkers Markers
|
TRUE, // SpawnMarkers Markers
|
||||||
|
@ -188,7 +183,7 @@ uint8_t FakeMultiNumPlayers;
|
||||||
|
|
||||||
int totalsynctics;
|
int totalsynctics;
|
||||||
|
|
||||||
short Level = 0;
|
MapRecord* NextLevel = nullptr;
|
||||||
SWBOOL ExitLevel = FALSE;
|
SWBOOL ExitLevel = FALSE;
|
||||||
int OrigCommPlayers=0;
|
int OrigCommPlayers=0;
|
||||||
extern uint8_t CommPlayers;
|
extern uint8_t CommPlayers;
|
||||||
|
@ -213,7 +208,6 @@ SWBOOL InGame = FALSE;
|
||||||
SWBOOL CommandSetup = FALSE;
|
SWBOOL CommandSetup = FALSE;
|
||||||
|
|
||||||
char buffer[80], ch;
|
char buffer[80], ch;
|
||||||
char LevelName[20];
|
|
||||||
|
|
||||||
uint8_t DebugPrintColor = 255;
|
uint8_t DebugPrintColor = 255;
|
||||||
|
|
||||||
|
@ -300,17 +294,17 @@ void TerminateGame(void)
|
||||||
throw CExitEvent(3);
|
throw CExitEvent(3);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool LoadLevel(const char *filename)
|
bool LoadLevel(MapRecord *maprec)
|
||||||
{
|
{
|
||||||
int16_t ang;
|
int16_t ang;
|
||||||
if (engineLoadBoard(filename, SW_SHAREWARE ? 1 : 0, (vec3_t *)&Player[0], &ang, &Player[0].cursectnum) == -1)
|
if (engineLoadBoard(maprec->fileName, SW_SHAREWARE ? 1 : 0, (vec3_t *)&Player[0], &ang, &Player[0].cursectnum) == -1)
|
||||||
{
|
{
|
||||||
Printf("Level not found: %s", filename);
|
Printf("Map not found: %s", maprec->fileName.GetChars());
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
currentLevel = &mapList[Level];
|
currentLevel = maprec;
|
||||||
SECRET_SetMapName(currentLevel->DisplayName(), currentLevel->name);
|
SECRET_SetMapName(currentLevel->DisplayName(), currentLevel->name);
|
||||||
STAT_NewLevel(currentLevel->labelName);
|
STAT_NewLevel(currentLevel->fileName);
|
||||||
Player[0].q16ang = fix16_from_int(ang);
|
Player[0].q16ang = fix16_from_int(ang);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -331,24 +325,6 @@ void MultiSharewareCheck(void)
|
||||||
int TotalMemory = 0;
|
int TotalMemory = 0;
|
||||||
int ActualHeap = 0;
|
int ActualHeap = 0;
|
||||||
|
|
||||||
void InitAutoNet(void)
|
|
||||||
{
|
|
||||||
if (!AutoNet)
|
|
||||||
return;
|
|
||||||
|
|
||||||
gs.NetGameType = Auto.Rules;
|
|
||||||
gs.NetLevel = Auto.Level;
|
|
||||||
gs.NetMonsters = Auto.Enemy;
|
|
||||||
gs.NetSpawnMarkers = Auto.Markers;
|
|
||||||
gs.NetTeamPlay = Auto.Team;
|
|
||||||
gs.NetHurtTeammate = Auto.HurtTeam;
|
|
||||||
gs.NetKillLimit = Auto.Kill;
|
|
||||||
gs.NetTimeLimit = Auto.Time;
|
|
||||||
gs.NetColor = Auto.Color;
|
|
||||||
gs.NetNuke = Auto.Nuke;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static int firstnet = 0; // JBF
|
static int firstnet = 0; // JBF
|
||||||
|
|
||||||
void SW_InitMultiPsky(void)
|
void SW_InitMultiPsky(void)
|
||||||
|
@ -366,12 +342,6 @@ bool InitGame()
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
engineInit();
|
engineInit();
|
||||||
|
|
||||||
|
|
||||||
InitAutoNet();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
{
|
{
|
||||||
auto pal = fileSystem.LoadFile("3drealms.pal", 0);
|
auto pal = fileSystem.LoadFile("3drealms.pal", 0);
|
||||||
if (pal.Size() >= 768)
|
if (pal.Size() >= 768)
|
||||||
|
@ -439,10 +409,6 @@ bool InitGame()
|
||||||
|
|
||||||
videoInit();
|
videoInit();
|
||||||
|
|
||||||
if (!LoadLevel("$dozer.map")) return false;
|
|
||||||
SetupPreCache();
|
|
||||||
DoTheCache();
|
|
||||||
|
|
||||||
GraphicsMode = TRUE;
|
GraphicsMode = TRUE;
|
||||||
|
|
||||||
InitFX(); // JBF: do it down here so we get a hold of the window handle
|
InitFX(); // JBF: do it down here so we get a hold of the window handle
|
||||||
|
@ -450,8 +416,6 @@ bool InitGame()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
short SongLevelNum;
|
|
||||||
|
|
||||||
FString ThemeSongs[6];
|
FString ThemeSongs[6];
|
||||||
int ThemeTrack[6];
|
int ThemeTrack[6];
|
||||||
|
|
||||||
|
@ -540,32 +504,25 @@ InitLevel(void)
|
||||||
|
|
||||||
Mus_Stop();
|
Mus_Stop();
|
||||||
|
|
||||||
InitLevelGlobals2();
|
auto maprec = NextLevel;
|
||||||
|
NextLevel = nullptr;
|
||||||
|
if (!maprec)
|
||||||
{
|
{
|
||||||
if (Level < 0)
|
NewGame = false;
|
||||||
Level = 0;
|
return;
|
||||||
|
|
||||||
if (Level > MAX_LEVELS)
|
|
||||||
Level = 1;
|
|
||||||
|
|
||||||
strcpy(LevelName, mapList[Level].fileName);
|
|
||||||
}
|
}
|
||||||
|
InitLevelGlobals2();
|
||||||
|
|
||||||
if (NewGame)
|
if (NewGame)
|
||||||
InitNewGame();
|
InitNewGame();
|
||||||
|
|
||||||
if (!LoadLevel(LevelName))
|
if (!LoadLevel(maprec))
|
||||||
{
|
{
|
||||||
NewGame = false;
|
NewGame = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
STAT_NewLevel(LevelName);
|
|
||||||
|
|
||||||
if (Bstrcasecmp(CacheLastLevel, LevelName) != 0)
|
SetupPreCache();
|
||||||
// clears gotpic and does some bit setting
|
|
||||||
SetupPreCache();
|
|
||||||
else
|
|
||||||
memset(gotpic,0,sizeof(gotpic));
|
|
||||||
|
|
||||||
if (sector[0].extra != -1)
|
if (sector[0].extra != -1)
|
||||||
{
|
{
|
||||||
|
@ -610,8 +567,6 @@ InitLevel(void)
|
||||||
PostSetupSectorObject();
|
PostSetupSectorObject();
|
||||||
SetupMirrorTiles();
|
SetupMirrorTiles();
|
||||||
initlava();
|
initlava();
|
||||||
|
|
||||||
SongLevelNum = Level;
|
|
||||||
|
|
||||||
// reset NewGame
|
// reset NewGame
|
||||||
NewGame = FALSE;
|
NewGame = FALSE;
|
||||||
|
@ -844,7 +799,6 @@ void MenuLevel(void)
|
||||||
|
|
||||||
if (ExitLevel)
|
if (ExitLevel)
|
||||||
{
|
{
|
||||||
// Quiting Level
|
|
||||||
ExitLevel = FALSE;
|
ExitLevel = FALSE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -886,27 +840,16 @@ void EndGameSequence(void)
|
||||||
|
|
||||||
ExitLevel = FALSE;
|
ExitLevel = FALSE;
|
||||||
QuitFlag = FALSE;
|
QuitFlag = FALSE;
|
||||||
AutoNet = FALSE;
|
|
||||||
|
|
||||||
//if (FinishAnim == ANIM_ZILLA)
|
//if (FinishAnim == ANIM_ZILLA)
|
||||||
// CreditsLevel();
|
// CreditsLevel();
|
||||||
|
|
||||||
ExitLevel = FALSE;
|
ExitLevel = FALSE;
|
||||||
QuitFlag = FALSE;
|
QuitFlag = FALSE;
|
||||||
AutoNet = FALSE;
|
|
||||||
|
|
||||||
if (SW_SHAREWARE)
|
if (currentLevel->levelNumber != 4 && currentLevel->levelNumber != 20)
|
||||||
{
|
{
|
||||||
Level = 0;
|
NextLevel = FindMapByLevelNum(currentLevel->levelNumber + 1);
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (Level == 4 || Level == 20)
|
|
||||||
{
|
|
||||||
Level=0;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
Level++;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -944,7 +887,6 @@ void StatScreen(PLAYERp mpp)
|
||||||
|
|
||||||
void GameIntro(void)
|
void GameIntro(void)
|
||||||
{
|
{
|
||||||
Level = 1;
|
|
||||||
Logo([](bool) { gamestate = GS_LEVEL; });
|
Logo([](bool) { gamestate = GS_LEVEL; });
|
||||||
SyncScreenJob();
|
SyncScreenJob();
|
||||||
MenuLevel();
|
MenuLevel();
|
||||||
|
@ -1080,8 +1022,7 @@ void InitRunLevel(void)
|
||||||
|
|
||||||
Mus_Stop();
|
Mus_Stop();
|
||||||
|
|
||||||
if (Bstrcasecmp(CacheLastLevel, LevelName) != 0)
|
DoTheCache();
|
||||||
DoTheCache();
|
|
||||||
|
|
||||||
// auto aim / auto run / etc
|
// auto aim / auto run / etc
|
||||||
InitPlayerGameSettings();
|
InitPlayerGameSettings();
|
||||||
|
@ -1092,15 +1033,9 @@ void InitRunLevel(void)
|
||||||
// Initialize Game part of network code (When ready2send != 0)
|
// Initialize Game part of network code (When ready2send != 0)
|
||||||
InitNetVars();
|
InitNetVars();
|
||||||
|
|
||||||
|
if (currentLevel)
|
||||||
{
|
{
|
||||||
if (Level == 0)
|
PlaySong(currentLevel->labelName, currentLevel->music, currentLevel->cdSongId);
|
||||||
{
|
|
||||||
PlaySong(nullptr, currentLevel->music, 1 + RANDOM_RANGE(10));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
PlaySong(currentLevel->labelName, currentLevel->music, currentLevel->cdSongId);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
InitPrediction(&Player[myconnectindex]);
|
InitPrediction(&Player[myconnectindex]);
|
||||||
|
|
|
@ -48,6 +48,7 @@ Prepared for public release: 03/28/2005 - Charlie Wiederhold, 3D Realms
|
||||||
#include "gamecvars.h"
|
#include "gamecvars.h"
|
||||||
#include "raze_sound.h"
|
#include "raze_sound.h"
|
||||||
#include "c_cvars.h"
|
#include "c_cvars.h"
|
||||||
|
#include "mapinfo.h"
|
||||||
|
|
||||||
EXTERN_CVAR(Bool, sw_ninjahack)
|
EXTERN_CVAR(Bool, sw_ninjahack)
|
||||||
EXTERN_CVAR(Bool, sw_darts)
|
EXTERN_CVAR(Bool, sw_darts)
|
||||||
|
@ -885,23 +886,6 @@ extern void (*InitWeapon[MAX_WEAPONS]) (PLAYERp);
|
||||||
#define MAX_SW_PLAYERS_REG (8)
|
#define MAX_SW_PLAYERS_REG (8)
|
||||||
#define MAX_SW_PLAYERS (isShareware ? MAX_SW_PLAYERS_SW : MAX_SW_PLAYERS_REG)
|
#define MAX_SW_PLAYERS (isShareware ? MAX_SW_PLAYERS_SW : MAX_SW_PLAYERS_REG)
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
char map_name[16];
|
|
||||||
char numplayers;
|
|
||||||
char Episode,Level;
|
|
||||||
char LevelSong[16];
|
|
||||||
} DEMO_HEADER, *DEMO_HEADERp;
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
int x,y,z;
|
|
||||||
} DEMO_START_POS, *DEMO_START_POSp;
|
|
||||||
|
|
||||||
#define MAX_LEVELS_REG 29
|
|
||||||
#define MAX_LEVELS_SW 4
|
|
||||||
#define MAX_LEVELS (isShareware ? MAX_LEVELS_SW : MAX_LEVELS_REG)
|
|
||||||
|
|
||||||
extern int ThemeTrack[6]; // w
|
extern int ThemeTrack[6]; // w
|
||||||
extern FString ThemeSongs[6]; //
|
extern FString ThemeSongs[6]; //
|
||||||
|
|
||||||
|
@ -2165,11 +2149,11 @@ void DoSoundSpotMatch(short match, short sound_num, short sound_type);
|
||||||
//
|
//
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
extern SWBOOL ExitLevel;
|
extern SWBOOL ExitLevel, FinishedLevel;
|
||||||
extern SWBOOL Warping;
|
extern SWBOOL Warping;
|
||||||
extern uint8_t CommPlayers;
|
extern uint8_t CommPlayers;
|
||||||
extern SWBOOL CommEnabled;
|
extern SWBOOL CommEnabled;
|
||||||
extern short Level;
|
extern MapRecord* NextLevel;
|
||||||
extern short Episode;
|
extern short Episode;
|
||||||
|
|
||||||
extern int LastFrameTics;
|
extern int LastFrameTics;
|
||||||
|
|
|
@ -1,191 +0,0 @@
|
||||||
//-------------------------------------------------------------------------
|
|
||||||
/*
|
|
||||||
Copyright (C) 1997, 2005 - 3D Realms Entertainment
|
|
||||||
|
|
||||||
This file is part of Shadow Warrior version 1.2
|
|
||||||
|
|
||||||
Shadow Warrior 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
||||||
|
|
||||||
Original Source: 1997 - Frank Maddin and Jim Norwood
|
|
||||||
Prepared for public release: 03/28/2005 - Charlie Wiederhold, 3D Realms
|
|
||||||
*/
|
|
||||||
//-------------------------------------------------------------------------
|
|
||||||
|
|
||||||
//****************************************************************************
|
|
||||||
//
|
|
||||||
// gamedefs.h
|
|
||||||
//
|
|
||||||
// common defines between the game and the setup program
|
|
||||||
//
|
|
||||||
//****************************************************************************
|
|
||||||
|
|
||||||
#ifndef gamedefs_public_
|
|
||||||
#define gamedefs_public_
|
|
||||||
|
|
||||||
//****************************************************************************
|
|
||||||
//
|
|
||||||
// DEFINES
|
|
||||||
//
|
|
||||||
//****************************************************************************
|
|
||||||
|
|
||||||
//#define SHARE 1
|
|
||||||
|
|
||||||
//
|
|
||||||
// Setup program defines
|
|
||||||
//
|
|
||||||
|
|
||||||
// Max number of players
|
|
||||||
|
|
||||||
//#ifdef SHARE
|
|
||||||
//#define MAXPLAYERS 4
|
|
||||||
//#else
|
|
||||||
//#define MAXPLAYERS 8
|
|
||||||
//#endif
|
|
||||||
|
|
||||||
|
|
||||||
// max path+track length for waveform music files
|
|
||||||
#define MAXWAVEFORMTRACKLENGTH 256
|
|
||||||
|
|
||||||
//
|
|
||||||
// modem string defines
|
|
||||||
//
|
|
||||||
|
|
||||||
#define MAXMODEMSTRING 50
|
|
||||||
|
|
||||||
// MACRO defines
|
|
||||||
|
|
||||||
#define MAXMACROS 10
|
|
||||||
#define MAXMACROLENGTH 34
|
|
||||||
|
|
||||||
// Phone list defines
|
|
||||||
|
|
||||||
#define PHONENUMBERLENGTH 28
|
|
||||||
#define PHONENAMELENGTH 16
|
|
||||||
#define MAXPHONEENTRIES 16
|
|
||||||
|
|
||||||
// length of program functions
|
|
||||||
|
|
||||||
#define MAXFUNCTIONLENGTH 30
|
|
||||||
|
|
||||||
// length of axis functions
|
|
||||||
|
|
||||||
#define MAXAXISFUNCTIONLENGTH 30
|
|
||||||
|
|
||||||
// Max Player Name length
|
|
||||||
|
|
||||||
#define MAXPLAYERNAMELENGTH 11
|
|
||||||
|
|
||||||
// Max RTS Name length
|
|
||||||
|
|
||||||
#define MAXRTSNAMELENGTH 15
|
|
||||||
|
|
||||||
// Max User Level Name length
|
|
||||||
|
|
||||||
#define MAXUSERLEVELNAMELENGTH 15
|
|
||||||
|
|
||||||
|
|
||||||
// Max RTS Path length
|
|
||||||
|
|
||||||
#define MAXRTSPATHLENGTH 48
|
|
||||||
|
|
||||||
// Max User Level Path length
|
|
||||||
|
|
||||||
#define MAXUSERLEVELPATHLENGTH 48
|
|
||||||
|
|
||||||
// Number of Mouse Axes
|
|
||||||
|
|
||||||
#ifdef __FLAT__
|
|
||||||
#define CONTROLSHIFT 0
|
|
||||||
#else
|
|
||||||
#define CONTROLSHIFT 4
|
|
||||||
#endif
|
|
||||||
// MIN/MAX scale value for controller scales
|
|
||||||
|
|
||||||
#define MAXCONTROLSCALEVALUE (1<<(18-CONTROLSHIFT))
|
|
||||||
|
|
||||||
// DEFAULT scale value for controller scales
|
|
||||||
|
|
||||||
#define DEFAULTCONTROLSCALEVALUE (1<<(16-CONTROLSHIFT))
|
|
||||||
|
|
||||||
// base value for controller scales
|
|
||||||
|
|
||||||
#define BASECONTROLSCALEVALUE (1<<(16-CONTROLSHIFT))
|
|
||||||
|
|
||||||
// MAX mouse sensitivity scale
|
|
||||||
|
|
||||||
#define MAXMOUSESENSITIVITY (1<<(17-CONTROLSHIFT))
|
|
||||||
|
|
||||||
// mouse sensitivity base
|
|
||||||
|
|
||||||
#define MOUSECONTROLBASE ((1<<(15-CONTROLSHIFT))-1)
|
|
||||||
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
gametype_network=3,
|
|
||||||
gametype_serial=1,
|
|
||||||
gametype_modem=2
|
|
||||||
};
|
|
||||||
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
connecttype_dialing=0,
|
|
||||||
connecttype_answer=1,
|
|
||||||
connecttype_alreadyconnected=2
|
|
||||||
};
|
|
||||||
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
screenbuffer_320x200,
|
|
||||||
screenbuffer_640x400,
|
|
||||||
screenbuffer_640x480,
|
|
||||||
screenbuffer_800x600,
|
|
||||||
screenbuffer_1024x768,
|
|
||||||
screenbuffer_1280x1024,
|
|
||||||
screenbuffer_1600x1200
|
|
||||||
};
|
|
||||||
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
vesa_320x200,
|
|
||||||
vesa_360x200,
|
|
||||||
vesa_320x240,
|
|
||||||
vesa_360x240,
|
|
||||||
vesa_320x400,
|
|
||||||
vesa_360x400,
|
|
||||||
vesa_640x350,
|
|
||||||
vesa_640x400,
|
|
||||||
vesa_640x480,
|
|
||||||
vesa_800x600,
|
|
||||||
vesa_1024x768,
|
|
||||||
vesa_1280x1024,
|
|
||||||
vesa_1600x1200
|
|
||||||
};
|
|
||||||
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
screenmode_chained,
|
|
||||||
screenmode_vesa,
|
|
||||||
screenmode_buffered,
|
|
||||||
screenmode_tseng,
|
|
||||||
screenmode_paradise,
|
|
||||||
screenmode_s3,
|
|
||||||
screenmode_crystal,
|
|
||||||
screenmode_redblue,
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
|
@ -42,7 +42,6 @@ Prepared for public release: 03/28/2005 - Charlie Wiederhold, 3D Realms
|
||||||
#include "keydef.h"
|
#include "keydef.h"
|
||||||
|
|
||||||
#include "gamecontrol.h"
|
#include "gamecontrol.h"
|
||||||
#include "gamedefs.h"
|
|
||||||
#include "network.h"
|
#include "network.h"
|
||||||
#include "version.h"
|
#include "version.h"
|
||||||
#include "network.h"
|
#include "network.h"
|
||||||
|
|
|
@ -29,27 +29,6 @@ BEGIN_SW_NS
|
||||||
#define SYNC_TEST 0
|
#define SYNC_TEST 0
|
||||||
#define MAXSYNCBYTES 16
|
#define MAXSYNCBYTES 16
|
||||||
|
|
||||||
#pragma pack(push,1)
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
uint8_t PacketType; // first byte is always packet type
|
|
||||||
uint8_t FirstPlayerIndex;
|
|
||||||
SWBOOL AutoAim;
|
|
||||||
uint8_t Level;
|
|
||||||
uint8_t Episode;
|
|
||||||
int8_t Skill;
|
|
||||||
uint8_t GameType;
|
|
||||||
SWBOOL HurtTeammate;
|
|
||||||
SWBOOL SpawnMarkers;
|
|
||||||
SWBOOL TeamPlay;
|
|
||||||
uint8_t KillLimit;
|
|
||||||
uint8_t TimeLimit;
|
|
||||||
SWBOOL Nuke;
|
|
||||||
} PACKET_NEW_GAME,*PACKET_NEW_GAMEp;
|
|
||||||
|
|
||||||
#pragma pack(pop)
|
|
||||||
|
|
||||||
extern uint8_t syncstat[MAXSYNCBYTES];
|
extern uint8_t syncstat[MAXSYNCBYTES];
|
||||||
extern SWBOOL PredictionOn;
|
extern SWBOOL PredictionOn;
|
||||||
extern PLAYER PredictPlayer;
|
extern PLAYER PredictPlayer;
|
||||||
|
@ -93,23 +72,6 @@ typedef struct
|
||||||
|
|
||||||
extern gNET gNet;
|
extern gNET gNet;
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
int Rules,
|
|
||||||
Level,
|
|
||||||
Enemy,
|
|
||||||
Markers,
|
|
||||||
Team,
|
|
||||||
HurtTeam,
|
|
||||||
Kill,
|
|
||||||
Time,
|
|
||||||
Color,
|
|
||||||
Nuke;
|
|
||||||
} AUTO_NET, *AUTO_NETp;
|
|
||||||
|
|
||||||
extern AUTO_NET Auto;
|
|
||||||
extern SWBOOL AutoNet;
|
|
||||||
|
|
||||||
void UpdateInputs(void);
|
void UpdateInputs(void);
|
||||||
void InitNetVars(void);
|
void InitNetVars(void);
|
||||||
void InitTimingVars(void);
|
void InitTimingVars(void);
|
||||||
|
|
|
@ -65,14 +65,12 @@ static int osdcmd_map(CCmdFuncPtr parm)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if the map is already defined.
|
// Check if the map is already defined.
|
||||||
for (int i = 0; i < 32; i++)
|
auto maprec = FindMapByName(mapname);
|
||||||
|
if (maprec)
|
||||||
{
|
{
|
||||||
if (mapList[i].labelName.CompareNoCase(mapname) == 0)
|
// This needs to be done better...
|
||||||
{
|
FStringf cheatcode("activatecheat swtrek%02d", maprec->levelNumber);
|
||||||
FStringf cheatcode("activatecheat swtrek%02d", i);
|
C_DoCommand(cheatcode);
|
||||||
C_DoCommand(cheatcode);
|
|
||||||
return CCMD_OK;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return CCMD_OK;
|
return CCMD_OK;
|
||||||
}
|
}
|
||||||
|
|
|
@ -7573,9 +7573,11 @@ void MultiPlayLimits(void)
|
||||||
{
|
{
|
||||||
gNet.TimeLimitClock = gNet.TimeLimit;
|
gNet.TimeLimitClock = gNet.TimeLimit;
|
||||||
|
|
||||||
// do not increment if level is 23 thru 28
|
NextLevel = nullptr;
|
||||||
if (Level <= 22)
|
// do not increment if level is 23 thru 28 (should be done smarter.)
|
||||||
Level++;
|
if (currentLevel->levelNumber <= 22)
|
||||||
|
NextLevel = FindMapByLevelNum(currentLevel->levelNumber + 1);
|
||||||
|
if (!NextLevel) NextLevel = currentLevel;
|
||||||
|
|
||||||
ExitLevel = TRUE;
|
ExitLevel = TRUE;
|
||||||
FinishedLevel = TRUE;
|
FinishedLevel = TRUE;
|
||||||
|
|
|
@ -72,7 +72,6 @@ extern char SaveGameDescr[10][80];
|
||||||
extern int PlayClock;
|
extern int PlayClock;
|
||||||
extern short Bunny_Count;
|
extern short Bunny_Count;
|
||||||
extern SWBOOL NewGame;
|
extern SWBOOL NewGame;
|
||||||
extern char CacheLastLevel[];
|
|
||||||
extern int GodMode;
|
extern int GodMode;
|
||||||
extern int FinishTimer;
|
extern int FinishTimer;
|
||||||
extern SWBOOL FinishAnim;
|
extern SWBOOL FinishAnim;
|
||||||
|
@ -88,7 +87,6 @@ extern short BossSpriteNum[3];
|
||||||
#define ANIM_SAVE 1
|
#define ANIM_SAVE 1
|
||||||
|
|
||||||
extern SW_PACKET loc;
|
extern SW_PACKET loc;
|
||||||
extern char LevelName[20];
|
|
||||||
extern STATE s_NotRestored[];
|
extern STATE s_NotRestored[];
|
||||||
|
|
||||||
OrgTileListP otlist[] = {&orgwalllist, &orgwalloverlist, &orgsectorceilinglist, &orgsectorfloorlist};
|
OrgTileListP otlist[] = {&orgwalllist, &orgwalloverlist, &orgsectorceilinglist, &orgsectorfloorlist};
|
||||||
|
@ -232,7 +230,6 @@ bool GameInterface::SaveGame(FSaveGameNode *sv)
|
||||||
|
|
||||||
MWRITE(&GameVersion,sizeof(GameVersion),1,fil);
|
MWRITE(&GameVersion,sizeof(GameVersion),1,fil);
|
||||||
|
|
||||||
MWRITE(&Level,sizeof(Level),1,fil);
|
|
||||||
MWRITE(&Skill,sizeof(Skill),1,fil);
|
MWRITE(&Skill,sizeof(Skill),1,fil);
|
||||||
|
|
||||||
MWRITE(&numplayers,sizeof(numplayers),1,fil);
|
MWRITE(&numplayers,sizeof(numplayers),1,fil);
|
||||||
|
@ -479,7 +476,6 @@ bool GameInterface::SaveGame(FSaveGameNode *sv)
|
||||||
//MWRITE(&oloc,sizeof(oloc),1,fil);
|
//MWRITE(&oloc,sizeof(oloc),1,fil);
|
||||||
//MWRITE(&fsync,sizeof(fsync),1,fil);
|
//MWRITE(&fsync,sizeof(fsync),1,fil);
|
||||||
|
|
||||||
MWRITE(LevelName,sizeof(LevelName),1,fil);
|
|
||||||
MWRITE(&screenpeek,sizeof(screenpeek),1,fil);
|
MWRITE(&screenpeek,sizeof(screenpeek),1,fil);
|
||||||
MWRITE(&totalsynctics,sizeof(totalsynctics),1,fil);
|
MWRITE(&totalsynctics,sizeof(totalsynctics),1,fil);
|
||||||
|
|
||||||
|
@ -704,7 +700,6 @@ bool GameInterface::LoadGame(FSaveGameNode* sv)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
MREAD(&Level,sizeof(Level),1,fil);
|
|
||||||
MREAD(&Skill,sizeof(Skill),1,fil);
|
MREAD(&Skill,sizeof(Skill),1,fil);
|
||||||
|
|
||||||
MREAD(&numplayers, sizeof(numplayers),1,fil);
|
MREAD(&numplayers, sizeof(numplayers),1,fil);
|
||||||
|
@ -890,7 +885,6 @@ bool GameInterface::LoadGame(FSaveGameNode* sv)
|
||||||
|
|
||||||
MREAD(&loc,sizeof(loc),1,fil);
|
MREAD(&loc,sizeof(loc),1,fil);
|
||||||
|
|
||||||
MREAD(LevelName,sizeof(LevelName),1,fil);
|
|
||||||
MREAD(&screenpeek,sizeof(screenpeek),1,fil);
|
MREAD(&screenpeek,sizeof(screenpeek),1,fil);
|
||||||
MREAD(&totalsynctics,sizeof(totalsynctics),1,fil); // same as kens lockclock
|
MREAD(&totalsynctics,sizeof(totalsynctics),1,fil); // same as kens lockclock
|
||||||
|
|
||||||
|
@ -1069,11 +1063,8 @@ bool GameInterface::LoadGame(FSaveGameNode* sv)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (Bstrcasecmp(CacheLastLevel, LevelName) != 0)
|
SetupPreCache();
|
||||||
{
|
DoTheCache();
|
||||||
SetupPreCache();
|
|
||||||
DoTheCache();
|
|
||||||
}
|
|
||||||
|
|
||||||
// what is this for? don't remember
|
// what is this for? don't remember
|
||||||
totalclock = totalsynctics;
|
totalclock = totalsynctics;
|
||||||
|
|
|
@ -459,7 +459,6 @@ void LoadCustomInfoFromScript(const char *filename)
|
||||||
scriptfile *script;
|
scriptfile *script;
|
||||||
char *token;
|
char *token;
|
||||||
char *braceend;
|
char *braceend;
|
||||||
int curmap = -1;
|
|
||||||
|
|
||||||
script = scriptfile_fromfile(filename);
|
script = scriptfile_fromfile(filename);
|
||||||
if (!script) return;
|
if (!script) return;
|
||||||
|
@ -483,6 +482,7 @@ void LoadCustomInfoFromScript(const char *filename)
|
||||||
scriptfile_addsymbolvalue(weaponmap[i].sym, 1+i);
|
scriptfile_addsymbolvalue(weaponmap[i].sym, 1+i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MapRecord* curMap = nullptr;
|
||||||
while ((token = scriptfile_gettoken(script)))
|
while ((token = scriptfile_gettoken(script)))
|
||||||
{
|
{
|
||||||
switch (cm_transtok(token, cm_tokens, cm_numtokens))
|
switch (cm_transtok(token, cm_tokens, cm_numtokens))
|
||||||
|
@ -490,18 +490,15 @@ void LoadCustomInfoFromScript(const char *filename)
|
||||||
case CM_MAP:
|
case CM_MAP:
|
||||||
{
|
{
|
||||||
char *mapnumptr;
|
char *mapnumptr;
|
||||||
if (scriptfile_getnumber(script, &curmap)) break;
|
int mapno;
|
||||||
|
if (scriptfile_getnumber(script, &mapno)) break;
|
||||||
mapnumptr = script->ltextptr;
|
mapnumptr = script->ltextptr;
|
||||||
if (scriptfile_getbraces(script, &braceend)) break;
|
if (scriptfile_getbraces(script, &braceend)) break;
|
||||||
|
curMap = FindMapByLevelNum(mapno);
|
||||||
// first map entry may not be used, max. amount needs investigation
|
if (!curMap)
|
||||||
if (curmap < 1 || curmap > MAX_LEVELS_REG)
|
|
||||||
{
|
{
|
||||||
Printf("Error: map number %d not in range 1-%d on line %s:%d\n",
|
curMap = AllocateMap();
|
||||||
curmap, MAX_LEVELS_REG, script->filename,
|
curMap->levelNumber = mapno;
|
||||||
scriptfile_getlinum(script,mapnumptr));
|
|
||||||
script->textptr = braceend;
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
while (script->textptr < braceend)
|
while (script->textptr < braceend)
|
||||||
|
@ -515,7 +512,7 @@ void LoadCustomInfoFromScript(const char *filename)
|
||||||
char *t;
|
char *t;
|
||||||
if (scriptfile_getstring(script, &t)) break;
|
if (scriptfile_getstring(script, &t)) break;
|
||||||
|
|
||||||
mapList[curmap].SetFileName(t);
|
curMap->SetFileName(t);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case CM_SONG:
|
case CM_SONG:
|
||||||
|
@ -523,7 +520,7 @@ void LoadCustomInfoFromScript(const char *filename)
|
||||||
char *t;
|
char *t;
|
||||||
if (scriptfile_getstring(script, &t)) break;
|
if (scriptfile_getstring(script, &t)) break;
|
||||||
|
|
||||||
mapList[curmap].music = t;
|
curMap->music = t;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case CM_TITLE:
|
case CM_TITLE:
|
||||||
|
@ -531,7 +528,7 @@ void LoadCustomInfoFromScript(const char *filename)
|
||||||
char *t;
|
char *t;
|
||||||
if (scriptfile_getstring(script, &t)) break;
|
if (scriptfile_getstring(script, &t)) break;
|
||||||
|
|
||||||
mapList[curmap].SetName(t);
|
curMap->SetName(t);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case CM_BESTTIME:
|
case CM_BESTTIME:
|
||||||
|
@ -539,7 +536,7 @@ void LoadCustomInfoFromScript(const char *filename)
|
||||||
int n;
|
int n;
|
||||||
if (scriptfile_getnumber(script, &n)) break;
|
if (scriptfile_getnumber(script, &n)) break;
|
||||||
|
|
||||||
mapList[curmap].designerTime = n;
|
curMap->designerTime = n;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case CM_PARTIME:
|
case CM_PARTIME:
|
||||||
|
@ -547,14 +544,14 @@ void LoadCustomInfoFromScript(const char *filename)
|
||||||
int n;
|
int n;
|
||||||
if (scriptfile_getnumber(script, &n)) break;
|
if (scriptfile_getnumber(script, &n)) break;
|
||||||
|
|
||||||
mapList[curmap].parTime = n;
|
curMap->parTime = n;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case CM_CDATRACK:
|
case CM_CDATRACK:
|
||||||
{
|
{
|
||||||
int n;
|
int n;
|
||||||
if (scriptfile_getnumber(script, &n)) break;
|
if (scriptfile_getnumber(script, &n)) break;
|
||||||
mapList[curmap].cdSongId = n;
|
curMap->cdSongId = n;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
@ -570,14 +567,15 @@ void LoadCustomInfoFromScript(const char *filename)
|
||||||
case CM_EPISODE:
|
case CM_EPISODE:
|
||||||
{
|
{
|
||||||
char *epnumptr;
|
char *epnumptr;
|
||||||
if (scriptfile_getnumber(script, &curmap)) break;
|
int curep;
|
||||||
|
if (scriptfile_getnumber(script, &curep)) break;
|
||||||
epnumptr = script->ltextptr;
|
epnumptr = script->ltextptr;
|
||||||
if (scriptfile_getbraces(script, &braceend)) break;
|
if (scriptfile_getbraces(script, &braceend)) break;
|
||||||
|
|
||||||
if ((unsigned)--curmap >= 2u)
|
if ((unsigned)--curep >= 2u)
|
||||||
{
|
{
|
||||||
Printf("Error: episode number %d not in range 1-2 on line %s:%d\n",
|
Printf("Error: episode number %d not in range 1-2 on line %s:%d\n",
|
||||||
curmap, script->filename,
|
curep, script->filename,
|
||||||
scriptfile_getlinum(script,epnumptr));
|
scriptfile_getlinum(script,epnumptr));
|
||||||
script->textptr = braceend;
|
script->textptr = braceend;
|
||||||
break;
|
break;
|
||||||
|
@ -593,14 +591,14 @@ void LoadCustomInfoFromScript(const char *filename)
|
||||||
{
|
{
|
||||||
char *t;
|
char *t;
|
||||||
if (scriptfile_getstring(script, &t)) break;
|
if (scriptfile_getstring(script, &t)) break;
|
||||||
gVolumeNames[curmap] = t;
|
gVolumeNames[curep] = t;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case CM_SUBTITLE:
|
case CM_SUBTITLE:
|
||||||
{
|
{
|
||||||
char *t;
|
char *t;
|
||||||
if (scriptfile_getstring(script, &t)) break;
|
if (scriptfile_getstring(script, &t)) break;
|
||||||
gVolumeSubtitles[curmap] = t;
|
gVolumeSubtitles[curep] = t;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
@ -615,15 +613,16 @@ void LoadCustomInfoFromScript(const char *filename)
|
||||||
|
|
||||||
case CM_SKILL:
|
case CM_SKILL:
|
||||||
{
|
{
|
||||||
|
int curskill;
|
||||||
char *epnumptr;
|
char *epnumptr;
|
||||||
if (scriptfile_getnumber(script, &curmap)) break;
|
if (scriptfile_getnumber(script, &curskill)) break;
|
||||||
epnumptr = script->ltextptr;
|
epnumptr = script->ltextptr;
|
||||||
if (scriptfile_getbraces(script, &braceend)) break;
|
if (scriptfile_getbraces(script, &braceend)) break;
|
||||||
|
|
||||||
if ((unsigned)--curmap >= 4u)
|
if ((unsigned)--curskill >= 4u)
|
||||||
{
|
{
|
||||||
Printf("Error: skill number %d not in range 1-4 on line %s:%d\n",
|
Printf("Error: skill number %d not in range 1-4 on line %s:%d\n",
|
||||||
curmap, script->filename,
|
curskill, script->filename,
|
||||||
scriptfile_getlinum(script,epnumptr));
|
scriptfile_getlinum(script,epnumptr));
|
||||||
script->textptr = braceend;
|
script->textptr = braceend;
|
||||||
break;
|
break;
|
||||||
|
@ -640,7 +639,7 @@ void LoadCustomInfoFromScript(const char *filename)
|
||||||
char *t;
|
char *t;
|
||||||
if (scriptfile_getstring(script, &t)) break;
|
if (scriptfile_getstring(script, &t)) break;
|
||||||
|
|
||||||
gSkillNames[curmap] = t;
|
gSkillNames[curskill] = t;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
@ -841,13 +840,14 @@ void LoadCustomInfoFromScript(const char *filename)
|
||||||
char *epnumptr;
|
char *epnumptr;
|
||||||
char *name = NULL;
|
char *name = NULL;
|
||||||
int trak = -1;
|
int trak = -1;
|
||||||
|
int curtheme;
|
||||||
|
|
||||||
if (scriptfile_getnumber(script, &curmap)) break; epnumptr = script->ltextptr;
|
if (scriptfile_getnumber(script, &curtheme)) break; epnumptr = script->ltextptr;
|
||||||
if (scriptfile_getbraces(script, &braceend)) break;
|
if (scriptfile_getbraces(script, &braceend)) break;
|
||||||
if ((unsigned)--curmap >= 6u)
|
if ((unsigned)--curtheme >= 6u)
|
||||||
{
|
{
|
||||||
Printf("Error: theme number %d not in range 1-6 on line %s:%d\n",
|
Printf("Error: theme number %d not in range 1-6 on line %s:%d\n",
|
||||||
curmap, script->filename,
|
curtheme, script->filename,
|
||||||
scriptfile_getlinum(script,epnumptr));
|
scriptfile_getlinum(script,epnumptr));
|
||||||
script->textptr = braceend;
|
script->textptr = braceend;
|
||||||
break;
|
break;
|
||||||
|
@ -873,11 +873,11 @@ void LoadCustomInfoFromScript(const char *filename)
|
||||||
}
|
}
|
||||||
if (name)
|
if (name)
|
||||||
{
|
{
|
||||||
ThemeSongs[curmap] = name;
|
ThemeSongs[curtheme] = name;
|
||||||
}
|
}
|
||||||
if (trak >= 2)
|
if (trak >= 2)
|
||||||
{
|
{
|
||||||
ThemeTrack[curmap] = trak;
|
ThemeTrack[curtheme] = trak;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1902,17 +1902,14 @@ OperateSprite(short SpriteNum, short player_is_operating)
|
||||||
|
|
||||||
case TAG_LEVEL_EXIT_SWITCH:
|
case TAG_LEVEL_EXIT_SWITCH:
|
||||||
{
|
{
|
||||||
extern short Level;
|
|
||||||
extern SWBOOL ExitLevel, FinishedLevel;
|
|
||||||
|
|
||||||
AnimateSwitch(sp, -1);
|
AnimateSwitch(sp, -1);
|
||||||
|
|
||||||
PlaySound(DIGI_BIGSWITCH, sp, v3df_none);
|
PlaySound(DIGI_BIGSWITCH, sp, v3df_none);
|
||||||
|
|
||||||
if (sp->hitag)
|
if (sp->hitag)
|
||||||
Level = sp->hitag;
|
NextLevel = FindMapByLevelNum(sp->hitag);
|
||||||
else
|
else
|
||||||
Level++;
|
NextLevel = FindMapByLevelNum(currentLevel->levelNumber + 1);
|
||||||
ExitLevel = TRUE;
|
ExitLevel = TRUE;
|
||||||
FinishedLevel = TRUE;
|
FinishedLevel = TRUE;
|
||||||
|
|
||||||
|
@ -2112,13 +2109,10 @@ OperateTripTrigger(PLAYERp pp)
|
||||||
// same tag for sector as for switch
|
// same tag for sector as for switch
|
||||||
case TAG_LEVEL_EXIT_SWITCH:
|
case TAG_LEVEL_EXIT_SWITCH:
|
||||||
{
|
{
|
||||||
extern short Level;
|
|
||||||
extern SWBOOL ExitLevel, FinishedLevel;
|
|
||||||
|
|
||||||
if (sectp->hitag)
|
if (sectp->hitag)
|
||||||
Level = sectp->hitag;
|
NextLevel = FindMapByLevelNum(sectp->hitag);
|
||||||
else
|
else
|
||||||
Level++;
|
NextLevel = FindMapByLevelNum(currentLevel->levelNumber + 1);
|
||||||
ExitLevel = TRUE;
|
ExitLevel = TRUE;
|
||||||
FinishedLevel = TRUE;
|
FinishedLevel = TRUE;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -24,7 +24,6 @@ Prepared for public release: 03/28/2005 - Charlie Wiederhold, 3D Realms
|
||||||
*/
|
*/
|
||||||
//-------------------------------------------------------------------------
|
//-------------------------------------------------------------------------
|
||||||
#include "mytypes.h"
|
#include "mytypes.h"
|
||||||
#include "gamedefs.h"
|
|
||||||
// Only ad to the end. These currently have to be in this order because of the
|
// Only ad to the end. These currently have to be in this order because of the
|
||||||
// way they are initilized.
|
// way they are initilized.
|
||||||
BEGIN_SW_NS
|
BEGIN_SW_NS
|
||||||
|
@ -33,7 +32,6 @@ typedef struct
|
||||||
{
|
{
|
||||||
// Net Options from Menus
|
// Net Options from Menus
|
||||||
uint8_t NetGameType; // 0=DeathMatch [spawn], 1=Cooperative 2=DeathMatch [no spawn]
|
uint8_t NetGameType; // 0=DeathMatch [spawn], 1=Cooperative 2=DeathMatch [no spawn]
|
||||||
uint8_t NetLevel; // 1-28
|
|
||||||
uint8_t NetMonsters; // Cycle skill levels
|
uint8_t NetMonsters; // Cycle skill levels
|
||||||
SWBOOL NetHurtTeammate; // Allow friendly kills
|
SWBOOL NetHurtTeammate; // Allow friendly kills
|
||||||
SWBOOL NetSpawnMarkers; // Respawn markers on/off
|
SWBOOL NetSpawnMarkers; // Respawn markers on/off
|
||||||
|
|
|
@ -30,7 +30,6 @@ Prepared for public release: 03/28/2005 - Charlie Wiederhold, 3D Realms
|
||||||
|
|
||||||
#include "names2.h"
|
#include "names2.h"
|
||||||
#include "mytypes.h"
|
#include "mytypes.h"
|
||||||
#include "gamedefs.h"
|
|
||||||
|
|
||||||
#include "panel.h"
|
#include "panel.h"
|
||||||
#include "game.h"
|
#include "game.h"
|
||||||
|
@ -934,8 +933,6 @@ int PlayerYellVocs[] =
|
||||||
//
|
//
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
|
|
||||||
extern short Level;
|
|
||||||
|
|
||||||
SWBOOL PlaySong(const char* mapname, const char* song_file_name, int cdaudio_track, bool isThemeTrack) //(nullptr, nullptr, -1, false) starts the normal level music.
|
SWBOOL PlaySong(const char* mapname, const char* song_file_name, int cdaudio_track, bool isThemeTrack) //(nullptr, nullptr, -1, false) starts the normal level music.
|
||||||
{
|
{
|
||||||
// Play CD audio if enabled.
|
// Play CD audio if enabled.
|
||||||
|
|
|
@ -1108,9 +1108,9 @@ ActorTestSpawn(SPRITEp sp)
|
||||||
sp->picnum == PRUNEGIRL_R0 ||
|
sp->picnum == PRUNEGIRL_R0 ||
|
||||||
sp->picnum == SAILORGIRL_R0) && (g_gameType & GAMEFLAG_ADDON)) return TRUE;
|
sp->picnum == SAILORGIRL_R0) && (g_gameType & GAMEFLAG_ADDON)) return TRUE;
|
||||||
|
|
||||||
// spawn Bouncing Betty (mine) in TD Level 09 Warehouse
|
// spawn Bouncing Betty (mine) in TD map 09 Warehouse
|
||||||
#if 0 // needs to be done smarter.
|
#if 0 // needs to be done smarter.
|
||||||
if (sp->picnum == 817 && swGetAddon() == 2 && Level == 9)
|
if (sp->picnum == 817 && swGetAddon() == 2 && currentLevel->levelNumber == 9)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -824,17 +824,17 @@ BossHealthMeter(void)
|
||||||
|
|
||||||
if (NoMeters) return;
|
if (NoMeters) return;
|
||||||
|
|
||||||
if (Level != 20 && Level != 4 && Level != 11 && Level != 5) return;
|
if (currentLevel->levelNumber != 20 && currentLevel->levelNumber != 4 && currentLevel->levelNumber != 11 && currentLevel->levelNumber != 5) return;
|
||||||
|
|
||||||
// Don't draw bar for other players
|
// Don't draw bar for other players
|
||||||
if (pp != Player+myconnectindex)
|
if (pp != Player+myconnectindex)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// all enemys
|
// all enemys
|
||||||
if ((Level == 20 && (BossSpriteNum[0] == -1 || BossSpriteNum[1] == -1 || BossSpriteNum[2] == -1)) ||
|
if ((currentLevel->levelNumber == 20 && (BossSpriteNum[0] == -1 || BossSpriteNum[1] == -1 || BossSpriteNum[2] == -1)) ||
|
||||||
(Level == 4 && BossSpriteNum[0] == -1) ||
|
(currentLevel->levelNumber == 4 && BossSpriteNum[0] == -1) ||
|
||||||
(Level == 5 && BossSpriteNum[0] == -1) ||
|
(currentLevel->levelNumber == 5 && BossSpriteNum[0] == -1) ||
|
||||||
(Level == 11 && BossSpriteNum[1] == -1))
|
(currentLevel->levelNumber == 11 && BossSpriteNum[1] == -1))
|
||||||
{
|
{
|
||||||
TRAVERSE_SPRITE_STAT(headspritestat[STAT_ENEMY], i, nexti)
|
TRAVERSE_SPRITE_STAT(headspritestat[STAT_ENEMY], i, nexti)
|
||||||
{
|
{
|
||||||
|
@ -861,7 +861,7 @@ BossHealthMeter(void)
|
||||||
bosswasseen = serpwasseen|sumowasseen|zillawasseen;
|
bosswasseen = serpwasseen|sumowasseen|zillawasseen;
|
||||||
|
|
||||||
// Only show the meter when you can see the boss
|
// Only show the meter when you can see the boss
|
||||||
if ((Level == 20 && (!serpwasseen || !sumowasseen || !zillawasseen)) || !bosswasseen)
|
if ((currentLevel->levelNumber == 20 && (!serpwasseen || !sumowasseen || !zillawasseen)) || !bosswasseen)
|
||||||
{
|
{
|
||||||
for (i=0; i<3; i++)
|
for (i=0; i<3; i++)
|
||||||
{
|
{
|
||||||
|
@ -962,7 +962,7 @@ BossHealthMeter(void)
|
||||||
else
|
else
|
||||||
y = 30;
|
y = 30;
|
||||||
|
|
||||||
if (Level == 20 && numplayers >= 2)
|
if (currentLevel->levelNumber == 20 && numplayers >= 2)
|
||||||
{
|
{
|
||||||
if (u->ID == SUMO_RUN_R0 && sumowasseen) y += 10;
|
if (u->ID == SUMO_RUN_R0 && sumowasseen) y += 10;
|
||||||
else if (u->ID == ZILLA_RUN_R0 && zillawasseen) y += 20;
|
else if (u->ID == ZILLA_RUN_R0 && zillawasseen) y += 20;
|
||||||
|
|
|
@ -5336,7 +5336,7 @@ ActorHealth(short SpriteNum, short amt)
|
||||||
|
|
||||||
u->Health += amt;
|
u->Health += amt;
|
||||||
|
|
||||||
if (u->ID == SERP_RUN_R0 && sp->pal != 16 && Level == 4)
|
if (u->ID == SERP_RUN_R0 && sp->pal != 16 && currentLevel->levelNumber == 4)
|
||||||
{
|
{
|
||||||
if (u->Health < u->MaxHealth/2)
|
if (u->Health < u->MaxHealth/2)
|
||||||
{
|
{
|
||||||
|
@ -5347,7 +5347,7 @@ ActorHealth(short SpriteNum, short amt)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (u->ID == SUMO_RUN_R0 && Level == 11)
|
if (u->ID == SUMO_RUN_R0 && currentLevel->levelNumber == 11)
|
||||||
{
|
{
|
||||||
if (u->Health <= 0)
|
if (u->Health <= 0)
|
||||||
{
|
{
|
||||||
|
@ -5356,7 +5356,7 @@ ActorHealth(short SpriteNum, short amt)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (u->ID == ZILLA_RUN_R0 && Level == 20)
|
if (u->ID == ZILLA_RUN_R0 && currentLevel->levelNumber == 20)
|
||||||
{
|
{
|
||||||
if (u->Health <= 0)
|
if (u->Health <= 0)
|
||||||
//if (u->Health < u->MaxHealth)
|
//if (u->Health < u->MaxHealth)
|
||||||
|
|
Loading…
Reference in a new issue