diff --git a/source/funkin/ui/charSelect/CharSelectSubState.hx b/source/funkin/ui/charSelect/CharSelectSubState.hx index 829b9994f..48682d7f0 100644 --- a/source/funkin/ui/charSelect/CharSelectSubState.hx +++ b/source/funkin/ui/charSelect/CharSelectSubState.hx @@ -71,7 +71,7 @@ class CharSelectSubState extends MusicBeatSubState var transitionGradient:FlxSprite = new FlxSprite(0, 0); var curChar(default, set):String = Constants.DEFAULT_CHARACTER; var rememberedChar:String; - var nametag:Nametag = new Nametag(); + var nametag:Nametag = new Nametag(Constants.DEFAULT_CHARACTER); var camFollow:FlxObject = new FlxObject(0, 0, 1, 1); var autoFollow:Bool = false; var availableChars:Map = new Map(); @@ -95,14 +95,14 @@ class CharSelectSubState extends MusicBeatSubState var bopInfo:Null>; // var blackScreen:FunkinSprite; - var charHitbox:FlxObject; + var charHitbox:FlxObject = new FlxObject(); var cutoutSize:Float = 0; public function new(?params:CharSelectSubStateParams) { super(); - rememberedChar = params?.character; + rememberedChar = params?.character ?? Constants.DEFAULT_CHARACTER; loadAvailableCharacters(); } @@ -134,8 +134,6 @@ class CharSelectSubState extends MusicBeatSubState { super.create(); - loadAvailableCharacters(); - cutoutSize = FullScreenScaleMode.gameCutoutSize.x / 2; bopInfo = FramesJSFLParser.parse(Paths.file("images/charSelect/iconBopInfo/iconBopInfo.txt")); @@ -496,7 +494,7 @@ class CharSelectSubState extends MusicBeatSubState } var grpIcons:FlxSpriteGroup = new FlxSpriteGroup(); - var grpHitboxes:FlxTypedGroup; + var grpHitboxes:FlxTypedGroup = new FlxTypedGroup(); var grpXSpread(default, set):Float = 107; var grpYSpread(default, set):Float = 127; var nonLocks = []; @@ -504,7 +502,6 @@ class CharSelectSubState extends MusicBeatSubState function initLocks():Void { add(grpIcons); - grpHitboxes = new FlxTypedGroup(); FlxG.debugger.addTrackerProfile(new TrackerProfile(FlxSpriteGroup, ["x", "y"])); // FlxG.debugger.track(grpIcons, "iconGrp"); @@ -923,7 +920,8 @@ class CharSelectSubState extends MusicBeatSubState cursorY = -1; } - if (availableChars.exists(getCurrentSelected()) && Save.instance.charactersSeen.contains(availableChars[getCurrentSelected()])) + if (availableChars.exists(getCurrentSelected()) + && PlayerRegistry.instance.isCharacterSeen(availableChars[getCurrentSelected()] ?? Constants.DEFAULT_CHARACTER)) { var charId = availableChars.get(getCurrentSelected()); if (charId != null) curChar = charId; @@ -1172,6 +1170,7 @@ class CharSelectSubState extends MusicBeatSubState if (autoFollow && !pressedSelect && memb.animation.curAnim?.name != 'idle') { memb.animation.play("confirm", false, true); + @:nullSafety(Off) var onFinish:String->Void = null; onFinish = (_) -> { member.animation.play('idle'); diff --git a/source/funkin/ui/charSelect/IntroSubState.hx b/source/funkin/ui/charSelect/IntroSubState.hx index 45d8ee19e..04f068ede 100644 --- a/source/funkin/ui/charSelect/IntroSubState.hx +++ b/source/funkin/ui/charSelect/IntroSubState.hx @@ -91,7 +91,18 @@ class IntroSubState extends MusicBeatSubState if (vid != null) { vid.zIndex = 0; + vid.active = false; + vid.bitmap?.onEncounteredError.add(function(msg:String):Void { + trace('[VLC] Encountered an error: $msg'); + + onLightsEnd(); + }); vid.bitmap?.onEndReached.add(onLightsEnd); + vid.bitmap?.onFormatSetup.add(() -> { + vid?.setGraphicSize(FlxG.initialWidth, FlxG.initialHeight); + vid?.updateHitbox(); + vid.screenCenter(); + }); add(vid); if (vid.load(filePath)) vid.play(); diff --git a/source/funkin/ui/charSelect/Nametag.hx b/source/funkin/ui/charSelect/Nametag.hx index b686399bf..efe0a2e26 100644 --- a/source/funkin/ui/charSelect/Nametag.hx +++ b/source/funkin/ui/charSelect/Nametag.hx @@ -14,7 +14,7 @@ class Nametag extends FlxSprite var midpointY(default, set):Float = 100; var mosaicShader:MosaicEffect; - var currentMosaicSequence:Sequence; + var currentMosaicSequence:Null; public function new(?x:Float = 0, ?y:Float = 0, character:String) { @@ -68,6 +68,7 @@ class Nametag extends FlxSprite // Forcibly reset the shader to prevent overlapping blur sequences mosaicShader.setBlockSize(1, 1); currentMosaicSequence.destroy(); + @:nullSafety(Off) currentMosaicSequence = null; }