@startuml titlescreen startup !theme materia-outline skinparam DefaultFontName Courier skinparam Shadowing false participant usc participant "titlescreen.lua" as main collections screens collections pages usc -> main : load titlescreen.lua activate main group construct screens main -> screens : create screens -> pages : create screens -> pages : set callbacks main -> screens : set callbacks main -> usc : get persistent states main <-- usc main -> screens : load persistent previous state values end main -> usc : get last screen value main <-- usc main -> main : set last screen value as current screen main -> screens : call current screen's init() activate screens screens -> usc : set current screen as last screen value screens -> pages : init() activate pages loop main render loop main -> screens : call current screen's render() activate screens screens -> pages : render() activate pages deactivate screens deactivate pages end @enduml