Files
freedom-fighter/FreedomFighter/OmegaInput.cs
2026-09-06 18:01:31 -04:00

44 lines
1.5 KiB
C#

using Microsoft.Xna.Framework.Input;
namespace FreedomFighter;
/// <summary>
/// Replacement for TOmegaInput's keyboard state sets, with the key assignments
/// from GameU.dfm: B1=Space, B2=Esc, B3=Enter, B4=RCtrl, B5=1, B6=2, B7=3, B8=M.
/// "States" = held; "StatesClicked" = pressed this frame.
/// </summary>
public class OmegaInput
{
KeyboardState _prev;
KeyboardState _cur;
public void Update()
{
_prev = _cur;
_cur = Keyboard.GetState();
}
bool Held(Keys k) => _cur.IsKeyDown(k);
bool Clicked(Keys k) => _cur.IsKeyDown(k) && _prev.IsKeyUp(k);
public bool Up => Held(Keys.Up);
public bool Down => Held(Keys.Down);
public bool Left => Held(Keys.Left);
public bool Right => Held(Keys.Right);
public bool Button4 => Held(Keys.RightControl) || Held(Keys.LeftControl);
public bool Button8 => Held(Keys.M);
public bool UpClicked => Clicked(Keys.Up);
public bool DownClicked => Clicked(Keys.Down);
public bool Button1Clicked => Clicked(Keys.Space);
public bool Button2Clicked => Clicked(Keys.Escape);
public bool Button3Clicked => Clicked(Keys.Enter);
public bool Button5Clicked => Clicked(Keys.D1) || Clicked(Keys.NumPad1);
public bool Button6Clicked => Clicked(Keys.D2) || Clicked(Keys.NumPad2);
public bool Button7Clicked => Clicked(Keys.D3) || Clicked(Keys.NumPad3);
public bool PauseClicked => Clicked(Keys.Pause);
public KeyboardState Current => _cur;
public KeyboardState Previous => _prev;
}