You've already forked pico-launcher
mirror of
https://github.com/LNH-team/pico-launcher.git
synced 2026-01-09 16:28:48 -08:00
58 lines
2.1 KiB
C++
58 lines
2.1 KiB
C++
#include "common.h"
|
|
#include "StateMachineTriggerChecker.h"
|
|
#include "RomBrowserStateMachine.h"
|
|
|
|
void RomBrowserStateMachine::Fire(RomBrowserStateTrigger trigger)
|
|
{
|
|
LOG_DEBUG("Fire %d\n", trigger);
|
|
_newTrigger = trigger;
|
|
}
|
|
|
|
bool RomBrowserStateMachine::FireDirect(RomBrowserStateTrigger trigger)
|
|
{
|
|
LOG_DEBUG("FireDirect %d\n", trigger);
|
|
RomBrowserState newState;
|
|
if (StateMachineTriggerChecker(_curState, trigger)
|
|
.In(RomBrowserState::Start)
|
|
.Trigger(RomBrowserStateTrigger::Navigate).GoesTo(RomBrowserState::LoadingFolder)
|
|
.In(RomBrowserState::Browser)
|
|
.Trigger(RomBrowserStateTrigger::ChangeDisplayMode).GoesTo(RomBrowserState::Browser)
|
|
.Trigger(RomBrowserStateTrigger::Navigate).GoesTo(RomBrowserState::LoadingFolder)
|
|
.Trigger(RomBrowserStateTrigger::ShowGameInfo).GoesTo(RomBrowserState::GameInfo)
|
|
.Trigger(RomBrowserStateTrigger::Launch).GoesTo(RomBrowserState::Launching)
|
|
.Trigger(RomBrowserStateTrigger::ShowDisplaySettings).GoesTo(RomBrowserState::DisplaySettings)
|
|
.In(RomBrowserState::GameInfo)
|
|
.Trigger(RomBrowserStateTrigger::HideGameInfo).GoesTo(RomBrowserState::Browser)
|
|
.In(RomBrowserState::LoadingFolder)
|
|
.Trigger(RomBrowserStateTrigger::FolderLoadDone).GoesTo(RomBrowserState::Browser)
|
|
.In(RomBrowserState::DisplaySettings)
|
|
.Trigger(RomBrowserStateTrigger::ChangeDisplayMode).GoesTo(RomBrowserState::DisplaySettings)
|
|
.Trigger(RomBrowserStateTrigger::HideDisplaySettings).GoesTo(RomBrowserState::Browser)
|
|
.Check(newState))
|
|
{
|
|
_prevState = _curState;
|
|
_curState = newState;
|
|
_lastTrigger = trigger;
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
void RomBrowserStateMachine::Update()
|
|
{
|
|
_stateChanged = false;
|
|
|
|
if (_newTrigger == RomBrowserStateTrigger::None)
|
|
return;
|
|
|
|
if (!FireDirect(_newTrigger))
|
|
{
|
|
LOG_ERROR("Trigger %d invalid in state %d\n", _newTrigger, _curState);
|
|
}
|
|
else
|
|
{
|
|
_stateChanged = true;
|
|
}
|
|
|
|
_newTrigger = RomBrowserStateTrigger::None;
|
|
} |