mirror of
https://github.com/shadps4-emu/shadPS4.git
synced 2025-08-04 08:22:32 +00:00
Update code style
This commit is contained in:
parent
9d6dd79486
commit
91e30ac62b
@ -701,7 +701,7 @@ void setDefaultValues() {
|
|||||||
gpuId = -1;
|
gpuId = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
constexpr std::string_view getDefaultKeyboardConfig() {
|
constexpr std::string_view GetDefaultKeyboardConfig() {
|
||||||
return R"(#This is the default keybinding config
|
return R"(#This is the default keybinding config
|
||||||
#To change per-game configs, modify the CUSAXXXXX.ini files
|
#To change per-game configs, modify the CUSAXXXXX.ini files
|
||||||
#To change the default config that applies to new games without modifying already existing configs, modify default.ini
|
#To change the default config that applies to new games without modifying already existing configs, modify default.ini
|
||||||
@ -780,7 +780,7 @@ axis_left_y_plus = s;
|
|||||||
|
|
||||||
)";
|
)";
|
||||||
}
|
}
|
||||||
std::filesystem::path getFoolproofKbmConfigFile(const std::string& game_id) {
|
std::filesystem::path GetFoolproofKbmConfigFile(const std::string& game_id) {
|
||||||
// Read configuration file of the game, and if it doesn't exist, generate it from default
|
// Read configuration file of the game, and if it doesn't exist, generate it from default
|
||||||
// If that doesn't exist either, generate that from getDefaultConfig() and try again
|
// If that doesn't exist either, generate that from getDefaultConfig() and try again
|
||||||
// If even the folder is missing, we start with that.
|
// If even the folder is missing, we start with that.
|
||||||
@ -797,7 +797,7 @@ std::filesystem::path getFoolproofKbmConfigFile(const std::string& game_id) {
|
|||||||
// Check if the default config exists
|
// Check if the default config exists
|
||||||
if (!std::filesystem::exists(default_config_file)) {
|
if (!std::filesystem::exists(default_config_file)) {
|
||||||
// If the default config is also missing, create it from getDefaultConfig()
|
// If the default config is also missing, create it from getDefaultConfig()
|
||||||
const auto default_config = getDefaultKeyboardConfig();
|
const auto default_config = GetDefaultKeyboardConfig();
|
||||||
std::ofstream default_config_stream(default_config_file);
|
std::ofstream default_config_stream(default_config_file);
|
||||||
if (default_config_stream) {
|
if (default_config_stream) {
|
||||||
default_config_stream << default_config;
|
default_config_stream << default_config;
|
||||||
|
@ -124,7 +124,7 @@ std::string getEmulatorLanguage();
|
|||||||
void setDefaultValues();
|
void setDefaultValues();
|
||||||
|
|
||||||
// todo: name and function location pending
|
// todo: name and function location pending
|
||||||
std::filesystem::path getFoolproofKbmConfigFile(const std::string& game_id = "");
|
std::filesystem::path GetFoolproofKbmConfigFile(const std::string& game_id = "");
|
||||||
|
|
||||||
// settings
|
// settings
|
||||||
u32 GetLanguage();
|
u32 GetLanguage();
|
||||||
|
@ -81,13 +81,13 @@ ControllerOutput output_array[] = {
|
|||||||
ControllerOutput(0, Input::Axis::AxisMax)};
|
ControllerOutput(0, Input::Axis::AxisMax)};
|
||||||
|
|
||||||
// We had to go through 3 files of indirection just to update a flag
|
// We had to go through 3 files of indirection just to update a flag
|
||||||
void toggleMouseEnabled() {
|
void ToggleMouseEnabled() {
|
||||||
mouse_enabled ^= true;
|
mouse_enabled ^= true;
|
||||||
}
|
}
|
||||||
// parsing related functions
|
// parsing related functions
|
||||||
|
|
||||||
// syntax: 'name, name,name' or 'name,name' or 'name'
|
// syntax: 'name, name,name' or 'name,name' or 'name'
|
||||||
InputBinding getBindingFromString(std::string& line) {
|
InputBinding GetBindingFromString(std::string& line) {
|
||||||
u32 key1 = 0, key2 = 0, key3 = 0;
|
u32 key1 = 0, key2 = 0, key3 = 0;
|
||||||
|
|
||||||
// Split the string by commas
|
// Split the string by commas
|
||||||
@ -118,7 +118,7 @@ InputBinding getBindingFromString(std::string& line) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// function that takes a controlleroutput, and returns the array's corresponding element's pointer
|
// function that takes a controlleroutput, and returns the array's corresponding element's pointer
|
||||||
ControllerOutput* getOutputPointer(const ControllerOutput& parsed) {
|
ControllerOutput* GetOutputPointer(const ControllerOutput& parsed) {
|
||||||
// i wonder how long until someone notices this or I get rid of it
|
// i wonder how long until someone notices this or I get rid of it
|
||||||
for (int i = 0; i[output_array] != ControllerOutput(0, Axis::AxisMax); i++) {
|
for (int i = 0; i[output_array] != ControllerOutput(0, Axis::AxisMax); i++) {
|
||||||
if (i[output_array] == parsed) {
|
if (i[output_array] == parsed) {
|
||||||
@ -128,11 +128,11 @@ ControllerOutput* getOutputPointer(const ControllerOutput& parsed) {
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void parseInputConfig(const std::string game_id = "") {
|
void ParseInputConfig(const std::string game_id = "") {
|
||||||
|
|
||||||
const auto config_file = Config::getFoolproofKbmConfigFile(game_id);
|
const auto config_file = Config::GetFoolproofKbmConfigFile(game_id);
|
||||||
|
|
||||||
// todo: change usages of this to getFoolproofKbmConfigFile (in the gui)
|
// todo: change usages of this to GetFoolproofKbmConfigFile (in the gui)
|
||||||
if (game_id == "") {
|
if (game_id == "") {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -186,15 +186,15 @@ void parseInputConfig(const std::string game_id = "") {
|
|||||||
if (output_string == "key_toggle") {
|
if (output_string == "key_toggle") {
|
||||||
if (comma_pos != std::string::npos) {
|
if (comma_pos != std::string::npos) {
|
||||||
// handle key-to-key toggling (separate list?)
|
// handle key-to-key toggling (separate list?)
|
||||||
InputBinding toggle_keys = getBindingFromString(input_string);
|
InputBinding toggle_keys = GetBindingFromString(input_string);
|
||||||
if (toggle_keys.keyCount() != 2) {
|
if (toggle_keys.KeyCount() != 2) {
|
||||||
LOG_ERROR(Input,
|
LOG_ERROR(Input,
|
||||||
"Syntax error: Please provide exactly 2 keys: "
|
"Syntax error: Please provide exactly 2 keys: "
|
||||||
"first is the toggler, the second is the key to toggle: {}",
|
"first is the toggler, the second is the key to toggle: {}",
|
||||||
line);
|
line);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
ControllerOutput* toggle_out = getOutputPointer(ControllerOutput(KEY_TOGGLE));
|
ControllerOutput* toggle_out = GetOutputPointer(ControllerOutput(KEY_TOGGLE));
|
||||||
BindingConnection toggle_connection =
|
BindingConnection toggle_connection =
|
||||||
BindingConnection(InputBinding(toggle_keys.key2), toggle_out, toggle_keys.key3);
|
BindingConnection(InputBinding(toggle_keys.key2), toggle_out, toggle_keys.key3);
|
||||||
connections.insert(connections.end(), toggle_connection);
|
connections.insert(connections.end(), toggle_connection);
|
||||||
@ -221,24 +221,24 @@ void parseInputConfig(const std::string game_id = "") {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// normal cases
|
// normal cases
|
||||||
InputBinding binding = getBindingFromString(input_string);
|
InputBinding binding = GetBindingFromString(input_string);
|
||||||
BindingConnection connection(0, nullptr);
|
BindingConnection connection(0, nullptr);
|
||||||
auto button_it = string_to_cbutton_map.find(output_string);
|
auto button_it = string_to_cbutton_map.find(output_string);
|
||||||
auto axis_it = string_to_axis_map.find(output_string);
|
auto axis_it = string_to_axis_map.find(output_string);
|
||||||
|
|
||||||
if (binding.isEmpty()) {
|
if (binding.IsEmpty()) {
|
||||||
LOG_DEBUG(Input, "Invalid format at line: {}, data: \"{}\", skipping line.", lineCount,
|
LOG_DEBUG(Input, "Invalid format at line: {}, data: \"{}\", skipping line.", lineCount,
|
||||||
line);
|
line);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (button_it != string_to_cbutton_map.end()) {
|
if (button_it != string_to_cbutton_map.end()) {
|
||||||
connection =
|
connection =
|
||||||
BindingConnection(binding, getOutputPointer(ControllerOutput(button_it->second)));
|
BindingConnection(binding, GetOutputPointer(ControllerOutput(button_it->second)));
|
||||||
connections.insert(connections.end(), connection);
|
connections.insert(connections.end(), connection);
|
||||||
|
|
||||||
} else if (axis_it != string_to_axis_map.end()) {
|
} else if (axis_it != string_to_axis_map.end()) {
|
||||||
connection = BindingConnection(
|
connection = BindingConnection(
|
||||||
binding, getOutputPointer(ControllerOutput(0, axis_it->second.axis)),
|
binding, GetOutputPointer(ControllerOutput(0, axis_it->second.axis)),
|
||||||
axis_it->second.value);
|
axis_it->second.value);
|
||||||
connections.insert(connections.end(), connection);
|
connections.insert(connections.end(), connection);
|
||||||
} else {
|
} else {
|
||||||
@ -253,7 +253,7 @@ void parseInputConfig(const std::string game_id = "") {
|
|||||||
LOG_DEBUG(Input, "Done parsing the input config!");
|
LOG_DEBUG(Input, "Done parsing the input config!");
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 getMouseWheelEvent(const SDL_Event& event) {
|
u32 GetMouseWheelEvent(const SDL_Event& event) {
|
||||||
if (event.type != SDL_EVENT_MOUSE_WHEEL && event.type != SDL_EVENT_MOUSE_WHEEL_OFF) {
|
if (event.type != SDL_EVENT_MOUSE_WHEEL && event.type != SDL_EVENT_MOUSE_WHEEL_OFF) {
|
||||||
LOG_DEBUG(Input, "Something went wrong with wheel input parsing!");
|
LOG_DEBUG(Input, "Something went wrong with wheel input parsing!");
|
||||||
return 0;
|
return 0;
|
||||||
@ -270,7 +270,7 @@ u32 getMouseWheelEvent(const SDL_Event& event) {
|
|||||||
return (u32)-1;
|
return (u32)-1;
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 InputBinding::getInputIDFromEvent(const SDL_Event& e) {
|
u32 InputBinding::GetInputIDFromEvent(const SDL_Event& e) {
|
||||||
switch (e.type) {
|
switch (e.type) {
|
||||||
case SDL_EVENT_KEY_DOWN:
|
case SDL_EVENT_KEY_DOWN:
|
||||||
case SDL_EVENT_KEY_UP:
|
case SDL_EVENT_KEY_UP:
|
||||||
@ -280,18 +280,18 @@ u32 InputBinding::getInputIDFromEvent(const SDL_Event& e) {
|
|||||||
return (u32)e.button.button;
|
return (u32)e.button.button;
|
||||||
case SDL_EVENT_MOUSE_WHEEL:
|
case SDL_EVENT_MOUSE_WHEEL:
|
||||||
case SDL_EVENT_MOUSE_WHEEL_OFF:
|
case SDL_EVENT_MOUSE_WHEEL_OFF:
|
||||||
return getMouseWheelEvent(e);
|
return GetMouseWheelEvent(e);
|
||||||
default:
|
default:
|
||||||
return (u32)-1;
|
return (u32)-1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
GameController* ControllerOutput::controller = nullptr;
|
GameController* ControllerOutput::controller = nullptr;
|
||||||
void ControllerOutput::setControllerOutputController(GameController* c) {
|
void ControllerOutput::GetControllerOutputController(GameController* c) {
|
||||||
ControllerOutput::controller = c;
|
ControllerOutput::controller = c;
|
||||||
}
|
}
|
||||||
|
|
||||||
void toggleKeyInList(u32 key) {
|
void ToggleKeyInList(u32 key) {
|
||||||
auto it = std::find(toggled_keys.begin(), toggled_keys.end(), key);
|
auto it = std::find(toggled_keys.begin(), toggled_keys.end(), key);
|
||||||
if (it == toggled_keys.end()) {
|
if (it == toggled_keys.end()) {
|
||||||
toggled_keys.insert(toggled_keys.end(), key);
|
toggled_keys.insert(toggled_keys.end(), key);
|
||||||
@ -302,7 +302,7 @@ void toggleKeyInList(u32 key) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ControllerOutput::update(bool pressed, u32 param) {
|
void ControllerOutput::Update(bool pressed, u32 param) {
|
||||||
float touchpad_x = 0;
|
float touchpad_x = 0;
|
||||||
if (button != 0) {
|
if (button != 0) {
|
||||||
switch (button) {
|
switch (button) {
|
||||||
@ -321,7 +321,7 @@ void ControllerOutput::update(bool pressed, u32 param) {
|
|||||||
break;
|
break;
|
||||||
case KEY_TOGGLE:
|
case KEY_TOGGLE:
|
||||||
if (pressed) {
|
if (pressed) {
|
||||||
toggleKeyInList(param);
|
ToggleKeyInList(param);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default: // is a normal key (hopefully)
|
default: // is a normal key (hopefully)
|
||||||
@ -358,7 +358,7 @@ void ControllerOutput::update(bool pressed, u32 param) {
|
|||||||
LOG_DEBUG(Input, "Controller output with no values detected!");
|
LOG_DEBUG(Input, "Controller output with no values detected!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void ControllerOutput::addUpdate(bool pressed, u32 param) {
|
void ControllerOutput::AddUpdate(bool pressed, u32 param) {
|
||||||
|
|
||||||
float touchpad_x = 0;
|
float touchpad_x = 0;
|
||||||
if (button != 0) {
|
if (button != 0) {
|
||||||
@ -381,7 +381,7 @@ void ControllerOutput::addUpdate(bool pressed, u32 param) {
|
|||||||
break;
|
break;
|
||||||
case KEY_TOGGLE:
|
case KEY_TOGGLE:
|
||||||
if (pressed) {
|
if (pressed) {
|
||||||
toggleKeyInList(param);
|
ToggleKeyInList(param);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default: // is a normal key (hopefully)
|
default: // is a normal key (hopefully)
|
||||||
@ -419,7 +419,7 @@ void ControllerOutput::addUpdate(bool pressed, u32 param) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void updatePressedKeys(u32 value, bool is_pressed) {
|
void UpdatePressedKeys(u32 value, bool is_pressed) {
|
||||||
if (is_pressed) {
|
if (is_pressed) {
|
||||||
// Find the correct position for insertion to maintain order
|
// Find the correct position for insertion to maintain order
|
||||||
auto it =
|
auto it =
|
||||||
@ -442,7 +442,7 @@ void updatePressedKeys(u32 value, bool is_pressed) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Check if a given binding's all keys are currently active.
|
// Check if a given binding's all keys are currently active.
|
||||||
bool isInputActive(const InputBinding& i) {
|
bool IsInputActive(const InputBinding& i) {
|
||||||
// Extract keys from InputBinding and ignore unused (0) keys
|
// Extract keys from InputBinding and ignore unused (0) keys
|
||||||
std::list<uint32_t> input_keys = {i.key1, i.key2, i.key3};
|
std::list<uint32_t> input_keys = {i.key1, i.key2, i.key3};
|
||||||
input_keys.remove(0);
|
input_keys.remove(0);
|
||||||
@ -484,11 +484,11 @@ bool isInputActive(const InputBinding& i) {
|
|||||||
*flag = true;
|
*flag = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG_DEBUG(Input, "Input found: {}", i.toString());
|
LOG_DEBUG(Input, "Input found: {}", i.ToString());
|
||||||
return true; // All keys are active
|
return true; // All keys are active
|
||||||
}
|
}
|
||||||
|
|
||||||
void activateOutputsFromInputs() {
|
void ActivateOutputsFromInputs() {
|
||||||
// LOG_DEBUG(Input, "Starting input scan... {} inputs active",
|
// LOG_DEBUG(Input, "Starting input scan... {} inputs active",
|
||||||
// std::distance(pressed_keys.begin(), pressed_keys.end()));
|
// std::distance(pressed_keys.begin(), pressed_keys.end()));
|
||||||
// reset everything
|
// reset everything
|
||||||
@ -497,7 +497,7 @@ void activateOutputsFromInputs() {
|
|||||||
}
|
}
|
||||||
for (auto it = connections.begin(); it != connections.end(); it++) {
|
for (auto it = connections.begin(); it != connections.end(); it++) {
|
||||||
if (it->output) {
|
if (it->output) {
|
||||||
it->output->update(false, 0);
|
it->output->Update(false, 0);
|
||||||
} else {
|
} else {
|
||||||
LOG_DEBUG(Input, "Null output in BindingConnection at position {}",
|
LOG_DEBUG(Input, "Null output in BindingConnection at position {}",
|
||||||
std::distance(connections.begin(), it));
|
std::distance(connections.begin(), it));
|
||||||
@ -507,13 +507,13 @@ void activateOutputsFromInputs() {
|
|||||||
// trio is found
|
// trio is found
|
||||||
for (auto& it : connections) {
|
for (auto& it : connections) {
|
||||||
if (it.output) {
|
if (it.output) {
|
||||||
bool active = isInputActive(it.binding);
|
bool active = IsInputActive(it.binding);
|
||||||
it.output->addUpdate(active, it.parameter);
|
it.output->AddUpdate(active, it.parameter);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void updateMouse(GameController* controller) {
|
void UpdateMouse(GameController* controller) {
|
||||||
if (!mouse_enabled)
|
if (!mouse_enabled)
|
||||||
return;
|
return;
|
||||||
Axis axis_x, axis_y;
|
Axis axis_x, axis_y;
|
||||||
@ -550,9 +550,9 @@ void updateMouse(GameController* controller) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Uint32 mousePolling(void* param, Uint32 id, Uint32 interval) {
|
Uint32 MousePolling(void* param, Uint32 id, Uint32 interval) {
|
||||||
auto* data = (GameController*)param;
|
auto* data = (GameController*)param;
|
||||||
updateMouse(data);
|
UpdateMouse(data);
|
||||||
return interval;
|
return interval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -175,12 +175,9 @@ const std::map<std::string, u32> string_to_keyboard_key_map = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// literally the only flag that needs external access
|
// literally the only flag that needs external access
|
||||||
void toggleMouseEnabled();
|
void ToggleMouseEnabled();
|
||||||
|
|
||||||
// i wrapped it in a function so I can collapse it
|
void ParseInputConfig(const std::string game_id);
|
||||||
std::string_view getDefaultKeyboardConfig();
|
|
||||||
|
|
||||||
void parseInputConfig(const std::string game_id);
|
|
||||||
|
|
||||||
class InputBinding {
|
class InputBinding {
|
||||||
public:
|
public:
|
||||||
@ -241,28 +238,28 @@ public:
|
|||||||
// but reverse order makes it check the actual keys first instead of possible 0-s,
|
// but reverse order makes it check the actual keys first instead of possible 0-s,
|
||||||
// potenially skipping the later expressions of the three-way AND
|
// potenially skipping the later expressions of the three-way AND
|
||||||
}
|
}
|
||||||
inline int keyCount() const {
|
inline int KeyCount() const {
|
||||||
return (key1 ? 1 : 0) + (key2 ? 1 : 0) + (key3 ? 1 : 0);
|
return (key1 ? 1 : 0) + (key2 ? 1 : 0) + (key3 ? 1 : 0);
|
||||||
}
|
}
|
||||||
// Sorts by the amount of non zero keys - left side is 'bigger' here
|
// Sorts by the amount of non zero keys - left side is 'bigger' here
|
||||||
bool operator<(const InputBinding& other) const {
|
bool operator<(const InputBinding& other) const {
|
||||||
return keyCount() > other.keyCount();
|
return KeyCount() > other.KeyCount();
|
||||||
}
|
}
|
||||||
inline bool isEmpty() {
|
inline bool IsEmpty() {
|
||||||
return key1 == 0 && key2 == 0 && key3 == 0;
|
return key1 == 0 && key2 == 0 && key3 == 0;
|
||||||
}
|
}
|
||||||
std::string toString() const {
|
std::string ToString() const {
|
||||||
return fmt::format("({}, {}, {})", key1, key2, key3);
|
return fmt::format("({}, {}, {})", key1, key2, key3);
|
||||||
}
|
}
|
||||||
|
|
||||||
// returns a u32 based on the event type (keyboard, mouse buttons, or wheel)
|
// returns a u32 based on the event type (keyboard, mouse buttons, or wheel)
|
||||||
static u32 getInputIDFromEvent(const SDL_Event& e);
|
static u32 GetInputIDFromEvent(const SDL_Event& e);
|
||||||
};
|
};
|
||||||
class ControllerOutput {
|
class ControllerOutput {
|
||||||
static GameController* controller;
|
static GameController* controller;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static void setControllerOutputController(GameController* c);
|
static void GetControllerOutputController(GameController* c);
|
||||||
|
|
||||||
u32 button;
|
u32 button;
|
||||||
Axis axis;
|
Axis axis;
|
||||||
@ -280,18 +277,18 @@ public:
|
|||||||
inline bool operator!=(const ControllerOutput& o) const {
|
inline bool operator!=(const ControllerOutput& o) const {
|
||||||
return button != o.button || axis != o.axis;
|
return button != o.button || axis != o.axis;
|
||||||
}
|
}
|
||||||
std::string toString() const {
|
std::string ToString() const {
|
||||||
return fmt::format("({}, {}, {})", button, (int)axis, axis_value);
|
return fmt::format("({}, {}, {})", button, (int)axis, axis_value);
|
||||||
}
|
}
|
||||||
inline bool isButton() const {
|
inline bool IsButton() const {
|
||||||
return axis == Axis::AxisMax && button != 0;
|
return axis == Axis::AxisMax && button != 0;
|
||||||
}
|
}
|
||||||
inline bool isAxis() const {
|
inline bool IsAxis() const {
|
||||||
return axis != Axis::AxisMax && button == 0;
|
return axis != Axis::AxisMax && button == 0;
|
||||||
}
|
}
|
||||||
void update(bool pressed, u32 param = 0);
|
void Update(bool pressed, u32 param = 0);
|
||||||
// Off events are not counted
|
// Off events are not counted
|
||||||
void addUpdate(bool pressed, u32 param = 0);
|
void AddUpdate(bool pressed, u32 param = 0);
|
||||||
};
|
};
|
||||||
class BindingConnection {
|
class BindingConnection {
|
||||||
public:
|
public:
|
||||||
@ -308,7 +305,7 @@ public:
|
|||||||
bool operator<(const BindingConnection& other) const {
|
bool operator<(const BindingConnection& other) const {
|
||||||
// a button is a higher priority than an axis, as buttons can influence axes
|
// a button is a higher priority than an axis, as buttons can influence axes
|
||||||
// (e.g. joystick_halfmode)
|
// (e.g. joystick_halfmode)
|
||||||
if (output->isButton() && other.output->isAxis()) {
|
if (output->IsButton() && other.output->IsAxis()) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (binding < other.binding) {
|
if (binding < other.binding) {
|
||||||
@ -319,16 +316,16 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Check if the 3 key input is currently active.
|
// Check if the 3 key input is currently active.
|
||||||
bool checkForInputDown(InputBinding i);
|
bool IsInputActive(const InputBinding& i);
|
||||||
|
|
||||||
// Add/remove the input that generated the event to/from the held keys container.
|
// Add/remove the input that generated the event to/from the held keys container.
|
||||||
void updatePressedKeys(u32 button, bool is_pressed);
|
void UpdatePressedKeys(u32 button, bool is_pressed);
|
||||||
|
|
||||||
void activateOutputsFromInputs();
|
void ActivateOutputsFromInputs();
|
||||||
|
|
||||||
void updateMouse(GameController* controller);
|
void UpdateMouse(GameController* controller);
|
||||||
|
|
||||||
// Polls the mouse for changes, and simulates joystick movement from it.
|
// Polls the mouse for changes, and simulates joystick movement from it.
|
||||||
Uint32 mousePolling(void* param, Uint32 id, Uint32 interval);
|
Uint32 MousePolling(void* param, Uint32 id, Uint32 interval);
|
||||||
|
|
||||||
} // namespace Input
|
} // namespace Input
|
@ -79,8 +79,8 @@ WindowSDL::WindowSDL(s32 width_, s32 height_, Input::GameController* controller_
|
|||||||
window_info.render_surface = SDL_Metal_GetLayer(SDL_Metal_CreateView(window));
|
window_info.render_surface = SDL_Metal_GetLayer(SDL_Metal_CreateView(window));
|
||||||
#endif
|
#endif
|
||||||
// input handler init-s
|
// input handler init-s
|
||||||
Input::ControllerOutput::setControllerOutputController(controller);
|
Input::ControllerOutput::GetControllerOutputController(controller);
|
||||||
Input::parseInputConfig(std::string(Common::ElfInfo::Instance().GameSerial()));
|
Input::ParseInputConfig(std::string(Common::ElfInfo::Instance().GameSerial()));
|
||||||
}
|
}
|
||||||
|
|
||||||
WindowSDL::~WindowSDL() = default;
|
WindowSDL::~WindowSDL() = default;
|
||||||
@ -101,12 +101,12 @@ void WindowSDL::waitEvent() {
|
|||||||
case SDL_EVENT_WINDOW_RESIZED:
|
case SDL_EVENT_WINDOW_RESIZED:
|
||||||
case SDL_EVENT_WINDOW_MAXIMIZED:
|
case SDL_EVENT_WINDOW_MAXIMIZED:
|
||||||
case SDL_EVENT_WINDOW_RESTORED:
|
case SDL_EVENT_WINDOW_RESTORED:
|
||||||
onResize();
|
OnResize();
|
||||||
break;
|
break;
|
||||||
case SDL_EVENT_WINDOW_MINIMIZED:
|
case SDL_EVENT_WINDOW_MINIMIZED:
|
||||||
case SDL_EVENT_WINDOW_EXPOSED:
|
case SDL_EVENT_WINDOW_EXPOSED:
|
||||||
is_shown = event.type == SDL_EVENT_WINDOW_EXPOSED;
|
is_shown = event.type == SDL_EVENT_WINDOW_EXPOSED;
|
||||||
onResize();
|
OnResize();
|
||||||
break;
|
break;
|
||||||
case SDL_EVENT_MOUSE_BUTTON_DOWN:
|
case SDL_EVENT_MOUSE_BUTTON_DOWN:
|
||||||
case SDL_EVENT_MOUSE_BUTTON_UP:
|
case SDL_EVENT_MOUSE_BUTTON_UP:
|
||||||
@ -114,7 +114,7 @@ void WindowSDL::waitEvent() {
|
|||||||
case SDL_EVENT_MOUSE_WHEEL_OFF:
|
case SDL_EVENT_MOUSE_WHEEL_OFF:
|
||||||
case SDL_EVENT_KEY_DOWN:
|
case SDL_EVENT_KEY_DOWN:
|
||||||
case SDL_EVENT_KEY_UP:
|
case SDL_EVENT_KEY_UP:
|
||||||
onKeyboardMouseInput(&event);
|
OnKeyboardMouseInput(&event);
|
||||||
break;
|
break;
|
||||||
case SDL_EVENT_GAMEPAD_BUTTON_DOWN:
|
case SDL_EVENT_GAMEPAD_BUTTON_DOWN:
|
||||||
case SDL_EVENT_GAMEPAD_BUTTON_UP:
|
case SDL_EVENT_GAMEPAD_BUTTON_UP:
|
||||||
@ -124,7 +124,7 @@ void WindowSDL::waitEvent() {
|
|||||||
case SDL_EVENT_GAMEPAD_TOUCHPAD_DOWN:
|
case SDL_EVENT_GAMEPAD_TOUCHPAD_DOWN:
|
||||||
case SDL_EVENT_GAMEPAD_TOUCHPAD_UP:
|
case SDL_EVENT_GAMEPAD_TOUCHPAD_UP:
|
||||||
case SDL_EVENT_GAMEPAD_TOUCHPAD_MOTION:
|
case SDL_EVENT_GAMEPAD_TOUCHPAD_MOTION:
|
||||||
onGamepadEvent(&event);
|
OnGamepadEvent(&event);
|
||||||
break;
|
break;
|
||||||
case SDL_EVENT_QUIT:
|
case SDL_EVENT_QUIT:
|
||||||
is_open = false;
|
is_open = false;
|
||||||
@ -136,10 +136,10 @@ void WindowSDL::waitEvent() {
|
|||||||
|
|
||||||
void WindowSDL::initTimers() {
|
void WindowSDL::initTimers() {
|
||||||
SDL_AddTimer(100, &PollController, controller);
|
SDL_AddTimer(100, &PollController, controller);
|
||||||
SDL_AddTimer(33, Input::mousePolling, (void*)controller);
|
SDL_AddTimer(33, Input::MousePolling, (void*)controller);
|
||||||
}
|
}
|
||||||
|
|
||||||
void WindowSDL::onResize() {
|
void WindowSDL::OnResize() {
|
||||||
SDL_GetWindowSizeInPixels(window, &width, &height);
|
SDL_GetWindowSizeInPixels(window, &width, &height);
|
||||||
ImGui::Core::OnResize();
|
ImGui::Core::OnResize();
|
||||||
}
|
}
|
||||||
@ -152,25 +152,25 @@ Uint32 wheelOffCallback(void* og_event, Uint32 timer_id, Uint32 interval) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void WindowSDL::onKeyboardMouseInput(const SDL_Event* event) {
|
void WindowSDL::OnKeyboardMouseInput(const SDL_Event* event) {
|
||||||
using Libraries::Pad::OrbisPadButtonDataOffset;
|
using Libraries::Pad::OrbisPadButtonDataOffset;
|
||||||
|
|
||||||
// get the event's id, if it's keyup or keydown
|
// get the event's id, if it's keyup or keydown
|
||||||
bool input_down = event->type == SDL_EVENT_KEY_DOWN ||
|
bool input_down = event->type == SDL_EVENT_KEY_DOWN ||
|
||||||
event->type == SDL_EVENT_MOUSE_BUTTON_DOWN ||
|
event->type == SDL_EVENT_MOUSE_BUTTON_DOWN ||
|
||||||
event->type == SDL_EVENT_MOUSE_WHEEL;
|
event->type == SDL_EVENT_MOUSE_WHEEL;
|
||||||
u32 input_id = Input::InputBinding::getInputIDFromEvent(*event);
|
u32 input_id = Input::InputBinding::GetInputIDFromEvent(*event);
|
||||||
|
|
||||||
// Handle window controls outside of the input maps
|
// Handle window controls outside of the input maps
|
||||||
if (event->type == SDL_EVENT_KEY_DOWN) {
|
if (event->type == SDL_EVENT_KEY_DOWN) {
|
||||||
// Reparse kbm inputs
|
// Reparse kbm inputs
|
||||||
if (input_id == SDLK_F8) {
|
if (input_id == SDLK_F8) {
|
||||||
Input::parseInputConfig(std::string(Common::ElfInfo::Instance().GameSerial()));
|
Input::ParseInputConfig(std::string(Common::ElfInfo::Instance().GameSerial()));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// Toggle mouse capture and movement input
|
// Toggle mouse capture and movement input
|
||||||
else if (input_id == SDLK_F7) {
|
else if (input_id == SDLK_F7) {
|
||||||
Input::toggleMouseEnabled();
|
Input::ToggleMouseEnabled();
|
||||||
SDL_SetWindowRelativeMouseMode(this->GetSdlWindow(),
|
SDL_SetWindowRelativeMouseMode(this->GetSdlWindow(),
|
||||||
!SDL_GetWindowRelativeMouseMode(this->GetSdlWindow()));
|
!SDL_GetWindowRelativeMouseMode(this->GetSdlWindow()));
|
||||||
return;
|
return;
|
||||||
@ -196,13 +196,13 @@ void WindowSDL::onKeyboardMouseInput(const SDL_Event* event) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// add/remove it from the list
|
// add/remove it from the list
|
||||||
Input::updatePressedKeys(input_id, input_down);
|
Input::UpdatePressedKeys(input_id, input_down);
|
||||||
|
|
||||||
// update bindings
|
// update bindings
|
||||||
Input::activateOutputsFromInputs();
|
Input::ActivateOutputsFromInputs();
|
||||||
}
|
}
|
||||||
|
|
||||||
void WindowSDL::onGamepadEvent(const SDL_Event* event) {
|
void WindowSDL::OnGamepadEvent(const SDL_Event* event) {
|
||||||
using Libraries::Pad::OrbisPadButtonDataOffset;
|
using Libraries::Pad::OrbisPadButtonDataOffset;
|
||||||
|
|
||||||
u32 button = 0;
|
u32 button = 0;
|
||||||
|
@ -71,9 +71,9 @@ public:
|
|||||||
void initTimers();
|
void initTimers();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void onResize();
|
void OnResize();
|
||||||
void onKeyboardMouseInput(const SDL_Event* event);
|
void OnKeyboardMouseInput(const SDL_Event* event);
|
||||||
void onGamepadEvent(const SDL_Event* event);
|
void OnGamepadEvent(const SDL_Event* event);
|
||||||
|
|
||||||
int sdlGamepadToOrbisButton(u8 button);
|
int sdlGamepadToOrbisButton(u8 button);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user