mirror of
https://github.com/LNH-team/pico-launcher.git
synced 2026-06-02 09:06:54 +02:00
Initial commit
This commit is contained in:
58
arm9/source/romBrowser/RomBrowserStateMachine.cpp
Normal file
58
arm9/source/romBrowser/RomBrowserStateMachine.cpp
Normal file
@@ -0,0 +1,58 @@
|
||||
#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;
|
||||
}
|
||||
Reference in New Issue
Block a user