mirror of
https://gitlab.com/drummyfish/anarch.git
synced 2024-11-21 08:25:05 -05:00
Add weapon cycling
This commit is contained in:
parent
0c738d814c
commit
5b518b8024
19
game.h
19
game.h
@ -51,8 +51,9 @@
|
|||||||
#define SFG_KEY_NEXT_WEAPON 12
|
#define SFG_KEY_NEXT_WEAPON 12
|
||||||
#define SFG_KEY_PREVIOUS_WEAPON 13
|
#define SFG_KEY_PREVIOUS_WEAPON 13
|
||||||
#define SFG_KEY_MENU 14
|
#define SFG_KEY_MENU 14
|
||||||
|
#define SFG_KEY_CYCLE_WEAPON 15
|
||||||
|
|
||||||
#define SFG_KEY_COUNT 15 ///< Number of keys.
|
#define SFG_KEY_COUNT 16 ///< Number of keys.
|
||||||
|
|
||||||
/* ============================= PORTING =================================== */
|
/* ============================= PORTING =================================== */
|
||||||
|
|
||||||
@ -422,6 +423,7 @@ struct
|
|||||||
which cards should be blinking in the HUD,
|
which cards should be blinking in the HUD,
|
||||||
the last 2 bits are a blink reset counter. */
|
the last 2 bits are a blink reset counter. */
|
||||||
uint8_t justTeleported;
|
uint8_t justTeleported;
|
||||||
|
int8_t previousWeaponDirection; ///< Direction (+/0/-) of previous weapon.
|
||||||
} SFG_player;
|
} SFG_player;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1361,6 +1363,8 @@ void SFG_initPlayer()
|
|||||||
|
|
||||||
SFG_player.health = SFG_PLAYER_START_HEALTH;
|
SFG_player.health = SFG_PLAYER_START_HEALTH;
|
||||||
|
|
||||||
|
SFG_player.previousWeaponDirection = 0;
|
||||||
|
|
||||||
SFG_player.cards =
|
SFG_player.cards =
|
||||||
#if SFG_UNLOCK_DOOR
|
#if SFG_UNLOCK_DOOR
|
||||||
0x07;
|
0x07;
|
||||||
@ -3054,6 +3058,9 @@ void SFG_gameStepPlaying()
|
|||||||
SFG_playerRotateWeapon(1);
|
SFG_playerRotateWeapon(1);
|
||||||
else if (SFG_keyJustPressed(SFG_KEY_PREVIOUS_WEAPON) && canSwitchWeapon)
|
else if (SFG_keyJustPressed(SFG_KEY_PREVIOUS_WEAPON) && canSwitchWeapon)
|
||||||
SFG_playerRotateWeapon(0);
|
SFG_playerRotateWeapon(0);
|
||||||
|
else if (SFG_keyJustPressed(SFG_KEY_CYCLE_WEAPON) &&
|
||||||
|
SFG_player.previousWeaponDirection)
|
||||||
|
SFG_playerRotateWeapon(SFG_player.previousWeaponDirection > 0);
|
||||||
|
|
||||||
uint8_t shearingOn = SFG_game.settings & 0x04;
|
uint8_t shearingOn = SFG_game.settings & 0x04;
|
||||||
|
|
||||||
@ -3635,8 +3642,18 @@ void SFG_gameStepPlaying()
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (SFG_player.weapon != currentWeapon) // if weapon switched, start cooldown
|
if (SFG_player.weapon != currentWeapon) // if weapon switched, start cooldown
|
||||||
|
{
|
||||||
|
|
||||||
|
if (SFG_player.weapon == (currentWeapon + 1) % SFG_WEAPONS_TOTAL)
|
||||||
|
SFG_player.previousWeaponDirection = -1;
|
||||||
|
else if (currentWeapon == (SFG_player.weapon + 1) % SFG_WEAPONS_TOTAL)
|
||||||
|
SFG_player.previousWeaponDirection = 1;
|
||||||
|
else
|
||||||
|
SFG_player.previousWeaponDirection = 0;
|
||||||
|
|
||||||
SFG_player.weaponCooldownFrames =
|
SFG_player.weaponCooldownFrames =
|
||||||
SFG_GET_WEAPON_FIRE_COOLDOWN_FRAMES(SFG_player.weapon) / 2;
|
SFG_GET_WEAPON_FIRE_COOLDOWN_FRAMES(SFG_player.weapon) / 2;
|
||||||
|
}
|
||||||
|
|
||||||
#if SFG_IMMORTAL == 0
|
#if SFG_IMMORTAL == 0
|
||||||
if (SFG_player.health == 0)
|
if (SFG_player.health == 0)
|
||||||
|
@ -216,6 +216,8 @@ int8_t SFG_keyPressed(uint8_t key)
|
|||||||
case SFG_KEY_STRAFE_LEFT: return k(A) || k(KP_7); break;
|
case SFG_KEY_STRAFE_LEFT: return k(A) || k(KP_7); break;
|
||||||
case SFG_KEY_STRAFE_RIGHT: return k(D) || k(KP_9); break;
|
case SFG_KEY_STRAFE_RIGHT: return k(D) || k(KP_9); break;
|
||||||
case SFG_KEY_MAP: return k(TAB); break;
|
case SFG_KEY_MAP: return k(TAB); break;
|
||||||
|
case SFG_KEY_CYCLE_WEAPON: return k(F) ||
|
||||||
|
(sdlMouseButtonState & SDL_BUTTON_MMASK); break;
|
||||||
case SFG_KEY_TOGGLE_FREELOOK: return sdlMouseButtonState & SDL_BUTTON_RMASK;
|
case SFG_KEY_TOGGLE_FREELOOK: return sdlMouseButtonState & SDL_BUTTON_RMASK;
|
||||||
break;
|
break;
|
||||||
case SFG_KEY_NEXT_WEAPON:
|
case SFG_KEY_NEXT_WEAPON:
|
||||||
|
Loading…
Reference in New Issue
Block a user