|
|
@ -14,16 +14,25 @@ namespace InputCommon { |
|
|
|
|
|
|
|
|
class MouseButton final : public Input::ButtonDevice { |
|
|
class MouseButton final : public Input::ButtonDevice { |
|
|
public: |
|
|
public: |
|
|
explicit MouseButton(u32 button_, const MouseInput::Mouse* mouse_input_) |
|
|
|
|
|
: button(button_), mouse_input(mouse_input_) {} |
|
|
|
|
|
|
|
|
explicit MouseButton(u32 button_, bool toggle_, MouseInput::Mouse* mouse_input_) |
|
|
|
|
|
: button(button_), toggle(toggle_), mouse_input(mouse_input_) {} |
|
|
|
|
|
|
|
|
bool GetStatus() const override { |
|
|
bool GetStatus() const override { |
|
|
return mouse_input->GetMouseState(button).pressed; |
|
|
|
|
|
|
|
|
const bool button_state = mouse_input->GetMouseState(button).pressed; |
|
|
|
|
|
if (!toggle) { |
|
|
|
|
|
return button_state; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (button_state) { |
|
|
|
|
|
return mouse_input->ToggleButton(button); |
|
|
|
|
|
} |
|
|
|
|
|
return mouse_input->UnlockButton(button); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
private: |
|
|
private: |
|
|
const u32 button; |
|
|
const u32 button; |
|
|
const MouseInput::Mouse* mouse_input; |
|
|
|
|
|
|
|
|
const bool toggle; |
|
|
|
|
|
MouseInput::Mouse* mouse_input; |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
MouseButtonFactory::MouseButtonFactory(std::shared_ptr<MouseInput::Mouse> mouse_input_) |
|
|
MouseButtonFactory::MouseButtonFactory(std::shared_ptr<MouseInput::Mouse> mouse_input_) |
|
|
@ -32,8 +41,9 @@ MouseButtonFactory::MouseButtonFactory(std::shared_ptr<MouseInput::Mouse> mouse_ |
|
|
std::unique_ptr<Input::ButtonDevice> MouseButtonFactory::Create( |
|
|
std::unique_ptr<Input::ButtonDevice> MouseButtonFactory::Create( |
|
|
const Common::ParamPackage& params) { |
|
|
const Common::ParamPackage& params) { |
|
|
const auto button_id = params.Get("button", 0); |
|
|
const auto button_id = params.Get("button", 0); |
|
|
|
|
|
const auto toggle = params.Get("toggle", false); |
|
|
|
|
|
|
|
|
return std::make_unique<MouseButton>(button_id, mouse_input.get()); |
|
|
|
|
|
|
|
|
return std::make_unique<MouseButton>(button_id, toggle, mouse_input.get()); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
Common::ParamPackage MouseButtonFactory::GetNextInput() const { |
|
|
Common::ParamPackage MouseButtonFactory::GetNextInput() const { |
|
|
|