SW: Some GRP/def infrastructure.

git-svn-id: https://svn.eduke32.com/eduke32@5217 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
hendricks266 2015-05-19 22:07:18 +00:00
parent 0fc284d5bf
commit 6b89b482b3
6 changed files with 88 additions and 28 deletions

View file

@ -3,6 +3,43 @@
#include "common_game.h" #include "common_game.h"
static const char *defaultgrpfilename = "sw.grp";
static const char *defaultdeffilename = "sw.def";
// g_grpNamePtr can ONLY point to a malloc'd block (length BMAX_PATH)
char *g_grpNamePtr = NULL;
void clearGrpNamePtr(void)
{
if (g_grpNamePtr != NULL)
Bfree(g_grpNamePtr);
// g_grpNamePtr assumed to be assigned to right after
}
const char *G_DefaultGrpFile(void)
{
return defaultgrpfilename;
}
const char *G_GrpFile(void)
{
if (g_grpNamePtr == NULL)
return G_DefaultGrpFile();
else
return g_grpNamePtr;
}
const char *G_DefaultDefFile(void)
{
return defaultdeffilename;
}
const char *G_DefFile(void)
{
if (g_defNamePtr == NULL)
return G_DefaultDefFile();
else
return g_defNamePtr;
}
#define NUMPSKYMULTIS 1 #define NUMPSKYMULTIS 1
EDUKE32_STATIC_ASSERT(NUMPSKYMULTIS <= MAXPSKYMULTIS); EDUKE32_STATIC_ASSERT(NUMPSKYMULTIS <= MAXPSKYMULTIS);
EDUKE32_STATIC_ASSERT(PSKYOFF_MAX <= MAXPSKYTILES); EDUKE32_STATIC_ASSERT(PSKYOFF_MAX <= MAXPSKYTILES);

View file

@ -132,6 +132,12 @@ extern "C" {
#define MACRO10 "ITTAIIIUUU!!!" #define MACRO10 "ITTAIIIUUU!!!"
extern char *g_grpNamePtr;
const char *G_DefaultGrpFile(void);
const char *G_GrpFile(void);
void clearGrpNamePtr(void);
void SW_InitMultiPsky(void); void SW_InitMultiPsky(void);

View file

@ -89,6 +89,7 @@ Things required to make savegames work:
#include "text.h" #include "text.h"
#include "music.h" #include "music.h"
#include "common.h"
#include "common_game.h" #include "common_game.h"
#include "crc32.h" #include "crc32.h"
@ -929,7 +930,6 @@ void COVERsetbrightness(int bright, unsigned char *pal)
static int firstnet = 0; // JBF static int firstnet = 0; // JBF
int nextvoxid = 0; // JBF int nextvoxid = 0; // JBF
static const char *deffile = "sw.def";
extern int startwin_run(void); extern int startwin_run(void);
@ -951,7 +951,7 @@ InitGame(int32_t argc, const char **argv)
exit(1); exit(1);
} }
//initgroupfile("sw.grp"); // JBF: moving this close to start of program to detect shareware //initgroupfile(G_GrpFile()); // JBF: moving this close to start of program to detect shareware
InitSetup(); InitSetup();
InitAutoNet(); InitAutoNet();
@ -1063,7 +1063,12 @@ InitGame(int32_t argc, const char **argv)
if (!SW_SHAREWARE) if (!SW_SHAREWARE)
LoadCustomInfoFromScript("swcustom.txt"); // Load user customisation information LoadCustomInfoFromScript("swcustom.txt"); // Load user customisation information
if (!loaddefinitionsfile(deffile)) buildputs("Definitions file loaded.\n"); if (!loaddefinitionsfile(G_DefFile())) buildputs("Definitions file loaded.\n");
for (i=0; i < g_defModulesNum; ++i)
Bfree(g_defModules[i]);
Bfree(g_defModules);
g_defModules = NULL;
DemoModeMenuInit = TRUE; DemoModeMenuInit = TRUE;
// precache as much stuff as you can // precache as much stuff as you can
@ -3446,7 +3451,6 @@ void CommandLineHelp(const char **argv)
#endif #endif
} }
char *grpfile = "sw.grp";
int32_t app_main(int32_t argc, const char **argv) int32_t app_main(int32_t argc, const char **argv)
{ {
int i; int i;
@ -3567,13 +3571,15 @@ int32_t app_main(int32_t argc, const char **argv)
} }
OSD_SetLogFile("sw.log"); OSD_SetLogFile("sw.log");
if (g_grpNamePtr == NULL)
{ {
char *newgrp; const char *cp = getenv("SWGRP");
newgrp = getenv("SWGRP"); if (cp)
if (newgrp)
{ {
grpfile = newgrp; clearGrpNamePtr();
buildprintf("Using alternative GRP file: %s\n", newgrp); g_grpNamePtr = dup_filename(cp);
initprintf("Using \"%s\" as main GRP file\n", g_grpNamePtr);
} }
} }
@ -3598,7 +3604,7 @@ int32_t app_main(int32_t argc, const char **argv)
} }
#endif #endif
initgroupfile(grpfile); initgroupfile(G_GrpFile());
if (!DetectShareware()) if (!DetectShareware())
{ {
if (SW_SHAREWARE) buildputs("Detected shareware GRP\n"); if (SW_SHAREWARE) buildputs("Detected shareware GRP\n");
@ -4088,10 +4094,12 @@ int32_t app_main(int32_t argc, const char **argv)
else if (Bstrncasecmp(arg, "h", 1) == 0 && !SW_SHAREWARE) else if (Bstrncasecmp(arg, "h", 1) == 0 && !SW_SHAREWARE)
{ {
if (strlen(arg) > 1) if (strlen(arg) > 1)
{ G_AddDef(arg+1);
deffile = (arg+1); }
buildprintf("Using DEF file %s.\n", arg+1); else if (Bstrncasecmp(arg, "mh", 1) == 0 && !SW_SHAREWARE)
} {
if (strlen(arg) > 1)
G_AddDefModule(arg+1);
} }
} }

