diff --git a/CHANGELOG.md b/CHANGELOG.md index 767060dc7..2944f1b8c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ### Fixed - Cleaned up some charting on South on hard mode +- Fixed some animation timings, should feel both better to play, and watch. ## [0.2.1.2] - 2020-11-06 ### Fixed diff --git a/source/Boyfriend.hx b/source/Boyfriend.hx index 1a8c6cf07..5efc70987 100644 --- a/source/Boyfriend.hx +++ b/source/Boyfriend.hx @@ -3,6 +3,7 @@ package; import flixel.FlxG; import flixel.FlxSprite; import flixel.graphics.frames.FlxAtlasFrames; +import flixel.util.FlxTimer; using StringTools; @@ -54,6 +55,13 @@ class Boyfriend extends Character override function update(elapsed:Float) { + if (animation.curAnim.name.startsWith('sing')) + { + holdTimer += elapsed; + } + else + holdTimer = 0; + if (animation.curAnim.name.endsWith('miss') && animation.curAnim.finished && !debugMode) { playAnim('idle', true, false, 10); diff --git a/source/Character.hx b/source/Character.hx index 937fd310c..0a4efb038 100644 --- a/source/Character.hx +++ b/source/Character.hx @@ -3,6 +3,8 @@ package; import flixel.FlxSprite; import flixel.graphics.frames.FlxAtlasFrames; +using StringTools; + class Character extends FlxSprite { public var animOffsets:Map>; @@ -11,6 +13,8 @@ class Character extends FlxSprite public var isPlayer:Bool = false; public var curCharacter:String = 'bf'; + public var holdTimer:Float = 0; + public function new(x:Float, y:Float, ?character:String = "bf", ?isPlayer:Bool = false) { animOffsets = new Map>(); @@ -106,6 +110,29 @@ class Character extends FlxSprite } } + override function update(elapsed:Float) + { + if (curCharacter != 'bf') + { + if (animation.curAnim.name.startsWith('sing')) + { + holdTimer += elapsed; + } + + var dadVar:Float = 4; + + if (curCharacter == 'dad') + dadVar = 6.1; + if (holdTimer >= Conductor.stepCrochet * dadVar * 0.001) + { + dance(); + holdTimer = 0; + } + } + + super.update(elapsed); + } + private var danced:Bool = false; /** diff --git a/source/PlayState.hx b/source/PlayState.hx index 1eebd82f6..7d561b7e1 100644 --- a/source/PlayState.hx +++ b/source/PlayState.hx @@ -783,6 +783,8 @@ class PlayState extends MusicBeatState dad.playAnim('singLEFT', true); } + dad.holdTimer = 0; + if (SONG.needsVoices) vocals.volume = 1; @@ -1012,6 +1014,8 @@ class PlayState extends MusicBeatState // FlxG.watch.addQuick('asdfa', upP); if ((upP || rightP || downP || leftP) && !boyfriend.stunned && generatedMusic) { + boyfriend.holdTimer = 0; + var possibleNotes:Array = []; notes.forEachAlive(function(daNote:Note) @@ -1082,9 +1086,9 @@ class PlayState extends MusicBeatState }); } - if (upR || leftR || rightR || downR) + if (boyfriend.holdTimer > Conductor.stepCrochet * 4 * 0.001 && !up && !down && !right && !left) { - if (boyfriend.animation.curAnim.name.startsWith('sing')) + if (boyfriend.animation.curAnim.name.startsWith('sing') && !boyfriend.animation.curAnim.name.endsWith('miss')) { boyfriend.playAnim('idle'); } diff --git a/source/TitleState.hx b/source/TitleState.hx index a9b93c05c..f783a9b18 100644 --- a/source/TitleState.hx +++ b/source/TitleState.hx @@ -38,7 +38,7 @@ class TitleState extends MusicBeatState ['Ritz dx', 'rest in peace'], ['rate five', 'pls no blam'], ['rhythm gaming', 'ultimate'], ['game of the year', 'forever'], ['you already know', 'we really out here'], ['rise and grind', 'love to luis'], ['like parappa', 'but cooler'], ['album of the year', 'chuckie finster'], ["free gitaroo man", "with love to wandaboy"], ['better than geometry dash', 'fight me robtop'], - ['kiddbrute for president', 'vote now'], ['play dead estate', 'on newgrounds'], ['this is a god damn prototype', 'we workin on it okay'], + ['kiddbrute for president', 'vote now'], ['play dead estate', 'on newgrounds'], ['this a god damn prototype', 'we workin on it okay'], ['WOMEN ARE real', 'this is official']]; var curWacky:Array = [];