DigitalController: Store button state/transfer state in save states

This commit is contained in:
Connor McLaughlin 2020-04-26 01:18:15 +10:00
parent 2ffcad3d37
commit fccc2dd295
3 changed files with 20 additions and 1 deletions

View File

@ -1,5 +1,6 @@
#include "digital_controller.h" #include "digital_controller.h"
#include "common/assert.h" #include "common/assert.h"
#include "common/state_wrapper.h"
DigitalController::DigitalController() = default; DigitalController::DigitalController() = default;
@ -20,6 +21,21 @@ std::optional<s32> DigitalController::GetButtonCodeByName(std::string_view butto
return StaticGetButtonCodeByName(button_name); 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::SetAxisState(s32 axis_code, float value) {}
void DigitalController::SetButtonState(Button button, bool pressed) void DigitalController::SetButtonState(Button button, bool pressed)

View File

@ -42,6 +42,9 @@ public:
std::optional<s32> GetAxisCodeByName(std::string_view axis_name) const override; std::optional<s32> GetAxisCodeByName(std::string_view axis_name) const override;
std::optional<s32> GetButtonCodeByName(std::string_view button_name) const override; std::optional<s32> 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 SetAxisState(s32 axis_code, float value) override;
void SetButtonState(s32 button_code, bool pressed) override; void SetButtonState(s32 button_code, bool pressed) override;

View File

@ -2,7 +2,7 @@
#include "types.h" #include "types.h"
static constexpr u32 SAVE_STATE_MAGIC = 0x43435544; 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) #pragma pack(push, 4)
struct SAVE_STATE_HEADER struct SAVE_STATE_HEADER