diff --git a/README.md b/README.md index 8b14b23cd..1c96e4979 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ THESE INSTRUCTIONS ARE FOR COMPILING THE GAME'S SOURCE CODE!!! IF YOU WANT TO JUST DOWNLOAD AND INSTALL AND PLAY THE GAME NORMALLY, GO TO ITCH.IO TO DOWNLOAD THE GAME FOR PC, MAC, AND LINUX!! -https://ninja-muffin24.itch.io/friday-night-funkin +https://ninja-muffin24.itch.io/funkin IF YOU WANT TO COMPILE THE GAME YOURSELF, CONTINUE READING!!! @@ -40,10 +40,11 @@ newgrounds ``` So for each of those type `haxelib install [library]` so shit like `haxelib install newgrounds` -You'll also need to install polymod. To do this, you need to do a few things first. +You'll also need to install a couple things that involve Gits. To do this, you need to do a few things first. 1. Download [git-scm](https://git-scm.com/downloads). Works for Windows, Mac, and Linux, just select your build. 2. Follow instructions to install the application properly. -3. Run `haxelib git polymod https://github.com/larsiusprime/polymod.git` in terminal/command-prompt after your git program is installed. +3. Run `haxelib git polymod https://github.com/larsiusprime/polymod.git` to install Polymod. +4. Run `haxelib git discord_rpc https://github.com/Aidan63/linc_discord-rpc` to install Discord RPC. You should have everything ready for compiling the game! Follow the guide below to continue! diff --git a/source/Discord.hx b/source/Discord.hx index c28e5d9be..04e9ebfa1 100644 --- a/source/Discord.hx +++ b/source/Discord.hx @@ -32,6 +32,11 @@ class DiscordClient DiscordRpc.shutdown(); } + public static function shutdown() + { + DiscordRpc.shutdown(); + } + static function onReady() { DiscordRpc.presence({ diff --git a/source/FreeplayState.hx b/source/FreeplayState.hx index 31c66971a..a64893bb2 100644 --- a/source/FreeplayState.hx +++ b/source/FreeplayState.hx @@ -36,6 +36,7 @@ class FreeplayState extends MusicBeatState private var iconArray:Array = []; var bg:FlxSprite; + var scoreBG:FlxSprite; override function create() { @@ -118,7 +119,8 @@ class FreeplayState extends MusicBeatState scoreText.setFormat(Paths.font("vcr.ttf"), 32, FlxColor.WHITE, RIGHT); // scoreText.alignment = RIGHT; - var scoreBG:FlxSprite = new FlxSprite(scoreText.x - 6, 0).makeGraphic(Std.int(FlxG.width * 0.3), 66, 0xFF000000); + scoreBG = new FlxSprite(scoreText.x - 6, 0).makeGraphic(1, 66, 0xFF000000); + scoreBG.antialiasing = false; scoreBG.alpha = 0.6; add(scoreBG); @@ -201,6 +203,8 @@ class FreeplayState extends MusicBeatState scoreText.text = "PERSONAL BEST:" + lerpScore; + positionHighscore(); + var upP = controls.UI_UP_P; var downP = controls.UI_DOWN_P; var accepted = controls.ACCEPT; @@ -254,8 +258,7 @@ class FreeplayState extends MusicBeatState PlayState.storyDifficulty = curDifficulty; diffText.text = "< " + CoolUtil.difficultyString() + " >"; - diffText.x = FlxG.width * 0.85; - diffText.x -= (diffText.width / 2); + positionHighscore(); } function changeSelection(change:Int = 0) @@ -305,6 +308,16 @@ class FreeplayState extends MusicBeatState } } } + + function positionHighscore() + { + scoreText.x = FlxG.width - scoreText.width - 6; + scoreBG.scale.x = FlxG.width - scoreText.x + 6; + scoreBG.x = FlxG.width - scoreBG.scale.x / 2; + + diffText.x = Std.int(scoreBG.x + scoreBG.width / 2); + diffText.x -= (diffText.width / 2); + } } class SongMetadata diff --git a/source/Note.hx b/source/Note.hx index d0b582e50..6e6eb127d 100644 --- a/source/Note.hx +++ b/source/Note.hx @@ -25,6 +25,7 @@ class Note extends FlxSprite public var tooLate:Bool = false; public var wasGoodHit:Bool = false; public var prevNote:Note; + private var willMiss:Bool = false; public var sustainLength:Float = 0; public var isSustainNote:Bool = false; @@ -126,7 +127,6 @@ class Note extends FlxSprite case 0: x += swagWidth * 0; animation.play('purpleScroll'); - case 1: x += swagWidth * 1; animation.play('blueScroll'); @@ -201,15 +201,25 @@ class Note extends FlxSprite if (mustPress) { - // The * 0.5 is so that it's easier to hit them too late, instead of too early - if (strumTime > Conductor.songPosition - Conductor.safeZoneOffset - && strumTime < Conductor.songPosition + (Conductor.safeZoneOffset * 0.5)) - canBeHit = true; - else - canBeHit = false; - - if (strumTime < Conductor.songPosition - Conductor.safeZoneOffset && !wasGoodHit) + // miss on the NEXT frame so lag doesnt make u miss notes + if (willMiss && !wasGoodHit) + { tooLate = true; + canBeHit = false; + } + else + { + if (strumTime > Conductor.songPosition - Conductor.safeZoneOffset) + { // The * 0.5 is so that it's easier to hit them too late, instead of too early + if (strumTime < Conductor.songPosition + (Conductor.safeZoneOffset * 0.5)) + canBeHit = true; + } + else + { + canBeHit = true; + willMiss = true; + } + } } else { diff --git a/source/PauseSubState.hx b/source/PauseSubState.hx index 9bf6de606..5dedf9097 100644 --- a/source/PauseSubState.hx +++ b/source/PauseSubState.hx @@ -192,6 +192,8 @@ class PauseSubState extends MusicBeatSubstate function changeSelection(change:Int = 0):Void { + FlxG.sound.play(Paths.sound('scrollMenu'), 0.4); + curSelected += change; if (curSelected < 0) diff --git a/source/PlayState.hx b/source/PlayState.hx index 26493c4e4..75197e6d4 100644 --- a/source/PlayState.hx +++ b/source/PlayState.hx @@ -63,6 +63,7 @@ class PlayState extends MusicBeatState var halloweenLevel:Bool = false; private var vocals:FlxSound; + private var vocalsFinished:Bool = false; private var dad:Character; private var gf:Character; @@ -606,9 +607,6 @@ class PlayState extends MusicBeatState gfVersion = 'gf-pixel'; } - if (curStage == 'limo') - gfVersion = 'gf-car'; - if (SONG.song.toLowerCase() == 'stress') gfVersion = 'pico-speaker'; @@ -1489,6 +1487,9 @@ class PlayState extends MusicBeatState else vocals = new FlxSound(); + vocals.onComplete = function(){ + vocalsFinished = true; + }; FlxG.sound.list.add(vocals); notes = new FlxTypedGroup(); @@ -1745,7 +1746,7 @@ class PlayState extends MusicBeatState #if discord_rpc override public function onFocus():Void { - if (health > 0 && !paused) + if (health > 0 && !paused && FlxG.autoPause) { if (Conductor.songPosition > 0.0) { @@ -1762,7 +1763,7 @@ class PlayState extends MusicBeatState override public function onFocusLost():Void { - if (health > 0 && !paused) + if (health > 0 && !paused && FlxG.autoPause) { DiscordClient.changePresence(detailsPausedText, SONG.song + " (" + storyDifficultyText + ")", iconRPC); } @@ -1773,10 +1774,16 @@ class PlayState extends MusicBeatState function resyncVocals():Void { - vocals.pause(); + if (_exiting) + return ; + vocals.pause(); FlxG.sound.music.play(); Conductor.songPosition = FlxG.sound.music.time; + + if (vocalsFinished) + return ; + vocals.time = Conductor.songPosition; vocals.play(); } @@ -2845,11 +2852,12 @@ class PlayState extends MusicBeatState if (curBeat % 8 == 7 && curSong == 'Bopeebo') { boyfriend.playAnim('hey', true); + } - if (SONG.song == 'Tutorial' && dad.curCharacter == 'gf') - { - dad.playAnim('cheer', true); - } + if (curBeat % 16 == 15 && SONG.song == 'Tutorial' && dad.curCharacter == 'gf' && curBeat > 16 && curBeat < 48) + { + boyfriend.playAnim('hey', true); + dad.playAnim('cheer', true); } foregroundSprites.forEach(function(spr:BGSprite) diff --git a/source/TitleState.hx b/source/TitleState.hx index 303150021..6e4e1222b 100644 --- a/source/TitleState.hx +++ b/source/TitleState.hx @@ -105,6 +105,10 @@ class TitleState extends MusicBeatState #if discord_rpc DiscordClient.initialize(); + + Application.current.onExit.add (function (exitCode) { + DiscordClient.shutdown(); + }); #end }