make preloading async loop-friendly

This commit is contained in:
2023-05-11 14:23:46 -06:00
parent c716798411
commit 15133efa56
2 changed files with 23 additions and 20 deletions

View File

@@ -83,6 +83,6 @@ interface Director<Set:Cloneable<Set>, Actor, Sound, Song, Prop, VoiceTrack, Cam
function rollCredits(credits:Array<CreditsLine>, cc:Continuation):Void;
function doLoading(_load:Void->Void, cc:Continuation):Void;
function doLoading(_load:Array<Void->Void>, cc:Continuation):Void;
function cleanup():Void;
}

View File

@@ -36,25 +36,28 @@
(collectBlocks cleanup (#when (StringTools.contains kissFile className) (cc)))
(defMacro end []
`{
(method doPreload [:Void->Void cc]
(director.showTitleCard ["LOADING"]
(makeCC
(set isLoading true)
(director.doLoading ->:Void {
(collectedBlocks preload)
(set isLoading false)
} (makeCC
(director.hideTitleCard)
(cc))))))
(method doCleanup []
(director.cleanup)
(set lastInstructionPointer -2)
(collectedBlocks cleanup))
(doCleanup)
(when onComplete
(onComplete))
})
(let [collectedPreloads (getCollectedExps "preload")
preloadFuncs
(for exp collectedPreloads
`->:Void {,exp})]
`{
(method doPreload [:Void->Void cc]
(director.showTitleCard ["LOADING"]
(makeCC
(set isLoading true)
(director.doLoading ,preloadFuncs
(makeCC
(set isLoading false)
(director.hideTitleCard)
(cc))))))
(method doCleanup []
(director.cleanup)
(set lastInstructionPointer -2)
(collectedBlocks cleanup))
(doCleanup)
(when onComplete
(onComplete))
}))
(defReaderMacro &bof "" [stream] `(#when (StringTools.contains kissFile className) (doPreload cc)))
(defReaderMacro &eof "" [stream] `(#when (StringTools.contains kissFile className) (end)))