From 307e07d6513f9524b7fcab5134494bd175465cd1 Mon Sep 17 00:00:00 2001 From: Hannes Schulze Date: Thu, 30 Jan 2025 16:43:06 +0100 Subject: handle input devices in the c++ application --- lib/nes/app/input/input-device-controller.hh | 38 ++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 lib/nes/app/input/input-device-controller.hh (limited to 'lib/nes/app/input/input-device-controller.hh') diff --git a/lib/nes/app/input/input-device-controller.hh b/lib/nes/app/input/input-device-controller.hh new file mode 100644 index 0000000..6adb79c --- /dev/null +++ b/lib/nes/app/input/input-device-controller.hh @@ -0,0 +1,38 @@ +#pragma once + +#include "nes/app/input/input-device.hh" +#include "nes/common/list.hh" +#include + +namespace nes +{ + /// A game controller input device. + class input_device_controller : public input_device, public list::node + { + public: + enum class index + { + unused = -1, + player_1 = 0, + player_2 = 1, + }; + + /// Indicates whether the controller can be trusted to actually exist. + /// + /// If this returns false, the controller is not automatically selected on startup if there is no other + /// controller already selected. + virtual auto is_reliable() const -> bool = 0; + + /// Human-readable name for the controller. + virtual auto get_name() const -> std::string_view = 0; + + /// Get the (persistent) player index for the controller, if already set before. + virtual auto get_index() const -> index = 0; + + /// Set the (persistent) player index for the controller. + virtual auto set_index(index) -> void = 0; + + protected: + explicit input_device_controller() = default; + }; +} // namespace nes \ No newline at end of file -- cgit v1.3.1