mirror of
https://github.com/BanjoRecomp/BanjoRecomp
synced 2026-08-05 17:23:16 -04:00
Initial support for multiple controllers. (#3)
* Support for multiple controllers. * Fix default bindings. * Backwards compatibility with controls from previous version.
This commit is contained in:
@@ -15,9 +15,9 @@ namespace banjo {
|
||||
void save_config();
|
||||
|
||||
void reset_input_bindings();
|
||||
void reset_cont_input_bindings();
|
||||
void reset_kb_input_bindings();
|
||||
void reset_single_input_binding(recomp::InputDevice device, recomp::GameInput input);
|
||||
void reset_cont_input_bindings(int controller_num);
|
||||
void reset_kb_input_bindings(int controller_num);
|
||||
void reset_single_input_binding(int controller_num, recomp::InputDevice device, recomp::GameInput input);
|
||||
|
||||
std::filesystem::path get_app_folder_path();
|
||||
|
||||
|
||||
+30
-7
@@ -70,13 +70,13 @@ namespace recomp {
|
||||
};
|
||||
|
||||
void poll_inputs();
|
||||
float get_input_analog(const InputField& field);
|
||||
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);
|
||||
float get_input_analog(int controller_num, const InputField& field);
|
||||
float get_input_analog(int controller_num, const std::span<const recomp::InputField> fields);
|
||||
bool get_input_digital(int controller_num, const InputField& field);
|
||||
bool get_input_digital(int controller_num, const std::span<const recomp::InputField> fields);
|
||||
void get_gyro_deltas(float* x, float* y);
|
||||
void get_mouse_deltas(float* x, float* y);
|
||||
void get_right_analog(float* x, float* y);
|
||||
void get_right_analog(int controller_num, float* x, float* y);
|
||||
|
||||
enum class InputDevice {
|
||||
Controller,
|
||||
@@ -157,8 +157,28 @@ namespace recomp {
|
||||
const std::string& get_input_name(GameInput input);
|
||||
const std::string& get_input_enum_name(GameInput input);
|
||||
GameInput get_input_from_enum_name(const std::string_view name);
|
||||
InputField& get_input_binding(GameInput input, size_t binding_index, InputDevice device);
|
||||
void set_input_binding(GameInput input, size_t binding_index, InputDevice device, InputField value);
|
||||
InputField& get_input_binding(int controller_num, GameInput input, size_t binding_index, InputDevice device);
|
||||
void set_input_binding(int controller_num, GameInput input, size_t binding_index, InputDevice device, InputField value);
|
||||
|
||||
struct ControllerGUID {
|
||||
std::string serial;
|
||||
int vendor{};
|
||||
int product{};
|
||||
int version{};
|
||||
int crc16{};
|
||||
int player_index{};
|
||||
};
|
||||
|
||||
void set_input_controller_guid(int controller_num, const ControllerGUID &guid);
|
||||
ControllerGUID get_input_controller_guid(int controller_num);
|
||||
|
||||
struct ControllerOption {
|
||||
std::string name;
|
||||
ControllerGUID guid;
|
||||
};
|
||||
|
||||
void refresh_controller_options();
|
||||
const std::vector<ControllerOption> &get_controller_options();
|
||||
|
||||
bool get_n64_input(int controller_num, uint16_t* buttons_out, float* x_out, float* y_out);
|
||||
void set_rumble(int controller_num, bool);
|
||||
@@ -195,6 +215,9 @@ namespace recomp {
|
||||
BackgroundInputMode get_background_input_mode();
|
||||
void set_background_input_mode(BackgroundInputMode mode);
|
||||
|
||||
bool get_single_controller_mode();
|
||||
void set_single_controller_mode(bool single_controller);
|
||||
|
||||
bool game_input_disabled();
|
||||
bool all_input_disabled();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user