raze/source/sw/src/swconfig.cpp

362 lines
10 KiB
C++
Raw Normal View History

//-------------------------------------------------------------------------
/*
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
*/
//-------------------------------------------------------------------------
#include "ns.h"
#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"
BEGIN_SW_NS
short GamePlays = 0;
/*
===================
=
= SetGameDefaults
=
===================
*/
void SetGameDefaults(void)
{
}
extern SWBOOL DrawScreen;
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
=
===================
*/
void ReadGameSetup(int32_t scripthandle)
{
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;
dummy = -1;
SCRIPT_GetNumber(scripthandle, "Options", "Messages",&dummy);
if (dummy != -1) gs.Messages = dummy;
dummy = -1;
SCRIPT_GetNumber(scripthandle, "Options", "Talking",&dummy);
if (dummy != -1) gs.Talking = dummy;
dummy = -1;
SCRIPT_GetNumber(scripthandle, "Options", "Ambient",&dummy);
if (dummy != -1) gs.Ambient = dummy;
dummy = -1;
SCRIPT_GetNumber(scripthandle, "Options", "FxOn",&dummy);
if (dummy != -1) gs.FxOn = dummy;
dummy = -1;
SCRIPT_GetNumber(scripthandle, "Options", "MusicOn",&dummy);
if (dummy != -1) gs.MusicOn = dummy;
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
=
===================
*/
void WriteGameSetup(int32_t scripthandle)
{
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;
SCRIPT_PutNumber(scripthandle, "Options", "AutoAim",dummy,FALSE,FALSE);
dummy = gs.Messages;
SCRIPT_PutNumber(scripthandle, "Options", "Messages",dummy,FALSE,FALSE);
dummy = gs.Talking;
SCRIPT_PutNumber(scripthandle, "Options", "Talking",dummy,FALSE,FALSE);
dummy = gs.Ambient;
SCRIPT_PutNumber(scripthandle, "Options", "Ambient",dummy,FALSE,FALSE);
dummy = gs.FxOn;
SCRIPT_PutNumber(scripthandle, "Options", "FxOn",dummy,FALSE,FALSE);
dummy = gs.MouseAimingType;
SCRIPT_PutNumber(scripthandle, "Controls", "MouseAiming",dummy,FALSE,FALSE);
dummy = gs.MusicOn;
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)
{
extern SWBOOL BotMode;
CONFIG_WriteSetup();
}
END_SW_NS