mirror of
https://github.com/FunkinCrew/Funkin.git
synced 2024-11-30 03:25:47 -05:00
Fix several crashes when reaching a game over in minimal mode
This commit is contained in:
parent
4c35b1d74f
commit
566a271a63
1 changed files with 78 additions and 51 deletions
|
@ -97,14 +97,14 @@ class GameOverSubState extends MusicBeatSubState
|
|||
/**
|
||||
* Reset the game over configuration to the default.
|
||||
*/
|
||||
public static function reset()
|
||||
public static function reset():Void
|
||||
{
|
||||
animationSuffix = "";
|
||||
musicSuffix = "";
|
||||
blueBallSuffix = "";
|
||||
animationSuffix = '';
|
||||
musicSuffix = '';
|
||||
blueBallSuffix = '';
|
||||
}
|
||||
|
||||
override public function create()
|
||||
override public function create():Void
|
||||
{
|
||||
if (instance != null)
|
||||
{
|
||||
|
@ -130,6 +130,9 @@ class GameOverSubState extends MusicBeatSubState
|
|||
|
||||
// Pluck Boyfriend from the PlayState and place him (in the same position) in the GameOverSubState.
|
||||
// We can then play the character's `firstDeath` animation.
|
||||
if (PlayState.instance.isMinimalMode) {}
|
||||
else
|
||||
{
|
||||
boyfriend = PlayState.instance.currentStage.getBoyfriend(true);
|
||||
boyfriend.isDead = true;
|
||||
add(boyfriend);
|
||||
|
@ -147,6 +150,7 @@ class GameOverSubState extends MusicBeatSubState
|
|||
FlxG.camera.target = null;
|
||||
FlxG.camera.follow(cameraFollowPoint, LOCKON, 0.01);
|
||||
targetCameraZoom = PlayState?.instance?.currentStage?.camZoom * boyfriend.getDeathCameraZoom();
|
||||
}
|
||||
|
||||
//
|
||||
// Set up the audio
|
||||
|
@ -164,12 +168,19 @@ class GameOverSubState extends MusicBeatSubState
|
|||
|
||||
var hasStartedAnimation:Bool = false;
|
||||
|
||||
override function update(elapsed:Float)
|
||||
override function update(elapsed:Float):Void
|
||||
{
|
||||
if (!hasStartedAnimation)
|
||||
{
|
||||
hasStartedAnimation = true;
|
||||
|
||||
if (PlayState.instance.isMinimalMode)
|
||||
{
|
||||
// Play the "blue balled" sound. May play a variant if one has been assigned.
|
||||
playBlueBalledSFX();
|
||||
}
|
||||
else
|
||||
{
|
||||
if (boyfriend.hasAnimation('fakeoutDeath') && FlxG.random.bool((1 / 4096) * 100))
|
||||
{
|
||||
boyfriend.playAnimation('fakeoutDeath', true, false);
|
||||
|
@ -181,6 +192,7 @@ class GameOverSubState extends MusicBeatSubState
|
|||
playBlueBalledSFX();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Smoothly lerp the camera
|
||||
FlxG.camera.zoom = MathUtil.smoothLerp(FlxG.camera.zoom, targetCameraZoom, elapsed, CAMERA_ZOOM_DURATION);
|
||||
|
@ -240,13 +252,19 @@ class GameOverSubState extends MusicBeatSubState
|
|||
Conductor.instance.update(gameOverMusic.time);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (PlayState.instance.isMinimalMode)
|
||||
{
|
||||
// startDeathMusic(1.0, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Music hasn't started yet.
|
||||
switch (PlayStatePlaylist.campaignId)
|
||||
{
|
||||
// TODO: Make the behavior for playing Jeff's voicelines generic or un-hardcoded.
|
||||
// This will simplify the class and make it easier for mods to add death quotes.
|
||||
case "week7":
|
||||
case 'week7':
|
||||
if (boyfriend.getCurrentAnimation().startsWith('firstDeath') && boyfriend.isAnimationFinished() && !playingJeffQuote)
|
||||
{
|
||||
playingJeffQuote = true;
|
||||
|
@ -264,6 +282,7 @@ class GameOverSubState extends MusicBeatSubState
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Start death music before firstDeath gets replaced
|
||||
super.update(elapsed);
|
||||
|
@ -279,7 +298,11 @@ class GameOverSubState extends MusicBeatSubState
|
|||
isEnding = true;
|
||||
startDeathMusic(1.0, true); // isEnding changes this function's behavior.
|
||||
|
||||
if (PlayState.instance.isMinimalMode) {}
|
||||
else
|
||||
{
|
||||
boyfriend.playAnimation('deathConfirm' + animationSuffix, true);
|
||||
}
|
||||
|
||||
// After the animation finishes...
|
||||
new FlxTimer().start(0.7, function(tmr:FlxTimer) {
|
||||
|
@ -289,10 +312,14 @@ class GameOverSubState extends MusicBeatSubState
|
|||
FlxG.camera.fade(FlxColor.BLACK, 1, true, null, true);
|
||||
PlayState.instance.needsReset = true;
|
||||
|
||||
if (PlayState.instance.isMinimalMode) {}
|
||||
else
|
||||
{
|
||||
// Readd Boyfriend to the stage.
|
||||
boyfriend.isDead = false;
|
||||
remove(boyfriend);
|
||||
PlayState.instance.currentStage.addCharacter(boyfriend, BF);
|
||||
}
|
||||
|
||||
// Snap reset the camera which may have changed because of the player character data.
|
||||
resetCameraZoom();
|
||||
|
|
Loading…
Reference in a new issue