Added structure for values saved in PLR/PLX files; Added most common command-line options to options menu

This commit is contained in:
zicodxx 2008-04-13 00:28:36 +00:00
parent a62060bacf
commit 3a52d03d21
38 changed files with 609 additions and 612 deletions

View file

@ -1,5 +1,9 @@
D2X-Rebirth Changelog
20080413
--------
include/args.h, main/newmenu.c, main/collide.h, main/network.c, main/multi.c, main/multi.h, main/inferno.c, main/menu.c, main/menu.h, main/playsave.c, main/playsave.h, main/object.c, main/hud.c, main/weapon.c, main/newdemo.c, main/config.c, main/config.h, main/gamerend.c, main/gameseq.c, main/escort.c, main/escort.h, main/endlevel.c, main/powerup.c, main/powerup.h, main/automap.c, main/game.c, main/gauges.c, main/game.h, main/kconfig.c, main/gauges.h, main/kconfig.h, main/gamecntl.c, misc/args.c, d2x.ini, arch/ogl/ogl.c, arch/ogl/gr.c, arch/sdl/joy.c: Added structure for values saved in PLR/PLX files; Added most common command-line options to options menu
20080408
--------
d2x-rebirth.xcodeproj, include/cfile.h, main/inferno.c, main/newmenu.c, misc/error.c, ui/gadget.c, ui/window.c: show a messagebox if there's an error and graphics are initialised, update Xcode project

View file

