2015-05-19 21:54:34 +00:00
|
|
|
//-------------------------------------------------------------------------
|
|
|
|
/*
|
|
|
|
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
|
|
|
|
*/
|
|
|
|
//-------------------------------------------------------------------------
|
2019-10-09 16:09:05 +00:00
|
|
|
#include "ns.h"
|
2015-05-19 21:54:34 +00:00
|
|
|
#include "build.h"
|
|
|
|
|
|
|
|
#include "keys.h"
|
|
|
|
#include "names2.h"
|
|
|
|
#include "panel.h"
|
|
|
|
#include "game.h"
|
|
|
|
|
|
|
|
//#include "settings.h"
|
|
|
|
#include "mytypes.h"
|
|
|
|
#include "scriplib.h"
|
|
|
|
#include "fx_man.h"
|
|
|
|
#include "gamedefs.h"
|
|
|
|
#include "common_game.h"
|
|
|
|
#include "config.h"
|
|
|
|
#include "function.h"
|
|
|
|
|
|
|
|
#include "rts.h"
|
|
|
|
|
2019-10-09 16:09:05 +00:00
|
|
|
BEGIN_SW_NS
|
|
|
|
|
2015-05-19 21:54:34 +00:00
|
|
|
short GamePlays = 0;
|
|
|
|
|
|
|
|
/*
|
|
|
|
===================
|
|
|
|
=
|
|
|
|
= SetGameDefaults
|
|
|
|
=
|
|
|
|
===================
|
|
|
|
*/
|
|
|
|
|
|
|
|
void SetGameDefaults(void)
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
2015-05-19 21:58:29 +00:00
|
|
|
extern SWBOOL DrawScreen;
|
2015-05-19 21:54:34 +00:00
|
|
|
|
|
|
|
void EncodePassword(char *pw)
|
|
|
|
{
|
|
|
|
int bak_DrawScreen = DrawScreen;
|
|
|
|
int bak_randomseed = randomseed;
|
|
|
|
int i;
|
|
|
|
int len;
|
|
|
|
|
|
|
|
DrawScreen = FALSE;
|
|
|
|
randomseed = 1234L;
|
|
|
|
|
|
|
|
Bstrupr(pw);
|
|
|
|
|
|
|
|
len = strlen(pw);
|
|
|
|
for (i = 0; i < len; i++)
|
|
|
|
pw[i] += RANDOM_RANGE(26);
|
|
|
|
|
|
|
|
randomseed = bak_randomseed;
|
|
|
|
DrawScreen = bak_DrawScreen;
|
|
|
|
}
|
|
|
|
|
|
|
|
void DecodePassword(char *pw)
|
|
|
|
{
|
|
|
|
int bak_DrawScreen = DrawScreen;
|
|
|
|
int bak_randomseed = randomseed;
|
|
|
|
int i;
|
|
|
|
int len;
|
|
|
|
|
|
|
|
DrawScreen = FALSE;
|
|
|
|
randomseed = 1234L;
|
|
|
|
|
|
|
|
Bstrupr(pw);
|
|
|
|
|
|
|
|
len = strlen(pw);
|
|
|
|
for (i = 0; i < len; i++)
|
|
|
|
pw[i] -= RANDOM_RANGE(26);
|
|
|
|
|
|
|
|
randomseed = bak_randomseed;
|
|
|
|
DrawScreen = bak_DrawScreen;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
===================
|
|
|
|
=
|
|
|
|
= ReadGameSetup
|
|
|
|
=
|
|
|
|
===================
|
|
|
|
*/
|
|
|
|
|
2015-05-19 21:58:29 +00:00
|
|
|
void ReadGameSetup(int32_t scripthandle)
|
2015-05-19 21:54:34 +00:00
|
|
|
{
|
|
|
|
int dummy;
|
|
|
|
int ret;
|
|
|
|
extern char WangBangMacro[10][64];
|
|
|
|
|
|
|
|
for (dummy = 0; dummy < 10; dummy++)
|
|
|
|
{
|
|
|
|
sprintf(ds,"CommbatMacro#%d",dummy);
|
|
|
|
SCRIPT_GetString(scripthandle, "Comm Setup",ds,WangBangMacro[dummy]);
|
|
|
|
}
|
|
|
|
|
|
|
|
SCRIPT_GetString(scripthandle, "Options","Rooster",gs.Password);
|
|
|
|
DecodePassword(gs.Password);
|
|
|
|
|
|
|
|
// option stuff
|
|
|
|
dummy = -1;
|
|
|
|
ret = SCRIPT_GetNumber(scripthandle, "Options", "BorderNum",&dummy);
|
|
|
|
if (dummy != -1) gs.BorderNum = dummy;
|
|
|
|
|
|
|
|
dummy = -1;
|
|
|
|
SCRIPT_GetNumber(scripthandle, "Options", "Brightness",&dummy);
|
|
|
|
if (dummy != -1) gs.Brightness = dummy;
|
|
|
|
|
|
|
|
dummy = -1;
|
|
|
|
SCRIPT_GetNumber(scripthandle, "Options", "BorderTile",&dummy);
|
|
|
|
if (dummy != -1) gs.BorderTile = dummy;
|
|
|
|
|
|
|
|
dummy = -1;
|
|
|
|
SCRIPT_GetNumber(scripthandle, "Options", "Bobbing",&dummy);
|
|
|
|
if (dummy != -1) gs.Bobbing = dummy;
|
|
|
|
|
|
|
|
dummy = -1;
|
|
|
|
SCRIPT_GetNumber(scripthandle, "Options", "Tilting",&dummy);
|
|
|
|
if (dummy != -1) gs.Tilting = dummy;
|
|
|
|
|
|
|
|
dummy = -1;
|
|
|
|
SCRIPT_GetNumber(scripthandle, "Options", "Shadows",&dummy);
|
|
|
|
if (dummy != -1) gs.Shadows = dummy;
|
|
|
|
|
|
|
|
dummy = -1;
|
|
|
|
SCRIPT_GetNumber(scripthandle, "Options", "AutoRun",&dummy);
|
|
|
|
if (dummy != -1) gs.AutoRun = dummy;
|
|
|
|
|
|
|
|
dummy = -1;
|
|
|
|
SCRIPT_GetNumber(scripthandle, "Options", "Crosshair",&dummy);
|
|
|
|
if (dummy != -1) gs.Crosshair = dummy;
|
|
|
|
|
|
|
|
dummy = -1;
|
|
|
|
SCRIPT_GetNumber(scripthandle, "Options", "AutoAim",&dummy);
|
2019-10-21 22:05:21 +00:00
|
|
|
if (dummy != -1) cl_autoaim = dummy;
|
2015-05-19 21:54:34 +00:00
|
|
|
|
|
|
|
dummy = -1;
|
|
|
|
SCRIPT_GetNumber(scripthandle, "Options", "Messages",&dummy);
|
|
|
|
if (dummy != -1) gs.Messages = dummy;
|
|
|
|
|
|
|
|
dummy = -1;
|
|
|
|
SCRIPT_GetNumber(scripthandle, "Options", "Talking",&dummy);
|
2019-10-22 00:01:05 +00:00
|
|
|
if (dummy != -1) snd_speech = dummy;
|
2015-05-19 21:54:34 +00:00
|
|
|
|
|
|
|
dummy = -1;
|
|
|
|
SCRIPT_GetNumber(scripthandle, "Options", "Ambient",&dummy);
|
2019-10-22 00:01:05 +00:00
|
|
|
if (dummy != -1) snd_ambience = dummy;
|
2015-05-19 21:54:34 +00:00
|
|
|
|
|
|
|
dummy = -1;
|
|
|
|
SCRIPT_GetNumber(scripthandle, "Options", "FxOn",&dummy);
|
2019-10-22 00:01:05 +00:00
|
|
|
if (dummy != -1) snd_enabled = dummy;
|
2015-05-19 21:54:34 +00:00
|
|
|
|
|
|
|
dummy = -1;
|
|
|
|
SCRIPT_GetNumber(scripthandle, "Options", "MusicOn",&dummy);
|
2019-10-22 00:01:05 +00:00
|
|
|
if (dummy != -1) mus_enabled = dummy;
|
2015-05-19 21:54:34 +00:00
|
|
|
|
|
|
|
dummy = -1;
|
|
|
|
SCRIPT_GetNumber(scripthandle, "Controls", "MouseAiming",&dummy);
|
|
|
|
if (dummy != -1) gs.MouseAimingType = dummy;
|
|
|
|
|
|
|
|
dummy = -1;
|
|
|
|
SCRIPT_GetNumber(scripthandle, "Options", "NetGameType",&dummy);
|
|
|
|
if (dummy != -1) gs.NetGameType = dummy;
|
|
|
|
|
|
|
|
dummy = -1;
|
|
|
|
SCRIPT_GetNumber(scripthandle, "Options", "NetLevel",&dummy);
|
|
|
|
if (dummy != -1) gs.NetLevel = dummy;
|
|
|
|
|
|
|
|
dummy = -1;
|
|
|
|
SCRIPT_GetNumber(scripthandle, "Options", "NetMonsters",&dummy);
|
|
|
|
if (dummy != -1) gs.NetMonsters = dummy;
|
|
|
|
|
|
|
|
dummy = -1;
|
|
|
|
SCRIPT_GetNumber(scripthandle, "Options", "NetHurtTeammate",&dummy);
|
|
|
|
if (dummy != -1) gs.NetHurtTeammate = dummy;
|
|
|
|
|
|
|
|
dummy = -1;
|
|
|
|
SCRIPT_GetNumber(scripthandle, "Options", "NetSpawnMarkers",&dummy);
|
|
|
|
if (dummy != -1) gs.NetSpawnMarkers = dummy;
|
|
|
|
|
|
|
|
dummy = -1;
|
|
|
|
SCRIPT_GetNumber(scripthandle, "Options", "NetTeamPlay",&dummy);
|
|
|
|
if (dummy != -1) gs.NetTeamPlay = dummy;
|
|
|
|
|
|
|
|
dummy = -1;
|
|
|
|
SCRIPT_GetNumber(scripthandle, "Options", "NetKillLimit",&dummy);
|
|
|
|
if (dummy != -1) gs.NetKillLimit = dummy;
|
|
|
|
|
|
|
|
dummy = -1;
|
|
|
|
SCRIPT_GetNumber(scripthandle, "Options", "NetTimeLimit",&dummy);
|
|
|
|
if (dummy != -1) gs.NetTimeLimit = dummy;
|
|
|
|
|
|
|
|
dummy = -1;
|
|
|
|
SCRIPT_GetNumber(scripthandle, "Options", "NetColor",&dummy);
|
|
|
|
if (dummy != -1) gs.NetColor = dummy;
|
|
|
|
|
|
|
|
dummy = -1;
|
|
|
|
SCRIPT_GetNumber(scripthandle, "Options", "Voxels",&dummy);
|
|
|
|
if (dummy != -1) gs.Voxels = dummy;
|
|
|
|
|
|
|
|
dummy = -1;
|
|
|
|
SCRIPT_GetNumber(scripthandle, "Options", "Stats",&dummy);
|
|
|
|
if (dummy != -1) gs.Stats = dummy;
|
|
|
|
|
|
|
|
dummy = -1;
|
|
|
|
SCRIPT_GetNumber(scripthandle, "Options", "MouseAimingOn",&dummy);
|
|
|
|
if (dummy != -1) gs.MouseAimingOn = dummy;
|
|
|
|
|
|
|
|
dummy = -1;
|
|
|
|
SCRIPT_GetNumber(scripthandle, "Options", "MouseInvert",&dummy);
|
|
|
|
if (dummy != -1) gs.MouseInvert = dummy;
|
|
|
|
|
|
|
|
dummy = -1;
|
|
|
|
SCRIPT_GetNumber(scripthandle, "Options", "Kiwi",&dummy);
|
|
|
|
if (dummy != -1) gs.ParentalLock = dummy;
|
|
|
|
|
|
|
|
dummy = -1;
|
|
|
|
SCRIPT_GetNumber(scripthandle, "Options", "PlayCD",&dummy);
|
|
|
|
if (dummy != -1) gs.PlayCD = dummy;
|
|
|
|
|
|
|
|
dummy = -1;
|
|
|
|
SCRIPT_GetNumber(scripthandle, "Options", "CDDevice",&dummy);
|
|
|
|
if (dummy < 0) dummy = -1;
|
|
|
|
|
|
|
|
if (SW_SHAREWARE)
|
|
|
|
{
|
|
|
|
dummy = -1;
|
|
|
|
SCRIPT_GetNumber(scripthandle, "Options", "Chickens",&dummy);
|
|
|
|
if (dummy != -1) GamePlays = dummy;
|
|
|
|
|
|
|
|
buildprintf(
|
|
|
|
"\n"
|
|
|
|
"You have played Shadow Warrior %d times. Please call and order the full\n"
|
|
|
|
"version at 1(800)-3DREALMS or see the ORDER.FRM file.\n\n"
|
|
|
|
,GamePlays);
|
|
|
|
|
|
|
|
GamePlays++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
===================
|
|
|
|
=
|
|
|
|
= WriteGameSetup
|
|
|
|
=
|
|
|
|
===================
|
|
|
|
*/
|
|
|
|
|
2015-05-19 21:58:29 +00:00
|
|
|
void WriteGameSetup(int32_t scripthandle)
|
2015-05-19 21:54:34 +00:00
|
|
|
{
|
|
|
|
int dummy;
|
|
|
|
|
|
|
|
dummy = gs.BorderNum;
|
|
|
|
SCRIPT_PutNumber(scripthandle, "Options", "BorderNum",dummy,FALSE,FALSE);
|
|
|
|
dummy = gs.Brightness;
|
|
|
|
SCRIPT_PutNumber(scripthandle, "Options", "Brightness",dummy,FALSE,FALSE);
|
|
|
|
dummy = gs.BorderTile;
|
|
|
|
SCRIPT_PutNumber(scripthandle, "Options", "BorderTile",dummy,FALSE,FALSE);
|
|
|
|
dummy = gs.Bobbing;
|
|
|
|
SCRIPT_PutNumber(scripthandle, "Options", "Bobbing",dummy,FALSE,FALSE);
|
|
|
|
dummy = gs.Tilting;
|
|
|
|
SCRIPT_PutNumber(scripthandle, "Options", "Tilting",dummy,FALSE,FALSE);
|
|
|
|
dummy = gs.Shadows;
|
|
|
|
SCRIPT_PutNumber(scripthandle, "Options", "Shadows",dummy,FALSE,FALSE);
|
|
|
|
dummy = gs.AutoRun;
|
|
|
|
SCRIPT_PutNumber(scripthandle, "Options", "AutoRun",dummy,FALSE,FALSE);
|
|
|
|
dummy = gs.Crosshair;
|
|
|
|
SCRIPT_PutNumber(scripthandle, "Options", "Crosshair",dummy,FALSE,FALSE);
|
2019-10-21 22:05:21 +00:00
|
|
|
dummy = cl_autoaim;
|
2015-05-19 21:54:34 +00:00
|
|
|
SCRIPT_PutNumber(scripthandle, "Options", "AutoAim",dummy,FALSE,FALSE);
|
|
|
|
dummy = gs.Messages;
|
|
|
|
SCRIPT_PutNumber(scripthandle, "Options", "Messages",dummy,FALSE,FALSE);
|
2019-10-22 00:01:05 +00:00
|
|
|
dummy = snd_speech;
|
2015-05-19 21:54:34 +00:00
|
|
|
SCRIPT_PutNumber(scripthandle, "Options", "Talking",dummy,FALSE,FALSE);
|
2019-10-22 00:01:05 +00:00
|
|
|
dummy = snd_ambience;
|
2015-05-19 21:54:34 +00:00
|
|
|
SCRIPT_PutNumber(scripthandle, "Options", "Ambient",dummy,FALSE,FALSE);
|
2019-10-22 00:01:05 +00:00
|
|
|
dummy = snd_enabled;
|
2015-05-19 21:54:34 +00:00
|
|
|
SCRIPT_PutNumber(scripthandle, "Options", "FxOn",dummy,FALSE,FALSE);
|
|
|
|
dummy = gs.MouseAimingType;
|
|
|
|
SCRIPT_PutNumber(scripthandle, "Controls", "MouseAiming",dummy,FALSE,FALSE);
|
|
|
|
|
2019-10-22 00:01:05 +00:00
|
|
|
dummy = mus_enabled;
|
2015-05-19 21:54:34 +00:00
|
|
|
SCRIPT_PutNumber(scripthandle, "Options", "MusicOn",dummy,FALSE,FALSE);
|
|
|
|
|
|
|
|
dummy = gs.NetGameType;
|
|
|
|
SCRIPT_PutNumber(scripthandle, "Options", "NetGameType",dummy,FALSE,FALSE);
|
|
|
|
dummy = gs.NetLevel;
|
|
|
|
SCRIPT_PutNumber(scripthandle, "Options", "NetLevel",dummy,FALSE,FALSE);
|
|
|
|
dummy = gs.NetMonsters;
|
|
|
|
SCRIPT_PutNumber(scripthandle, "Options", "NetMonsters",dummy,FALSE,FALSE);
|
|
|
|
dummy = gs.NetHurtTeammate;
|
|
|
|
SCRIPT_PutNumber(scripthandle, "Options", "NetHurtTeammate",dummy,FALSE,FALSE);
|
|
|
|
dummy = gs.NetSpawnMarkers;
|
|
|
|
SCRIPT_PutNumber(scripthandle, "Options", "NetSpawnMarkers",dummy,FALSE,FALSE);
|
|
|
|
dummy = gs.NetTeamPlay;
|
|
|
|
SCRIPT_PutNumber(scripthandle, "Options", "NetTeamPlay",dummy,FALSE,FALSE);
|
|
|
|
dummy = gs.NetKillLimit;
|
|
|
|
SCRIPT_PutNumber(scripthandle, "Options", "NetKillLimit",dummy,FALSE,FALSE);
|
|
|
|
dummy = gs.NetTimeLimit;
|
|
|
|
SCRIPT_PutNumber(scripthandle, "Options", "NetTimeLimit",dummy,FALSE,FALSE);
|
|
|
|
dummy = gs.NetColor;
|
|
|
|
SCRIPT_PutNumber(scripthandle, "Options", "NetColor",dummy,FALSE,FALSE);
|
|
|
|
dummy = gs.Voxels;
|
|
|
|
SCRIPT_PutNumber(scripthandle, "Options", "Voxels",dummy,FALSE,FALSE);
|
|
|
|
dummy = gs.MouseAimingOn;
|
|
|
|
SCRIPT_PutNumber(scripthandle, "Options", "MouseAimingOn",dummy,FALSE,FALSE);
|
|
|
|
dummy = gs.MouseInvert;
|
|
|
|
SCRIPT_PutNumber(scripthandle, "Options", "MouseInvert",dummy,FALSE,FALSE);
|
|
|
|
dummy = gs.Stats;
|
|
|
|
SCRIPT_PutNumber(scripthandle, "Options", "Stats",dummy,FALSE,FALSE);
|
|
|
|
|
|
|
|
EncodePassword(gs.Password);
|
|
|
|
SCRIPT_PutString(scripthandle, "Options","Rooster",gs.Password);
|
|
|
|
DecodePassword(gs.Password);
|
|
|
|
|
|
|
|
dummy = gs.ParentalLock;
|
|
|
|
SCRIPT_PutNumber(scripthandle, "Options", "Kiwi",dummy,FALSE,FALSE);
|
|
|
|
|
|
|
|
dummy = gs.PlayCD;
|
|
|
|
SCRIPT_PutNumber(scripthandle, "Options", "PlayCD",dummy,FALSE,FALSE);
|
|
|
|
SCRIPT_PutNumber(scripthandle, "Options", "CDDevice",0,FALSE,FALSE);
|
|
|
|
|
|
|
|
if (SW_SHAREWARE)
|
|
|
|
{
|
|
|
|
dummy = GamePlays;
|
|
|
|
SCRIPT_PutNumber(scripthandle, "Options", "Chickens",dummy,FALSE,FALSE);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void TermSetup(void)
|
|
|
|
{
|
2015-05-19 21:58:29 +00:00
|
|
|
extern SWBOOL BotMode;
|
2015-05-19 21:54:34 +00:00
|
|
|
CONFIG_WriteSetup();
|
|
|
|
}
|
2019-10-09 16:09:05 +00:00
|
|
|
END_SW_NS
|