From fccc2dd295c0f98fa86e4aa60570e8788cd4a7a6 Mon Sep 17 00:00:00 2001 From: Connor McLaughlin Date: Sun, 26 Apr 2020 01:18:15 +1000 Subject: [PATCH] DigitalController: Store button state/transfer state in save states --- src/core/digital_controller.cpp | 16 ++++++++++++++++ src/core/digital_controller.h | 3 +++ src/core/save_state_version.h | 2 +- 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/core/digital_controller.cpp b/src/core/digital_controller.cpp index 5add08426..5444356e2 100644 --- a/src/core/digital_controller.cpp +++ b/src/core/digital_controller.cpp @@ -1,5 +1,6 @@ #include "digital_controller.h" #include "common/assert.h" +#include "common/state_wrapper.h" DigitalController::DigitalController() = default; @@ -20,6 +21,21 @@ std::optional DigitalController::GetButtonCodeByName(std::string_view butto return StaticGetButtonCodeByName(button_name); } +void DigitalController::Reset() +{ + m_transfer_state = TransferState::Idle; +} + +bool DigitalController::DoState(StateWrapper& sw) +{ + if (!Controller::DoState(sw)) + return false; + + sw.Do(&m_button_state); + sw.Do(&m_transfer_state); + return true; +} + void DigitalController::SetAxisState(s32 axis_code, float value) {} void DigitalController::SetButtonState(Button button, bool pressed) diff --git a/src/core/digital_controller.h b/src/core/digital_controller.h index e970c64f4..113283b8b 100644 --- a/src/core/digital_controller.h +++ b/src/core/digital_controller.h @@ -42,6 +42,9 @@ public: std::optional GetAxisCodeByName(std::string_view axis_name) const override; std::optional GetButtonCodeByName(std::string_view button_name) const override; + void Reset() override; + bool DoState(StateWrapper& sw) override; + void SetAxisState(s32 axis_code, float value) override; void SetButtonState(s32 button_code, bool pressed) override; diff --git a/src/core/save_state_version.h b/src/core/save_state_version.h index c14d0aaa2..3f891159c 100644 --- a/src/core/save_state_version.h +++ b/src/core/save_state_version.h @@ -2,7 +2,7 @@ #include "types.h" static constexpr u32 SAVE_STATE_MAGIC = 0x43435544; -static constexpr u32 SAVE_STATE_VERSION = 26; +static constexpr u32 SAVE_STATE_VERSION = 27; #pragma pack(push, 4) struct SAVE_STATE_HEADER