diff --git a/buildnumber.txt b/buildnumber.txt index d18eb2bc..b3f27df8 100644 --- a/buildnumber.txt +++ b/buildnumber.txt @@ -1 +1 @@ -1997 \ No newline at end of file +2001 \ No newline at end of file diff --git a/source/funkin/game/PlayState.hx b/source/funkin/game/PlayState.hx index 2d03a81d..3e95d414 100644 --- a/source/funkin/game/PlayState.hx +++ b/source/funkin/game/PlayState.hx @@ -662,13 +662,19 @@ class PlayState extends MusicBeatState public function startCutscene() { if (playCutscenes) { var videoCutscene = Paths.video('${PlayState.SONG.song.toLowerCase()}-cutscene'); - var videoCutsceneAlt = Paths.video('${PlayState.SONG.song.toLowerCase()}-cutscene'); + var videoCutsceneAlt = Paths.file('songs/${PlayState.SONG.song.toLowerCase()}/cutscene.mp4'); persistentUpdate = false; if (cutscene != null) { openSubState(new ScriptedCutscene(cutscene, function() { startCountdown(); })); - } else if (Assets.exists(videoCutscene)) { + } else if (Assets.exists(videoCutsceneAlt)) { + FlxTransitionableState.skipNextTransIn = true; + openSubState(new VideoCutscene(videoCutsceneAlt, function() { + startCountdown(); + })); + persistentDraw = false; + }else if (Assets.exists(videoCutscene)) { FlxTransitionableState.skipNextTransIn = true; openSubState(new VideoCutscene(videoCutscene, function() { startCountdown(); @@ -684,11 +690,17 @@ class PlayState extends MusicBeatState public function startEndCutscene() { if (playCutscenes) { var videoCutscene = Paths.video('${PlayState.SONG.song.toLowerCase()}-end-cutscene'); + var videoCutsceneAlt = Paths.file('songs/${PlayState.SONG.song.toLowerCase()}/end-cutscene.mp4'); persistentUpdate = false; if (endCutscene != null) { openSubState(new ScriptedCutscene(endCutscene, function() { nextSong(); })); + } else if (Assets.exists(videoCutsceneAlt)) { + openSubState(new VideoCutscene(videoCutsceneAlt, function() { + nextSong(); + })); + persistentDraw = false; } else if (Assets.exists(videoCutscene)) { openSubState(new VideoCutscene(videoCutscene, function() { nextSong(); diff --git a/source/funkin/menus/BetaWarningState.hx b/source/funkin/menus/BetaWarningState.hx new file mode 100644 index 00000000..ae59cd6f --- /dev/null +++ b/source/funkin/menus/BetaWarningState.hx @@ -0,0 +1,51 @@ +package funkin.menus; + +import flixel.addons.transition.FlxTransitionableState; +import flixel.util.FlxColor; +import flixel.FlxG; +import flixel.text.FlxText; +import funkin.ui.Alphabet; +import funkin.ui.FunkinText; + +class BetaWarningState extends MusicBeatState { + var titleAlphabet:Alphabet; + var disclaimer:FunkinText; + + var transitioning:Bool = false; + + public override function create() { + super.create(); + + titleAlphabet = new Alphabet(0, 0, "WARNING", true); + titleAlphabet.screenCenter(X); + add(titleAlphabet); + + disclaimer = new FunkinText(16, titleAlphabet.y + titleAlphabet.height + 10, FlxG.width - 32, "", 32); + disclaimer.alignment = CENTER; + disclaimer.applyMarkup("This engine is still in a beta state. That means *majority of the features* are either *buggy* or *non finished*. If you find any bug, please report them to the Codename Engine GitHub.\n\nPress ENTER to continue", + [ + new FlxTextFormatMarkerPair(new FlxTextFormat(0xFFFF4444), "*") + ] + ); + add(disclaimer); + + var off = Std.int((FlxG.height - (disclaimer.y + disclaimer.height)) / 2); + disclaimer.y += off; + titleAlphabet.y += off; + } + + public override function update(elapsed:Float) { + super.update(elapsed); + + if (controls.ACCEPT && !transitioning) { + transitioning = true; + CoolUtil.playMenuSFX(1); + FlxG.camera.flash(FlxColor.WHITE, 1, function() { + FlxG.camera.fade(FlxColor.BLACK, 2.5, false, function() { + FlxTransitionableState.skipNextTransIn = FlxTransitionableState.skipNextTransOut = true; + FlxG.switchState(new TitleState()); + }); + }); + } + } +} \ No newline at end of file diff --git a/source/funkin/system/Main.hx b/source/funkin/system/Main.hx index 40744844..e7112006 100644 --- a/source/funkin/system/Main.hx +++ b/source/funkin/system/Main.hx @@ -6,6 +6,7 @@ import openfl.utils.AssetCache; import openfl.text.TextFormat; import flixel.system.ui.FlxSoundTray; import funkin.windows.WindowsAPI; +import funkin.menus.BetaWarningState; import funkin.menus.TitleState; import funkin.game.Highscore; import funkin.options.Options; @@ -43,7 +44,6 @@ class Main extends Sprite var gameWidth:Int = 1280; // Width of the game in pixels (might be less / more in actual pixels depending on your zoom). var gameHeight:Int = 720; // Height of the game in pixels (might be less / more in actual pixels depending on your zoom). - var initialState:Class = TitleState; // The FlxState the game starts with. var zoom:Float = -1; // If -1, zoom is automatically calculated to fit the window dimensions. var framerate:Int = 120; // How many frames per second the game should run at. var skipSplash:Bool = true; // Whether to skip the flixel splash screen that appears in release mode. @@ -100,14 +100,11 @@ class Main extends Sprite gameHeight = Math.ceil(stageHeight / zoom); } - #if !debug - initialState = TitleState; - #end - addChild(new FlxGame(gameWidth, gameHeight, null, zoom, framerate, framerate, skipSplash, startFullscreen)); loadGameSettings(); - FlxG.switchState(new TitleState()); + // FlxG.switchState(new TitleState()); + FlxG.switchState(new funkin.menus.BetaWarningState()); #if !mobile addChild(new FramerateField(10, 3, 0xFFFFFF));