Fix some warnings/crashes in Week 6
assets submod
This commit is contained in:
committed by
Cameron Taylor
parent
d9fd814645
commit
ea2d45e6c9
+1
-1
Submodule assets updated: 37c65b743d...05f17d2ead
@@ -30,6 +30,7 @@ import funkin.util.EaseUtil;
|
||||
*
|
||||
* This shit is great for modders but it's pretty elaborate for how much it'll actually be used, lolol. -Eric
|
||||
*/
|
||||
@:nullSafety
|
||||
class Conversation extends FlxSpriteGroup implements IDialogueScriptedClass implements IRegistryEntry<ConversationData>
|
||||
{
|
||||
/**
|
||||
@@ -44,8 +45,9 @@ class Conversation extends FlxSpriteGroup implements IDialogueScriptedClass impl
|
||||
|
||||
/**
|
||||
* Conversation data as parsed from the JSON file.
|
||||
* `null` if the data could not be parsed or loaded.
|
||||
*/
|
||||
public final _data:ConversationData;
|
||||
public final _data:Null<ConversationData>;
|
||||
|
||||
/**
|
||||
* The current entry in the dialogue.
|
||||
@@ -56,7 +58,7 @@ class Conversation extends FlxSpriteGroup implements IDialogueScriptedClass impl
|
||||
|
||||
function get_currentDialogueEntryCount():Int
|
||||
{
|
||||
return _data.dialogue.length;
|
||||
return _data?.dialogue?.length ?? 0;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -68,12 +70,12 @@ class Conversation extends FlxSpriteGroup implements IDialogueScriptedClass impl
|
||||
|
||||
function get_currentDialogueLineCount():Int
|
||||
{
|
||||
return currentDialogueEntryData.text.length;
|
||||
return currentDialogueEntryData?.text?.length ?? 0;
|
||||
}
|
||||
|
||||
var currentDialogueEntryData(get, never):DialogueEntryData;
|
||||
var currentDialogueEntryData(get, never):Null<DialogueEntryData>;
|
||||
|
||||
function get_currentDialogueEntryData():DialogueEntryData
|
||||
function get_currentDialogueEntryData():Null<DialogueEntryData>
|
||||
{
|
||||
if (_data == null || _data.dialogue == null) return null;
|
||||
if (currentDialogueEntry < 0 || currentDialogueEntry >= _data.dialogue.length) return null;
|
||||
@@ -85,22 +87,23 @@ class Conversation extends FlxSpriteGroup implements IDialogueScriptedClass impl
|
||||
|
||||
function get_currentDialogueLineString():String
|
||||
{
|
||||
return currentDialogueEntryData?.text[currentDialogueLine];
|
||||
// TODO: Replace "" with some placeholder text?
|
||||
return currentDialogueEntryData?.text[currentDialogueLine] ?? "";
|
||||
}
|
||||
|
||||
/**
|
||||
* AUDIO
|
||||
*/
|
||||
var music:FunkinSound;
|
||||
var music:Null<FunkinSound>;
|
||||
|
||||
/**
|
||||
* GRAPHICS
|
||||
*/
|
||||
var backdrop:FunkinSprite;
|
||||
var backdrop:Null<FunkinSprite>;
|
||||
|
||||
var currentSpeaker:Speaker;
|
||||
var currentSpeaker:Null<Speaker>;
|
||||
|
||||
var currentDialogueBox:DialogueBox;
|
||||
var currentDialogueBox:Null<DialogueBox>;
|
||||
|
||||
public function new(id:String)
|
||||
{
|
||||
@@ -128,17 +131,23 @@ class Conversation extends FlxSpriteGroup implements IDialogueScriptedClass impl
|
||||
|
||||
function setupMusic():Void
|
||||
{
|
||||
if (_data == null) return;
|
||||
|
||||
if (_data.music == null || (_data.music.asset ?? "") == "") return;
|
||||
|
||||
music = FunkinSound.load(Paths.music(_data.music.asset), 0.0, true, true, true);
|
||||
var fadeTime:Float = _data.music.fadeTime ?? 0.0;
|
||||
|
||||
if (_data.music.fadeTime > 0.0)
|
||||
if (fadeTime > 0.0)
|
||||
{
|
||||
FlxTween.tween(music, {volume: 1.0}, _data.music.fadeTime, {ease: FlxEase.linear});
|
||||
FlxTween.tween(music, {volume: 1.0}, fadeTime, {ease: FlxEase.linear});
|
||||
}
|
||||
else
|
||||
{
|
||||
music.volume = 1.0;
|
||||
if (music != null)
|
||||
{
|
||||
music.volume = 1.0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -160,6 +169,8 @@ class Conversation extends FlxSpriteGroup implements IDialogueScriptedClass impl
|
||||
|
||||
function setupBackdrop():Void
|
||||
{
|
||||
if (_data == null) return;
|
||||
|
||||
if (backdrop != null)
|
||||
{
|
||||
backdrop.destroy();
|
||||
@@ -175,12 +186,13 @@ class Conversation extends FlxSpriteGroup implements IDialogueScriptedClass impl
|
||||
switch (_data.backdrop)
|
||||
{
|
||||
case SOLID(backdropData):
|
||||
var targetColor:FlxColor = FlxColor.fromString(backdropData.color);
|
||||
var targetColor:Null<FlxColor> = FlxColor.fromString(backdropData.color);
|
||||
backdrop.makeSolidColor(Std.int(FlxG.width), Std.int(FlxG.height), targetColor);
|
||||
if (backdropData.fadeTime > 0.0)
|
||||
var fadeTime = backdropData.fadeTime ?? 0.0;
|
||||
if (fadeTime > 0.0)
|
||||
{
|
||||
backdrop.alpha = 0.0;
|
||||
FlxTween.tween(backdrop, {alpha: 1.0}, backdropData.fadeTime, {ease: EaseUtil.stepped(10)});
|
||||
FlxTween.tween(backdrop, {alpha: 1.0}, fadeTime, {ease: EaseUtil.stepped(10)});
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -204,7 +216,7 @@ class Conversation extends FlxSpriteGroup implements IDialogueScriptedClass impl
|
||||
|
||||
function showCurrentSpeaker():Void
|
||||
{
|
||||
var nextSpeakerId:String = currentDialogueEntryData.speaker;
|
||||
var nextSpeakerId:String = currentDialogueEntryData?.speaker ?? "";
|
||||
|
||||
// Skip the next steps if the current speaker is already displayed.
|
||||
if ((currentSpeaker != null && currentSpeaker.alive) && nextSpeakerId == currentSpeaker.id) return;
|
||||
@@ -216,7 +228,7 @@ class Conversation extends FlxSpriteGroup implements IDialogueScriptedClass impl
|
||||
currentSpeaker = null;
|
||||
}
|
||||
|
||||
var nextSpeaker:Speaker = SpeakerRegistry.instance.fetchEntry(nextSpeakerId);
|
||||
var nextSpeaker:Null<Speaker> = SpeakerRegistry.instance.fetchEntry(nextSpeakerId);
|
||||
|
||||
if (nextSpeaker == null)
|
||||
{
|
||||
@@ -242,11 +254,11 @@ class Conversation extends FlxSpriteGroup implements IDialogueScriptedClass impl
|
||||
|
||||
function playSpeakerAnimation():Void
|
||||
{
|
||||
var nextSpeakerAnimation:String = currentDialogueEntryData.speakerAnimation;
|
||||
var nextSpeakerAnimation:Null<String> = currentDialogueEntryData?.speakerAnimation;
|
||||
|
||||
if (nextSpeakerAnimation == null) return;
|
||||
|
||||
currentSpeaker.playAnimation(nextSpeakerAnimation);
|
||||
if (currentSpeaker != null) currentSpeaker.playAnimation(nextSpeakerAnimation);
|
||||
}
|
||||
|
||||
public function refresh():Void
|
||||
@@ -256,7 +268,7 @@ class Conversation extends FlxSpriteGroup implements IDialogueScriptedClass impl
|
||||
|
||||
function showCurrentDialogueBox():Void
|
||||
{
|
||||
var nextDialogueBoxId:String = currentDialogueEntryData?.box;
|
||||
var nextDialogueBoxId:String = currentDialogueEntryData?.box ?? "";
|
||||
|
||||
// Skip the next steps if the current dialogue box is already displayed.
|
||||
if ((currentDialogueBox != null && currentDialogueBox.alive) && nextDialogueBoxId == currentDialogueBox.id) return;
|
||||
@@ -268,7 +280,7 @@ class Conversation extends FlxSpriteGroup implements IDialogueScriptedClass impl
|
||||
currentDialogueBox = null;
|
||||
}
|
||||
|
||||
var nextDialogueBox:DialogueBox = DialogueBoxRegistry.instance.fetchEntry(nextDialogueBoxId);
|
||||
var nextDialogueBox:Null<DialogueBox> = DialogueBoxRegistry.instance.fetchEntry(nextDialogueBoxId);
|
||||
|
||||
if (nextDialogueBox == null)
|
||||
{
|
||||
@@ -290,11 +302,11 @@ class Conversation extends FlxSpriteGroup implements IDialogueScriptedClass impl
|
||||
|
||||
function playDialogueBoxAnimation():Void
|
||||
{
|
||||
var nextDialogueBoxAnimation:String = currentDialogueEntryData?.boxAnimation;
|
||||
var nextDialogueBoxAnimation:Null<String> = currentDialogueEntryData?.boxAnimation;
|
||||
|
||||
if (nextDialogueBoxAnimation == null) return;
|
||||
|
||||
currentDialogueBox.playAnimation(nextDialogueBoxAnimation);
|
||||
if (currentDialogueBox != null) currentDialogueBox.playAnimation(nextDialogueBoxAnimation);
|
||||
}
|
||||
|
||||
function onTypingComplete():Void
|
||||
@@ -363,20 +375,32 @@ class Conversation extends FlxSpriteGroup implements IDialogueScriptedClass impl
|
||||
}
|
||||
outroTween = null;
|
||||
|
||||
if (this.music != null) this.music.stop();
|
||||
this.music = null;
|
||||
if (this.music != null)
|
||||
{
|
||||
this.music.stop();
|
||||
this.music = null;
|
||||
}
|
||||
|
||||
if (currentSpeaker != null) currentSpeaker.kill();
|
||||
remove(currentSpeaker);
|
||||
currentSpeaker = null;
|
||||
if (currentSpeaker != null)
|
||||
{
|
||||
currentSpeaker.kill();
|
||||
remove(currentSpeaker);
|
||||
currentSpeaker = null;
|
||||
}
|
||||
|
||||
if (currentDialogueBox != null) currentDialogueBox.kill();
|
||||
remove(currentDialogueBox);
|
||||
currentDialogueBox = null;
|
||||
if (currentDialogueBox != null)
|
||||
{
|
||||
currentDialogueBox.kill();
|
||||
remove(currentDialogueBox);
|
||||
currentDialogueBox = null;
|
||||
}
|
||||
|
||||
if (backdrop != null) backdrop.destroy();
|
||||
remove(backdrop);
|
||||
backdrop = null;
|
||||
if (backdrop != null)
|
||||
{
|
||||
backdrop.destroy();
|
||||
remove(backdrop);
|
||||
backdrop = null;
|
||||
}
|
||||
|
||||
startConversation();
|
||||
}
|
||||
@@ -392,7 +416,7 @@ class Conversation extends FlxSpriteGroup implements IDialogueScriptedClass impl
|
||||
dispatchEvent(new DialogueScriptEvent(DIALOGUE_SKIP, this, true));
|
||||
}
|
||||
|
||||
var outroTween:FlxTween;
|
||||
var outroTween:Null<FlxTween> = null;
|
||||
|
||||
public function startOutro():Void
|
||||
{
|
||||
@@ -407,7 +431,7 @@ class Conversation extends FlxSpriteGroup implements IDialogueScriptedClass impl
|
||||
ease: EaseUtil.stepped(8)
|
||||
});
|
||||
|
||||
FlxTween.tween(this.music, {volume: 0.0}, outroData.fadeTime);
|
||||
if (this.music != null) FlxTween.tween(this.music, {volume: 0.0}, outroData.fadeTime);
|
||||
case NONE(_):
|
||||
// Immediately clean up.
|
||||
endOutro();
|
||||
@@ -417,7 +441,7 @@ class Conversation extends FlxSpriteGroup implements IDialogueScriptedClass impl
|
||||
}
|
||||
}
|
||||
|
||||
public var completeCallback:() -> Void;
|
||||
public var completeCallback:Null<Void->Void> = null;
|
||||
|
||||
public function endOutro():Void
|
||||
{
|
||||
@@ -477,7 +501,7 @@ class Conversation extends FlxSpriteGroup implements IDialogueScriptedClass impl
|
||||
{
|
||||
// Continue the dialog with more lines.
|
||||
state = Speaking;
|
||||
currentDialogueBox.appendText(currentDialogueLineString);
|
||||
if (currentDialogueBox != null) currentDialogueBox.appendText(currentDialogueLineString);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -489,7 +513,7 @@ class Conversation extends FlxSpriteGroup implements IDialogueScriptedClass impl
|
||||
propagateEvent(event);
|
||||
if (event.eventCanceled) return;
|
||||
|
||||
currentDialogueBox.skip();
|
||||
if (currentDialogueBox != null) currentDialogueBox.skip();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -564,17 +588,26 @@ class Conversation extends FlxSpriteGroup implements IDialogueScriptedClass impl
|
||||
if (this.music != null) this.music.stop();
|
||||
this.music = null;
|
||||
|
||||
if (currentSpeaker != null) currentSpeaker.kill();
|
||||
remove(currentSpeaker);
|
||||
currentSpeaker = null;
|
||||
if (currentSpeaker != null)
|
||||
{
|
||||
currentSpeaker.kill();
|
||||
remove(currentSpeaker);
|
||||
currentSpeaker = null;
|
||||
}
|
||||
|
||||
if (currentDialogueBox != null) currentDialogueBox.kill();
|
||||
remove(currentDialogueBox);
|
||||
currentDialogueBox = null;
|
||||
if (currentDialogueBox != null)
|
||||
{
|
||||
currentDialogueBox.kill();
|
||||
remove(currentDialogueBox);
|
||||
currentDialogueBox = null;
|
||||
}
|
||||
|
||||
if (backdrop != null) backdrop.destroy();
|
||||
remove(backdrop);
|
||||
backdrop = null;
|
||||
if (backdrop != null)
|
||||
{
|
||||
backdrop.destroy();
|
||||
remove(backdrop);
|
||||
backdrop = null;
|
||||
}
|
||||
|
||||
this.clear();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user