Added option to ignore cycling weapons that are not on autoselect list
This commit is contained in:
parent
bf52256c8d
commit
dab702aba9
|
@ -3,6 +3,7 @@ D1X-Rebirth Changelog
|
||||||
20130408
|
20130408
|
||||||
--------
|
--------
|
||||||
main/gamecntl.c, main/gamerend.c, main/gauges.c, main/gauges.h: Added 4th alternative HUD mode for no HUD rendering, aka Immersion mode
|
main/gamecntl.c, main/gamerend.c, main/gauges.c, main/gauges.h: Added 4th alternative HUD mode for no HUD rendering, aka Immersion mode
|
||||||
|
main/menu.c, main/playsave.c, main/playsave.h, main/weapons.c: Added option to ignore cycling weapons that are not on autoselect list
|
||||||
|
|
||||||
20130406
|
20130406
|
||||||
--------
|
--------
|
||||||
|
|
|
@ -1865,7 +1865,7 @@ void do_sound_menu()
|
||||||
|
|
||||||
void do_misc_menu()
|
void do_misc_menu()
|
||||||
{
|
{
|
||||||
newmenu_item m[9];
|
newmenu_item m[10];
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
|
@ -1878,6 +1878,7 @@ void do_misc_menu()
|
||||||
ADD_CHECK(6, "Show D2-style Prox. Bomb Gauge",PlayerCfg.BombGauge);
|
ADD_CHECK(6, "Show D2-style Prox. Bomb Gauge",PlayerCfg.BombGauge);
|
||||||
ADD_CHECK(7, "Free Flight controls in Automap",PlayerCfg.AutomapFreeFlight);
|
ADD_CHECK(7, "Free Flight controls in Automap",PlayerCfg.AutomapFreeFlight);
|
||||||
ADD_CHECK(8, "No Weapon Autoselect when firing",PlayerCfg.NoFireAutoselect);
|
ADD_CHECK(8, "No Weapon Autoselect when firing",PlayerCfg.NoFireAutoselect);
|
||||||
|
ADD_CHECK(9, "Only Cycle Autoselect Weapons",PlayerCfg.CycleAutoselectOnly);
|
||||||
|
|
||||||
i = newmenu_do1( NULL, "Misc Options", sizeof(m)/sizeof(*m), m, NULL, NULL, i );
|
i = newmenu_do1( NULL, "Misc Options", sizeof(m)/sizeof(*m), m, NULL, NULL, i );
|
||||||
|
|
||||||
|
@ -1890,6 +1891,7 @@ void do_misc_menu()
|
||||||
PlayerCfg.BombGauge = m[6].value;
|
PlayerCfg.BombGauge = m[6].value;
|
||||||
PlayerCfg.AutomapFreeFlight = m[7].value;
|
PlayerCfg.AutomapFreeFlight = m[7].value;
|
||||||
PlayerCfg.NoFireAutoselect = m[8].value;
|
PlayerCfg.NoFireAutoselect = m[8].value;
|
||||||
|
PlayerCfg.CycleAutoselectOnly = m[9].value;
|
||||||
|
|
||||||
} while( i>-1 );
|
} while( i>-1 );
|
||||||
|
|
||||||
|
|
|
@ -98,6 +98,7 @@ int new_player_config()
|
||||||
PlayerCfg.BombGauge = 1;
|
PlayerCfg.BombGauge = 1;
|
||||||
PlayerCfg.AutomapFreeFlight = 0;
|
PlayerCfg.AutomapFreeFlight = 0;
|
||||||
PlayerCfg.NoFireAutoselect = 0;
|
PlayerCfg.NoFireAutoselect = 0;
|
||||||
|
PlayerCfg.CycleAutoselectOnly = 0;
|
||||||
PlayerCfg.AlphaEffects = 0;
|
PlayerCfg.AlphaEffects = 0;
|
||||||
PlayerCfg.DynLightColor = 0;
|
PlayerCfg.DynLightColor = 0;
|
||||||
|
|
||||||
|
@ -328,6 +329,8 @@ int read_player_d1x(char *filename)
|
||||||
PlayerCfg.AutomapFreeFlight = atoi(line);
|
PlayerCfg.AutomapFreeFlight = atoi(line);
|
||||||
if(!strcmp(word,"NOFIREAUTOSELECT"))
|
if(!strcmp(word,"NOFIREAUTOSELECT"))
|
||||||
PlayerCfg.NoFireAutoselect = atoi(line);
|
PlayerCfg.NoFireAutoselect = atoi(line);
|
||||||
|
if(!strcmp(word,"CYCLEAUTOSELECTONLY"))
|
||||||
|
PlayerCfg.CycleAutoselectOnly = atoi(line);
|
||||||
d_free(word);
|
d_free(word);
|
||||||
PHYSFSX_fgets(line,50,f);
|
PHYSFSX_fgets(line,50,f);
|
||||||
word=splitword(line,'=');
|
word=splitword(line,'=');
|
||||||
|
@ -660,6 +663,7 @@ int write_player_d1x(char *filename)
|
||||||
PHYSFSX_printf(fout,"bombgauge=%i\n",PlayerCfg.BombGauge);
|
PHYSFSX_printf(fout,"bombgauge=%i\n",PlayerCfg.BombGauge);
|
||||||
PHYSFSX_printf(fout,"automapfreeflight=%i\n",PlayerCfg.AutomapFreeFlight);
|
PHYSFSX_printf(fout,"automapfreeflight=%i\n",PlayerCfg.AutomapFreeFlight);
|
||||||
PHYSFSX_printf(fout,"nofireautoselect=%i\n",PlayerCfg.NoFireAutoselect);
|
PHYSFSX_printf(fout,"nofireautoselect=%i\n",PlayerCfg.NoFireAutoselect);
|
||||||
|
PHYSFSX_printf(fout,"cycleautoselectonly=%i\n",PlayerCfg.CycleAutoselectOnly);
|
||||||
PHYSFSX_printf(fout,"[end]\n");
|
PHYSFSX_printf(fout,"[end]\n");
|
||||||
PHYSFSX_printf(fout,"[graphics]\n");
|
PHYSFSX_printf(fout,"[graphics]\n");
|
||||||
PHYSFSX_printf(fout,"alphaeffects=%i\n",PlayerCfg.AlphaEffects);
|
PHYSFSX_printf(fout,"alphaeffects=%i\n",PlayerCfg.AlphaEffects);
|
||||||
|
|
|
@ -82,6 +82,7 @@ typedef struct player_config
|
||||||
ubyte BombGauge;
|
ubyte BombGauge;
|
||||||
ubyte AutomapFreeFlight;
|
ubyte AutomapFreeFlight;
|
||||||
ubyte NoFireAutoselect;
|
ubyte NoFireAutoselect;
|
||||||
|
ubyte CycleAutoselectOnly;
|
||||||
int AlphaEffects;
|
int AlphaEffects;
|
||||||
int DynLightColor;
|
int DynLightColor;
|
||||||
} __pack__ player_config;
|
} __pack__ player_config;
|
||||||
|
|
|
@ -154,8 +154,17 @@ void CyclePrimary ()
|
||||||
cur_order_slot++; // next slot
|
cur_order_slot++; // next slot
|
||||||
if (cur_order_slot >= MAX_PRIMARY_WEAPONS+1) // loop if necessary
|
if (cur_order_slot >= MAX_PRIMARY_WEAPONS+1) // loop if necessary
|
||||||
cur_order_slot = 0;
|
cur_order_slot = 0;
|
||||||
if (cur_order_slot == POrderList(255)) // ignore "do not autoselect"
|
if (cur_order_slot == POrderList(255)) // what to to with non-autoselect weapons?
|
||||||
continue;
|
{
|
||||||
|
if (PlayerCfg.CycleAutoselectOnly)
|
||||||
|
{
|
||||||
|
cur_order_slot = 0; // loop over or ...
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
continue; // continue?
|
||||||
|
}
|
||||||
|
}
|
||||||
desired_weapon = PlayerCfg.PrimaryOrder[cur_order_slot]; // now that is the weapon next to our current one
|
desired_weapon = PlayerCfg.PrimaryOrder[cur_order_slot]; // now that is the weapon next to our current one
|
||||||
// select the weapon if we have it
|
// select the weapon if we have it
|
||||||
if (player_has_weapon(desired_weapon, 0) == HAS_ALL)
|
if (player_has_weapon(desired_weapon, 0) == HAS_ALL)
|
||||||
|
@ -176,8 +185,17 @@ void CycleSecondary ()
|
||||||
cur_order_slot++; // next slot
|
cur_order_slot++; // next slot
|
||||||
if (cur_order_slot >= MAX_SECONDARY_WEAPONS+1) // loop if necessary
|
if (cur_order_slot >= MAX_SECONDARY_WEAPONS+1) // loop if necessary
|
||||||
cur_order_slot = 0;
|
cur_order_slot = 0;
|
||||||
if (cur_order_slot == SOrderList(255)) // ignore "do not autoselect"
|
if (cur_order_slot == SOrderList(255)) // what to to with non-autoselect weapons?
|
||||||
continue;
|
{
|
||||||
|
if (PlayerCfg.CycleAutoselectOnly)
|
||||||
|
{
|
||||||
|
cur_order_slot = 0; // loop over or ...
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
continue; // continue?
|
||||||
|
}
|
||||||
|
}
|
||||||
desired_weapon = PlayerCfg.SecondaryOrder[cur_order_slot]; // now that is the weapon next to our current one
|
desired_weapon = PlayerCfg.SecondaryOrder[cur_order_slot]; // now that is the weapon next to our current one
|
||||||
// select the weapon if we have it
|
// select the weapon if we have it
|
||||||
if (player_has_weapon(desired_weapon, 1) == HAS_ALL)
|
if (player_has_weapon(desired_weapon, 1) == HAS_ALL)
|
||||||
|
|
Loading…
Reference in a new issue