dialog history support
This commit is contained in:
@@ -42,6 +42,7 @@ interface Director<Set:Cloneable<Set>, Actor, Sound, Song, Prop, VoiceTrack, Cam
|
|||||||
function resume():Void;
|
function resume():Void;
|
||||||
|
|
||||||
function showPauseMenu(resume:Continuation):Void;
|
function showPauseMenu(resume:Continuation):Void;
|
||||||
|
function showDialogHistory(history:Array<HistoryElement<Actor>>, resume:Continuation):Void;
|
||||||
|
|
||||||
function chooseString(prompt:String, choices:Array<String>, submit:String->Void):Void;
|
function chooseString(prompt:String, choices:Array<String>, submit:String->Void):Void;
|
||||||
function enterString(prompt:String, submit:String->Void):Void;
|
function enterString(prompt:String, submit:String->Void):Void;
|
||||||
|
@@ -37,6 +37,14 @@ typedef VoiceLine = {
|
|||||||
?alts:Array<VoiceLine>
|
?alts:Array<VoiceLine>
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum HistoryElement<Actor> {
|
||||||
|
Sound(caption:String);
|
||||||
|
Dialog(speakerName:String, type:SpeechType<Actor>, wryly:String, text:String);
|
||||||
|
Super(text:String);
|
||||||
|
// Scene change? To provide a horizontal divider or something? But what constitutes a scene change? Intercut would add too many.
|
||||||
|
// I don't want to manually define scene changes though.
|
||||||
|
}
|
||||||
|
|
||||||
// (speakerName, character, wryly, args, text, cc) -> cleanup function
|
// (speakerName, character, wryly, args, text, cc) -> cleanup function
|
||||||
typedef CustomDialogTypeHandler<Actor> = (String, Character<Actor>, String, Array<Dynamic>, String, Continuation) -> (Void->Void);
|
typedef CustomDialogTypeHandler<Actor> = (String, Character<Actor>, String, Array<Dynamic>, String, Continuation) -> (Void->Void);
|
||||||
|
|
||||||
|
@@ -11,6 +11,8 @@
|
|||||||
(var MAX_CAPTION_DURATION 3)
|
(var MAX_CAPTION_DURATION 3)
|
||||||
(prop &mut :Int captionId 0)
|
(prop &mut :Int captionId 0)
|
||||||
|
|
||||||
|
(prop :Array<HistoryElement<Actor>> dialogHistory [])
|
||||||
|
|
||||||
// Mostly immutable, reusable resources:
|
// Mostly immutable, reusable resources:
|
||||||
(prop :FuzzyMap<Set> sets (new FuzzyMap<Set>))
|
(prop :FuzzyMap<Set> sets (new FuzzyMap<Set>))
|
||||||
(prop :FuzzyMap<Actor> actors (new FuzzyMap<Actor>))
|
(prop :FuzzyMap<Actor> actors (new FuzzyMap<Actor>))
|
||||||
@@ -68,6 +70,7 @@
|
|||||||
(when _hideCustomDialog
|
(when _hideCustomDialog
|
||||||
(_hideCustomDialog)
|
(_hideCustomDialog)
|
||||||
(set _hideCustomDialog null))
|
(set _hideCustomDialog null))
|
||||||
|
(dialogHistory.push (Dialog actorName dialogType wryly text))
|
||||||
(processIntercut actorName
|
(processIntercut actorName
|
||||||
(makeCC
|
(makeCC
|
||||||
(let [cc ->:Void {(director.hideDialog) (cc)}
|
(let [cc ->:Void {(director.hideDialog) (cc)}
|
||||||
@@ -294,6 +297,8 @@
|
|||||||
(shortcutHandler.start))
|
(shortcutHandler.start))
|
||||||
(shortcutHandler.registerItem "{escape} Pause the movie"
|
(shortcutHandler.registerItem "{escape} Pause the movie"
|
||||||
->cc (director.showPauseMenu cc))
|
->cc (director.showPauseMenu cc))
|
||||||
|
(shortcutHandler.registerItem "{tab} show dialog history"
|
||||||
|
->cc (director.showDialogHistory dialogHistory cc))
|
||||||
|
|
||||||
(#when debug
|
(#when debug
|
||||||
(shortcutHandler.registerItem "[d]efine [d]elay"
|
(shortcutHandler.registerItem "[d]efine [d]elay"
|
||||||
@@ -462,6 +467,8 @@
|
|||||||
(set volumeMod (or volumeMod 1))
|
(set volumeMod (or volumeMod 1))
|
||||||
(assert (<= 0 volumeMod 1))
|
(assert (<= 0 volumeMod 1))
|
||||||
(localVar &mut :Null<Int> id null)
|
(localVar &mut :Null<Int> id null)
|
||||||
|
(whenLet [desc (dictGet soundDescriptions name)]
|
||||||
|
(dialogHistory.push (Sound desc)))
|
||||||
(when showCaptions
|
(when showCaptions
|
||||||
(whenLet [desc (dictGet soundDescriptions name)]
|
(whenLet [desc (dictGet soundDescriptions name)]
|
||||||
(set id captionId++)
|
(set id captionId++)
|
||||||
@@ -599,6 +606,7 @@
|
|||||||
|
|
||||||
|
|
||||||
(hollywooMethod superText true [text :Continuation cc]
|
(hollywooMethod superText true [text :Continuation cc]
|
||||||
|
(dialogHistory.push (Super text))
|
||||||
// Skip voice track handling:
|
// Skip voice track handling:
|
||||||
(director.showDialog "" Super "" text cc))
|
(director.showDialog "" Super "" text cc))
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user