scene selection from pause menu
This commit is contained in:
@@ -79,6 +79,18 @@
|
||||
|
||||
(prop &mut :SimpleWindow pauseMenu null)
|
||||
|
||||
(method :Void sceneSelection []
|
||||
// TODO map escape: back to pause menu and highlight sceneSelectionIndex
|
||||
(let [runners (movie.labelRunners)]
|
||||
(chooseString
|
||||
"Skip to scene?"
|
||||
(sort (collect (runners.keys)))
|
||||
->label {
|
||||
(let [m flxMovie]
|
||||
(m.prepareForSkip)
|
||||
((dictGet runners label) m.skipMovie))
|
||||
})))
|
||||
|
||||
(method :Void showPauseMenu [:Continuation resume]
|
||||
// register escape to resume (and register escape to pause when resuming lol)
|
||||
(sh.registerItem "{escape} resume" ->cc {
|
||||
@@ -86,7 +98,8 @@
|
||||
(sh.registerItem "{escape} pause" ->cc (showPauseMenu cc) true)
|
||||
(resume)
|
||||
} true)
|
||||
(let [choices ["" "Resume" "Options" "Main Menu" "Quit to Desktop"]
|
||||
(let [choices ["" "Resume" "Scene Selection" "Options" "Main Menu" "Quit to Desktop"]
|
||||
sceneSelectionIndex (choices.indexOf "Scene Selection")
|
||||
optsIdx (choices.indexOf "Options")]
|
||||
// chooseString automatically sets pauseMenu
|
||||
(chooseString "PAUSED" choices
|
||||
@@ -95,6 +108,9 @@
|
||||
("Resume"
|
||||
(sh.registerItem "{escape} pause" ->cc (showPauseMenu cc) true)
|
||||
(resume))
|
||||
("Scene Selection"
|
||||
(sh.cancel)
|
||||
(sceneSelection))
|
||||
("Options"
|
||||
(sh.cancel)
|
||||
(MenuState.optionsMenu
|
||||
|
@@ -55,5 +55,6 @@ class FlxMovie extends Movie<FlxSprite, ActorFlxSprite, FlxSound, FlxSound, FlxS
|
||||
public function update(elapsed:Float):Void {}
|
||||
|
||||
// Such a hack:
|
||||
private var skipMovie:FlxMovie = null;
|
||||
public var skipMovie:FlxMovie = null;
|
||||
public function prepareForSkip():Void {}
|
||||
}
|
||||
|
@@ -416,29 +416,24 @@
|
||||
(linearMotion skipping inCameraPos 0 0 speed finish soundLoop volumeMod [outCameraPos])))))
|
||||
|
||||
(defMacro addSkips [flxMovieClass]
|
||||
`(#when debug
|
||||
(method prepareForSkip []
|
||||
`{
|
||||
(method &override :Void prepareForSkip []
|
||||
(kiss_tools.TimerWithPause.stopAll)
|
||||
(flxDirector.pause)
|
||||
(.clear (director.shortcutHandler))
|
||||
(doCleanup)
|
||||
(set skipMovie (new ,flxMovieClass flxDirector)))
|
||||
|
||||
(preload
|
||||
(.registerItem (director.shortcutHandler) "[n]ext label"
|
||||
->cc {
|
||||
(prepareForSkip)
|
||||
(runFromNextLabel skipMovie)
|
||||
})
|
||||
(#when debug
|
||||
(preload
|
||||
(.registerItem (director.shortcutHandler) "[n]ext label"
|
||||
->cc {
|
||||
(prepareForSkip)
|
||||
(runFromNextLabel skipMovie)
|
||||
})
|
||||
|
||||
|
||||
(.registerItem (director.shortcutHandler) "skip to [l]abel"
|
||||
->cc
|
||||
(let [runners (labelRunners)]
|
||||
(director.chooseString
|
||||
"Skip to scene?"
|
||||
(sort (collect (runners.keys)))
|
||||
->label {
|
||||
(prepareForSkip)
|
||||
((dictGet runners label) skipMovie)
|
||||
}))))))
|
||||
(.registerItem (director.shortcutHandler) "skip to [l]abel"
|
||||
->cc
|
||||
(flxDirector.sceneSelection))))
|
||||
})
|
Reference in New Issue
Block a user