bsn! {
#AppState
AppStateRoot
StateMachineId("app_state".into())
InitialState(#MainMenu)
Transitions [
Target(#MainMenu)
EventEdge::<AppEvent>::from("ReturnToMain")
---
Target(#Settings)
EventEdge::<AppEvent>::from("SelectSettings")
---
Target(#Quit)
EventEdge::<AppEvent>::from("SelectQuit")
]
Substates [
#MainMenu
AppState::MainMenu
Transitions [
Target(#New)
EventEdge::<AppEvent>::from("SelectNew")
---
Target(#Load)
EventEdge::<AppEvent>::from("SelectLoad")
]
---
#New
AppState::New
InitialState(#Appearance)
Transitions [
Target(#InGame)
EventEdge::<TryLoadCharacter>::from("TryLoadCharacter")
]
Substates [
#Appearance
NewState::Appearance
Transitions [
Target(#Parameters)
EventEdge::<AppEvent>::from("SelectNext")
]
---
#Parameters
NewState::Parameters
Transitions [
Target(#Name)
EventEdge::<AppEvent>::from("SelectNext")
---
Target(#Parameters)
EventEdge::<AppEvent>::from("SelectBack")
]
---
#Name
NewState::Name
Transitions [
Target(#Parameters)
EventEdge::<AppEvent>::from("SelectBack")
]
]
---
#Load
AppState::Load
Transitions [
Target(#InGame)
EventEdge::<TryLoadCharacter>::from("TryLoadCharacter")
]
---
#Settings
AppState::Settings
---
#Quit
AppState::Quit
---
#InGame
AppState::InGame
Transitions [
Target(#Talents)
EventEdge::<AppEvent>::from("ToggleTalents")
---
Target(#FtSinMap)
EventEdge::<AppEvent>::from("ToggleFtSinMap")
---
Target(#FtSinMap)
EventEdge::<AppEvent>::from("EnterFtSinMap")
]
Substates [
#Panels
InGameState::Panels
Substates [
#LeftPanel
SubStates [
#Closed
LeftPanelState::Closed
]
---
#RightPanel
SubStates [
#Closed
RightPanelState::Closed
Transitions [
Target(#Inventory)
EventEdge::<AppEvent>::from("ToggleInventory")
]
---
#Inventory
RightPanelState::Inventory
Transitions [
Target(#Closed)
EventEdge::<AppEvent>::from("ToggleInventory")
]
]
]
---
#Talents
InGameState::Talents
Transitions [
Target(#Panels)
EventEdge::<AppEvent>::from("ToggleTalents")
]
---
#FtSinMap
InGameState::FtSinMap
Transitions [
Target(#Panels)
EventEdge::<AppEvent>::from("ToggleFtSinMap")
---
Target(#InGame)
EventEdge::<AppEvent>::from("ExitFtSinMap")
]
]
]
}
This is what it would look like in the most recently proposed iteration of bsn! for reference