@ -48,6 +48,7 @@
#include "render.h"
#include "console.h"
#include "config.h"
#include "playsave.h"
#if defined(__APPLE__) && defined(__MACH__)
#include <OpenGL/glu.h>
@ -546,7 +547,7 @@ void save_screen_shot(int automap_flag)
if (!automap_flag)
hud_message(MSGC_GAME_FEEDBACK,message);
if (!automap_flag && GameArg.OglPrShot && Function_mode == FMODE_GAME)
if (!automap_flag && PlayerCfg.OglPRShot && Function_mode == FMODE_GAME)
{
render_frame(0,0);
gr_set_curfont(MEDIUM2_FONT);

View file

@ -51,6 +51,7 @@
#include "byteswap.h"
#include "endlevel.h"
#include "gauges.h"
#include "playsave.h"
//change to 1 for lots of spew.
#if 0
@ -776,7 +777,7 @@ bool g3_draw_bitmap(vms_vector *pos,fix width,fix height,grs_bitmap *bm, int ori
glBegin(GL_QUADS);
// Define alpha by looking for object TYPE or ID. We do this here so we have it seperated from the rest of the code.
if (GameArg.OglAlphaEffects && // if -gl_transparency draw following bitmaps
if (PlayerCfg.OglAlphaEffects && // if -gl_transparency draw following bitmaps
(obj->type==OBJ_FIREBALL || // all types of explosions and energy-effects
(obj->type==OBJ_WEAPON && (obj->id != PROXIMITY_ID && obj->id != SUPERPROX_ID)) || // weapon fire except bombs
obj->id==POW_EXTRA_LIFE || // extra life

View file

@ -20,13 +20,13 @@
#include "event.h"
#include "text.h"
#include "u_mem.h"
#include "playsave.h"
extern char *joybutton_text[]; //from kconfig.c
extern char *joyaxis_text[]; //from kconfig.c
char joy_present = 0;
int num_joysticks = 0;
int joy_deadzone = 0;
int joy_num_axes = 0;
struct joybutton {
@ -379,7 +379,7 @@ int joy_get_scaled_reading( int raw, int axis_num )
#if 1
int x, d;
d = (joy_deadzone) * 6;
d = (PlayerCfg.JoystickDeadzone) * 6;
if (((raw/256) > (-1*d)) && ((raw/256) < d))
x = 0;
else
@ -409,7 +409,7 @@ int joy_get_scaled_reading( int raw, int axis_num )
if ( x > 127 )
x = 127;
d = (joy_deadzone) * 6;
d = (PlayerCfg.JoystickDeadzone) * 6;
if ((x > (-1*d)) && (x < d))
x = 0;

View file

@ -29,19 +29,11 @@
Graphics:
;-hud <n> Set hud mode. 0=normal 1-3=new
;-persistentdebris Enable persistent debris. Works in singleplayer only
;-lowresfont Force to use LowRes fonts
;-lowresgraphics Force to use LowRes graphics
;-lowresmovies Play low resolution movies if available (for slow machines)
;-subtitles Turn on movie subtitles
OpenGL:
;-gl_transparency Enable transparency effects
;-gl_reticle <n> Use OGL reticle 0=never 1=above 320x* 2=always
;-gl_fixedfont Do not scale fonts to current resolution
;-gl_prshot Take clean screenshots - no HUD and DXX-Rebirth writing
Multiplayer:

View file

@ -65,17 +65,12 @@ typedef struct Arg
int SndSdlMixer;
char *SndExternalMusic;
char *SndJukebox;
int GfxGaugeHudMode;// MOVE
int GfxPersistentDebris;// MOVE
int GfxHiresGFXAvailable;
int GfxHiresFNTAvailable;
int GfxMovieHires;
int GfxMovieSubtitles;
#ifdef OGL
int OglAlphaEffects;// MOVE
int OglReticle;// MOVE
int OglFixedFont;
int OglPrShot;// MOVE
#endif
int MplGameProfile;
int MplNoRankings;

View file

@ -69,6 +69,7 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
#include "switch.h"
#include "automap.h"
#include "cntrlcen.h"
#include "playsave.h"
#define EF_USED 1 // This edge is used
#define EF_DEFINING 2 // A structure defining edge that should always draw.
@ -269,8 +270,6 @@ void DropMarker (int player_marker_num)
}
extern char guidebot_name[];
void DropBuddyMarker(object *objp)
{
int marker_num;
@ -280,7 +279,7 @@ void DropBuddyMarker(object *objp)
if (marker_num > NUM_MARKERS-1)
marker_num = NUM_MARKERS-1;
sprintf(MarkerMessage[marker_num], "RIP: %s",guidebot_name);
sprintf(MarkerMessage[marker_num], "RIP: %s",PlayerCfg.GuidebotName);
MarkerPoint[marker_num] = objp->pos;

View file

@ -22,6 +22,8 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
#ifndef _COLLIDE_H
#define _COLLIDE_H
#include "playsave.h"
void collide_init();
void collide_two_objects(object * A, object * B, vms_vector *collision_point);
void collide_object_with_wall(object * A, fix hitspeed, short hitseg, short hitwall, vms_vector * hitpt);
@ -32,7 +34,7 @@ extern int apply_damage_to_robot(object *robot, fix damage, int killer_objnum);
extern int Immaterial;
#define PERSISTENT_DEBRIS (GameArg.GfxPersistentDebris && !(Game_mode & GM_MULTI)) // no persistent debris in multi
#define PERSISTENT_DEBRIS (PlayerCfg.PersistentDebris && !(Game_mode & GM_MULTI)) // no persistent debris in multi
extern void collide_player_and_weapon(object * player, object * weapon, vms_vector *collision_point);
extern void collide_player_and_materialization_center(object *objp);

View file

@ -48,7 +48,6 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
struct Cfg GameCfg;
ubyte Config_control_type = 0;
ubyte Config_joystick_sensitivity = 8;
static char *DigiVolumeStr = "DigiVolume";
@ -85,8 +84,6 @@ int ReadConfigFile()
GameCfg.WindowMode = 0;
GameCfg.TexFilt = 0;
Config_control_type = 0;
infile = PHYSFSX_openReadBuffered("descent.cfg");
if (infile == NULL) {

View file

@ -46,11 +46,6 @@ extern struct Cfg GameCfg;
extern int ReadConfigFile(void);
extern int WriteConfigFile(void);
extern ubyte Config_control_type;
extern ubyte Config_joystick_sensitivity;
extern ubyte Config_mouse_sensitivity;
extern int joy_deadzone;
//values for Config_control_type
#define CONTROL_NONE 0
#define CONTROL_JOYSTICK 1

View file

@ -44,7 +44,7 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
#include "fvi.h"
#include "u_mem.h"
#include "sounds.h"
#include "playsave.h"
#include "inferno.h"
#include "endlevel.h"
#include "object.h"
@ -407,7 +407,7 @@ void start_rendered_endlevel_sequence()
}
cockpit_mode_save = Cockpit_mode;
cockpit_mode_save = PlayerCfg.CockpitMode;
#ifdef NETWORK
if (Game_mode & GM_MULTI) {

View file

@ -110,9 +110,6 @@ int Last_buddy_key;
fix Last_buddy_message_time;
char guidebot_name[GUIDEBOT_NAME_LEN+1] = "GUIDE-BOT";
char real_guidebot_name[GUIDEBOT_NAME_LEN+1] = "GUIDE-BOT";
void init_buddy_for_level(void)
{
int i;
@ -380,14 +377,14 @@ void change_guidebot_name()
char text[GUIDEBOT_NAME_LEN+1]="";
int item;
strcpy(text,guidebot_name);
strcpy(text,PlayerCfg.GuidebotName);
m.type=NM_TYPE_INPUT; m.text_len = GUIDEBOT_NAME_LEN; m.text = text;
item = newmenu_do( NULL, "Enter Guide-bot name:", 1, &m, NULL );
if (item != -1) {
strcpy(guidebot_name,text);
strcpy(real_guidebot_name,text);
strcpy(PlayerCfg.GuidebotName,text);
strcpy(PlayerCfg.GuidebotNameReal,text);
write_player_file();
}
}
@ -413,7 +410,7 @@ void buddy_message(char * format, ... )
gb_str[0] = CC_COLOR;
gb_str[1] = BM_XRGB(28, 0, 0);
strcpy(&gb_str[2], guidebot_name);
strcpy(&gb_str[2], PlayerCfg.GuidebotName);
t = strlen(gb_str);
gb_str[t] = ':';
gb_str[t+1] = CC_COLOR;
@ -478,7 +475,7 @@ void set_escort_special_goal(int special_key)
for (i=0; i<=Highest_object_index; i++)
if ((Objects[i].type == OBJ_ROBOT) && Robot_info[Objects[i].id].companion) {
HUD_init_message("%s has not been released.",guidebot_name);
HUD_init_message("%s has not been released.",PlayerCfg.GuidebotName);
break;
}
if (i == Highest_object_index+1)
@ -1683,7 +1680,7 @@ void do_escort_menu(void)
ok_for_buddy_to_talk(); // Needed here or we might not know buddy can talk when he can.
if (!Buddy_allowed_to_talk) {
HUD_init_message("%s has not been released",guidebot_name);
HUD_init_message("%s has not been released",PlayerCfg.GuidebotName);
return;
}

View file

@ -1,5 +1,3 @@
/* $Id: escort.h,v 1.1.1.1 2006/03/17 19:55:00 zicodxx Exp $ */
/*
*
* Header for escort.c
@ -8,19 +6,10 @@
#ifndef _ESCORT_H
#define _ESCORT_H
extern int Buddy_dude_cheat;
#define GUIDEBOT_NAME_LEN 9
extern char guidebot_name[];
extern char real_guidebot_name[];
extern int Buddy_dude_cheat;
extern void change_guidebot_name(void);
extern void do_escort_menu(void);
extern void detect_escort_goal_accomplished(int index);
extern void set_escort_special_goal(int key);
#endif // _ESCORT_H

View file

@ -160,7 +160,6 @@ grs_canvas VR_editor_canvas; // The canvas that the editor writes to.
int Debug_pause=0; //John's debugging pause system
int Cockpit_mode=CM_FULL_COCKPIT; //set game.h for values
static int old_cockpit_mode=-1;
int force_cockpit_redraw=0;
@ -278,12 +277,12 @@ void init_cockpit()
VR_screen_flags = VRF_ALLOW_COCKPIT;
}
if ((!(VR_screen_flags & VRF_ALLOW_COCKPIT) && (Cockpit_mode==CM_FULL_COCKPIT || Cockpit_mode==CM_STATUS_BAR || Cockpit_mode==CM_REAR_VIEW)) || ( VR_render_mode != VR_NONE ) || ( Screen_mode == SCREEN_EDITOR ))
Cockpit_mode = CM_FULL_SCREEN;
if ((!(VR_screen_flags & VRF_ALLOW_COCKPIT) && (PlayerCfg.CockpitMode==CM_FULL_COCKPIT || PlayerCfg.CockpitMode==CM_STATUS_BAR || PlayerCfg.CockpitMode==CM_REAR_VIEW)) || ( VR_render_mode != VR_NONE ) || ( Screen_mode == SCREEN_EDITOR ))
PlayerCfg.CockpitMode = CM_FULL_SCREEN;
gr_set_current_canvas(NULL);
switch( Cockpit_mode ) {
switch( PlayerCfg.CockpitMode ) {
case CM_FULL_COCKPIT:
game_init_render_sub_buffers(0, 0, grd_curscreen->sc_w,(grd_curscreen->sc_h*2)/3);
break;
@ -310,7 +309,7 @@ void init_cockpit()
}
if (Newdemo_state==ND_STATE_RECORDING) {
newdemo_record_cockpit_change(Cockpit_mode);
newdemo_record_cockpit_change(PlayerCfg.CockpitMode);
}
gr_set_current_canvas(NULL);
@ -319,8 +318,8 @@ void init_cockpit()
//selects a given cockpit (or lack of one). See types in game.h
void select_cockpit(int mode)
{
if (mode != Cockpit_mode) { //new mode
Cockpit_mode=mode;
if (mode != PlayerCfg.CockpitMode) { //new mode
PlayerCfg.CockpitMode=mode;
init_cockpit();
}
}
@ -1172,7 +1171,7 @@ void check_rear_view()
if (Rear_view) {
Rear_view = 0;
if (Cockpit_mode==CM_REAR_VIEW) {
if (PlayerCfg.CockpitMode==CM_REAR_VIEW) {
select_cockpit(old_cockpit_mode);
}
if (Newdemo_state == ND_STATE_RECORDING)
@ -1189,8 +1188,8 @@ void check_rear_view()
leave_mode = 0; // means wait for another key
entry_time = timer_get_fixed_seconds();
}
if (Cockpit_mode == CM_FULL_COCKPIT) {
old_cockpit_mode = Cockpit_mode;
if (PlayerCfg.CockpitMode == CM_FULL_COCKPIT) {
old_cockpit_mode = PlayerCfg.CockpitMode;
select_cockpit(CM_REAR_VIEW);
}
if (Newdemo_state == ND_STATE_RECORDING)
@ -1205,11 +1204,11 @@ void check_rear_view()
}
else {
//@@if (leave_mode==1 && Cockpit_mode==CM_REAR_VIEW) {
//@@if (leave_mode==1 && PlayerCfg.CockpitMode==CM_REAR_VIEW) {
if (leave_mode==1 && Rear_view) {
Rear_view = 0;
if (Cockpit_mode==CM_REAR_VIEW) {
if (PlayerCfg.CockpitMode==CM_REAR_VIEW) {
select_cockpit(old_cockpit_mode);
}
if (Newdemo_state == ND_STATE_RECORDING)
@ -1227,7 +1226,7 @@ void reset_rear_view(void)
Rear_view = 0;
if (!(Cockpit_mode == CM_FULL_COCKPIT || Cockpit_mode == CM_STATUS_BAR || Cockpit_mode == CM_FULL_SCREEN)) {
if (!(PlayerCfg.CockpitMode == CM_FULL_COCKPIT || PlayerCfg.CockpitMode == CM_STATUS_BAR || PlayerCfg.CockpitMode == CM_FULL_SCREEN)) {
if (!(old_cockpit_mode == CM_FULL_COCKPIT || old_cockpit_mode == CM_STATUS_BAR || old_cockpit_mode == CM_FULL_SCREEN))
old_cockpit_mode = CM_FULL_COCKPIT;
select_cockpit(old_cockpit_mode);
@ -1511,11 +1510,8 @@ extern int Do_appearance_effect;
object *Missile_viewer=NULL;
int Missile_view_enabled = 1;
int Marker_viewer_num[2]={-1,-1};
int Coop_view_player[2]={-1,-1};
int Cockpit_3d_view[2]={CV_NONE,CV_NONE};
//returns ptr to escort robot, or NULL
object *find_escort()

View file

@ -38,8 +38,6 @@ extern fix Next_missile_fire_time; // Time at which player can next fire his se
extern fix Laser_delay_time; // Delay between laser fires.
extern int Cheats_enabled;
extern int Missile_view_enabled;
extern object *Missile_viewer;
#define CV_NONE 0
@ -48,7 +46,6 @@ extern object *Missile_viewer;
#define CV_COOP 3
#define CV_MARKER 4
extern int Cockpit_3d_view[2]; // left & right
extern int Coop_view_player[2]; // left & right
extern int Marker_viewer_num[2]; // left & right
@ -156,7 +153,6 @@ extern void save_screen_shot(int automap_flag);
#define CM_FULL_SCREEN 3 // full screen, no cockpit (w/ reticle)
#define CM_LETTERBOX 4 // half-height window (for cutscenes)
extern int Cockpit_mode; // what sort of cockpit or window is up?
extern int Game_window_w, // width and height of player's game window
Game_window_h;

View file

@ -131,7 +131,6 @@ int redbook_volume = 255;
// External Variables ---------------------------------------------------------
extern int Speedtest_on; // Speedtest global adapted from game.c
extern int Guided_in_big_window;
extern char WaitForRefuseAnswer,RefuseThisPlayer,RefuseTeam;
extern ubyte Newdemo_flying_guided;
@ -147,8 +146,6 @@ extern int Speedtest_count;
extern int Global_missile_firing_count;
extern int Automap_flag;
extern int Config_menu_flag;
extern int EscortHotKeys;
extern int Game_aborted;
extern int *Toggle_var;
@ -549,7 +546,7 @@ void do_show_netgame_help()
if (!GameArg.MplNoRankings)
{
if (i==Player_num)
sprintf (mtext[num],"%s%s (%d/%d)",RankStrings[NetPlayers.players[i].rank],Players[i].callsign,Netlife_kills,Netlife_killed);
sprintf (mtext[num],"%s%s (%d/%d)",RankStrings[NetPlayers.players[i].rank],Players[i].callsign,PlayerCfg.NetlifeKills,PlayerCfg.NetlifeKilled);
else
sprintf (mtext[num],"%s%s %d/%d",RankStrings[NetPlayers.players[i].rank],Players[i].callsign,kill_matrix[Player_num][i],
kill_matrix[i][Player_num]);
@ -562,7 +559,7 @@ void do_show_netgame_help()
sprintf (mtext[num]," "); num++;
eff=(int)((float)((float)Netlife_kills/((float)Netlife_killed+(float)Netlife_kills))*100.0);
eff=(int)((float)((float)PlayerCfg.NetlifeKills/((float)PlayerCfg.NetlifeKilled+(float)PlayerCfg.NetlifeKills))*100.0);
if (eff<0)
eff=0;
@ -801,13 +798,13 @@ int select_next_window_function(int w)
{
Assert(w==0 || w==1);
switch (Cockpit_3d_view[w]) {
switch (PlayerCfg.Cockpit3DView[w]) {
case CV_NONE:
Cockpit_3d_view[w] = CV_REAR;
PlayerCfg.Cockpit3DView[w] = CV_REAR;
break;
case CV_REAR:
if (find_escort()) {
Cockpit_3d_view[w] = CV_ESCORT;
PlayerCfg.Cockpit3DView[w] = CV_ESCORT;
break;
}
//if no ecort, fall through
@ -818,11 +815,11 @@ int select_next_window_function(int w)
case CV_COOP:
Marker_viewer_num[w] = -1;
if ((Game_mode & GM_MULTI_COOP) || (Game_mode & GM_TEAM)) {
Cockpit_3d_view[w] = CV_COOP;
PlayerCfg.Cockpit3DView[w] = CV_COOP;
while (1) {
Coop_view_player[w]++;
if (Coop_view_player[w] == N_players) {
Cockpit_3d_view[w] = CV_MARKER;
PlayerCfg.Cockpit3DView[w] = CV_MARKER;
goto case_marker;
}
if (Coop_view_player[w]==Player_num)
@ -839,17 +836,17 @@ int select_next_window_function(int w)
case CV_MARKER:
case_marker:;
if ((Game_mode & GM_MULTI) && !(Game_mode & GM_MULTI_COOP) && Netgame.Allow_marker_view) { //anarchy only
Cockpit_3d_view[w] = CV_MARKER;
PlayerCfg.Cockpit3DView[w] = CV_MARKER;
if (Marker_viewer_num[w] == -1)
Marker_viewer_num[w] = Player_num * 2;
else if (Marker_viewer_num[w] == Player_num * 2)
Marker_viewer_num[w]++;
else
Cockpit_3d_view[w] = CV_NONE;
PlayerCfg.Cockpit3DView[w] = CV_NONE;
}
else
#endif
Cockpit_3d_view[w] = CV_NONE;
PlayerCfg.Cockpit3DView[w] = CV_NONE;
break;
}
write_player_file();
@ -1023,7 +1020,7 @@ int HandleSystemKey(int key)
MAC(case KEY_COMMAND+KEY_3:)
case KEY_F3:
if (!(Guided_missile[Player_num] && Guided_missile[Player_num]->type==OBJ_WEAPON && Guided_missile[Player_num]->id==GUIDEDMISS_ID && Guided_missile[Player_num]->signature==Guided_missile_sig[Player_num] && Guided_in_big_window))
if (!(Guided_missile[Player_num] && Guided_missile[Player_num]->type==OBJ_WEAPON && Guided_missile[Player_num]->id==GUIDEDMISS_ID && Guided_missile[Player_num]->signature==Guided_missile_sig[Player_num] && PlayerCfg.GuidedInBigWindow))
{
toggle_cockpit(); screen_changed=1;
}
@ -1402,7 +1399,7 @@ void HandleGameKey(int key)
case KEY_8 + KEY_SHIFTED:
case KEY_9 + KEY_SHIFTED:
case KEY_0 + KEY_SHIFTED:
if (EscortHotKeys)
if (PlayerCfg.EscortHotKeys)
{
if (!(Game_mode & GM_MULTI))
set_escort_special_goal(key);
@ -1412,7 +1409,8 @@ void HandleGameKey(int key)
}
case KEY_ALTED+KEY_F7:
GameArg.GfxGaugeHudMode=(GameArg.GfxGaugeHudMode+1)%GAUGE_HUD_NUMMODES;
PlayerCfg.HudMode=(PlayerCfg.HudMode+1)%GAUGE_HUD_NUMMODES;
write_player_file();
break;
#ifdef NETWORK
@ -1609,7 +1607,7 @@ void HandleTestKey(int key)
#ifdef NETWORK
case KEY_DEBUGGED+KEY_ALTED+KEY_D:
Netlife_kills=4000; Netlife_killed=5;
PlayerCfg.NetlifeKills=4000; PlayerCfg.NetlifeKilled=5;
multi_add_lifetime_kills();
break;
#endif
@ -1996,12 +1994,12 @@ void FinalCheats(int key)
do_cheat_penalty();
Buddy_dude_cheat = !Buddy_dude_cheat;
if (Buddy_dude_cheat) {
HUD_init_message ("%s gets angry!",guidebot_name);
strcpy(guidebot_name,"Wingnut");
HUD_init_message ("%s gets angry!",PlayerCfg.GuidebotName);
strcpy(PlayerCfg.GuidebotName,"Wingnut");
}
else {
strcpy(guidebot_name,real_guidebot_name);
HUD_init_message ("%s calms down",guidebot_name);
strcpy(PlayerCfg.GuidebotName,PlayerCfg.GuidebotNameReal);
HUD_init_message ("%s calms down",PlayerCfg.GuidebotName);
}
}

View file

@ -147,12 +147,12 @@ void show_framerate()
if (frame_time_total) {
int y=GHEIGHT;
if (Cockpit_mode==CM_FULL_SCREEN) {
if (PlayerCfg.CockpitMode==CM_FULL_SCREEN) {
if (Game_mode & GM_MULTI)
y -= LINE_SPACING * 10;
else
y -= LINE_SPACING * 5;
} else if (Cockpit_mode == CM_STATUS_BAR) {
} else if (PlayerCfg.CockpitMode == CM_STATUS_BAR) {
if (Game_mode & GM_MULTI)
y -= LINE_SPACING * 6;
else
@ -279,7 +279,7 @@ void show_netplayerinfo()
gr_set_fontcolor(255,-1);
// additional information about game - hoard, ranking
eff=(int)((float)((float)Netlife_kills/((float)Netlife_killed+(float)Netlife_kills))*100.0);
eff=(int)((float)((float)PlayerCfg.NetlifeKills/((float)PlayerCfg.NetlifeKilled+(float)PlayerCfg.NetlifeKills))*100.0);
if (eff<0)
eff=0;
@ -292,7 +292,7 @@ void show_netplayerinfo()
}
else if (!GameArg.MplNoRankings)
{
gr_printf(0x8000,y,"Your lifetime efficiency of %d%% (%d/%d)",eff,Netlife_kills,Netlife_killed);
gr_printf(0x8000,y,"Your lifetime efficiency of %d%% (%d/%d)",eff,PlayerCfg.NetlifeKills,PlayerCfg.NetlifeKilled);
y+=LINE_SPACING;
if (eff<60)
gr_printf(0x8000,y,"is %s your ranking.",eff_strings[eff/10]);
@ -419,28 +419,28 @@ void game_draw_hud_stuff()
y = GHEIGHT-(LINE_SPACING*2);
if (Cockpit_mode == CM_FULL_COCKPIT)
if (PlayerCfg.CockpitMode == CM_FULL_COCKPIT)
y = grd_curcanv->cv_bitmap.bm_h / 1.2 ;
if (Cockpit_mode != CM_REAR_VIEW)
if (PlayerCfg.CockpitMode != CM_REAR_VIEW)
gr_printf(0x8000, y, message );
}
render_countdown_gauge();
// this should be made part of hud code some day
if ( Player_num > -1 && Viewer->type==OBJ_PLAYER && Viewer->id==Player_num && Cockpit_mode != CM_REAR_VIEW) {
if ( Player_num > -1 && Viewer->type==OBJ_PLAYER && Viewer->id==Player_num && PlayerCfg.CockpitMode != CM_REAR_VIEW) {
int x = FSPACX(1);
int y = grd_curcanv->cv_bitmap.bm_h;
gr_set_curfont( GAME_FONT );
gr_set_fontcolor( BM_XRGB(0, 31, 0), -1 );
if (Cruise_speed > 0) {
if (Cockpit_mode==CM_FULL_SCREEN) {
if (PlayerCfg.CockpitMode==CM_FULL_SCREEN) {
if (Game_mode & GM_MULTI)
y -= LINE_SPACING * 10;
else
y -= LINE_SPACING * 5;
} else if (Cockpit_mode == CM_STATUS_BAR) {
} else if (PlayerCfg.CockpitMode == CM_STATUS_BAR) {
if (Game_mode & GM_MULTI)
y -= LINE_SPACING * 6;
else
@ -456,7 +456,7 @@ void game_draw_hud_stuff()
}
}
if (GameArg.SysFPSIndicator && Cockpit_mode != CM_REAR_VIEW)
if (GameArg.SysFPSIndicator && PlayerCfg.CockpitMode != CM_REAR_VIEW)
show_framerate();
draw_hud();
@ -545,7 +545,6 @@ void game_expand_bitmap( grs_bitmap * bmp, uint flags )
}
extern int SW_drawn[2], SW_x[2], SW_y[2], SW_w[2], SW_h[2];
extern int Guided_in_big_window;
ubyte RenderingType=0;
ubyte DemoDoingRight=0,DemoDoingLeft=0;
extern ubyte DemoDoRight,DemoDoLeft;
@ -555,8 +554,6 @@ char DemoWBUType[]={0,WBU_GUIDED,WBU_MISSILE,WBU_REAR,WBU_ESCORT,WBU_MARKER,0};
char DemoRearCheck[]={0,0,0,1,0,0,0};
char *DemoExtraMessage[]={"PLAYER","GUIDED","MISSILE","REAR","GUIDE-BOT","MARKER","SHIP"};
extern char guidebot_name[];
void show_extra_views()
{
int did_missile_view=0;
@ -598,7 +595,7 @@ void show_extra_views()
if (Guided_missile[Player_num] && Guided_missile[Player_num]->type==OBJ_WEAPON && Guided_missile[Player_num]->id==GUIDEDMISS_ID && Guided_missile[Player_num]->signature==Guided_missile_sig[Player_num])
{
if (Guided_in_big_window)
if (PlayerCfg.GuidedInBigWindow)
{
RenderingType=6+(1<<4);
do_cockpit_window_view(1,Viewer,0,WBU_MISSILE,"SHIP");
@ -614,7 +611,7 @@ void show_extra_views()
else {
if (Guided_missile[Player_num]) { //used to be active
if (!Guided_in_big_window)
if (!PlayerCfg.GuidedInBigWindow)
do_cockpit_window_view(1,NULL,0,WBU_STATIC,NULL);
Guided_missile[Player_num] = NULL;
}
@ -624,7 +621,7 @@ void show_extra_views()
static int mv_sig=-1;
if (mv_sig == -1)
mv_sig = Missile_viewer->signature;
if (Missile_view_enabled && Missile_viewer->type!=OBJ_NONE && Missile_viewer->signature == mv_sig) {
if (PlayerCfg.MissileViewEnabled && Missile_viewer->type!=OBJ_NONE && Missile_viewer->signature == mv_sig) {
RenderingType=2+(1<<4);
do_cockpit_window_view(1,Missile_viewer,0,WBU_MISSILE,"MISSILE");
did_missile_view=1;
@ -644,7 +641,7 @@ void show_extra_views()
continue; //if showing missile view in right window, can't show anything else
//show special views if selected
switch (Cockpit_3d_view[w]) {
switch (PlayerCfg.Cockpit3DView[w]) {
case CV_NONE:
RenderingType=255;
do_cockpit_window_view(w,NULL,0,WBU_WEAPON,NULL);
@ -664,11 +661,11 @@ void show_extra_views()
buddy = find_escort();
if (buddy == NULL) {
do_cockpit_window_view(w,NULL,0,WBU_WEAPON,NULL);
Cockpit_3d_view[w] = CV_NONE;
PlayerCfg.Cockpit3DView[w] = CV_NONE;
}
else {
RenderingType=4+(w<<4);
do_cockpit_window_view(w,buddy,0,WBU_ESCORT,guidebot_name);
do_cockpit_window_view(w,buddy,0,WBU_ESCORT,PlayerCfg.GuidebotName);
}
break;
}
@ -682,7 +679,7 @@ void show_extra_views()
do_cockpit_window_view(w,&Objects[Players[Coop_view_player[w]].objnum],0,WBU_COOP,Players[Coop_view_player[w]].callsign);
else {
do_cockpit_window_view(w,NULL,0,WBU_WEAPON,NULL);
Cockpit_3d_view[w] = CV_NONE;
PlayerCfg.Cockpit3DView[w] = CV_NONE;
}
break;
}
@ -691,7 +688,7 @@ void show_extra_views()
char label[10];
RenderingType=5+(w<<4);
if (Marker_viewer_num[w] == -1 || MarkerObject[Marker_viewer_num[w]] == -1) {
Cockpit_3d_view[w] = CV_NONE;
PlayerCfg.Cockpit3DView[w] = CV_NONE;
break;
}
sprintf(label,"Marker %d",Marker_viewer_num[w]+1);
@ -718,14 +715,14 @@ void game_render_frame_mono(int flip)
gr_set_current_canvas(&Screen_3d_window);
if (Guided_missile[Player_num] && Guided_missile[Player_num]->type==OBJ_WEAPON && Guided_missile[Player_num]->id==GUIDEDMISS_ID && Guided_missile[Player_num]->signature==Guided_missile_sig[Player_num] && Guided_in_big_window) {
if (Guided_missile[Player_num] && Guided_missile[Player_num]->type==OBJ_WEAPON && Guided_missile[Player_num]->id==GUIDEDMISS_ID && Guided_missile[Player_num]->signature==Guided_missile_sig[Player_num] && PlayerCfg.GuidedInBigWindow) {
object *viewer_save = Viewer;
if (Cockpit_mode==CM_FULL_COCKPIT)
if (PlayerCfg.CockpitMode==CM_FULL_COCKPIT)
{
BigWindowSwitch=1;
force_cockpit_redraw=1;
Cockpit_mode=CM_STATUS_BAR;
PlayerCfg.CockpitMode=CM_STATUS_BAR;
return;
}
@ -753,7 +750,7 @@ void game_render_frame_mono(int flip)
if (BigWindowSwitch)
{
force_cockpit_redraw=1;
Cockpit_mode=CM_FULL_COCKPIT;
PlayerCfg.CockpitMode=CM_FULL_COCKPIT;
BigWindowSwitch=0;
return;
}
@ -767,7 +764,7 @@ void game_render_frame_mono(int flip)
show_extra_views(); //missile view, buddy bot, etc.
if (Cockpit_mode==CM_FULL_COCKPIT || Cockpit_mode==CM_STATUS_BAR)
if (PlayerCfg.CockpitMode==CM_FULL_COCKPIT || PlayerCfg.CockpitMode==CM_STATUS_BAR)
render_gauges();
gr_set_current_canvas(&Screen_3d_window);
@ -794,7 +791,7 @@ void toggle_cockpit()
if (Rear_view)
return;
switch (Cockpit_mode)
switch (PlayerCfg.CockpitMode)
{
case CM_FULL_COCKPIT:
new_mode = CM_STATUS_BAR;
@ -822,13 +819,13 @@ void update_cockpits(int force_redraw)
grs_bitmap *bm;
PIGGY_PAGE_IN(cockpit_bitmap[Cockpit_mode+(HIRESMODE?(Num_cockpits/2):0)]);
bm=&GameBitmaps[cockpit_bitmap[Cockpit_mode+(HIRESMODE?(Num_cockpits/2):0)].index];
PIGGY_PAGE_IN(cockpit_bitmap[PlayerCfg.CockpitMode+(HIRESMODE?(Num_cockpits/2):0)]);
bm=&GameBitmaps[cockpit_bitmap[PlayerCfg.CockpitMode+(HIRESMODE?(Num_cockpits/2):0)].index];
//Redraw the on-screen cockpit bitmaps
if (VR_render_mode != VR_NONE ) return;
switch( Cockpit_mode ) {
switch( PlayerCfg.CockpitMode ) {
case CM_FULL_COCKPIT:
gr_set_current_canvas(NULL);
bm->bm_flags |= BM_FLAG_COCKPIT_TRANSPARENT;
@ -868,12 +865,12 @@ void update_cockpits(int force_redraw)
gr_set_current_canvas(NULL);
if (Cockpit_mode != last_drawn_cockpit || force_redraw )
last_drawn_cockpit = Cockpit_mode;
if (PlayerCfg.CockpitMode != last_drawn_cockpit || force_redraw )
last_drawn_cockpit = PlayerCfg.CockpitMode;
else
return;
if (Cockpit_mode==CM_FULL_COCKPIT || Cockpit_mode==CM_STATUS_BAR)
if (PlayerCfg.CockpitMode==CM_FULL_COCKPIT || PlayerCfg.CockpitMode==CM_STATUS_BAR)
init_gauges();
}

View file

@ -527,8 +527,6 @@ void DoGameOver()
}
extern void do_save_game_menu();
//update various information about the player
void update_player_stats()
{
@ -690,12 +688,14 @@ int RegisterPlayer()
//---------------------------------------------------------------------
// Set default config options in case there is no config file
// kc_keyboard, kc_joystick, kc_mouse are statically defined.
Config_joystick_sensitivity = 8;
Config_mouse_sensitivity = 8;
Config_control_type =CONTROL_NONE;
PlayerCfg.JoystickSensitivity = 8;
PlayerCfg.MouseSensitivity = 8;
PlayerCfg.ControlType =CONTROL_NONE;
for (i=0; i<CONTROL_MAX_TYPES; i++ )
for (j=0; j<MAX_CONTROLS; j++ )
kconfig_settings[i][j] = default_kconfig_settings[i][j];
PlayerCfg.KeySettings[i][j] = DefaultKeySettings[i][j];
for(i=0; i<MAX_D2X_CONTROLS; i++)
PlayerCfg.KeySettingsD2X[i]=DefaultKeySettingsD2X[i];
kc_set_controls();
//----------------------------------------------------------------
@ -724,8 +724,6 @@ do_menu_again:
if (read_player_file() != EZERO)
goto do_menu_again;
Auto_leveling_on = Default_leveling_on;
WriteConfigFile(); // Update lastplr
return 1;

View file

@ -54,7 +54,7 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
#include "render.h"
#include "piggy.h"
#include "laser.h"
#include "playsave.h"
#ifdef OGL
#include "ogl_init.h"
#endif
@ -334,7 +334,6 @@ static inline void _page_in_gauge(int x)
void draw_ammo_info(int x,int y,int ammo_count,int primary);
extern void draw_guided_crosshair(void);
ubyte Reticle_on=1;
static int score_display;
static fix score_time;
static int old_score = -1;
@ -920,7 +919,7 @@ void play_homing_warning(void)
// -----------------------------------------------------------------------------
void show_homing_warning(void)
{
if ((Cockpit_mode == CM_STATUS_BAR) || (Endlevel_sequence)) {
if ((PlayerCfg.CockpitMode == CM_STATUS_BAR) || (Endlevel_sequence)) {
if (Last_homing_warning_shown == 1) {
PAGE_IN_GAUGE( GAUGE_HOMING_WARNING_OFF );
hud_bitblt( HUD_SCALE_X(HOMING_WARNING_X), HUD_SCALE_Y(HOMING_WARNING_Y), &GameBitmaps[ GET_GAUGE_INDEX(GAUGE_HOMING_WARNING_OFF) ]);
@ -997,15 +996,15 @@ void hud_show_orbs (void)
int x=0,y=0;
grs_bitmap *bm;
if (Cockpit_mode == CM_FULL_COCKPIT) {
if (PlayerCfg.CockpitMode == CM_FULL_COCKPIT) {
y=HUD_SCALE_Y(GameBitmaps[ GET_GAUGE_INDEX(GAUGE_LIVES) ].bm_h+2)+FSPACY(1);
x = (SWIDTH/10);
}
else if (Cockpit_mode == CM_STATUS_BAR) {
else if (PlayerCfg.CockpitMode == CM_STATUS_BAR) {
y=HUD_SCALE_Y(GameBitmaps[ GET_GAUGE_INDEX(GAUGE_LIVES) ].bm_h+2)+FSPACY(1);
x = FSPACX(2);
}
else if (Cockpit_mode == CM_FULL_SCREEN) {
else if (PlayerCfg.CockpitMode == CM_FULL_SCREEN) {
y=HUD_SCALE_Y(GameBitmaps[ GET_GAUGE_INDEX(GAUGE_LIVES) ].bm_h+GameBitmaps[ GET_GAUGE_INDEX(KEY_ICON_RED) ].bm_h+4)+FSPACY(1);
x = FSPACX(2);
}
@ -1026,15 +1025,15 @@ void hud_show_flag(void)
if ((Game_mode & GM_CAPTURE) && (Players[Player_num].flags & PLAYER_FLAGS_FLAG)) {
int x=0,y=0,icon;
if (Cockpit_mode == CM_FULL_COCKPIT) {
if (PlayerCfg.CockpitMode == CM_FULL_COCKPIT) {
y=HUD_SCALE_Y(GameBitmaps[ GET_GAUGE_INDEX(GAUGE_LIVES) ].bm_h+2)+FSPACY(1);
x = (SWIDTH/10);
}
else if (Cockpit_mode == CM_STATUS_BAR) {
else if (PlayerCfg.CockpitMode == CM_STATUS_BAR) {
y=HUD_SCALE_Y(GameBitmaps[ GET_GAUGE_INDEX(GAUGE_LIVES) ].bm_h+2)+FSPACY(1);
x = FSPACX(2);
}
else if (Cockpit_mode == CM_FULL_SCREEN) {
else if (PlayerCfg.CockpitMode == CM_FULL_SCREEN) {
y=HUD_SCALE_Y(GameBitmaps[ GET_GAUGE_INDEX(GAUGE_LIVES) ].bm_h+GameBitmaps[ GET_GAUGE_INDEX(KEY_ICON_RED) ].bm_h+4)+FSPACY(1);
x = FSPACX(2);
}
@ -1053,7 +1052,7 @@ void hud_show_flag(void)
void hud_show_energy(void)
{
if (GameArg.GfxGaugeHudMode<2) {
if (PlayerCfg.HudMode<2) {
gr_set_curfont( GAME_FONT );
gr_set_fontcolor(BM_XRGB(0,31,0),-1 );
if (Game_mode & GM_MULTI)
@ -1142,7 +1141,7 @@ void show_bomb_count(int x,int y,int bg_color,int always_show,int right_align)
void draw_primary_ammo_info(int ammo_count)
{
if (Cockpit_mode == CM_STATUS_BAR)
if (PlayerCfg.CockpitMode == CM_STATUS_BAR)
draw_ammo_info(SB_PRIMARY_AMMO_X,SB_PRIMARY_AMMO_Y,ammo_count,1);
else
draw_ammo_info(PRIMARY_AMMO_X,PRIMARY_AMMO_Y,ammo_count,1);
@ -1172,8 +1171,8 @@ void hud_show_weapons_mode(int type,int vertical,int mode,int x,int y){
Players[Player_num].laser_level+1);
break;
case 1:
if (Cockpit_mode==CM_FULL_SCREEN)
sprintf(weapon_str,(GameArg.GfxGaugeHudMode==1?"V%i":"V %i"), f2i((unsigned int) Players[Player_num].primary_ammo[1] * VULCAN_AMMO_SCALE));
if (PlayerCfg.CockpitMode==CM_FULL_SCREEN)
sprintf(weapon_str,(PlayerCfg.HudMode==1?"V%i":"V %i"), f2i((unsigned int) Players[Player_num].primary_ammo[1] * VULCAN_AMMO_SCALE));
else
sprintf(weapon_str,"V");
break;
@ -1227,7 +1226,7 @@ void hud_show_weapons_mode(int type,int vertical,int mode,int x,int y){
sprintf(weapon_str," ");
break;
case 6:
if (Cockpit_mode==CM_FULL_SCREEN)
if (PlayerCfg.CockpitMode==CM_FULL_SCREEN)
sprintf(weapon_str,"G%i", f2i((unsigned int)Players[Player_num].primary_ammo[1] * VULCAN_AMMO_SCALE));
else
sprintf(weapon_str,"G");
@ -1237,7 +1236,7 @@ void hud_show_weapons_mode(int type,int vertical,int mode,int x,int y){
case 8:
sprintf(weapon_str,"P");break;
case 9:
if (Cockpit_mode==CM_FULL_SCREEN)
if (PlayerCfg.CockpitMode==CM_FULL_SCREEN)
sprintf(weapon_str, "O%03i", Omega_charge * 100/MAX_OMEGA_CHARGE);
else
sprintf(weapon_str,"O");
@ -1292,18 +1291,18 @@ void hud_show_weapons(void)
if (Game_mode & GM_MULTI)
y -= LINE_SPACING*4;
if (GameArg.GfxGaugeHudMode==1){
if (PlayerCfg.HudMode==1){
hud_show_weapons_mode(0,0,1,grd_curcanv->cv_bitmap.bm_w,y-(LINE_SPACING*4));
hud_show_weapons_mode(0,0,2,grd_curcanv->cv_bitmap.bm_w,y-(LINE_SPACING*3));
hud_show_weapons_mode(1,0,1,grd_curcanv->cv_bitmap.bm_w,y-(LINE_SPACING*2));
hud_show_weapons_mode(1,0,2,grd_curcanv->cv_bitmap.bm_w,y-LINE_SPACING);
}
else if (GameArg.GfxGaugeHudMode==2 || GameArg.GfxGaugeHudMode==3){
else if (PlayerCfg.HudMode==2 || PlayerCfg.HudMode==3){
int x1,x2;
int w, aw;
gr_get_string_size("V1000", &w, &x1, &aw );
gr_get_string_size("0 ", &x2, &x1, &aw);
if (GameArg.GfxGaugeHudMode==2){
if (PlayerCfg.HudMode==2){
y=grd_curcanv->cv_bitmap.bm_h-(grd_curcanv->cv_bitmap.bm_h/2.75);
x1=grd_curcanv->cv_bitmap.bm_w/2.1-(w)-FSPACX(25);
x2=grd_curcanv->cv_bitmap.bm_w/1.9+x2+FSPACX(20);
@ -1432,7 +1431,7 @@ void hud_show_cloak_invuln(void)
void hud_show_shield(void)
{
// gr_set_current_canvas(&VR_render_sub_buffer[0]); //render off-screen
if (GameArg.GfxGaugeHudMode<2) {
if (PlayerCfg.HudMode<2) {
gr_set_curfont( GAME_FONT );
gr_set_fontcolor(BM_XRGB(0,31,0),-1 );
@ -1467,7 +1466,7 @@ void hud_show_lives()
if ((HUD_nmessages > 0) && (strlen(HUD_messages[hud_first]) > 38))
return;
if (Cockpit_mode == CM_FULL_COCKPIT)
if (PlayerCfg.CockpitMode == CM_FULL_COCKPIT)
x = HUD_SCALE_X(7);
else
x = FSPACX(2);
@ -1918,7 +1917,7 @@ void draw_weapon_info_sub(int info_index,gauge_box *box,int pic_x,int pic_y,char
hud_bitblt(HUD_SCALE_X(pic_x), HUD_SCALE_Y(pic_y), bm);
if (GameArg.GfxGaugeHudMode == 0)
if (PlayerCfg.HudMode == 0)
{
gr_set_fontcolor(BM_XRGB(0,20,0),-1 );
@ -1959,7 +1958,7 @@ void draw_weapon_info(int weapon_type,int weapon_num,int laser_level)
if (info_index == LASER_ID && laser_level > MAX_LASER_LEVEL)
info_index = SUPER_LASER_ID;
if (Cockpit_mode == CM_STATUS_BAR)
if (PlayerCfg.CockpitMode == CM_STATUS_BAR)
draw_weapon_info_sub(info_index,
&gauge_boxes[SB_PRIMARY_BOX],
SB_PRIMARY_W_PIC_X,SB_PRIMARY_W_PIC_Y,
@ -1976,7 +1975,7 @@ void draw_weapon_info(int weapon_type,int weapon_num,int laser_level)
else {
info_index = Secondary_weapon_to_weapon_info[weapon_num];
if (Cockpit_mode == CM_STATUS_BAR)
if (PlayerCfg.CockpitMode == CM_STATUS_BAR)
draw_weapon_info_sub(info_index,
&gauge_boxes[SB_SECONDARY_BOX],
SB_SECONDARY_W_PIC_X,SB_SECONDARY_W_PIC_Y,
@ -1989,22 +1988,22 @@ void draw_weapon_info(int weapon_type,int weapon_num,int laser_level)
SECONDARY_WEAPON_NAMES_SHORT(weapon_num),
SECONDARY_W_TEXT_X,SECONDARY_W_TEXT_Y);
}
if (GameArg.GfxGaugeHudMode!=0)
if (PlayerCfg.HudMode!=0)
{
if (weapon_box_user[0] == WBU_WEAPON) {
hud_show_weapons_mode(0,1,1,(Cockpit_mode==CM_STATUS_BAR?SB_PRIMARY_AMMO_X:PRIMARY_AMMO_X),(Cockpit_mode==CM_STATUS_BAR?SB_SECONDARY_AMMO_Y:SECONDARY_AMMO_Y));
hud_show_weapons_mode(0,1,2,(Cockpit_mode==CM_STATUS_BAR?SB_PRIMARY_AMMO_X:PRIMARY_AMMO_X)+FSPACX(12),(Cockpit_mode==CM_STATUS_BAR?SB_SECONDARY_AMMO_Y:SECONDARY_AMMO_Y));
hud_show_weapons_mode(0,1,1,(PlayerCfg.CockpitMode==CM_STATUS_BAR?SB_PRIMARY_AMMO_X:PRIMARY_AMMO_X),(PlayerCfg.CockpitMode==CM_STATUS_BAR?SB_SECONDARY_AMMO_Y:SECONDARY_AMMO_Y));
hud_show_weapons_mode(0,1,2,(PlayerCfg.CockpitMode==CM_STATUS_BAR?SB_PRIMARY_AMMO_X:PRIMARY_AMMO_X)+FSPACX(12),(PlayerCfg.CockpitMode==CM_STATUS_BAR?SB_SECONDARY_AMMO_Y:SECONDARY_AMMO_Y));
}
if (weapon_box_user[1] == WBU_WEAPON) {
hud_show_weapons_mode(1,1,1,(Cockpit_mode==CM_STATUS_BAR?SB_SECONDARY_AMMO_X:SECONDARY_AMMO_X),(Cockpit_mode==CM_STATUS_BAR?SB_SECONDARY_AMMO_Y:SECONDARY_AMMO_Y));
hud_show_weapons_mode(1,1,2,(Cockpit_mode==CM_STATUS_BAR?SB_SECONDARY_AMMO_X:SECONDARY_AMMO_X)+FSPACX(12),(Cockpit_mode==CM_STATUS_BAR?SB_SECONDARY_AMMO_Y:SECONDARY_AMMO_Y));
hud_show_weapons_mode(1,1,1,(PlayerCfg.CockpitMode==CM_STATUS_BAR?SB_SECONDARY_AMMO_X:SECONDARY_AMMO_X),(PlayerCfg.CockpitMode==CM_STATUS_BAR?SB_SECONDARY_AMMO_Y:SECONDARY_AMMO_Y));
hud_show_weapons_mode(1,1,2,(PlayerCfg.CockpitMode==CM_STATUS_BAR?SB_SECONDARY_AMMO_X:SECONDARY_AMMO_X)+FSPACX(12),(PlayerCfg.CockpitMode==CM_STATUS_BAR?SB_SECONDARY_AMMO_Y:SECONDARY_AMMO_Y));
}
}
}
void draw_ammo_info(int x,int y,int ammo_count,int primary)
{
if (!GameArg.GfxGaugeHudMode)
if (!PlayerCfg.HudMode)
{
gr_setcolor(BM_XRGB(0,0,0));
gr_set_fontcolor(BM_XRGB(20,0,0),-1 );
@ -2014,7 +2013,7 @@ void draw_ammo_info(int x,int y,int ammo_count,int primary)
void draw_secondary_ammo_info(int ammo_count)
{
if (Cockpit_mode == CM_STATUS_BAR)
if (PlayerCfg.CockpitMode == CM_STATUS_BAR)
draw_ammo_info(SB_SECONDARY_AMMO_X,SB_SECONDARY_AMMO_Y,ammo_count,0);
else
draw_ammo_info(SECONDARY_AMMO_X,SECONDARY_AMMO_Y,ammo_count,0);
@ -2030,7 +2029,7 @@ void draw_weapon_box(int weapon_type,int weapon_num)
laser_level_changed = (weapon_type==0 && weapon_num==LASER_INDEX && (Players[Player_num].laser_level != old_laser_level));
if ((weapon_num != old_weapon[weapon_type] || laser_level_changed) && weapon_box_states[weapon_type] == WS_SET && (old_weapon[weapon_type] != -1) && !GameArg.GfxGaugeHudMode)
if ((weapon_num != old_weapon[weapon_type] || laser_level_changed) && weapon_box_states[weapon_type] == WS_SET && (old_weapon[weapon_type] != -1) && !PlayerCfg.HudMode)
{
weapon_box_states[weapon_type] = WS_FADING_OUT;
weapon_box_fade_values[weapon_type]=i2f(GR_FADE_LEVELS-1);
@ -2073,7 +2072,7 @@ void draw_weapon_box(int weapon_type,int weapon_num)
if (weapon_box_states[weapon_type] != WS_SET) { //fade gauge
int fade_value = f2i(weapon_box_fade_values[weapon_type]);
int boxofs = (Cockpit_mode==CM_STATUS_BAR)?SB_PRIMARY_BOX:COCKPIT_PRIMARY_BOX;
int boxofs = (PlayerCfg.CockpitMode==CM_STATUS_BAR)?SB_PRIMARY_BOX:COCKPIT_PRIMARY_BOX;
Gr_scanline_darkening_level = fade_value;
gr_rect(HUD_SCALE_X(gauge_boxes[boxofs+weapon_type].left),HUD_SCALE_Y(gauge_boxes[boxofs+weapon_type].top),HUD_SCALE_X(gauge_boxes[boxofs+weapon_type].right),HUD_SCALE_Y(gauge_boxes[boxofs+weapon_type].bot));
@ -2091,7 +2090,7 @@ void draw_static(int win)
vclip *vc = &Vclip[VCLIP_MONITOR_STATIC];
grs_bitmap *bmp;
int framenum;
int boxofs = (Cockpit_mode==CM_STATUS_BAR)?SB_PRIMARY_BOX:COCKPIT_PRIMARY_BOX;
int boxofs = (PlayerCfg.CockpitMode==CM_STATUS_BAR)?SB_PRIMARY_BOX:COCKPIT_PRIMARY_BOX;
#ifndef OGL
int x,y;
#endif
@ -2272,7 +2271,7 @@ void draw_invulnerable_ship()
GameTime & 0x8000)
{
if (Cockpit_mode == CM_STATUS_BAR) {
if (PlayerCfg.CockpitMode == CM_STATUS_BAR) {
PAGE_IN_GAUGE( GAUGE_INVULNERABLE+invulnerable_frame );
hud_bitblt( HUD_SCALE_X(SB_SHIELD_GAUGE_X), HUD_SCALE_Y(SB_SHIELD_GAUGE_Y), &GameBitmaps[GET_GAUGE_INDEX(GAUGE_INVULNERABLE+invulnerable_frame) ]);
} else {
@ -2287,7 +2286,7 @@ void draw_invulnerable_ship()
if (++invulnerable_frame == N_INVULNERABLE_FRAMES)
invulnerable_frame=0;
}
} else if (Cockpit_mode == CM_STATUS_BAR)
} else if (PlayerCfg.CockpitMode == CM_STATUS_BAR)
sb_draw_shield_bar(f2ir(Players[Player_num].shields));
else
draw_shield_bar(f2ir(Players[Player_num].shields));
@ -2356,7 +2355,7 @@ void show_reticle()
Assert(secondary_bm_num <= 4);
Assert(cross_bm_num <= 1);
#ifdef OGL // scale reticle in OGL ...
if (GameArg.OglReticle==2 || (GameArg.OglReticle && grd_curcanv->cv_bitmap.bm_w > 320))
if (PlayerCfg.OglReticle)
{
ogl_draw_reticle(cross_bm_num,primary_bm_num,secondary_bm_num);
}
@ -2411,7 +2410,7 @@ void hud_show_kill_list()
save_y = y = grd_curcanv->cv_bitmap.bm_h - n_left*(LINE_SPACING);
if (Cockpit_mode == CM_FULL_COCKPIT) {
if (PlayerCfg.CockpitMode == CM_FULL_COCKPIT) {
save_y = y -= FSPACX(6);
if (Game_mode & GM_MULTI_COOP)
x1 = FSPACX(33);
@ -2425,7 +2424,7 @@ void hud_show_kill_list()
int sw,sh,aw;
if (i>=n_left) {
if (Cockpit_mode == CM_FULL_COCKPIT)
if (PlayerCfg.CockpitMode == CM_FULL_COCKPIT)
x0 = grd_curcanv->cv_bitmap.bm_w - FSPACX(53);
else
x0 = grd_curcanv->cv_bitmap.bm_w - FSPACX(60);
@ -2640,21 +2639,21 @@ void show_HUD_names()
void draw_hud()
{
// Show score so long as not in rearview
if ( !Rear_view && Cockpit_mode!=CM_REAR_VIEW && Cockpit_mode!=CM_STATUS_BAR && !Saving_movie_frames) {
if ( !Rear_view && PlayerCfg.CockpitMode!=CM_REAR_VIEW && PlayerCfg.CockpitMode!=CM_STATUS_BAR && !Saving_movie_frames) {
hud_show_score();
if (score_time)
hud_show_score_added();
}
if ( !Rear_view && Cockpit_mode!=CM_REAR_VIEW && !Saving_movie_frames)
if ( !Rear_view && PlayerCfg.CockpitMode!=CM_REAR_VIEW && !Saving_movie_frames)
hud_show_timer_count();
// Show other stuff if not in rearview or letterbox.
if (!Rear_view && Cockpit_mode!=CM_REAR_VIEW) { // && Cockpit_mode!=CM_LETTERBOX) {
if (Cockpit_mode==CM_STATUS_BAR || Cockpit_mode==CM_FULL_SCREEN)
if (!Rear_view && PlayerCfg.CockpitMode!=CM_REAR_VIEW) { // && PlayerCfg.CockpitMode!=CM_LETTERBOX) {
if (PlayerCfg.CockpitMode==CM_STATUS_BAR || PlayerCfg.CockpitMode==CM_FULL_SCREEN)
hud_show_homing_warning();
if (Cockpit_mode==CM_FULL_SCREEN) {
if (PlayerCfg.CockpitMode==CM_FULL_SCREEN) {
hud_show_energy();
hud_show_shield();
hud_show_afterburner();
@ -2675,23 +2674,23 @@ void draw_hud()
show_time();
#endif
#endif
if (Reticle_on && Cockpit_mode != CM_LETTERBOX && (!Use_player_head_angles))
if (PlayerCfg.ReticleOn && PlayerCfg.CockpitMode != CM_LETTERBOX && (!Use_player_head_angles))
show_reticle();
#ifdef NETWORK
show_HUD_names();
if (Cockpit_mode != CM_LETTERBOX && Cockpit_mode != CM_REAR_VIEW)
if (PlayerCfg.CockpitMode != CM_LETTERBOX && PlayerCfg.CockpitMode != CM_REAR_VIEW)
hud_show_flag();
if (Cockpit_mode != CM_LETTERBOX && Cockpit_mode != CM_REAR_VIEW)
if (PlayerCfg.CockpitMode != CM_LETTERBOX && PlayerCfg.CockpitMode != CM_REAR_VIEW)
hud_show_orbs();
#endif
if (!Saving_movie_frames)
HUD_render_message_frame();
if (Cockpit_mode!=CM_STATUS_BAR && !Saving_movie_frames)
if (PlayerCfg.CockpitMode!=CM_STATUS_BAR && !Saving_movie_frames)
hud_show_lives();
#ifdef NETWORK
@ -2700,7 +2699,7 @@ void draw_hud()
#endif
}
if (Rear_view && Cockpit_mode!=CM_REAR_VIEW) {
if (Rear_view && PlayerCfg.CockpitMode!=CM_REAR_VIEW) {
HUD_render_message_frame();
gr_set_curfont( GAME_FONT );
gr_set_fontcolor(BM_XRGB(0,31,0),-1 );
@ -2718,7 +2717,7 @@ void render_gauges()
int shields = f2ir(Players[Player_num].shields);
int cloak = ((Players[Player_num].flags&PLAYER_FLAGS_CLOAKED) != 0);
Assert(Cockpit_mode==CM_FULL_COCKPIT || Cockpit_mode==CM_STATUS_BAR);
Assert(PlayerCfg.CockpitMode==CM_FULL_COCKPIT || PlayerCfg.CockpitMode==CM_STATUS_BAR);
// check to see if our display mode has changed since last render time --
// if so, then we need to make new gauge canvases.
@ -2744,9 +2743,9 @@ void render_gauges()
draw_weapon_boxes();
if (Cockpit_mode == CM_FULL_COCKPIT) {
if (PlayerCfg.CockpitMode == CM_FULL_COCKPIT) {
#ifdef OGL
hud_bitblt (0, 0, &GameBitmaps[cockpit_bitmap[Cockpit_mode+(HIRESMODE?(Num_cockpits/2):0)].index]);
hud_bitblt (0, 0, &GameBitmaps[cockpit_bitmap[PlayerCfg.CockpitMode+(HIRESMODE?(Num_cockpits/2):0)].index]);
#endif
if (Newdemo_state == ND_STATE_RECORDING && (energy != old_energy))
{
@ -2788,7 +2787,7 @@ void render_gauges()
show_homing_warning();
} else if (Cockpit_mode == CM_STATUS_BAR) {
} else if (PlayerCfg.CockpitMode == CM_STATUS_BAR) {
if (Newdemo_state == ND_STATE_RECORDING && (energy != old_energy))
{
@ -2796,7 +2795,7 @@ void render_gauges()
old_energy = energy;
}
sb_draw_energy_bar(energy);
if (!GameArg.GfxGaugeHudMode && weapon_box_user[1] == WBU_WEAPON)
if (!PlayerCfg.HudMode && weapon_box_user[1] == WBU_WEAPON)
show_bomb_count(HUD_SCALE_X(SB_BOMB_COUNT_X), HUD_SCALE_Y(SB_BOMB_COUNT_Y), gr_find_closest_color(0, 0, 0), 0, 0);
if (Newdemo_state == ND_STATE_RECORDING && (Afterburner_charge != old_afterburner))
@ -2920,7 +2919,7 @@ void do_cockpit_window_view(int win,object *viewer,int rear_view_flag,int user,c
Viewer = viewer;
Rear_view = rear_view_flag;
if (Cockpit_mode == CM_FULL_SCREEN)
if (PlayerCfg.CockpitMode == CM_FULL_SCREEN)
{
w = grd_curscreen->sc_w/6;
@ -2937,9 +2936,9 @@ void do_cockpit_window_view(int win,object *viewer,int rear_view_flag,int user,c
gr_init_sub_canvas(&window_canv,&grd_curscreen->sc_canvas,window_x,window_y,w,h);
}
else {
if (Cockpit_mode == CM_FULL_COCKPIT)
if (PlayerCfg.CockpitMode == CM_FULL_COCKPIT)
boxnum = (COCKPIT_PRIMARY_BOX)+win;
else if (Cockpit_mode == CM_STATUS_BAR)
else if (PlayerCfg.CockpitMode == CM_STATUS_BAR)
boxnum = (SB_PRIMARY_BOX)+win;
else
goto abort;
@ -2969,7 +2968,7 @@ void do_cockpit_window_view(int win,object *viewer,int rear_view_flag,int user,c
if (user == WBU_GUIDED)
draw_guided_crosshair();
if (Cockpit_mode == CM_FULL_SCREEN) {
if (PlayerCfg.CockpitMode == CM_FULL_SCREEN) {
int small_window_bottom,big_window_bottom,extra_part_h;
{

View file

@ -35,7 +35,6 @@ extern bitmap_index Gauges[MAX_GAUGE_BMS]; // Array of all gauge bitmaps.
extern bitmap_index Gauges_hires[MAX_GAUGE_BMS]; // hires gauges
// Flags for gauges/hud stuff
extern ubyte Reticle_on;
extern void init_gauge_canvases();
extern void close_gauge_canvases();

View file

@ -48,6 +48,7 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
#include "text.h"
#include "laser.h"
#include "args.h"
#include "playsave.h"
int hud_first = 0;
int hud_last = 0;
@ -67,7 +68,7 @@ int MSG_Noredundancy = 0;
// ----------------------------------------------------------------------------
void clear_background_messages(void)
{
if (((Cockpit_mode == CM_STATUS_BAR) || (Cockpit_mode == CM_FULL_SCREEN)) && (Last_msg_ycrd != -1) && (Screen_3d_window.cv_bitmap.bm_y >= 6)) {
if (((PlayerCfg.CockpitMode == CM_STATUS_BAR) || (PlayerCfg.CockpitMode == CM_FULL_SCREEN)) && (Last_msg_ycrd != -1) && (Screen_3d_window.cv_bitmap.bm_y >= 6)) {
grs_canvas *canv_save = grd_curcanv;
gr_set_current_canvas(NULL);
@ -93,7 +94,6 @@ void HUD_clear_messages()
}
extern int Guided_in_big_window;
extern int max_window_h, max_window_w;
// ----------------------------------------------------------------------------
@ -132,7 +132,7 @@ void HUD_render_message_frame()
y = FSPACY(1);
if (Guided_missile[Player_num] && Guided_missile[Player_num]->type==OBJ_WEAPON && Guided_missile[Player_num]->id==GUIDEDMISS_ID &&
Guided_missile[Player_num]->signature==Guided_missile_sig[Player_num] && Guided_in_big_window)
Guided_missile[Player_num]->signature==Guided_missile_sig[Player_num] && PlayerCfg.GuidedInBigWindow)
y+=LINE_SPACING;
for (i=0; i<HUD_nmessages; i++ ) {

View file

@ -175,21 +175,12 @@ void print_commandline_help()
#endif // USE SDLMIXER
printf( "\n Graphics:\n\n");
printf( " -hud <n> %s\n", "Set hud mode. 0=normal 1-3=new");
printf( " -persistentdebris %s\n", "Enable persistent debris. Works in singleplayer only");
printf( " -lowresfont %s\n", "Force to use LowRes fonts");
printf( " -lowresgraphics %s\n", "Force to use LowRes graphics");
printf( " -lowresmovies %s\n", "Play low resolution movies if available (for slow machines)");
printf( " -subtitles %s\n", "Turn on movie subtitles");
#ifdef OGL
printf( "\n OpenGL:\n\n");
printf( " -gl_mipmap %s\n", "Set gl texture filters to \"standard\" options for mipmapping");
printf( " -gl_trilinear %s\n", "Set gl texture filters to trilinear mipmapping");
printf( " -gl_transparency %s\n", "Enable transparency effects");
printf( " -gl_reticle <n> %s\n", "Use OGL reticle 0=never 1=above 320x* 2=always");
printf( " -gl_fixedfont %s\n", "Do not scale fonts to current resolution");
printf( " -gl_prshot %s\n", "Take clean screenshots - no HUD and DXX-Rebirth writing");
#endif // OGL
#ifdef NETWORK

View file

@ -57,6 +57,7 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
#include "ai.h"
#include "cntrlcen.h"
#include "collide.h"
#include "playsave.h"
#ifdef OGL
#include "ogl_init.h"
@ -98,8 +99,6 @@ extern void nm_draw_background1(char * filename);
control_info Controls;
ubyte Config_mouse_sensitivity = 8;
fix Cruise_speed=0;
extern int Automap_flag;
@ -110,8 +109,8 @@ extern int Automap_flag;
#define BT_JOY_AXIS 4
#define BT_INVERT 5
#define CONTROL_USING_JOYSTICK (Config_control_type == CONTROL_JOYSTICK || Config_control_type == CONTROL_JOYMOUSE)
#define CONTROL_USING_MOUSE (Config_control_type == CONTROL_MOUSE || Config_control_type == CONTROL_JOYMOUSE)
#define CONTROL_USING_JOYSTICK (PlayerCfg.ControlType == CONTROL_JOYSTICK || PlayerCfg.ControlType == CONTROL_JOYMOUSE)
#define CONTROL_USING_MOUSE (PlayerCfg.ControlType == CONTROL_MOUSE || PlayerCfg.ControlType == CONTROL_JOYMOUSE)
char *btype_text[] = { "BT_KEY", "BT_MOUSE_BUTTON", "BT_MOUSE_AXIS", "BT_JOY_BUTTON", "BT_JOY_AXIS", "BT_INVERT" };
@ -132,15 +131,12 @@ typedef struct kc_item {
int Num_items=28;
kc_item *All_items;
ubyte kconfig_settings[CONTROL_MAX_TYPES][MAX_CONTROLS];
ubyte kconfig_d2x_settings[MAX_D2X_CONTROLS];
//----------- WARNING!!!!!!! -------------------------------------------
// THESE NEXT FOUR BLOCKS OF DATA ARE GENERATED BY PRESSING DEL+F12 WHEN
// IN THE KEYBOARD CONFIG SCREEN. BASICALLY, THAT PROCEDURE MODIFIES THE
// U,D,L,R FIELDS OF THE ARRAYS AND DUMPS THE NEW ARRAYS INTO KCONFIG.COD
//-------------------------------------------------------------------------
ubyte default_kconfig_settings[CONTROL_MAX_TYPES][MAX_CONTROLS] = {
ubyte DefaultKeySettings[CONTROL_MAX_TYPES][MAX_CONTROLS] = {
{0xc8,0x48,0xd0,0x50,0xcb,0x4b,0xcd,0x4d,0x38,0xff,0xff,0x4f,0xff,0x51,0xff,0x4a,0xff,0x4e,0xff,0xff,0x10,0x47,0x12,0x49,0x1d,0x9d,0x39,0xff,0x21,0xff,0x1e,0xff,0x2c,0xff,0x30,0xff,0x13,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf,0xff,0x1f,0xff,0x33,0xff,0x34,0xff,0x23,0xff,0x14,0xff,0xff,0xff,0x0,0x0},
{0x0,0x1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1,0x0,0x0,0x0,0xff,0x0,0xff,0x0,0xff,0x0,0xff,0x0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0,0x0,0x0,0x0},
{0x5,0xc,0xff,0xff,0xff,0xff,0x7,0xf,0x13,0xb,0xff,0x6,0x8,0x1,0x0,0x0,0x0,0xff,0x0,0xff,0x0,0xff,0x0,0xff,0x0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0,0x0},
@ -328,7 +324,7 @@ kc_item kc_d2x[NUM_D2X_CONTROLS] = {
};
#endif
ubyte default_kconfig_d2x_settings[MAX_D2X_CONTROLS] = {
ubyte DefaultKeySettingsD2X[MAX_D2X_CONTROLS] = {
0x2 ,0xff,0x3 ,0xff,0x4 ,0xff,0x5 ,0xff,0x6 ,0xff,0x7 ,0xff,0x8 ,0xff,0x9 ,
0xff,0xa ,0xff,0xb ,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff };
@ -730,39 +726,24 @@ void kconfig_sub(kc_item * items,int nitems, char * title)
case KEY_CTRLED+KEY_R:
if ( items==kc_keyboard ) {
for (i=0; i<NUM_KEY_CONTROLS; i++ ) {
items[i].value=default_kconfig_settings[0][i];
items[i].value=DefaultKeySettings[0][i];
kc_drawitem( &items[i], 0 );
}
#ifdef D2X_KEYS
} else if ( items==kc_d2x ) {
for(i=0;i<NUM_D2X_CONTROLS;i++)
{
items[i].value=default_kconfig_d2x_settings[i];
items[i].value=DefaultKeySettingsD2X[i];
kc_drawitem( &items[i], 0 );
}
#endif
} else {
#ifdef MACINTOSH
// hack for firebire and mousestick default controls since I made
// them the same control type -- dumb dumb dumb
if (joy_have_firebird())
for (i=0; i<NUM_MOUSE_CONTROLS; i++ ) {
items[i].value = default_firebird_settings[i];
kc_drawitem( &items[i], 0 );
}
else if (joy_have_mousestick())
for (i=0; i<NUM_MOUSE_CONTROLS; i++ ) {
items[i].value = default_mousestick_settings[i];
kc_drawitem( &items[i], 0 );
}
else
#endif // note link to above else
if ( items==kc_mouse )
{
for (i=0; i<NUM_MOUSE_CONTROLS; i++ )
{
items[i].value = default_kconfig_settings[Config_control_type][i];
items[i].value = DefaultKeySettings[PlayerCfg.ControlType][i];
kc_drawitem( &items[i], 0 );
}
}
@ -770,7 +751,7 @@ void kconfig_sub(kc_item * items,int nitems, char * title)
{
for (i=0; i<NUM_JOYSTICK_CONTROLS; i++ )
{
items[i].value = default_kconfig_settings[Config_control_type][i];
items[i].value = DefaultKeySettings[PlayerCfg.ControlType][i];
kc_drawitem( &items[i], 0 );
}
}
@ -855,12 +836,12 @@ void kconfig_sub(kc_item * items,int nitems, char * title)
}
fp = fopen( "kconfig.cod", "wt" );
fprintf( fp, "ubyte default_kconfig_settings[CONTROL_MAX_TYPES][MAX_CONTROLS] = {\n" );
fprintf( fp, "ubyte DefaultKeySettings[CONTROL_MAX_TYPES][MAX_CONTROLS] = {\n" );
for (i=0; i<CONTROL_MAX_TYPES; i++ ) {
int j;
fprintf( fp, "{0x%x", kconfig_settings[i][0] );
fprintf( fp, "{0x%x", PlayerCfg.KeySettings[i][0] );
for (j=1; j<MAX_CONTROLS; j++ )
fprintf( fp, ",0x%x", kconfig_settings[i][j] );
fprintf( fp, ",0x%x", PlayerCfg.KeySettings[i][j] );
fprintf( fp, "},\n" );
}
fprintf( fp, "};\n" );
@ -1325,11 +1306,11 @@ void kconfig(int n, char * title)
case 1:kconfig_sub( kc_joystick, NUM_JOYSTICK_CONTROLS, title );break;
case 2:kconfig_sub( kc_mouse, NUM_MOUSE_CONTROLS, title ); break;
case 3:
Config_control_type = CONTROL_JOYSTICK;
PlayerCfg.ControlType = CONTROL_JOYSTICK;
kconfig_sub( kc_joystick,NUM_JOYSTICK_CONTROLS, "JOYSTICK");
Config_control_type = CONTROL_MOUSE;
PlayerCfg.ControlType = CONTROL_MOUSE;
kconfig_sub( kc_mouse, NUM_MOUSE_CONTROLS, "MOUSE");
Config_control_type = CONTROL_JOYMOUSE;
PlayerCfg.ControlType = CONTROL_JOYMOUSE;
break;
#ifdef D2X_KEYS
case 4:kconfig_sub( kc_d2x, NUM_D2X_CONTROLS, title ); break;
@ -1341,21 +1322,21 @@ void kconfig(int n, char * title)
// Update save values...
for (i=0; i<NUM_KEY_CONTROLS; i++ )
kconfig_settings[0][i] = kc_keyboard[i].value;
PlayerCfg.KeySettings[0][i] = kc_keyboard[i].value;
if ( CONTROL_USING_JOYSTICK) {
for (i=0; i<NUM_JOYSTICK_CONTROLS; i++ )
kconfig_settings[CONTROL_JOYSTICK][i] = kc_joystick[i].value;
PlayerCfg.KeySettings[CONTROL_JOYSTICK][i] = kc_joystick[i].value;
}
if (CONTROL_USING_MOUSE) {
for (i=0; i<NUM_MOUSE_CONTROLS; i++ )
kconfig_settings[CONTROL_MOUSE][i] = kc_mouse[i].value;
PlayerCfg.KeySettings[CONTROL_MOUSE][i] = kc_mouse[i].value;
}
#ifdef D2X_KEYS
for (i=0; i<NUM_D2X_CONTROLS; i++)
kconfig_d2x_settings[i] = kc_d2x[i].value;
PlayerCfg.KeySettingsD2X[i] = kc_d2x[i].value;
#endif
}
@ -1591,17 +1572,17 @@ void controls_read_all()
// From joystick...
if ( (use_joystick)&&(kc_joystick[13].value < 255 )) {
if ( !kc_joystick[14].value ) // If not inverted...
Controls.pitch_time -= (joy_axis[kc_joystick[13].value]*Config_joystick_sensitivity)/8;
Controls.pitch_time -= (joy_axis[kc_joystick[13].value]*PlayerCfg.JoystickSensitivity)/8;
else
Controls.pitch_time += (joy_axis[kc_joystick[13].value]*Config_joystick_sensitivity)/8;
Controls.pitch_time += (joy_axis[kc_joystick[13].value]*PlayerCfg.JoystickSensitivity)/8;
}
// From mouse...
if ( (use_mouse)&&(kc_mouse[13].value < 255) ) {
if ( !kc_mouse[14].value ) // If not inverted...
Controls.pitch_time -= (mouse_axis[kc_mouse[13].value]*Config_mouse_sensitivity)/8;
Controls.pitch_time -= (mouse_axis[kc_mouse[13].value]*PlayerCfg.MouseSensitivity)/8;
else
Controls.pitch_time += (mouse_axis[kc_mouse[13].value]*Config_mouse_sensitivity)/8;
Controls.pitch_time += (mouse_axis[kc_mouse[13].value]*PlayerCfg.MouseSensitivity)/8;
}
} else {
Controls.pitch_time = 0;
@ -1628,17 +1609,17 @@ void controls_read_all()
// From joystick...
if ((use_joystick)&&( kc_joystick[13].value < 255 )) {
if ( !kc_joystick[14].value ) // If not inverted...
Controls.vertical_thrust_time -= (joy_axis[kc_joystick[13].value]*Config_joystick_sensitivity)/8;
Controls.vertical_thrust_time -= (joy_axis[kc_joystick[13].value]*PlayerCfg.JoystickSensitivity)/8;
else
Controls.vertical_thrust_time += (joy_axis[kc_joystick[13].value]*Config_joystick_sensitivity)/8;
Controls.vertical_thrust_time += (joy_axis[kc_joystick[13].value]*PlayerCfg.JoystickSensitivity)/8;
}
// From mouse...
if ( (use_mouse)&&(kc_mouse[13].value < 255 )) {
if ( !kc_mouse[14].value ) // If not inverted...
Controls.vertical_thrust_time -= (mouse_axis[kc_mouse[13].value]*Config_mouse_sensitivity)/8;
Controls.vertical_thrust_time -= (mouse_axis[kc_mouse[13].value]*PlayerCfg.MouseSensitivity)/8;
else
Controls.vertical_thrust_time += (mouse_axis[kc_mouse[13].value]*Config_mouse_sensitivity)/8;
Controls.vertical_thrust_time += (mouse_axis[kc_mouse[13].value]*PlayerCfg.MouseSensitivity)/8;
}
}
@ -1651,9 +1632,9 @@ void controls_read_all()
// From joystick...
if ((use_joystick)&&( kc_joystick[19].value < 255 )) {
if ( !kc_joystick[20].value ) // If not inverted...
Controls.vertical_thrust_time -= (joy_axis[kc_joystick[19].value]*Config_joystick_sensitivity)/8;
Controls.vertical_thrust_time -= (joy_axis[kc_joystick[19].value]*PlayerCfg.JoystickSensitivity)/8;
else
Controls.vertical_thrust_time += (joy_axis[kc_joystick[19].value]*Config_joystick_sensitivity)/8;
Controls.vertical_thrust_time += (joy_axis[kc_joystick[19].value]*PlayerCfg.JoystickSensitivity)/8;
}
// From joystick buttons
@ -1669,9 +1650,9 @@ void controls_read_all()
// From mouse...
if ( (use_mouse)&&(kc_mouse[19].value < 255 )) {
if ( !kc_mouse[20].value ) // If not inverted...
Controls.vertical_thrust_time += (mouse_axis[kc_mouse[19].value]*Config_mouse_sensitivity)/8;
Controls.vertical_thrust_time += (mouse_axis[kc_mouse[19].value]*PlayerCfg.MouseSensitivity)/8;
else
Controls.vertical_thrust_time -= (mouse_axis[kc_mouse[19].value]*Config_mouse_sensitivity)/8;
Controls.vertical_thrust_time -= (mouse_axis[kc_mouse[19].value]*PlayerCfg.MouseSensitivity)/8;
}
}
@ -1703,17 +1684,17 @@ void controls_read_all()
// From joystick...
if ( (use_joystick)&&(kc_joystick[15].value < 255 )) {
if ( !kc_joystick[16].value ) // If not inverted...
Controls.heading_time += (joy_axis[kc_joystick[15].value]*Config_joystick_sensitivity)/8;
Controls.heading_time += (joy_axis[kc_joystick[15].value]*PlayerCfg.JoystickSensitivity)/8;
else
Controls.heading_time -= (joy_axis[kc_joystick[15].value]*Config_joystick_sensitivity)/8;
Controls.heading_time -= (joy_axis[kc_joystick[15].value]*PlayerCfg.JoystickSensitivity)/8;
}
// From mouse...
if ( (use_mouse)&&(kc_mouse[15].value < 255 )) {
if ( !kc_mouse[16].value ) // If not inverted...
Controls.heading_time += (mouse_axis[kc_mouse[15].value]*Config_mouse_sensitivity)/8;
Controls.heading_time += (mouse_axis[kc_mouse[15].value]*PlayerCfg.MouseSensitivity)/8;
else
Controls.heading_time -= (mouse_axis[kc_mouse[15].value]*Config_mouse_sensitivity)/8;
Controls.heading_time -= (mouse_axis[kc_mouse[15].value]*PlayerCfg.MouseSensitivity)/8;
}
} else {
Controls.heading_time = 0;
@ -1739,17 +1720,17 @@ void controls_read_all()
// From joystick...
if ( (use_joystick)&&(kc_joystick[15].value < 255 )) {
if ( !kc_joystick[16].value ) // If not inverted...
Controls.sideways_thrust_time += (joy_axis[kc_joystick[15].value]*Config_joystick_sensitivity)/8;
Controls.sideways_thrust_time += (joy_axis[kc_joystick[15].value]*PlayerCfg.JoystickSensitivity)/8;
else
Controls.sideways_thrust_time -= (joy_axis[kc_joystick[15].value]*Config_joystick_sensitivity)/8;
Controls.sideways_thrust_time -= (joy_axis[kc_joystick[15].value]*PlayerCfg.JoystickSensitivity)/8;
}
// From mouse...
if ( (use_mouse)&&(kc_mouse[15].value < 255 )) {
if ( !kc_mouse[16].value ) // If not inverted...
Controls.sideways_thrust_time += (mouse_axis[kc_mouse[15].value]*Config_mouse_sensitivity)/8;
Controls.sideways_thrust_time += (mouse_axis[kc_mouse[15].value]*PlayerCfg.MouseSensitivity)/8;
else
Controls.sideways_thrust_time -= (mouse_axis[kc_mouse[15].value]*Config_mouse_sensitivity)/8;
Controls.sideways_thrust_time -= (mouse_axis[kc_mouse[15].value]*PlayerCfg.MouseSensitivity)/8;
}
}
@ -1762,9 +1743,9 @@ void controls_read_all()
// From joystick...
if ( (use_joystick)&&(kc_joystick[17].value < 255 )) {
if ( !kc_joystick[18].value ) // If not inverted...
Controls.sideways_thrust_time += (joy_axis[kc_joystick[17].value]*Config_joystick_sensitivity)/8;
Controls.sideways_thrust_time += (joy_axis[kc_joystick[17].value]*PlayerCfg.JoystickSensitivity)/8;
else
Controls.sideways_thrust_time -= (joy_axis[kc_joystick[17].value]*Config_joystick_sensitivity)/8;
Controls.sideways_thrust_time -= (joy_axis[kc_joystick[17].value]*PlayerCfg.JoystickSensitivity)/8;
}
// From joystick buttons
@ -1780,9 +1761,9 @@ void controls_read_all()
// From mouse...
if ( (use_mouse)&&(kc_mouse[17].value < 255 )) {
if ( !kc_mouse[18].value ) // If not inverted...
Controls.sideways_thrust_time += (mouse_axis[kc_mouse[17].value]*Config_mouse_sensitivity)/8;
Controls.sideways_thrust_time += (mouse_axis[kc_mouse[17].value]*PlayerCfg.MouseSensitivity)/8;
else
Controls.sideways_thrust_time -= (mouse_axis[kc_mouse[17].value]*Config_mouse_sensitivity)/8;
Controls.sideways_thrust_time -= (mouse_axis[kc_mouse[17].value]*PlayerCfg.MouseSensitivity)/8;
}
}
@ -1803,17 +1784,17 @@ void controls_read_all()
// From joystick...
if ( (use_joystick)&&(kc_joystick[15].value < 255) ) {
if ( !kc_joystick[16].value ) // If not inverted...
Controls.bank_time -= (joy_axis[kc_joystick[15].value]*Config_joystick_sensitivity)/8;
Controls.bank_time -= (joy_axis[kc_joystick[15].value]*PlayerCfg.JoystickSensitivity)/8;
else
Controls.bank_time += (joy_axis[kc_joystick[15].value]*Config_joystick_sensitivity)/8;
Controls.bank_time += (joy_axis[kc_joystick[15].value]*PlayerCfg.JoystickSensitivity)/8;
}
// From mouse...
if ( (use_mouse)&&(kc_mouse[15].value < 255 )) {
if ( !kc_mouse[16].value ) // If not inverted...
Controls.bank_time += (mouse_axis[kc_mouse[15].value]*Config_mouse_sensitivity)/8;
Controls.bank_time += (mouse_axis[kc_mouse[15].value]*PlayerCfg.MouseSensitivity)/8;
else
Controls.bank_time -= (mouse_axis[kc_mouse[15].value]*Config_mouse_sensitivity)/8;
Controls.bank_time -= (mouse_axis[kc_mouse[15].value]*PlayerCfg.MouseSensitivity)/8;
}
}
@ -2068,7 +2049,7 @@ void controls_read_all()
//----------- Clamp values between -FrameTime and FrameTime
// ZICO - remove clamp for pitch and heading if mouselook on and no multiplayer game
if ((Config_control_type != 5) || !GameArg.CtlMouselook || (Game_mode & GM_MULTI) ) {
if ((PlayerCfg.ControlType != 5) || !GameArg.CtlMouselook || (Game_mode & GM_MULTI) ) {
if (Controls.pitch_time > FrameTime/2 ) Controls.pitch_time = FrameTime/2;
if (Controls.heading_time > FrameTime ) Controls.heading_time = FrameTime;
if (Controls.pitch_time < -FrameTime/2 ) Controls.pitch_time = -FrameTime/2;
@ -2104,32 +2085,32 @@ void kc_set_controls()
int i;
for (i=0; i<NUM_KEY_CONTROLS; i++ )
kc_keyboard[i].value = kconfig_settings[0][i];
kc_keyboard[i].value = PlayerCfg.KeySettings[0][i];
if (CONTROL_USING_JOYSTICK) {
for (i=0; i<NUM_JOYSTICK_CONTROLS; i++ ) {
kc_joystick[i].value = kconfig_settings[CONTROL_JOYSTICK][i];
kc_joystick[i].value = PlayerCfg.KeySettings[CONTROL_JOYSTICK][i];
if (kc_joystick[i].type == BT_INVERT ) {
if (kc_joystick[i].value!=1)
kc_joystick[i].value = 0;
kconfig_settings[CONTROL_JOYSTICK][i] = kc_joystick[i].value;
PlayerCfg.KeySettings[CONTROL_JOYSTICK][i] = kc_joystick[i].value;
}
}
}
if (CONTROL_USING_MOUSE) {
for (i=0; i<NUM_MOUSE_CONTROLS; i++ ) {
kc_mouse[i].value = kconfig_settings[CONTROL_MOUSE][i];
kc_mouse[i].value = PlayerCfg.KeySettings[CONTROL_MOUSE][i];
if (kc_mouse[i].type == BT_INVERT ) {
if (kc_mouse[i].value!=1)
kc_mouse[i].value = 0;
kconfig_settings[CONTROL_MOUSE][i] = kc_mouse[i].value;
PlayerCfg.KeySettings[CONTROL_MOUSE][i] = kc_mouse[i].value;
}
}
}
#ifdef D2X_KEYS
for (i=0; i<NUM_D2X_CONTROLS; i++ )
kc_d2x[i].value = kconfig_d2x_settings[i];
kc_d2x[i].value = PlayerCfg.KeySettingsD2X[i];
#endif
}

View file

@ -151,16 +151,14 @@ extern void kconfig(int n, char *title);
#define NUM_D2X_CONTROLS 20
#define MAX_D2X_CONTROLS 40
extern ubyte kconfig_d2x_settings[MAX_D2X_CONTROLS];
extern ubyte default_kconfig_d2x_settings[MAX_D2X_CONTROLS];
extern ubyte DefaultKeySettingsD2X[MAX_D2X_CONTROLS];
#define NUM_KEY_CONTROLS 57
#define NUM_JOYSTICK_CONTROLS 56
#define NUM_MOUSE_CONTROLS 30
#define MAX_CONTROLS 60 // there are actually 48, so this leaves room for more
extern ubyte kconfig_settings[CONTROL_MAX_TYPES][MAX_CONTROLS];
extern ubyte default_kconfig_settings[CONTROL_MAX_TYPES][MAX_CONTROLS];
extern ubyte DefaultKeySettings[CONTROL_MAX_TYPES][MAX_CONTROLS];
extern char *control_text[CONTROL_MAX_TYPES];

View file

@ -118,14 +118,6 @@ extern int Speedtest_on;
#define Speedtest_on 0
#endif
void do_sound_menu();
void do_toggles_menu();
int Player_default_difficulty; // Last difficulty level chosen by the player
int Auto_leveling_on = 1;
int Guided_in_big_window = 0;
int EscortHotKeys=1;
// Function Prototypes added after LINTING
void do_option(int select);
void do_new_game_menu(void);
@ -405,7 +397,7 @@ int do_difficulty_menu()
if (s > -1 ) {
if (s != Difficulty_level)
{
Player_default_difficulty = s;
PlayerCfg.DefaultDifficulty = s;
write_player_file();
}
Difficulty_level = s;
@ -457,7 +449,7 @@ try_again:
}
}
Difficulty_level = Player_default_difficulty;
Difficulty_level = PlayerCfg.DefaultDifficulty;
if (!do_difficulty_menu())
return;
@ -583,19 +575,19 @@ void change_res()
void input_menuset(int nitems, newmenu_item * items, int *last_key, int citem )
{
int i;
int oc_type = Config_control_type;
int oc_type = PlayerCfg.ControlType;
nitems = nitems;
last_key = last_key;
citem = citem;
for (i=0; i<4; i++ )
if (items[i].value) Config_control_type = i;
if (items[i].value) PlayerCfg.ControlType = i;
if (Config_control_type == 2) Config_control_type = CONTROL_MOUSE;
if (Config_control_type == 3) Config_control_type = CONTROL_JOYMOUSE;
if (PlayerCfg.ControlType == 2) PlayerCfg.ControlType = CONTROL_MOUSE;
if (PlayerCfg.ControlType == 3) PlayerCfg.ControlType = CONTROL_JOYMOUSE;
if (oc_type != Config_control_type) {
if (oc_type != PlayerCfg.ControlType) {
kc_set_controls();
}
}
@ -616,33 +608,33 @@ void input_config()
m[7].type = NM_TYPE_MENU; m[7].text = "CUSTOMIZE WEAPON KEYS";
m[8].type = NM_TYPE_TEXT; m[8].text = "";
m[9].type = NM_TYPE_TEXT; m[9].text = "Joystick";
m[10].type = NM_TYPE_SLIDER; m[10].text="Sensitivity"; m[10].value=Config_joystick_sensitivity; m[10].min_value = 0; m[10].max_value = 16;
m[11].type = NM_TYPE_SLIDER; m[11].text="Joystick Deadzone"; m[11].value=joy_deadzone; m[11].min_value=0; m[11].max_value = 16;
m[10].type = NM_TYPE_SLIDER; m[10].text="Sensitivity"; m[10].value=PlayerCfg.JoystickSensitivity; m[10].min_value = 0; m[10].max_value = 16;
m[11].type = NM_TYPE_SLIDER; m[11].text="Joystick Deadzone"; m[11].value=PlayerCfg.JoystickDeadzone; m[11].min_value=0; m[11].max_value = 16;
m[12].type = NM_TYPE_TEXT; m[12].text = "Mouse";
m[13].type = NM_TYPE_SLIDER; m[13].text="Sensitivity"; m[13].value=Config_mouse_sensitivity; m[13].min_value = 0; m[13].max_value = 16;
m[13].type = NM_TYPE_SLIDER; m[13].text="Sensitivity"; m[13].value=PlayerCfg.MouseSensitivity; m[13].min_value = 0; m[13].max_value = 16;
do {
i = Config_control_type;
i = PlayerCfg.ControlType;
if (i == CONTROL_MOUSE) i = 2;
if (i==CONTROL_JOYMOUSE) i = 3;
m[i].value = 1;
i1 = newmenu_do1(NULL, TXT_CONTROLS, nitems, m, input_menuset, i1);
Config_joystick_sensitivity = m[10].value;
joy_deadzone = m[11].value;
Config_mouse_sensitivity = m[13].value;
PlayerCfg.JoystickSensitivity = m[10].value;
PlayerCfg.JoystickDeadzone = m[11].value;
PlayerCfg.MouseSensitivity = m[13].value;
for (j = 0; j <= 3; j++)
if (m[j].value)
Config_control_type = j;
i = Config_control_type;
if (Config_control_type == 2)
Config_control_type = CONTROL_MOUSE;
if (Config_control_type == 3)
Config_control_type = CONTROL_JOYMOUSE;
PlayerCfg.ControlType = j;
i = PlayerCfg.ControlType;
if (PlayerCfg.ControlType == 2)
PlayerCfg.ControlType = CONTROL_MOUSE;
if (PlayerCfg.ControlType == 3)
PlayerCfg.ControlType = CONTROL_JOYMOUSE;
switch (i1) {
case 5:
@ -660,50 +652,6 @@ void input_config()
}
void do_options_menu()
{
newmenu_item m[10];
int i = 0;
do {
m[ 0].type = NM_TYPE_MENU; m[ 0].text="Sound effects & music...";
m[ 1].type = NM_TYPE_TEXT; m[ 1].text="";
#if defined(MACINTOSH) && defined(APPLE_DEMO)
m[ 2].type = NM_TYPE_TEXT; m[ 2].text="";
#else
m[ 2].type = NM_TYPE_MENU; m[ 2].text=TXT_CONTROLS_;
#endif
m[ 3].type = NM_TYPE_TEXT; m[ 3].text="";
m[ 4].type = NM_TYPE_SLIDER;
m[ 4].text = TXT_BRIGHTNESS;
m[ 4].value = gr_palette_get_gamma();
m[ 4].min_value = 0;
m[ 4].max_value = 16;
m[ 5].type = NM_TYPE_MENU; m[ 5].text="Screen resolution...";
m[ 6].type = NM_TYPE_TEXT; m[ 6].text="";
m[ 7].type = NM_TYPE_MENU; m[ 7].text="Primary autoselect ordering...";
m[ 8].type = NM_TYPE_MENU; m[ 8].text="Secondary autoselect ordering...";
m[ 9].type = NM_TYPE_MENU; m[ 9].text="Toggles...";
i = newmenu_do1( NULL, TXT_OPTIONS, sizeof(m)/sizeof(*m), m, options_menuset, i );
switch(i) {
case 0: do_sound_menu(); break;
case 2: input_config(); break;
case 5: change_res(); break;
case 7: ReorderPrimary(); break;
case 8: ReorderSecondary(); break;
case 9: do_toggles_menu(); break;
}
} while( i>-1 );
write_player_file();
}
void set_redbook_volume(int volume);
void sound_menuset(int nitems, newmenu_item * items, int *last_key, int citem )
@ -738,14 +686,14 @@ void sound_menuset(int nitems, newmenu_item * items, int *last_key, int citem )
void do_sound_menu()
{
newmenu_item m[4];
newmenu_item m[4];
int i = 0;
do {
m[ 0].type = NM_TYPE_SLIDER; m[ 0].text=TXT_FX_VOLUME; m[0].value=GameCfg.DigiVolume;m[0].min_value=0; m[0].max_value=8;
m[ 1].type = NM_TYPE_SLIDER; m[ 1].text=(GameArg.SndEnableRedbook?"CD music volume":"MIDI music volume"); m[1].value=(GameArg.SndEnableRedbook?GameCfg.RedbookVolume:GameCfg.MidiVolume);m[1].min_value=0; m[1].max_value=8;
m[ 2].type = NM_TYPE_TEXT; m[ 2].text="";
m[ 3].type = NM_TYPE_CHECK; m[ 3].text=TXT_REVERSE_STEREO; m[3].value=GameCfg.ReverseStereo;
m[ 3].type = NM_TYPE_CHECK; m[ 3].text=TXT_REVERSE_STEREO; m[3].value=GameCfg.ReverseStereo;
i = newmenu_do1( NULL, "Sound Effects & Music", sizeof(m)/sizeof(*m), m, sound_menuset, i );
@ -754,41 +702,59 @@ void do_sound_menu()
} while( i>-1 );
}
void do_graphics_menu()
{
newmenu_item m[8];
int i = 0, j = 0;
do {
m[0].type = NM_TYPE_TEXT; m[0].text="Texture Filtering:";
m[1].type = NM_TYPE_TEXT; m[1].text=" (Requires Game Restart)";
m[2].type = NM_TYPE_RADIO; m[2].text = "None (Classical)"; m[2].value = 0; m[2].group = 0;
m[3].type = NM_TYPE_RADIO; m[3].text = "Bilinear"; m[3].value = 0; m[3].group = 0;
m[4].type = NM_TYPE_RADIO; m[4].text = "Trilinear"; m[4].value = 0; m[4].group = 0;
m[5].type = NM_TYPE_TEXT; m[5].text="";
m[6].type = NM_TYPE_CHECK; m[6].text="Transparency Effects"; m[6].value = PlayerCfg.OglAlphaEffects;
m[7].type = NM_TYPE_CHECK; m[7].text="Vectorial Reticle"; m[7].value = PlayerCfg.OglReticle;
m[GameCfg.TexFilt+2].value=1;
i = newmenu_do1( NULL, "Graphics Options", sizeof(m)/sizeof(*m), m, NULL, i );
for (j = 0; j <= 2; j++)
if (m[j+2].value)
GameCfg.TexFilt = j;
PlayerCfg.OglAlphaEffects = m[6].value;
PlayerCfg.OglReticle = m[7].value;
} while( i>-1 );
}
#define ADD_CHECK(n,txt,v) do { m[n].type=NM_TYPE_CHECK; m[n].text=txt; m[n].value=v;} while (0)
void do_toggles_menu()
void do_misc_menu()
{
#define N_TOGGLE_ITEMS 6
newmenu_item m[N_TOGGLE_ITEMS];
newmenu_item m[7];
int i = 0;
do {
#if defined(MACINTOSH) && defined(USE_ISP)
if (ISpEnabled())
{
m[0].type = NM_TYPE_TEXT; m[0].text = "";
}
else
{
ADD_CHECK(0, "Ship auto-leveling", Auto_leveling_on);
}
#else
ADD_CHECK(0, "Ship auto-leveling", Auto_leveling_on);
#endif
ADD_CHECK(1, "Show reticle", Reticle_on);
ADD_CHECK(2, "Missile view", Missile_view_enabled);
ADD_CHECK(3, "Headlight on when picked up", Headlight_active_default );
ADD_CHECK(4, "Show guided missile in main display", Guided_in_big_window );
ADD_CHECK(5, "Escort robot hot keys",EscortHotKeys);
ADD_CHECK(0, "Ship auto-leveling", PlayerCfg.AutoLeveling);
ADD_CHECK(1, "Show reticle", PlayerCfg.ReticleOn);
ADD_CHECK(2, "Missile view", PlayerCfg.MissileViewEnabled);
ADD_CHECK(3, "Headlight on when picked up", PlayerCfg.HeadlightActiveDefault );
ADD_CHECK(4, "Show guided missile in main display", PlayerCfg.GuidedInBigWindow );
ADD_CHECK(5, "Escort robot hot keys",PlayerCfg.EscortHotKeys);
ADD_CHECK(6, "Persistent Debris",PlayerCfg.PersistentDebris);
i = newmenu_do1( NULL, "Toggles", N_TOGGLE_ITEMS, m, NULL, i );
i = newmenu_do1( NULL, "Gameplay Options", sizeof(m)/sizeof(*m), m, NULL, i );
Auto_leveling_on = m[0].value;
Reticle_on = m[1].value;
Missile_view_enabled = m[2].value;
Headlight_active_default = m[3].value;
Guided_in_big_window = m[4].value;
EscortHotKeys = m[5].value;
PlayerCfg.AutoLeveling = m[0].value;
PlayerCfg.ReticleOn = m[1].value;
PlayerCfg.MissileViewEnabled = m[2].value;
PlayerCfg.HeadlightActiveDefault= m[3].value;
PlayerCfg.GuidedInBigWindow = m[4].value;
PlayerCfg.EscortHotKeys = m[5].value;
PlayerCfg.PersistentDebris = m[6].value;
} while( i>-1 );
@ -865,3 +831,49 @@ void do_ip_manual_join_menu()
} while( choice > -1 );
}
#endif // NETWORK
void do_options_menu()
{
newmenu_item m[11];
int i = 0;
do {
m[ 0].type = NM_TYPE_MENU; m[ 0].text="Sound effects & music...";
m[ 1].type = NM_TYPE_TEXT; m[ 1].text="";
m[ 2].type = NM_TYPE_MENU; m[ 2].text=TXT_CONTROLS_;
m[ 3].type = NM_TYPE_TEXT; m[ 3].text="";
m[ 4].type = NM_TYPE_SLIDER;
m[ 4].text = TXT_BRIGHTNESS;
m[ 4].value = gr_palette_get_gamma();
m[ 4].min_value = 0;
m[ 4].max_value = 16;
m[ 5].type = NM_TYPE_MENU; m[ 5].text="Screen resolution...";
#ifdef OGL
m[ 6].type = NM_TYPE_MENU; m[ 6].text="Graphics Options...";
#else
m[ 6].type = NM_TYPE_TEXT; m[ 6].text="";
#endif
m[ 7].type = NM_TYPE_TEXT; m[ 7].text="";
m[ 8].type = NM_TYPE_MENU; m[ 8].text="Primary autoselect ordering...";
m[ 9].type = NM_TYPE_MENU; m[ 9].text="Secondary autoselect ordering...";
m[10].type = NM_TYPE_MENU; m[10].text="Gameplay Options...";
i = newmenu_do1( NULL, TXT_OPTIONS, sizeof(m)/sizeof(*m), m, options_menuset, i );
switch(i) {
case 0: do_sound_menu(); break;
case 2: input_config(); break;
case 5: change_res(); break;
case 6: do_graphics_menu(); break;
case 8: ReorderPrimary(); break;
case 9: ReorderSecondary(); break;
case 10: do_misc_menu(); break;
}
} while( i>-1 );
write_player_file();
}

View file

@ -35,9 +35,6 @@ extern void d2x_options_menu();
#define STARS_BACKGROUND ((HIRESMODE && cfexist("starsb.pcx"))?"starsb.pcx":cfexist("stars.pcx")?"stars.pcx":"starsb.pcx")
extern char *menu_difficulty_text[];
extern int Player_default_difficulty;
extern int Auto_leveling_on;
extern int Missile_view_enabled;
extern int Escort_view_enabled;
extern int Cockpit_rear_view;

View file

@ -139,7 +139,6 @@ int Network_laser_flags; // Special flags for the shot
int Network_laser_level; // What level
short Network_laser_track; // Who is it tracking?
char Network_message[MAX_MESSAGE_LEN];
char Network_message_macro[4][MAX_MESSAGE_LEN];
int Network_message_reciever=-1;
int sorted_kills[MAX_NUM_NET_PLAYERS];
short kill_matrix[MAX_NUM_NET_PLAYERS][MAX_NUM_NET_PLAYERS];
@ -1072,13 +1071,13 @@ multi_send_macro(int key)
Int3();
}
if (!Network_message_macro[key][0])
if (!PlayerCfg.NetworkMessageMacro[key][0])
{
HUD_init_message(TXT_NO_MACRO);
return;
}
strcpy(Network_message, Network_message_macro[key]);
strcpy(Network_message, PlayerCfg.NetworkMessageMacro[key]);
Network_message_reciever = 100;
HUD_init_message("%s '%s'", TXT_SENDING, Network_message);
@ -1259,7 +1258,7 @@ void multi_define_macro_end()
{
Assert( multi_defining_message > 0 );
strcpy( Network_message_macro[multi_defining_message-1], Network_message );
strcpy( PlayerCfg.NetworkMessageMacro[multi_defining_message-1], Network_message );
write_player_file();
multi_message_index = 0;
@ -4437,7 +4436,7 @@ void multi_add_lifetime_kills ()
oldrank=GetMyNetRanking();
Netlife_kills++;
PlayerCfg.NetlifeKills++;
if (oldrank!=GetMyNetRanking())
{
@ -4464,7 +4463,7 @@ void multi_add_lifetime_killed ()
oldrank=GetMyNetRanking();
Netlife_killed++;
PlayerCfg.NetlifeKilled++;
if (oldrank!=GetMyNetRanking())
{

View file

@ -191,7 +191,6 @@ extern int Network_laser_gun;
extern int Network_laser_fired;
extern int Network_laser_level;
extern int Network_laser_flags;
extern int Netlife_kills,Netlife_killed;
extern int message_length[MULTI_MAX_TYPE+1];
extern char multibuf[MAX_MULTI_MESSAGE_LEN+4];
@ -215,7 +214,6 @@ extern fix Show_kill_list_timer;
// Used to send network messages
extern char Network_message[MAX_MESSAGE_LEN];
extern char Network_message_macro[4][MAX_MESSAGE_LEN];
extern int Network_message_reciever;
// Which player 'owns' each local object for network purposes

View file

@ -178,8 +178,6 @@ int num_active_games = 0;
int PacketsPerSec=10;
int MaxXDataSize=NET_XDATA_SIZE;
int Netlife_kills=0, Netlife_killed=0;
int Network_debug=0;
int Network_active=0;
@ -2444,7 +2442,7 @@ int network_get_game_params()
Netgame.KillGoal=0;
Netgame.PlayTimeAllowed=0;
Netgame.Allow_marker_view=1;
Netgame.difficulty=Player_default_difficulty;
Netgame.difficulty=PlayerCfg.DefaultDifficulty;
Netgame.max_numplayers=MaxNumNetPlayers;
sprintf( Netgame.game_name, "%s%s", Players[Player_num].callsign, TXT_S_GAME );
@ -5077,12 +5075,12 @@ int GetMyNetRanking ()
int rank;
int eff;
if (Netlife_kills+Netlife_killed==0)
if (PlayerCfg.NetlifeKills+PlayerCfg.NetlifeKilled==0)
return (1);
rank=(int) (((float)Netlife_kills/3000.0)*8.0);
rank=(int) (((float)PlayerCfg.NetlifeKills/3000.0)*8.0);
eff=(int)((float)((float)Netlife_kills/((float)Netlife_killed+(float)Netlife_kills))*100.0);
eff=(int)((float)((float)PlayerCfg.NetlifeKills/((float)PlayerCfg.NetlifeKilled+(float)PlayerCfg.NetlifeKills))*100.0);
if (rank>8)
rank=8;

View file

@ -104,6 +104,7 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
#include "editor/editor.h"
#endif
#include "console.h"
#include "playsave.h"
#ifdef MACINTOSH
#pragma global_optimizer off // pretty much sucks...need to look into this
@ -1892,8 +1893,8 @@ int newdemo_read_frame_information()
case ND_EVENT_START_GUIDED:
Newdemo_flying_guided=1;
if ((Newdemo_vcr_state == ND_STATE_PLAYBACK) || (Newdemo_vcr_state == ND_STATE_FASTFORWARD) || (Newdemo_vcr_state == ND_STATE_ONEFRAMEFORWARD)) {
saved_guided_cockpit = Cockpit_mode;
if (Cockpit_mode == CM_FULL_COCKPIT && 1)
saved_guided_cockpit = PlayerCfg.CockpitMode;
if (PlayerCfg.CockpitMode == CM_FULL_COCKPIT && 1)
select_cockpit(CM_STATUS_BAR);
} else if ((Newdemo_vcr_state == ND_STATE_REWINDING) || (Newdemo_vcr_state == ND_STATE_ONEFRAMEBACKWARD)) {
Newdemo_flying_guided=0;
@ -1904,8 +1905,8 @@ int newdemo_read_frame_information()
Newdemo_flying_guided=0;
if ((Newdemo_vcr_state == ND_STATE_REWINDING) || (Newdemo_vcr_state == ND_STATE_ONEFRAMEBACKWARD)) {
Newdemo_flying_guided=1;
saved_guided_cockpit = Cockpit_mode;
if (Cockpit_mode == CM_FULL_COCKPIT && 1)
saved_guided_cockpit = PlayerCfg.CockpitMode;
if (PlayerCfg.CockpitMode == CM_FULL_COCKPIT && 1)
select_cockpit(CM_STATUS_BAR);
} else if ((Newdemo_vcr_state == ND_STATE_PLAYBACK) || (Newdemo_vcr_state == ND_STATE_FASTFORWARD) || (Newdemo_vcr_state == ND_STATE_ONEFRAMEFORWARD)) {
select_cockpit(saved_guided_cockpit);
@ -2064,7 +2065,7 @@ int newdemo_read_frame_information()
case ND_EVENT_LETTERBOX:
if ((Newdemo_vcr_state == ND_STATE_PLAYBACK) || (Newdemo_vcr_state == ND_STATE_FASTFORWARD) || (Newdemo_vcr_state == ND_STATE_ONEFRAMEFORWARD)) {
saved_letter_cockpit = Cockpit_mode;
saved_letter_cockpit = PlayerCfg.CockpitMode;
select_cockpit(CM_LETTERBOX);
} else if ((Newdemo_vcr_state == ND_STATE_REWINDING) || (Newdemo_vcr_state == ND_STATE_ONEFRAMEBACKWARD))
select_cockpit(saved_letter_cockpit);
@ -2077,8 +2078,8 @@ int newdemo_read_frame_information()
}
case ND_EVENT_REARVIEW:
if ((Newdemo_vcr_state == ND_STATE_PLAYBACK) || (Newdemo_vcr_state == ND_STATE_FASTFORWARD) || (Newdemo_vcr_state == ND_STATE_ONEFRAMEFORWARD)) {
saved_rearview_cockpit = Cockpit_mode;
if (Cockpit_mode == CM_FULL_COCKPIT)
saved_rearview_cockpit = PlayerCfg.CockpitMode;
if (PlayerCfg.CockpitMode == CM_FULL_COCKPIT)
select_cockpit(CM_REAR_VIEW);
Rear_view=1;
} else if ((Newdemo_vcr_state == ND_STATE_REWINDING) || (Newdemo_vcr_state == ND_STATE_ONEFRAMEBACKWARD)) {
@ -2091,7 +2092,7 @@ int newdemo_read_frame_information()
case ND_EVENT_RESTORE_COCKPIT:
if ((Newdemo_vcr_state == ND_STATE_REWINDING) || (Newdemo_vcr_state == ND_STATE_ONEFRAMEBACKWARD)) {
saved_letter_cockpit = Cockpit_mode;
saved_letter_cockpit = PlayerCfg.CockpitMode;
select_cockpit(CM_LETTERBOX);
} else if ((Newdemo_vcr_state == ND_STATE_PLAYBACK) || (Newdemo_vcr_state == ND_STATE_FASTFORWARD) || (Newdemo_vcr_state == ND_STATE_ONEFRAMEFORWARD))
select_cockpit(saved_letter_cockpit);
@ -2100,8 +2101,8 @@ int newdemo_read_frame_information()
case ND_EVENT_RESTORE_REARVIEW:
if ((Newdemo_vcr_state == ND_STATE_REWINDING) || (Newdemo_vcr_state == ND_STATE_ONEFRAMEBACKWARD)) {
saved_rearview_cockpit = Cockpit_mode;
if (Cockpit_mode == CM_FULL_COCKPIT)
saved_rearview_cockpit = PlayerCfg.CockpitMode;
if (PlayerCfg.CockpitMode == CM_FULL_COCKPIT)
select_cockpit(CM_REAR_VIEW);
Rear_view=1;
} else if ((Newdemo_vcr_state == ND_STATE_PLAYBACK) || (Newdemo_vcr_state == ND_STATE_FASTFORWARD) || (Newdemo_vcr_state == ND_STATE_ONEFRAMEFORWARD)) {
@ -3269,7 +3270,7 @@ void newdemo_start_playback(char * filename)
Newdemo_state = ND_STATE_PLAYBACK;
Newdemo_vcr_state = ND_STATE_PLAYBACK;
Newdemo_old_cockpit = Cockpit_mode;
Newdemo_old_cockpit = PlayerCfg.CockpitMode;
Newdemo_size = PHYSFS_fileLength(infile);
nd_bad_read = 0;
Newdemo_at_eof = 0;
@ -3277,8 +3278,8 @@ void newdemo_start_playback(char * filename)
Newdemo_players_cloaked = 0;
playback_style = NORMAL_PLAYBACK;
Function_mode = FMODE_GAME;
Cockpit_3d_view[0] = CV_NONE; //turn off 3d views on cockpit
Cockpit_3d_view[1] = CV_NONE; //turn off 3d views on cockpit
PlayerCfg.Cockpit3DView[0] = CV_NONE; //turn off 3d views on cockpit
PlayerCfg.Cockpit3DView[1] = CV_NONE; //turn off 3d views on cockpit
HUD_clear_messages();
newdemo_playback_one_frame(); // this one loads new level
newdemo_playback_one_frame(); // get all of the objects to renderb game
@ -3293,7 +3294,7 @@ void newdemo_stop_playback()
change_playernum_to(0); //this is reality
#endif
strncpy(Players[Player_num].callsign, nd_save_callsign, CALLSIGN_LEN);
Cockpit_mode = Newdemo_old_cockpit;
PlayerCfg.CockpitMode = Newdemo_old_cockpit;
Rear_view=0;
Game_mode = GM_GAME_OVER;
Function_mode = FMODE_MENU;

View file

@ -71,6 +71,7 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
#include "strutil.h"
#include "vers_id.h"
#include "timer.h"
#include "playsave.h"
#ifdef OGL
#include "ogl_init.h"
@ -542,7 +543,7 @@ int check_button_press()
{
int i;
switch (Config_control_type) {
switch (PlayerCfg.ControlType) {
case CONTROL_JOYSTICK:
case CONTROL_FLIGHTSTICK_PRO:
case CONTROL_THRUSTMASTER_FCS:
@ -567,7 +568,7 @@ int check_button_press()
break;
default:
Error("Bad control type (Config_control_type):%i",Config_control_type);
Error("Bad control type (PlayerCfg.ControlType):%i",PlayerCfg.ControlType);
}
return 0;

View file

@ -74,6 +74,7 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
#include "piggy.h"
#include "switch.h"
#include "gameseq.h"
#include "playsave.h"
#ifdef EDITOR
#include "editor/editor.h"
@ -1682,7 +1683,7 @@ void start_player_death_sequence(object *player)
Dead_player_camera = Viewer;
}
cockpit_mode_save = Cockpit_mode;
cockpit_mode_save = PlayerCfg.CockpitMode;
select_cockpit(CM_LETTERBOX);
if (Newdemo_state == ND_STATE_RECORDING)
newdemo_record_letterbox();
@ -2025,7 +2026,7 @@ void object_move_all()
obj_delete_all_that_should_be_dead();
if (Auto_leveling_on)
if (PlayerCfg.AutoLeveling)
ConsoleObject->mtype.phys_info.flags |= PF_LEVELLING;
else
ConsoleObject->mtype.phys_info.flags &= ~PF_LEVELLING;

View file

@ -35,20 +35,16 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
#else
#include <physfs/physfs.h>
#endif
#include "error.h"
#include "strutil.h"
#include "game.h"
#include "gameseq.h"
#include "player.h"
#include "playsave.h"
#include "joy.h"
#include "kconfig.h"
#include "digi.h"
#include "newmenu.h"
#include "palette.h"
#include "multi.h"
#include "menu.h"
#include "config.h"
#include "text.h"
@ -58,34 +54,12 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
#include "powerup.h"
#include "makesig.h"
#include "byteswap.h"
#include "escort.h"
#include "u_mem.h"
#include "strio.h"
#include "physfsx.h"
#include "vers_id.h"
#include "newdemo.h"
#define SAVE_FILE_ID MAKE_SIG('D','P','L','R')
#if defined(_WIN32_WCE)
# define errno -1
# define ENOENT -1
# define strerror(x) "Unknown Error"
#endif
int get_lifetime_checksum (int a,int b);
typedef struct hli {
char shortname[9];
ubyte level_num;
} hli;
short n_highest_levels;
hli highest_levels[MAX_MISSIONS];
#define PLAYER_FILE_VERSION 25 //increment this every time the player file changes
//version 5 -> 6: added new highest level information
//version 6 -> 7: stripped out the old saved_game array.
//version 7 -> 8: added reticle flag, & window size
@ -107,50 +81,62 @@ hli highest_levels[MAX_MISSIONS];
//version 23 -> 24: add name of joystick for windows version.
//version 24 -> 25: add d2x keys array
#define COMPATIBLE_PLAYER_FILE_VERSION 17
#define SAVE_FILE_ID MAKE_SIG('D','P','L','R')
#define PLAYER_FILE_VERSION 25 //increment this every time the player file changes
#define COMPATIBLE_PLAYER_FILE_VERSION 17
int Default_leveling_on=1;
extern ubyte SecondaryOrder[],PrimaryOrder[];
struct player_config PlayerCfg;
int get_lifetime_checksum (int a,int b);
extern void InitWeaponOrdering();
int new_player_config()
{
int i,j,control_choice;
int i,j;
int mct=CONTROL_MAX_TYPES;
mct--;
InitWeaponOrdering (); //setup default weapon priorities
control_choice = Config_control_type; // Assume keyboard
PlayerCfg.ControlType=CONTROL_NONE; // Assume keyboard
InitWeaponOrdering (); //setup default weapon prioritiess
for (i=0;i<CONTROL_MAX_TYPES; i++ )
for (j=0;j<MAX_CONTROLS; j++ )
kconfig_settings[i][j] = default_kconfig_settings[i][j];
PlayerCfg.KeySettings[i][j] = DefaultKeySettings[i][j];
for(i=0; i < MAX_D2X_CONTROLS; i++)
kconfig_d2x_settings[i] = default_kconfig_d2x_settings[i];
PlayerCfg.KeySettingsD2X[i] = DefaultKeySettingsD2X[i];
kc_set_controls();
Config_control_type = control_choice;
Player_default_difficulty = 1;
Auto_leveling_on = Default_leveling_on = 1;
n_highest_levels = 1;
highest_levels[0].shortname[0] = 0; //no name for mission 0
highest_levels[0].level_num = 1; //was highest level in old struct
Config_joystick_sensitivity = 8;
Config_mouse_sensitivity = 8;
joy_deadzone = 0;
Cockpit_3d_view[0]=CV_NONE;
Cockpit_3d_view[1]=CV_NONE;
PlayerCfg.DefaultDifficulty = 1;
PlayerCfg.AutoLeveling = 1;
PlayerCfg.NHighestLevels = 1;
PlayerCfg.HighestLevels[0].Shortname[0] = 0; //no name for mission 0
PlayerCfg.HighestLevels[0].LevelNum = 1; //was highest level in old struct
PlayerCfg.JoystickSensitivity = 8;
PlayerCfg.MouseSensitivity = 8;
PlayerCfg.JoystickDeadzone = 0;
PlayerCfg.CockpitMode = CM_FULL_COCKPIT;
PlayerCfg.Cockpit3DView[0]=CV_NONE;
PlayerCfg.Cockpit3DView[1]=CV_NONE;
PlayerCfg.ReticleOn = 1;
PlayerCfg.MissileViewEnabled = 1;
PlayerCfg.HeadlightActiveDefault = 1;
PlayerCfg.GuidedInBigWindow = 0;
strcpy(PlayerCfg.GuidebotName,"GUIDE-BOT");
strcpy(PlayerCfg.GuidebotNameReal,"GUIDE-BOT");
PlayerCfg.HudMode = 0;
PlayerCfg.EscortHotKeys = 1;
PlayerCfg.PersistentDebris = 0;
PlayerCfg.OglAlphaEffects = 0;
PlayerCfg.OglReticle = 0;
PlayerCfg.OglPRShot = 0;
// Default taunt macros
#ifdef NETWORK
strcpy(Network_message_macro[0], "Why can't we all just get along?");
strcpy(Network_message_macro[1], "Hey, I got a present for ya");
strcpy(Network_message_macro[2], "I got a hankerin' for a spankerin'");
strcpy(Network_message_macro[3], "This one's headed for Uranus");
Netlife_kills=0; Netlife_killed=0;
strcpy(PlayerCfg.NetworkMessageMacro[0], "Why can't we all just get along?");
strcpy(PlayerCfg.NetworkMessageMacro[1], "Hey, I got a present for ya");
strcpy(PlayerCfg.NetworkMessageMacro[2], "I got a hankerin' for a spankerin'");
strcpy(PlayerCfg.NetworkMessageMacro[3], "This one's headed for Uranus");
PlayerCfg.NetlifeKills=0; PlayerCfg.NetlifeKilled=0;
#endif
return 1;
@ -183,7 +169,7 @@ int read_player_d2x(char *filename)
while(!strstr(word,"END") && !PHYSFS_eof(f))
{
if(!strcmp(word,"DEADZONE"))
sscanf(line,"%i",&joy_deadzone);
sscanf(line,"%i",&PlayerCfg.JoystickDeadzone);
d_free(word);
cfgets(line,50,f);
word=splitword(line,'=');
@ -203,7 +189,7 @@ int read_player_d2x(char *filename)
{
int tmp;
sscanf(line,"%i",&tmp);
Config_mouse_sensitivity = (ubyte) tmp;
PlayerCfg.MouseSensitivity = (ubyte) tmp;
}
d_free(word);
cfgets(line,50,f);
@ -211,6 +197,63 @@ int read_player_d2x(char *filename)
strupr(word);
}
}
else if (strstr(word,"COCKPIT"))
{
d_free(word);
cfgets(line,50,f);
word=splitword(line,'=');
strupr(word);
while(!strstr(word,"END") && !PHYSFS_eof(f))
{
if(!strcmp(word,"HUD"))
sscanf(line,"%i",&PlayerCfg.HudMode);
d_free(word);
cfgets(line,50,f);
word=splitword(line,'=');
strupr(word);
}
}
else if (strstr(word,"TOGGLES"))
{
d_free(word);
cfgets(line,50,f);
word=splitword(line,'=');
strupr(word);
while(!strstr(word,"END") && !PHYSFS_eof(f))
{
if(!strcmp(word,"ESCORTHOTKEYS"))
sscanf(line,"%i",&PlayerCfg.EscortHotKeys);
else if(!strcmp(word,"PERSISTENTDEBRIS"))
sscanf(line,"%i",&PlayerCfg.PersistentDebris);
d_free(word);
cfgets(line,50,f);
word=splitword(line,'=');
strupr(word);
}
}
else if (strstr(word,"OPENGL"))
{
d_free(word);
cfgets(line,50,f);
word=splitword(line,'=');
strupr(word);
while(!strstr(word,"END") && !PHYSFS_eof(f))
{
if(!strcmp(word,"OGLALPHAEFFECTS"))
sscanf(line,"%i",&PlayerCfg.OglAlphaEffects);
else if(!strcmp(word,"OGLRETICLE"))
sscanf(line,"%i",&PlayerCfg.OglReticle);
else if(!strcmp(word,"OGLPRSHOT"))
sscanf(line,"%i",&PlayerCfg.OglPRShot);
d_free(word);
cfgets(line,50,f);
word=splitword(line,'=');
strupr(word);
}
}
else if (strstr(word,"END") || PHYSFS_eof(f))
{
Stop=1;
@ -255,17 +298,29 @@ int write_player_d2x(char *filename)
if(fout)
{
PHYSFSX_printf(fout, "[D2X OPTIONS]\n");
PHYSFSX_printf(fout, "[mouse]\n");
PHYSFSX_printf(fout, "sensitivity=%d\n",Config_mouse_sensitivity);
PHYSFSX_printf(fout, "[end]\n");
PHYSFSX_printf(fout, "[joystick]\n");
PHYSFSX_printf(fout, "deadzone=%d\n", joy_deadzone);
PHYSFSX_printf(fout, "[end]\n");
PHYSFSX_printf(fout, "[plx version]\n");
PHYSFSX_printf(fout, "plx version=%s\n", VERSION);
PHYSFSX_printf(fout, "[end]\n");
PHYSFSX_printf(fout, "[end]\n");
PHYSFSX_printf(fout,"[D2X OPTIONS]\n");
PHYSFSX_printf(fout,"[mouse]\n");
PHYSFSX_printf(fout,"sensitivity=%d\n",PlayerCfg.MouseSensitivity);
PHYSFSX_printf(fout,"[end]\n");
PHYSFSX_printf(fout,"[joystick]\n");
PHYSFSX_printf(fout,"deadzone=%d\n", PlayerCfg.JoystickDeadzone);
PHYSFSX_printf(fout,"[end]\n");
PHYSFSX_printf(fout,"[cockpit]\n");
PHYSFSX_printf(fout,"hud=%i\n",PlayerCfg.HudMode);
PHYSFSX_printf(fout,"[end]\n");
PHYSFSX_printf(fout,"[toggles]\n");
PHYSFSX_printf(fout,"escorthotkeys=%i\n",PlayerCfg.EscortHotKeys);
PHYSFSX_printf(fout,"persistentdebris=%i\n",PlayerCfg.PersistentDebris);
PHYSFSX_printf(fout,"[end]\n");
PHYSFSX_printf(fout,"[opengl]\n");
PHYSFSX_printf(fout,"oglaplhaeffects=%i\n",PlayerCfg.OglAlphaEffects);
PHYSFSX_printf(fout,"oglreticle=%i\n",PlayerCfg.OglReticle);
PHYSFSX_printf(fout,"oglprshot=%i\n",PlayerCfg.OglPRShot);
PHYSFSX_printf(fout,"[end]\n");
PHYSFSX_printf(fout,"[plx version]\n");
PHYSFSX_printf(fout,"plx version=%s\n", VERSION);
PHYSFSX_printf(fout,"[end]\n");
PHYSFSX_printf(fout,"[end]\n");
PHYSFS_close(fout);
if(rc==0)
@ -280,16 +335,8 @@ int write_player_d2x(char *filename)
}
extern int Guided_in_big_window;
//this length must match the value in escort.c
#define GUIDEBOT_NAME_LEN 9
extern char guidebot_name[];
extern char real_guidebot_name[];
ubyte control_type_dos,control_type_win;
//read in the player's saved games. returns errno (0 == no error)
int read_player_file()
{
@ -311,6 +358,8 @@ int read_player_file()
if (!file)
goto read_player_file_failed;
new_player_config(); // Set defaults!
PHYSFS_readSLE32(file, &id);
if (id!=SAVE_FILE_ID) {
@ -334,27 +383,25 @@ int read_player_file()
}
PHYSFS_seek(file,PHYSFS_tell(file)+2*sizeof(short)); //skip Game_window_w,Game_window_h
Player_default_difficulty = cfile_read_byte(file);
Default_leveling_on = cfile_read_byte(file);
Reticle_on = cfile_read_byte(file);
Cockpit_mode = cfile_read_byte(file);
PlayerCfg.DefaultDifficulty = cfile_read_byte(file);
PlayerCfg.AutoLeveling = cfile_read_byte(file);
PlayerCfg.ReticleOn = cfile_read_byte(file);
PlayerCfg.CockpitMode = cfile_read_byte(file);
PHYSFS_seek(file,PHYSFS_tell(file)+sizeof(sbyte)); //skip Default_display_mode
Missile_view_enabled = cfile_read_byte(file);
Headlight_active_default = cfile_read_byte(file);
Guided_in_big_window = cfile_read_byte(file);
PlayerCfg.MissileViewEnabled = cfile_read_byte(file);
PlayerCfg.HeadlightActiveDefault = cfile_read_byte(file);
PlayerCfg.GuidedInBigWindow = cfile_read_byte(file);
if (player_file_version >= 19)
PHYSFS_seek(file,PHYSFS_tell(file)+sizeof(sbyte)); //skip Automap_always_hires
Auto_leveling_on = Default_leveling_on;
//read new highest level info
n_highest_levels = cfile_read_short(file);
PlayerCfg.NHighestLevels = cfile_read_short(file);
if (swap)
n_highest_levels = SWAPSHORT(n_highest_levels);
Assert(n_highest_levels <= MAX_MISSIONS);
PlayerCfg.NHighestLevels = SWAPSHORT(PlayerCfg.NHighestLevels);
Assert(PlayerCfg.NHighestLevels <= MAX_MISSIONS);
if (PHYSFS_read(file, highest_levels, sizeof(hli), n_highest_levels) != n_highest_levels)
if (PHYSFS_read(file, PlayerCfg.HighestLevels, sizeof(hli), PlayerCfg.NHighestLevels) != PlayerCfg.NHighestLevels)
goto read_player_file_failed;
//read taunt macros
@ -365,7 +412,7 @@ int read_player_file()
len = MAX_MESSAGE_LEN;
for (i = 0; i < 4; i++)
if (PHYSFS_read(file, Network_message_macro[i], len, 1) != 1)
if (PHYSFS_read(file, PlayerCfg.NetworkMessageMacro[i], len, 1) != 1)
goto read_player_file_failed;
#else
char dummy[4][MAX_MESSAGE_LEN];
@ -378,31 +425,31 @@ int read_player_file()
{
int n_control_types = (player_file_version<20)?7:CONTROL_MAX_TYPES;
if (PHYSFS_read(file, kconfig_settings, MAX_CONTROLS*n_control_types, 1) != 1)
if (PHYSFS_read(file, PlayerCfg.KeySettings, MAX_CONTROLS*n_control_types, 1) != 1)
goto read_player_file_failed;
else if (PHYSFS_read(file, (ubyte *)&control_type_dos, sizeof(ubyte), 1) != 1)
goto read_player_file_failed;
else if (player_file_version >= 21 && PHYSFS_read(file, (ubyte *)&control_type_win, sizeof(ubyte), 1) != 1)
goto read_player_file_failed;
else if (PHYSFS_read(file, &Config_joystick_sensitivity, sizeof(ubyte), 1) !=1 )
else if (PHYSFS_read(file, &PlayerCfg.JoystickSensitivity, sizeof(ubyte), 1) !=1 )
goto read_player_file_failed;
Config_control_type = control_type_dos;
PlayerCfg.ControlType = control_type_dos;
for (i=0;i<11;i++)
{
PrimaryOrder[i] = cfile_read_byte(file);
SecondaryOrder[i] = cfile_read_byte(file);
PlayerCfg.PrimaryOrder[i] = cfile_read_byte(file);
PlayerCfg.SecondaryOrder[i] = cfile_read_byte(file);
}
if (player_file_version>=16)
{
PHYSFS_readSLE32(file, &Cockpit_3d_view[0]);
PHYSFS_readSLE32(file, &Cockpit_3d_view[1]);
PHYSFS_readSLE32(file, &PlayerCfg.Cockpit3DView[0]);
PHYSFS_readSLE32(file, &PlayerCfg.Cockpit3DView[1]);
if (swap)
{
Cockpit_3d_view[0] = SWAPINT(Cockpit_3d_view[0]);
Cockpit_3d_view[1] = SWAPINT(Cockpit_3d_view[1]);
PlayerCfg.Cockpit3DView[0] = SWAPINT(PlayerCfg.Cockpit3DView[0]);
PlayerCfg.Cockpit3DView[1] = SWAPINT(PlayerCfg.Cockpit3DView[1]);
}
}
@ -413,11 +460,11 @@ int read_player_file()
if (player_file_version>=22)
{
#ifdef NETWORK
PHYSFS_readSLE32(file, &Netlife_kills);
PHYSFS_readSLE32(file, &Netlife_killed);
PHYSFS_readSLE32(file, &PlayerCfg.NetlifeKills);
PHYSFS_readSLE32(file, &PlayerCfg.NetlifeKilled);
if (swap) {
Netlife_kills = SWAPINT(Netlife_kills);
Netlife_killed = SWAPINT(Netlife_killed);
PlayerCfg.NetlifeKills = SWAPINT(PlayerCfg.NetlifeKills);
PlayerCfg.NetlifeKilled = SWAPINT(PlayerCfg.NetlifeKilled);
}
#else
{
@ -430,7 +477,7 @@ int read_player_file()
#ifdef NETWORK
else
{
Netlife_kills=0; Netlife_killed=0;
PlayerCfg.NetlifeKills=0; PlayerCfg.NetlifeKilled=0;
}
#endif
@ -440,9 +487,9 @@ int read_player_file()
if (swap)
i = SWAPINT(i);
#ifdef NETWORK
if (i!=get_lifetime_checksum (Netlife_kills,Netlife_killed))
if (i!=get_lifetime_checksum (PlayerCfg.NetlifeKills,PlayerCfg.NetlifeKilled))
{
Netlife_kills=0; Netlife_killed=0;
PlayerCfg.NetlifeKills=0; PlayerCfg.NetlifeKilled=0;
nm_messagebox(NULL, 1, "Shame on me", "Trying to cheat eh?");
rewrite_it=1;
}
@ -451,11 +498,11 @@ int read_player_file()
//read guidebot name
if (player_file_version >= 18)
PHYSFSX_readString(file, guidebot_name);
PHYSFSX_readString(file, PlayerCfg.GuidebotName);
else
strcpy(guidebot_name,"GUIDE-BOT");
strcpy(PlayerCfg.GuidebotName,"GUIDE-BOT");
strcpy(real_guidebot_name,guidebot_name);
strcpy(PlayerCfg.GuidebotNameReal,PlayerCfg.GuidebotName);
{
char buf[128];
@ -465,10 +512,10 @@ int read_player_file()
}
if (player_file_version >= 25)
PHYSFS_read(file, kconfig_d2x_settings, MAX_D2X_CONTROLS, 1);
PHYSFS_read(file, PlayerCfg.KeySettingsD2X, MAX_D2X_CONTROLS, 1);
else
for(i=0; i < MAX_D2X_CONTROLS; i++)
kconfig_d2x_settings[i] = default_kconfig_d2x_settings[i];
PlayerCfg.KeySettingsD2X[i] = DefaultKeySettingsD2X[i];
if (!PHYSFS_close(file))
goto read_player_file_failed;
@ -497,19 +544,19 @@ int find_hli_entry()
{
int i;
for (i=0;i<n_highest_levels;i++)
if (!stricmp(highest_levels[i].shortname, Current_mission_filename))
for (i=0;i<PlayerCfg.NHighestLevels;i++)
if (!stricmp(PlayerCfg.HighestLevels[i].Shortname, Current_mission_filename))
break;
if (i==n_highest_levels) { //not found. create entry
if (i==PlayerCfg.NHighestLevels) { //not found. create entry
if (i==MAX_MISSIONS)
i--; //take last entry
else
n_highest_levels++;
PlayerCfg.NHighestLevels++;
strcpy(highest_levels[i].shortname, Current_mission_filename);
highest_levels[i].level_num = 0;
strcpy(PlayerCfg.HighestLevels[i].Shortname, Current_mission_filename);
PlayerCfg.HighestLevels[i].LevelNum = 0;
}
return i;
@ -526,8 +573,8 @@ void set_highest_level(int levelnum)
i = find_hli_entry();
if (levelnum > highest_levels[i].level_num)
highest_levels[i].level_num = levelnum;
if (levelnum > PlayerCfg.HighestLevels[i].LevelNum)
PlayerCfg.HighestLevels[i].LevelNum = levelnum;
write_player_file();
}
@ -540,12 +587,12 @@ int get_highest_level(void)
read_player_file();
#ifndef SATURN
if (strlen(Current_mission_filename)==0 ) {
for (i=0;i<n_highest_levels;i++)
if (!stricmp(highest_levels[i].shortname, "DESTSAT")) // Destination Saturn.
highest_saturn_level = highest_levels[i].level_num;
for (i=0;i<PlayerCfg.NHighestLevels;i++)
if (!stricmp(PlayerCfg.HighestLevels[i].Shortname, "DESTSAT")) // Destination Saturn.
highest_saturn_level = PlayerCfg.HighestLevels[i].LevelNum;
}
#endif
i = highest_levels[find_hli_entry()].level_num;
i = PlayerCfg.HighestLevels[find_hli_entry()].LevelNum;
if ( highest_saturn_level > i )
i = highest_saturn_level;
return i;
@ -577,23 +624,23 @@ int write_player_file()
PHYSFS_seek(file,PHYSFS_tell(file)+2*(sizeof(PHYSFS_uint16))); // skip Game_window_w, Game_window_h
PHYSFSX_writeU8(file, Player_default_difficulty);
PHYSFSX_writeU8(file, Auto_leveling_on);
PHYSFSX_writeU8(file, Reticle_on);
PHYSFSX_writeU8(file, (Cockpit_mode==1?0:Cockpit_mode));
PHYSFSX_writeU8(file, PlayerCfg.DefaultDifficulty);
PHYSFSX_writeU8(file, PlayerCfg.AutoLeveling);
PHYSFSX_writeU8(file, PlayerCfg.ReticleOn);
PHYSFSX_writeU8(file, (PlayerCfg.CockpitMode==1?0:PlayerCfg.CockpitMode));
PHYSFS_seek(file,PHYSFS_tell(file)+sizeof(PHYSFS_uint8)); // skip Default_display_mode
PHYSFSX_writeU8(file, Missile_view_enabled);
PHYSFSX_writeU8(file, Headlight_active_default);
PHYSFSX_writeU8(file, Guided_in_big_window);
PHYSFSX_writeU8(file, PlayerCfg.MissileViewEnabled);
PHYSFSX_writeU8(file, PlayerCfg.HeadlightActiveDefault);
PHYSFSX_writeU8(file, PlayerCfg.GuidedInBigWindow);
PHYSFS_seek(file,PHYSFS_tell(file)+sizeof(PHYSFS_uint8)); // skip Automap_always_hires
//write higest level info
PHYSFS_writeULE16(file, n_highest_levels);
if ((PHYSFS_write(file, highest_levels, sizeof(hli), n_highest_levels) != n_highest_levels))
PHYSFS_writeULE16(file, PlayerCfg.NHighestLevels);
if ((PHYSFS_write(file, PlayerCfg.HighestLevels, sizeof(hli), PlayerCfg.NHighestLevels) != PlayerCfg.NHighestLevels))
goto write_player_file_failed;
#ifdef NETWORK
if ((PHYSFS_write(file, Network_message_macro, MAX_MESSAGE_LEN, 4) != 4))
if ((PHYSFS_write(file, PlayerCfg.NetworkMessageMacro, MAX_MESSAGE_LEN, 4) != 4))
goto write_player_file_failed;
#else
{
@ -607,30 +654,30 @@ int write_player_file()
//write kconfig info
{
control_type_dos = Config_control_type;
control_type_dos = PlayerCfg.ControlType;
if (PHYSFS_write(file, kconfig_settings, MAX_CONTROLS*CONTROL_MAX_TYPES, 1) != 1)
if (PHYSFS_write(file, PlayerCfg.KeySettings, MAX_CONTROLS*CONTROL_MAX_TYPES, 1) != 1)
goto write_player_file_failed;
else if (PHYSFS_write(file, &control_type_dos, sizeof(ubyte), 1) != 1)
goto write_player_file_failed;
else if (PHYSFS_write(file, &control_type_win, sizeof(ubyte), 1) != 1)
goto write_player_file_failed;
else if (PHYSFS_write(file, &Config_joystick_sensitivity, sizeof(ubyte), 1) != 1)
else if (PHYSFS_write(file, &PlayerCfg.JoystickSensitivity, sizeof(ubyte), 1) != 1)
goto write_player_file_failed;
for (i = 0; i < 11; i++)
{
PHYSFS_write(file, &PrimaryOrder[i], sizeof(ubyte), 1);
PHYSFS_write(file, &SecondaryOrder[i], sizeof(ubyte), 1);
PHYSFS_write(file, &PlayerCfg.PrimaryOrder[i], sizeof(ubyte), 1);
PHYSFS_write(file, &PlayerCfg.SecondaryOrder[i], sizeof(ubyte), 1);
}
PHYSFS_writeULE32(file, Cockpit_3d_view[0]);
PHYSFS_writeULE32(file, Cockpit_3d_view[1]);
PHYSFS_writeULE32(file, PlayerCfg.Cockpit3DView[0]);
PHYSFS_writeULE32(file, PlayerCfg.Cockpit3DView[1]);
#ifdef NETWORK
PHYSFS_writeULE32(file, Netlife_kills);
PHYSFS_writeULE32(file, Netlife_killed);
i=get_lifetime_checksum (Netlife_kills,Netlife_killed);
PHYSFS_writeULE32(file, PlayerCfg.NetlifeKills);
PHYSFS_writeULE32(file, PlayerCfg.NetlifeKilled);
i=get_lifetime_checksum (PlayerCfg.NetlifeKills,PlayerCfg.NetlifeKilled);
#else
PHYSFS_writeULE32(file, 0);
PHYSFS_writeULE32(file, 0);
@ -640,7 +687,7 @@ int write_player_file()
}
//write guidebot name
PHYSFSX_writeString(file, real_guidebot_name);
PHYSFSX_writeString(file, PlayerCfg.GuidebotNameReal);
{
char buf[128];
@ -648,7 +695,7 @@ int write_player_file()
PHYSFSX_writeString(file, buf); // Write out current joystick for player.
}
PHYSFS_write(file, kconfig_d2x_settings, MAX_D2X_CONTROLS, 1);
PHYSFS_write(file, PlayerCfg.KeySettingsD2X, MAX_D2X_CONTROLS, 1);
if (!PHYSFS_close(file))
goto write_player_file_failed;
@ -666,18 +713,6 @@ int write_player_file()
return -1;
}
//update the player's highest level. returns errno (0 == no error)
int update_player_file()
{
int ret;
if ((ret=read_player_file()) != EZERO)
if (ret != ENOENT) //if file doesn't exist, that's ok
return ret;
return write_player_file();
}
int get_lifetime_checksum (int a,int b)
{
int num;

View file

@ -21,18 +21,62 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
#ifndef _PLAYSAVE_H
#define _PLAYSAVE_H
#include "kconfig.h"
#include "mission.h"
#include "weapon.h"
#include "multi.h"
#include "escort.h"
#define N_SAVE_SLOTS 10
#define GAME_NAME_LEN 25 // +1 for terminating zero = 26
typedef struct hli {
char Shortname[9];
ubyte LevelNum;
} hli;
// FIXME!!! NOW THINK AGAIN IF ALL NEW PARTS ARE SOMEHOW ACCESSIBLE FROM MENUS!!!
typedef struct player_config
{
ubyte ControlType;
ubyte PrimaryOrder[MAX_PRIMARY_WEAPONS+1];
ubyte SecondaryOrder[MAX_SECONDARY_WEAPONS+1];
ubyte KeySettings[CONTROL_MAX_TYPES][MAX_CONTROLS];
ubyte KeySettingsD2X[MAX_D2X_CONTROLS];
int DefaultDifficulty;
int AutoLeveling;
short NHighestLevels;
hli HighestLevels[MAX_MISSIONS];
ubyte MouseSensitivity;
ubyte JoystickSensitivity;
int JoystickDeadzone;
int CockpitMode;
int Cockpit3DView[2];
char NetworkMessageMacro[4][MAX_MESSAGE_LEN];
int NetlifeKills;
int NetlifeKilled;
ubyte ReticleOn;
int MissileViewEnabled;
int HeadlightActiveDefault;
int GuidedInBigWindow;
char GuidebotName[GUIDEBOT_NAME_LEN+1];
char GuidebotNameReal[GUIDEBOT_NAME_LEN+1];
int HudMode;
int EscortHotKeys;
int PersistentDebris;
int OglAlphaEffects;
int OglReticle;
int OglPRShot;
} __attribute__ ((packed)) player_config;
extern struct player_config PlayerCfg;
#ifndef EZERO
#define EZERO 0
#endif
extern int Default_leveling_on;
// update the player's highest level. returns errno (0 == no error)
int update_player_file();
// Used to save kconfig values to disk.
int write_player_file();

View file

@ -55,6 +55,7 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
#include "gr.h" // for powerup outline drawing
#include "editor/editor.h"
#endif
#include "playsave.h"
int N_powerup_types = 0;
powerup_type_info Powerup_info[MAX_POWERUP_TYPES];
@ -229,7 +230,6 @@ extern char GetKeyValue(char);
extern void check_to_use_primary(int);
extern void multi_send_got_flag (char);
int Headlight_active_default=1; //is headlight on when picked up?
extern int PlayerMessage;
// returns true if powerup consumed
@ -598,9 +598,9 @@ int do_powerup(object *obj)
multi_send_play_sound(Powerup_info[obj->id].hit_sound, F1_0);
#endif
digi_play_sample( Powerup_info[obj->id].hit_sound, F1_0 );
sprintf(msg,"HEADLIGHT BOOST! (Headlight is %s)",Headlight_active_default?"ON":"OFF");
sprintf(msg,"HEADLIGHT BOOST! (Headlight is %s)",PlayerCfg.HeadlightActiveDefault?"ON":"OFF");
powerup_basic(15, 0, 15, 0, msg );
if (Headlight_active_default)
if (PlayerCfg.HeadlightActiveDefault)
Players[Player_num].flags |= PLAYER_FLAGS_HEADLIGHT_ON;
used=1;
#ifdef NETWORK

View file

@ -94,8 +94,6 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
#define POWERUP_NAME_LENGTH 16 // Length of a robot or powerup name.
extern char Powerup_names[MAX_POWERUP_TYPES][POWERUP_NAME_LENGTH];
extern int Headlight_active_default; // is headlight on when picked up?
typedef struct powerup_type_info {
int vclip_num;
int hit_sound;

View file

@ -40,6 +40,7 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
#include "newmenu.h"
#include "ai.h"
#include "args.h"
#include "playsave.h"
int POrderList (int num);
int SOrderList (int num);
@ -70,9 +71,6 @@ sbyte Primary_weapon, Secondary_weapon;
// autoselect ordering
ubyte PrimaryOrder[]={9,8,7,6,5,4,3,2,1,0,255};
ubyte SecondaryOrder[]={9,8,4,3,1,5,0,255,7,6,2};
ubyte DefaultPrimaryOrder[]={9,8,7,6,5,4,3,2,1,0,255};
ubyte DefaultSecondaryOrder[]={9,8,4,3,1,5,0,255,7,6,2};
@ -224,9 +222,9 @@ void InitWeaponOrdering ()
int i;
for (i=0;i<MAX_PRIMARY_WEAPONS+1;i++)
PrimaryOrder[i]=DefaultPrimaryOrder[i];
PlayerCfg.PrimaryOrder[i]=DefaultPrimaryOrder[i];
for (i=0;i<MAX_SECONDARY_WEAPONS+1;i++)
SecondaryOrder[i]=DefaultSecondaryOrder[i];
PlayerCfg.SecondaryOrder[i]=DefaultSecondaryOrder[i];
}
void CyclePrimary ()
@ -435,10 +433,10 @@ void auto_select_weapon(int weapon_type)
// Hack alert! Because the fusion uses 0 energy at the end (it's got the weird chargeup)
// it looks like it takes 0 to fire, but it doesn't, so never auto-select.
// if (PrimaryOrder[cur_weapon] == FUSION_INDEX)
// if (PlayerCfg.PrimaryOrder[cur_weapon] == FUSION_INDEX)
// continue;
if (PrimaryOrder[cur_weapon] == Primary_weapon) {
if (PlayerCfg.PrimaryOrder[cur_weapon] == Primary_weapon) {
if (!Cycling)
{
HUD_init_message(TXT_NO_PRIMARY);
@ -450,8 +448,8 @@ void auto_select_weapon(int weapon_type)
try_again = 0; // Tried all weapons!
} else if (PrimaryOrder[cur_weapon]!=255 && player_has_weapon(PrimaryOrder[cur_weapon], 0) == HAS_ALL) {
select_weapon(PrimaryOrder[cur_weapon], 0, 1, 1 );
} else if (PlayerCfg.PrimaryOrder[cur_weapon]!=255 && player_has_weapon(PlayerCfg.PrimaryOrder[cur_weapon], 0) == HAS_ALL) {
select_weapon(PlayerCfg.PrimaryOrder[cur_weapon], 0, 1, 1 );
try_again = 0;
}
}
@ -490,15 +488,15 @@ void auto_select_weapon(int weapon_type)
if (cur_weapon==MAX_SECONDARY_WEAPONS)
cur_weapon = 0;
if (SecondaryOrder[cur_weapon] == Secondary_weapon) {
if (PlayerCfg.SecondaryOrder[cur_weapon] == Secondary_weapon) {
if (!Cycling)
HUD_init_message("No secondary weapons available!");
else
select_weapon (Secondary_weapon,1,0,1);
try_again = 0; // Tried all weapons!
} else if (player_has_weapon(SecondaryOrder[cur_weapon], 1) == HAS_ALL) {
select_weapon(SecondaryOrder[cur_weapon], 1, 1, 1 );
} else if (player_has_weapon(PlayerCfg.SecondaryOrder[cur_weapon], 1) == HAS_ALL) {
select_weapon(PlayerCfg.SecondaryOrder[cur_weapon], 1, 1, 1 );
try_again = 0;
}
}
@ -583,18 +581,18 @@ void ReorderPrimary ()
for (i=0;i<MAX_PRIMARY_WEAPONS+1;i++)
{
m[i].type=NM_TYPE_MENU;
if (PrimaryOrder[i]==255)
if (PlayerCfg.PrimaryOrder[i]==255)
m[i].text=never_autoselect;
else
m[i].text=(char *)PRIMARY_WEAPON_NAMES(PrimaryOrder[i]);
m[i].value=PrimaryOrder[i];
m[i].text=(char *)PRIMARY_WEAPON_NAMES(PlayerCfg.PrimaryOrder[i]);
m[i].value=PlayerCfg.PrimaryOrder[i];
}
MenuReordering=1;
i = newmenu_do("Reorder Primary","Shift+Up/Down arrow to move item", i, m, NULL);
MenuReordering=0;
for (i=0;i<MAX_PRIMARY_WEAPONS+1;i++)
PrimaryOrder[i]=m[i].value;
PlayerCfg.PrimaryOrder[i]=m[i].value;
}
void ReorderSecondary ()
@ -608,17 +606,17 @@ void ReorderSecondary ()
for (i=0;i<MAX_SECONDARY_WEAPONS+1;i++)
{
m[i].type=NM_TYPE_MENU;
if (SecondaryOrder[i]==255)
if (PlayerCfg.SecondaryOrder[i]==255)
m[i].text=never_autoselect;
else
m[i].text=(char *)SECONDARY_WEAPON_NAMES(SecondaryOrder[i]);
m[i].value=SecondaryOrder[i];
m[i].text=(char *)SECONDARY_WEAPON_NAMES(PlayerCfg.SecondaryOrder[i]);
m[i].value=PlayerCfg.SecondaryOrder[i];
}
MenuReordering=1;
i = newmenu_do("Reorder Secondary","Shift+Up/Down arrow to move item", i, m, NULL);
MenuReordering=0;
for (i=0;i<MAX_SECONDARY_WEAPONS+1;i++)
SecondaryOrder[i]=m[i].value;
PlayerCfg.SecondaryOrder[i]=m[i].value;
}
int POrderList (int num)
@ -626,7 +624,7 @@ int POrderList (int num)
int i;
for (i=0;i<MAX_PRIMARY_WEAPONS+1;i++)
if (PrimaryOrder[i]==num)
if (PlayerCfg.PrimaryOrder[i]==num)
{
return (i);
}
@ -638,7 +636,7 @@ int SOrderList (int num)
int i;
for (i=0;i<MAX_SECONDARY_WEAPONS+1;i++)
if (SecondaryOrder[i]==num)
if (PlayerCfg.SecondaryOrder[i]==num)
{
return (i);
}

View file

@ -126,8 +126,6 @@ char *get_str_arg(char *arg_name, char *default_value) {
// All FindArg calls should be here to keep the code clean
void ReadCmdArgs(void)
{
int t = 0, x = 0, y = 0;
// System Options
GameArg.SysShowCmdHelp = (FindArg( "-help" ) || FindArg( "-h" ) || FindArg( "-?" ) || FindArg( "?" ));
@ -173,11 +171,6 @@ void ReadCmdArgs(void)
// Graphics Options
GameArg.GfxGaugeHudMode = get_int_arg("-hud", 0);
if (GameArg.GfxGaugeHudMode <= 0 || GameArg.GfxGaugeHudMode > GAUGE_HUD_NUMMODES-1)
GameArg.GfxGaugeHudMode = 0;
GameArg.GfxPersistentDebris = FindArg("-persistentdebris");
GameArg.GfxHiresGFXAvailable = !FindArg("-lowresgraphics");
GameArg.GfxHiresFNTAvailable = !FindArg("-lowresfont");
GameArg.GfxMovieHires = !FindArg( "-lowresmovies" );
@ -186,10 +179,7 @@ void ReadCmdArgs(void)
#ifdef OGL
// OpenGL Options
GameArg.OglAlphaEffects = FindArg("-gl_transparency");
GameArg.OglFixedFont = FindArg("-gl_fixedfont");
GameArg.OglReticle = get_int_arg("-gl_reticle", 0);
GameArg.OglPrShot = FindArg("-gl_prshot");
#endif
// Multiplayer Options