/* $Id: args.c,v 1.1.1.1 2006/03/17 19:58:51 zicodxx Exp $ */ /* THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS IN USING, DISPLAYING, AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE FREE PURPOSES. IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES. THE END-USER UNDERSTANDS AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE. COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. */ /* * * Functions for accessing arguments. * */ #ifdef HAVE_CONFIG_H #include #endif #ifdef RCS static char rcsid[] = "$Id: args.c,v 1.1.1.1 2006/03/17 19:58:51 zicodxx Exp $"; #endif #include #include #include "physfsx.h" #include "args.h" #include "u_mem.h" #include "strio.h" #include "strutil.h" #include "digi.h" #include "gauges.h" #ifdef OGL #if defined(__APPLE__) && defined(__MACH__) #include #else #include #endif #endif #define MAX_ARGS 1000 int Num_args=0; char * Args[MAX_ARGS]; struct Arg GameArg; int FindArg(char *s) { int i; #ifndef NDEBUG printf("FindArg: %s\n",s); #endif for (i=0; i 0 && endptr && endptr[0] == 'x') { h = strtol(endptr + 1, &endptr, 10); if (h > 0 && endptr[0] == '\0') { *sw = w; *sh = h; return i; } } } return 0; } void AppendIniArgs(void) { PHYSFS_file *f; char *line,*word; f = PHYSFSX_openReadBuffered("d2x.ini"); if(f) { while(!PHYSFS_eof(f) && Num_args < MAX_ARGS) { line=fgets_unlimited(f); word=splitword(line,' '); Args[Num_args++] = d_strdup(word); if(line) Args[Num_args++] = d_strdup(line); d_free(line); d_free(word); } PHYSFS_close(f); } } // All FindArg calls should be here to keep the code clean void ReadCmdArgs(void) { int t = 0, x = 0, y = 0; // System Options if (FindArg( "-help" ) || FindArg( "-h" ) || FindArg( "-?" ) || FindArg( "?" )) GameArg.SysShowCmdHelp = 1; else GameArg.SysShowCmdHelp = 0; if (FindArg("-fps")) GameArg.SysFPSIndicator = 1; else GameArg.SysFPSIndicator = 0; if (FindArg("-nicefps")) GameArg.SysUseNiceFPS = 1; else GameArg.SysUseNiceFPS = 0; if ((t = FindArg("-maxfps"))) { t=atoi(Args[t+1]); if (t>0&&t<=80) GameArg.SysMaxFPS=t; else GameArg.SysMaxFPS=80; } else GameArg.SysMaxFPS=80; if ((t=FindArg("-hogdir"))) GameArg.SysHogDir = Args[t+1]; else { GameArg.SysHogDir = NULL; if (FindArg("-nohogdir")) GameArg.SysNoHogDir = 1; else GameArg.SysNoHogDir = 0; } if ((t = FindArg("-userdir"))) GameArg.SysUserDir = Args[t+1]; else GameArg.SysUserDir = NULL; if (FindArg("-use_players_dir")) GameArg.SysUsePlayersDir = 1; else GameArg.SysUsePlayersDir = 0; if (FindArg("-lowmem")) GameArg.SysLowMem = 1; else GameArg.SysLowMem = 0; if (FindArg("-legacyhomers")) GameArg.SysLegacyHomers = 1; else GameArg.SysLegacyHomers = 0; if ((t = FindArg( "-pilot" ))) GameArg.SysPilot = Args[t+1]; else GameArg.SysPilot = NULL; if (FindArg("-autodemo")) GameArg.SysAutoDemo = 1; else GameArg.SysAutoDemo = 0; if (FindArg("-window")) GameArg.SysWindow = 1; else GameArg.SysWindow = 0; if (FindArg("-nomovies")) GameArg.SysNoMovies = 1; else GameArg.SysNoMovies = 0; // Control Options if (FindArg("-nomouse")) GameArg.CtlNoMouse = 1; else GameArg.CtlNoMouse = 0; if (FindArg("-nojoystick")) GameArg.CtlNoJoystick = 1; else GameArg.CtlNoJoystick = 0; if (FindArg("-mouselook")) GameArg.CtlMouselook = 1; else GameArg.CtlMouselook = 0; if (FindArg("-grabmouse")) GameArg.CtlGrabMouse = 1; else GameArg.CtlGrabMouse = 0; // Sound Options if (FindArg("-nosound")) GameArg.SndNoSound = 1; else GameArg.SndNoSound = 0; if (FindArg("-nomusic")) GameArg.SndNoMusic = 1; else GameArg.SndNoMusic = 0; if (FindArg("-sound11k")) GameArg.SndDigiSampleRate = SAMPLE_RATE_11K; else GameArg.SndDigiSampleRate = SAMPLE_RATE_22K; if (FindArg("-redbook")) GameArg.SndEnableRedbook = 1; else GameArg.SndEnableRedbook = 0; #ifdef USE_SDLMIXER GameArg.SndSdlMixer = FindArg("-sdlmixer"); GameArg.SndJukebox = (t = FindArg("-jukebox") ? Args[t+1] : NULL); GameArg.SndExternalMusic = (t = FindArg("-music_ext") ? Args[t+1] : NULL); #endif // Graphics Options if ((t=FindResArg("aspect", &y, &x))) { GameArg.GfxAspectY = y; GameArg.GfxAspectX = x; } else { GameArg.GfxAspectY = 4; GameArg.GfxAspectX = 3; } if ((t=FindArg("-hud"))){ t=atoi(Args[t+1]); if(t>=0 && t