diff --git a/CHANGELOG.md b/CHANGELOG.md index 97b677da3..114615a79 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,11 @@ All notable changes will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [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 - Story mode scores not properly resetting, leading to VERY inflated highscores on the leaderboards. This also requires me to clear the scores that are on the leaderboard right now, sorry! diff --git a/Project.xml b/Project.xml index e7efe94ca..9dd031d07 100644 --- a/Project.xml +++ b/Project.xml @@ -108,4 +108,5 @@ + 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 da51e2321..813fe4ab6 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>(); @@ -52,6 +56,7 @@ class Character extends FlxSprite addOffset('scared'); playAnim('danceRight'); + case 'dad': // DAD ANIMATION LOADING CODE tex = FlxAtlasFrames.fromSparrow(AssetPaths.DADDY_DEAREST__png, AssetPaths.DADDY_DEAREST__xml); @@ -120,6 +125,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/Note.hx b/source/Note.hx index 748cbe185..06825e717 100644 --- a/source/Note.hx +++ b/source/Note.hx @@ -37,6 +37,8 @@ class Note extends FlxSprite isSustainNote = sustainNote; x += 50; + // MAKE SURE ITS DEFINITELY OFF SCREEN? + y -= 2000; this.strumTime = strumTime; this.noteData = noteData; diff --git a/source/PlayState.hx b/source/PlayState.hx index 5a0989afa..17ec105dc 100644 --- a/source/PlayState.hx +++ b/source/PlayState.hx @@ -30,9 +30,6 @@ import flixel.util.FlxTimer; import haxe.Json; import lime.utils.Assets; -//New Audio BS -//import faxe.Faxe; - using StringTools; class PlayState extends MusicBeatState @@ -811,6 +808,8 @@ class PlayState extends MusicBeatState dad.playAnim('singLEFT', true); } + dad.holdTimer = 0; + if (SONG.needsVoices) vocals.volume = 1; @@ -869,7 +868,7 @@ class PlayState extends MusicBeatState NGio.unlockMedal(60961); Highscore.saveWeekScore(storyWeek, campaignScore, storyDifficulty); #end - + FlxG.save.data.weekUnlocked = StoryMenuState.weekUnlocked; FlxG.save.flush(); } @@ -1044,6 +1043,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) @@ -1114,9 +1115,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 51fb8250b..3fc2b4ac5 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'], ['Nintendo Switch', 'Pre-orders now available']]; var curWacky:Array = []; @@ -106,6 +106,10 @@ class TitleState extends MusicBeatState transIn = FlxTransitionableState.defaultTransIn; transOut = FlxTransitionableState.defaultTransOut; + // var music:FlxSound = new FlxSound(); + // music.loadStream('assets/music/freakyMenu' + TitleState.soundExt); + // FlxG.sound.list.add(music); + // music.play(); FlxG.sound.playMusic('assets/music/freakyMenu' + TitleState.soundExt, 0); FlxG.sound.music.fadeIn(4, 0, 0.7);