mirror of
https://github.com/Zelda64Recomp/Zelda64Recomp
synced 2026-07-11 15:29:05 -04:00
Implemented rebinding inputs from UI (controller only so far) and built minimal UI for doing so
This commit is contained in:
+21
-1
@@ -6,11 +6,14 @@
|
||||
#include <vector>
|
||||
#include <type_traits>
|
||||
#include <span>
|
||||
#include <string>
|
||||
|
||||
namespace recomp {
|
||||
struct InputField {
|
||||
uint32_t device_type;
|
||||
uint32_t input_type;
|
||||
int32_t input_id;
|
||||
std::string to_string() const;
|
||||
auto operator<=>(const InputField& rhs) const = default;
|
||||
};
|
||||
|
||||
void poll_inputs();
|
||||
@@ -18,6 +21,16 @@ namespace recomp {
|
||||
float get_input_analog(const std::span<const recomp::InputField> fields);
|
||||
bool get_input_digital(const InputField& field);
|
||||
bool get_input_digital(const std::span<const recomp::InputField> fields);
|
||||
|
||||
enum class InputDevice {
|
||||
Controller,
|
||||
Keyboard,
|
||||
COUNT
|
||||
};
|
||||
|
||||
void start_scanning_input(InputDevice device);
|
||||
void finish_scanning_input(InputField scanned_field);
|
||||
InputField get_scanned_input();
|
||||
|
||||
struct DefaultN64Mappings {
|
||||
std::vector<InputField> a;
|
||||
@@ -46,13 +59,20 @@ namespace recomp {
|
||||
extern const DefaultN64Mappings default_n64_keyboard_mappings;
|
||||
extern const DefaultN64Mappings default_n64_controller_mappings;
|
||||
|
||||
constexpr size_t bindings_per_input = 2;
|
||||
|
||||
// Loads the user's saved controller mapping if one exists, loads the default mappings if no saved mapping exists.
|
||||
void init_control_mappings();
|
||||
size_t get_num_inputs();
|
||||
const std::vector<std::string>& get_input_names();
|
||||
InputField& get_input_binding(size_t input_index, size_t binding_index, InputDevice device);
|
||||
void set_input_binding(size_t input_index, size_t binding_index, InputDevice device, InputField value);
|
||||
|
||||
void get_n64_input(uint16_t* buttons_out, float* x_out, float* y_out);
|
||||
void handle_events();
|
||||
|
||||
bool game_input_disabled();
|
||||
bool all_input_disabled();
|
||||
|
||||
// TODO move these
|
||||
void quicksave_save();
|
||||
|
||||
Reference in New Issue
Block a user