View file

@ -36,6 +36,7 @@ Prepared for public release: 03/28/2005 - Charlie Wiederhold, 3D Realms
#include "tags.h" #include "tags.h"
#include "pal.h" #include "pal.h"
#include "common.h"
#include "common_game.h" #include "common_game.h"
#define M_RED 102 #define M_RED 102
@ -76,7 +77,6 @@ SWBOOL bSpinBobVoxels = TRUE; // Do twizzly stuff to voxels
SWBOOL bAutoSize = TRUE; // Autosizing on/off SWBOOL bAutoSize = TRUE; // Autosizing on/off
int nextvoxid = 0; int nextvoxid = 0;
char *defsfilename = "sw.def";
// Globals used to hold current sprite type being searched for. // Globals used to hold current sprite type being searched for.
short FindPicNum = 0; short FindPicNum = 0;
@ -607,7 +607,7 @@ ExtInit(void)
void InitPalette(void); void InitPalette(void);
int i, fil; int i, fil;
initgroupfile("sw.grp"); initgroupfile(G_GrpFile());
if ((fil = open("setup.dat", O_BINARY | O_RDWR, S_IREAD)) != -1) if ((fil = open("setup.dat", O_BINARY | O_RDWR, S_IREAD)) != -1)
{ {
read(fil, &option[0], NUMOPTIONS); read(fil, &option[0], NUMOPTIONS);
@ -655,7 +655,6 @@ int
ExtInit(void) ExtInit(void)
{ {
int rv = 0; int rv = 0;
char *swgrp = "sw.grp";
#ifndef BUILD_DEV_VER #ifndef BUILD_DEV_VER
char ch; char ch;
@ -729,12 +728,17 @@ ExtInit(void)
} }
} }
if (getenv("SWGRP")) if (g_grpNamePtr == NULL)
{ {
swgrp = getenv("SWGRP"); const char *cp = getenv("SWGRP");
buildprintf("Using %s as main GRP file\n", swgrp); if (cp)
{
clearGrpNamePtr();
g_grpNamePtr = dup_filename(cp);
initprintf("Using \"%s\" as main GRP file\n", g_grpNamePtr);
}
} }
initgroupfile(swgrp); initgroupfile(G_GrpFile());
/* /*
if ((fil = open("setup.dat", O_BINARY | O_RDWR, S_IREAD)) != -1) if ((fil = open("setup.dat", O_BINARY | O_RDWR, S_IREAD)) != -1)
{ {

View file

@ -21,9 +21,13 @@
#include "types.h" #include "types.h"
#include "build.h" #include "build.h"
#include "baselayer.h" #include "baselayer.h"
#include "grpscan.h" #include "grpscan.h"
#include "common.h"
#include "common_game.h"
#define TAB_CONFIG 0 #define TAB_CONFIG 0
#define TAB_GAME 1 #define TAB_GAME 1
#define TAB_MESSAGES 2 #define TAB_MESSAGES 2
@ -715,7 +719,6 @@ int startwin_idle(void *s)
} }
extern int32_t ScreenMode, ScreenWidth, ScreenHeight, ScreenBPP, ForceSetup, UseMouse, UseJoystick; extern int32_t ScreenMode, ScreenWidth, ScreenHeight, ScreenBPP, ForceSetup, UseMouse, UseJoystick;
extern char *grpfile; // game.c
int startwin_run(void) int startwin_run(void)
{ {
@ -733,7 +736,7 @@ int startwin_run(void)
settings.forcesetup = ForceSetup; settings.forcesetup = ForceSetup;
settings.usemouse = UseMouse; settings.usemouse = UseMouse;
settings.usejoy = UseJoystick; settings.usejoy = UseJoystick;
strncpy(settings.selectedgrp, grpfile, BMAX_PATH); Bstrncpyz(settings.selectedgrp, G_GrpFile(), BMAX_PATH);
PopulateForm(-1); PopulateForm(-1);
gtk_main(); gtk_main();
@ -748,7 +751,7 @@ int startwin_run(void)
ForceSetup = settings.forcesetup; ForceSetup = settings.forcesetup;
UseMouse = settings.usemouse; UseMouse = settings.usemouse;
UseJoystick = settings.usejoy; UseJoystick = settings.usejoy;
grpfile = settings.selectedgrp; g_grpNamePtr = dup_filename(settings.selectedgrp);
} }
return retval; return retval;

View file

@ -5,6 +5,9 @@
#include "build.h" #include "build.h"
#include "renderlayer.h" #include "renderlayer.h"
#include "common.h"
#include "common_game.h"
#include "gamedefs.h" #include "gamedefs.h"
#include "config.h" #include "config.h"
@ -600,8 +603,6 @@ int startwin_idle(void *v)
return 0; return 0;
} }
extern char *grpfile; // game.c
int startwin_run(void) int startwin_run(void)
{ {
MSG msg; MSG msg;
@ -624,7 +625,7 @@ int startwin_run(void)
settings.forcesetup = ForceSetup; settings.forcesetup = ForceSetup;
settings.usemouse = UseMouse; settings.usemouse = UseMouse;
settings.usejoy = UseJoystick; settings.usejoy = UseJoystick;
strncpy(settings.selectedgrp, grpfile, BMAX_PATH); Bstrncpyz(settings.selectedgrp, G_GrpFile(), BMAX_PATH);
PopulateForm(-1); PopulateForm(-1);
while (done < 0) while (done < 0)
@ -655,7 +656,8 @@ int startwin_run(void)
ForceSetup = settings.forcesetup; ForceSetup = settings.forcesetup;
UseMouse = settings.usemouse; UseMouse = settings.usemouse;
UseJoystick = settings.usejoy; UseJoystick = settings.usejoy;
grpfile = settings.selectedgrp; clearGrpNamePtr();
g_grpNamePtr = dup_filename(settings.selectedgrp);
} }
FreeGroups(); FreeGroups();