Added CON_DEFINEGAMEFUNCNAME to allow the end user to redefine the strings used on the keyboard setup screen and in the cfg, several small fixes, and a modernization of the default controls.

git-svn-id: https://svn.eduke32.com/eduke32@110 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
terminx 2006-04-25 01:56:24 +00:00
parent 0d411e468e
commit 0aa8fffdf7
10 changed files with 91 additions and 60 deletions

View file

@ -38,7 +38,7 @@ Modifications for JonoF's port by Jonathon Fowler (jonof@edgenetwk.com)
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
char * gamefunctions[] = char gamefunctions[NUMGAMEFUNCTIONS][MAXGAMEFUNCLEN] =
{ {
"Move_Forward", "Move_Forward",
"Move_Backward", "Move_Backward",
@ -98,25 +98,25 @@ char * gamefunctions[] =
#define NUMKEYENTRIES 53 #define NUMKEYENTRIES 53
static char * keydefaults[] = char keydefaults[NUMGAMEFUNCTIONS*3][MAXGAMEFUNCLEN] =
{ {
"Move_Forward", "Up", "Kpad8", "Move_Forward", "W", "Kpad8",
"Move_Backward", "Down", "Kpad2", "Move_Backward", "S", "Kpad2",
"Turn_Left", "Left", "Kpad4", "Turn_Left", "Left", "Kpad4",
"Turn_Right", "Right", "KPad6", "Turn_Right", "Right", "KPad6",
"Strafe", "LAlt", "RAlt", "Strafe", "LAlt", "RAlt",
"Fire", "LCtrl", "RCtrl", "Fire", "", "RCtrl",
"Open", "Space", "", "Open", "E", "",
"Run", "LShift", "RShift", "Run", "LShift", "RShift",
"AutoRun", "CapLck", "", "AutoRun", "CapLck", "",
"Jump", "A", "/", "Jump", "Space", "/",
"Crouch", "Z", "", "Crouch", "LCtrl", "",
"Look_Up", "PgUp", "Kpad9", "Look_Up", "PgUp", "Kpad9",
"Look_Down", "PgDn", "Kpad3", "Look_Down", "PgDn", "Kpad3",
"Look_Left", "Insert", "Kpad0", "Look_Left", "Insert", "Kpad0",
"Look_Right", "Delete", "Kpad.", "Look_Right", "Delete", "Kpad.",
"Strafe_Left", ",", "", "Strafe_Left", "A", "",
"Strafe_Right", ".", "", "Strafe_Right", "D", "",
"Aim_Up", "Home", "KPad7", "Aim_Up", "Home", "KPad7",
"Aim_Down", "End", "Kpad1", "Aim_Down", "End", "Kpad1",
"Weapon_1", "1", "", "Weapon_1", "1", "",
@ -143,16 +143,16 @@ static char * keydefaults[] =
"Enlarge_Screen", "=", "Kpad+", "Enlarge_Screen", "=", "Kpad+",
"Center_View", "KPad5", "", "Center_View", "KPad5", "",
"Holster_Weapon", "ScrLck", "", "Holster_Weapon", "ScrLck", "",
"Show_Opponents_Weapon", "W", "", "Show_Opponents_Weapon", "Y", "",
"Map_Follow_Mode", "F", "", "Map_Follow_Mode", "F", "",
"See_Coop_View", "K", "", "See_Coop_View", "K", "",
"Mouse_Aiming", "U", "", "Mouse_Aiming", "U", "",
"Toggle_Crosshair", "I", "", "Toggle_Crosshair", "I", "",
"Steroids", "R", "", "Steroids", "R", "",
"Quick_Kick", "`", "", "Quick_Kick", "Q", "",
"Next_Weapon", "'", "", "Next_Weapon", "'", "",
"Previous_Weapon", ";", "", "Previous_Weapon", ";", "",
"Show_Console", "NumLck", "" "Show_Console", "`", ""
}; };

View file

@ -298,7 +298,7 @@ void hitradius( short i, long r, long hp1, long hp2, long hp3, long hp4 )
walltype *wal; walltype *wal;
long d, q, x1, y1; long d, q, x1, y1;
long sectcnt, sectend, dasect, startwall, endwall, nextsect; long sectcnt, sectend, dasect, startwall, endwall, nextsect;
short j,k,p,x,nextj,sect; short j,k,p,x,nextj,sect=-1;
char statlist[] = {0,1,6,10,12,2,5}; char statlist[] = {0,1,6,10,12,2,5};
short *tempshort = (short *)tempbuf; short *tempshort = (short *)tempbuf;

View file

@ -82,7 +82,7 @@ int32 JoystickAnalogueSaturate[MAXJOYAXES];
// Screen variables // Screen variables
// //
int32 ScreenMode = 1; int32 ScreenMode = 0;
int32 ScreenWidth = 800; int32 ScreenWidth = 800;
int32 ScreenHeight = 600; int32 ScreenHeight = 600;
int32 ScreenBPP = 32; int32 ScreenBPP = 32;
@ -199,10 +199,10 @@ void CONFIG_SetDefaults( void )
FXDevice = -1; FXDevice = -1;
MusicDevice = -1; MusicDevice = -1;
NumVoices = 8; NumVoices = 32;
NumChannels = 2; NumChannels = 2;
NumBits = 8; NumBits = 16;
MixRate = 22050; MixRate = 44100;
SoundToggle = 1; SoundToggle = 1;
MusicToggle = 1; MusicToggle = 1;
VoiceToggle = 2; VoiceToggle = 2;
@ -210,15 +210,16 @@ void CONFIG_SetDefaults( void )
FXVolume = 220; FXVolume = 220;
MusicVolume = 200; MusicVolume = 200;
ReverseStereo = 0; ReverseStereo = 0;
myaimmode = ps[0].aim_mode = 0; myaimmode = ps[0].aim_mode = 1;
ud.mouseaiming = 0; ud.mouseaiming = 0;
ud.weaponswitch = 3; // new+empty ud.weaponswitch = 3; // new+empty
AutoAim = 1; AutoAim = 1;
ControllerType = 1; ControllerType = 1;
ud.mouseflip = 0; ud.mouseflip = 1;
ud.runkey_mode = 0; ud.runkey_mode = 0;
RunMode = ud.auto_run = 1;
ud.statusbarscale = 100; ud.statusbarscale = 100;
ud.screen_size = 8; ud.screen_size = 4;
ud.screen_tilting = 1; ud.screen_tilting = 1;
ud.shadows = 1; ud.shadows = 1;
ud.detail = 1; ud.detail = 1;
@ -232,7 +233,8 @@ void CONFIG_SetDefaults( void )
ud.brightskins = 0; ud.brightskins = 0;
ud.democams = 1; ud.democams = 1;
ud.color = 0; ud.color = 0;
ud.msgdisptime = 360; ud.msgdisptime = 640;
ud.brightness = 16;
ShowOpponentWeapons = 0; ShowOpponentWeapons = 0;
Bstrcpy(ud.rtsname, "DUKE.RTS"); Bstrcpy(ud.rtsname, "DUKE.RTS");
@ -251,7 +253,7 @@ void CONFIG_SetDefaults( void )
// JBF 20031211 // JBF 20031211
Bmemset(KeyboardKeys, 0xff, sizeof(KeyboardKeys)); Bmemset(KeyboardKeys, 0xff, sizeof(KeyboardKeys));
for (i=0; i < (int32)(sizeof(keydefaults)/sizeof(keydefaults[0]))/3; i++) { for (i=0; i < NUMGAMEFUNCTIONS; i++) {
f = CONFIG_FunctionNameToNum( keydefaults[3*i+0] ); f = CONFIG_FunctionNameToNum( keydefaults[3*i+0] );
if (f == -1) continue; if (f == -1) continue;
k1 = KB_StringToScanCode( keydefaults[3*i+1] ); k1 = KB_StringToScanCode( keydefaults[3*i+1] );
@ -264,9 +266,7 @@ void CONFIG_SetDefaults( void )
Bmemset(MouseFunctions, -1, sizeof(MouseFunctions)); Bmemset(MouseFunctions, -1, sizeof(MouseFunctions));
for (i=0; i<MAXMOUSEBUTTONS; i++) { for (i=0; i<MAXMOUSEBUTTONS; i++) {
MouseFunctions[i][0] = CONFIG_FunctionNameToNum( mousedefaults[i] ); MouseFunctions[i][0] = CONFIG_FunctionNameToNum( mousedefaults[i] );
if (i<4) continue; if (i<4) continue;
MouseFunctions[i][1] = CONFIG_FunctionNameToNum( mouseclickeddefaults[i] ); MouseFunctions[i][1] = CONFIG_FunctionNameToNum( mouseclickeddefaults[i] );
} }

View file

@ -112,7 +112,7 @@ extern void resetmys(void);
extern int enterlevel(char g); extern int enterlevel(char g);
extern void backtomenu(void); extern void backtomenu(void);
extern void setpal(struct player_struct *p); extern void setpal(struct player_struct *p);
extern void incur_damage(short snum); extern void incur_damage(struct player_struct *p);
extern void quickkill(struct player_struct *p); extern void quickkill(struct player_struct *p);
extern void forceplayerangle(struct player_struct *p); extern void forceplayerangle(struct player_struct *p);
extern void tracers(long x1,long y1,long z1,long x2,long y2,long z2,long n); extern void tracers(long x1,long y1,long z1,long x2,long y2,long z2,long n);

View file

@ -39,9 +39,12 @@ Modifications for JonoF's port by Jonathon Fowler (jonof@edgenetwk.com)
extern "C" { extern "C" {
#endif #endif
#define NUMKEYENTRIES 53
#define NUMGAMEFUNCTIONS 53 #define NUMGAMEFUNCTIONS 53
#define MAXGAMEFUNCLEN 32
extern char * gamefunctions[]; extern char gamefunctions[NUMGAMEFUNCTIONS][MAXGAMEFUNCLEN];
extern char keydefaults[NUMGAMEFUNCTIONS*3][MAXGAMEFUNCLEN];
enum enum
{ {

View file

@ -20,6 +20,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/ */
//------------------------------------------------------------------------- //-------------------------------------------------------------------------
#include "duke3d.h"
#include "types.h" #include "types.h"
#include "develop.h" #include "develop.h"
#include "scriplib.h" #include "scriplib.h"
@ -40,8 +41,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
//#include "crc32.h" //#include "crc32.h"
#include "duke3d.h"
#include "util_lib.h" #include "util_lib.h"
#define VERSION " 1.4.0svn" #define VERSION " 1.4.0svn"
@ -8093,11 +8092,11 @@ void Startup(void)
{ {
int i; int i;
CONFIG_ReadSetup();
// readnames(); // readnames();
compilecons(); // JBF 20040116: Moved to below setup reading, because otherwise blown compilecons();
CONFIG_ReadSetup();
setupdynamictostatic(); setupdynamictostatic();
@ -9077,7 +9076,7 @@ RECHECK:
{ {
if(ud.recstat != 2) if(ud.recstat != 2)
menus(); menus();
if( ud.multimode > 1 && current_menu != 20003 && current_menu != 20005) if( ud.multimode > 1 && current_menu != 20003 && current_menu != 20005 && current_menu != 210)
{ {
ControlInfo noshareinfo; ControlInfo noshareinfo;
CONTROL_GetInput( &noshareinfo ); CONTROL_GetInput( &noshareinfo );

View file

@ -435,6 +435,7 @@ char *keyw[] = {
"save", // 288 "save", // 288
"cansee", // 289 "cansee", // 289
"canseespr", // 290 "canseespr", // 290
"definegamefuncname", // 291
"<null>" "<null>"
}; };
@ -4375,6 +4376,40 @@ repeatcase:
volume_names[j][i] = '\0'; volume_names[j][i] = '\0';
return 0; return 0;
case CON_DEFINEGAMEFUNCNAME:
scriptptr--;
transnum(LABEL_DEFINE);
scriptptr--;
j = *scriptptr;
while( *textptr == ' ' ) textptr++;
if (j < 0 || j > NUMGAMEFUNCTIONS-1)
{
initprintf("%s:%ld: error: function number exceeds number of game functions.\n",compilefile,line_number);
error++;
while( *textptr != 0x0a && *textptr != 0 ) textptr++;
break;
}
i = 0;
while( *textptr != 0x0a && *textptr != 0x0d && *textptr != 0 )
{
gamefunctions[j][i] = *textptr;
keydefaults[j*3][i] = *textptr;
textptr++,i++;
if(i >= MAXGAMEFUNCLEN-1)
{
initprintf("%s:%ld: error: function name exceeds limit of %ld characters.\n",compilefile,line_number,MAXGAMEFUNCLEN);
error++;
while( *textptr != 0x0a && *textptr != 0x0d && *textptr != 0 ) textptr++;
break;
}
}
gamefunctions[j][i] = '\0';
keydefaults[j*3][i] = '\0';
return 0;
case CON_DEFINESKILLNAME: case CON_DEFINESKILLNAME:
scriptptr--; scriptptr--;
transnum(LABEL_DEFINE); transnum(LABEL_DEFINE);

View file

@ -715,5 +715,6 @@ enum keywords {
CON_SAVE, // 288 CON_SAVE, // 288
CON_CANSEE, // 289 CON_CANSEE, // 289
CON_CANSEESPR, // 290 CON_CANSEESPR, // 290
CON_DEFINEGAMEFUNCNAME, // 291
END END
}; };

View file

@ -597,7 +597,8 @@ void menus(void)
if(!(current_menu >= 1000 && current_menu <= 2999 && current_menu >= 300 && current_menu <= 369)) if(!(current_menu >= 1000 && current_menu <= 2999 && current_menu >= 300 && current_menu <= 369))
vscrn(); vscrn();
if(KB_KeyPressed(sc_Q) && current_menu >= 0 && (current_menu > 502 || current_menu < 500)) if(KB_KeyPressed(sc_Q) && current_menu >= 0 && (current_menu > 502 || current_menu < 500) && current_menu != 20003 &&
current_menu != 20005 && current_menu != 210)
{ {
last_menu = current_menu; last_menu = current_menu;
last_probey = probey; last_probey = probey;
@ -2772,7 +2773,7 @@ cheat_for_port_credits:
case 210: { case 210: {
int32 sc; int32 sc;
rotatesprite(320<<15,19<<16,65536L,0,MENUBAR,16,0,10,0,0,xdim-1,ydim-1); rotatesprite(320<<15,19<<16,65536L,0,MENUBAR,16,0,10,0,0,xdim-1,ydim-1);
menutext(320>>1,24,0,0,"KEYS SETUP"); menutext(320>>1,24,0,0,"KEYBOARD SETUP");
gametext(320>>1,90,"PRESS THE KEY TO ASSIGN AS",0,2+8+16); gametext(320>>1,90,"PRESS THE KEY TO ASSIGN AS",0,2+8+16);
sprintf(tempbuf,"%s FOR \"%s\"", whichkey?"SECONDARY":"PRIMARY", CONFIG_FunctionNumToName(function)); sprintf(tempbuf,"%s FOR \"%s\"", whichkey?"SECONDARY":"PRIMARY", CONFIG_FunctionNumToName(function));

View file

@ -56,18 +56,14 @@ void fadepal(int r, int g, int b, int start, int end, int step)
else for (; start >= end; start += step) palto(r,g,b,start); else for (; start >= end; start += step) palto(r,g,b,start);
} }
void incur_damage(short snum) void incur_damage(struct player_struct *p)
{ {
long damage = 0L, shield_damage = 0L; long damage = 0L, shield_damage = 0L;
struct player_struct *p; SetGameVarID(g_iReturnVarID,0,p->i,sprite[p->i].yvel);
OnEvent(EVENT_INCURDAMAGE, p->i, sprite[p->i].yvel, -1);
p = &ps[snum]; if(GetGameVarID(g_iReturnVarID,p->i,sprite[p->i].yvel) == 0)
SetGameVarID(g_iReturnVarID,0,p->i,snum);
OnEvent(EVENT_INCURDAMAGE, p->i, snum, -1);
if(GetGameVarID(g_iReturnVarID,p->i,snum) == 0)
{ {
sprite[p->i].extra -= p->extra_extra8>>8; sprite[p->i].extra -= p->extra_extra8>>8;
@ -1924,12 +1920,11 @@ char animateknuckles(short gs,short snum)
long lastvisinc; long lastvisinc;
void DoFire(short snum) void DoFire(struct player_struct *p)
{ {
int i; int i;
struct player_struct *p; short snum = sprite[p->i].yvel;
p = &ps[snum];
SetGameVarID(g_iReturnVarID,0,p->i,snum); SetGameVarID(g_iReturnVarID,0,p->i,snum);
OnEvent(EVENT_DOFIRE, p->i, snum, -1); OnEvent(EVENT_DOFIRE, p->i, snum, -1);
@ -1980,12 +1975,11 @@ void DoFire(short snum)
} }
} }
void DoSpawn(short snum) void DoSpawn(struct player_struct *p)
{ {
int j; int j;
struct player_struct *p; short snum = sprite[p->i].yvel;
p = &ps[snum];
if(!aplWeaponSpawn[p->curr_weapon][snum]) if(!aplWeaponSpawn[p->curr_weapon][snum])
return; return;
@ -2972,7 +2966,7 @@ void getinput(short snum)
char doincrements(struct player_struct *p) char doincrements(struct player_struct *p)
{ {
long snum; short snum;
snum = sprite[p->i].yvel; snum = sprite[p->i].yvel;
// j = sync[snum].avel; // j = sync[snum].avel;
@ -3166,9 +3160,7 @@ short weapon_sprites[MAX_WEAPONS] = { KNEE__STATIC, FIRSTGUNSPRITE__STATIC, SHOT
void checkweapons(struct player_struct *p) void checkweapons(struct player_struct *p)
{ {
short cw; short cw;
long snum; short snum = sprite[p->i].yvel;
snum = sprite[p->i].yvel;
cw = aplWeaponWorksLike[p->curr_weapon][snum]; cw = aplWeaponWorksLike[p->curr_weapon][snum];
@ -3301,7 +3293,7 @@ void processinput(short snum)
} }
if ( s->extra > 0 ) incur_damage( snum ); if ( s->extra > 0 ) incur_damage( p );
else else
{ {
s->extra = 0; s->extra = 0;
@ -4841,7 +4833,7 @@ SHOOTINCODE:
} }
} }
if(*kb == aplWeaponSpawnTime[p->curr_weapon][snum]) if(*kb == aplWeaponSpawnTime[p->curr_weapon][snum])
DoSpawn(snum); DoSpawn(p);
if ((*kb) >= aplWeaponTotalTime[p->curr_weapon][snum]) if ((*kb) >= aplWeaponTotalTime[p->curr_weapon][snum])
{ {
@ -4897,21 +4889,21 @@ SHOOTINCODE:
{ {
if( ((*(kb))%3) == 0 ) if( ((*(kb))%3) == 0 )
{ {
DoFire(snum); DoFire(p);
DoSpawn(snum); DoSpawn(p);
} }
} }
if( aplWeaponFlags[p->curr_weapon][snum] & WEAPON_FLAG_FIREEVERYOTHER) if( aplWeaponFlags[p->curr_weapon][snum] & WEAPON_FLAG_FIREEVERYOTHER)
{ {
DoFire(snum); DoFire(p);
DoSpawn(snum); DoSpawn(p);
} }
} }
} }
else if(*kb == aplWeaponFireDelay[p->curr_weapon][snum] else if(*kb == aplWeaponFireDelay[p->curr_weapon][snum]
&& (aplWeaponWorksLike[p->curr_weapon][snum]==KNEE_WEAPON ? 1 : p->ammo_amount[p->curr_weapon] > 0)) && (aplWeaponWorksLike[p->curr_weapon][snum]==KNEE_WEAPON ? 1 : p->ammo_amount[p->curr_weapon] > 0))
{ {
DoFire(snum); DoFire(p);
} }
} }
} }