1
0
mirror of https://github.com/borgesdan/xn65 synced 2024-12-29 21:54:47 +01:00
xn65/framework/input/gamepad.hpp
2024-04-24 10:11:53 -03:00

73 lines
2.1 KiB
C++

#ifndef XNA_INPUT_GAMEPAD_HPP
#define XNA_INPUT_GAMEPAD_HPP
#include "../default.hpp"
#include "../common/vectors.hpp"
namespace xna {
struct IGamePadTriggers {
public:
virtual float Left() const = 0;
virtual float Right() const = 0;
};
struct IGamePadThumbSticks {
public:
virtual Vector2 Left() const = 0;
virtual Vector2 Right() const = 0;
};
struct IGamePadDPad {
virtual ButtonState Up() const = 0;
virtual ButtonState Down() const = 0;
virtual ButtonState Right() const = 0;
virtual ButtonState Left() const = 0;
};
struct IGamePadButtons {
virtual ButtonState A() const = 0;
virtual ButtonState B() const = 0;
virtual ButtonState Back() const = 0;
virtual ButtonState X() const = 0;
virtual ButtonState Y() const = 0;
virtual ButtonState Start() const = 0;
virtual ButtonState LeftShoulder() const = 0;
virtual ButtonState LeftStick() const = 0;
virtual ButtonState RightShoulder() const = 0;
virtual ButtonState RightStick() const = 0;
virtual ButtonState BigButton() const = 0;
};
struct GamePadId;
struct IGamePadCapabilities {
virtual GamePadCapabilitiesType GamePadType() const = 0;
virtual bool IsConnected() const = 0;
virtual GamePadId Id() const = 0;
virtual Ushort Vid() const = 0;
virtual Ushort Pid() const = 0;
};
struct IGamePadState {
virtual GamePadButtons Buttons() const = 0;
virtual GamePadDPad DPad() const = 0;
virtual bool IsConnected() const = 0;
virtual Ulong PacketNumber() const = 0;
virtual GamePadThumbSticks ThumbSticks() = 0;
virtual GamePadTriggers Triggers() = 0;
virtual bool IsButtonDown(xna::Buttons button) = 0;
virtual bool IsButtonUp(xna::Buttons button) = 0;
};
class IGamePad {
public:
virtual ~IGamePad(){}
virtual GamePadState GetState(PlayerIndex index) = 0;
virtual GamePadState GetState(PlayerIndex index, GamePadDeadZone deadZone) = 0;
virtual GamePadCapabilities GetCapabilities(PlayerIndex index) = 0;
virtual bool SetVibration(PlayerIndex index, float leftMotor, float rightMotor, float leftTrigger = 0, float rightTrigger = 0) = 0;
};
}
#endif