From dbbd0c2851d183471c17d67c07e75a0d7712a691 Mon Sep 17 00:00:00 2001 From: Cameron Taylor Date: Sun, 4 Oct 2020 14:44:52 -0700 Subject: [PATCH] a boy and his offsets... --- source/Boyfriend.hx | 25 ++++++----- source/Charting.hx | 105 ++++++++++++++++++++++++++++++++++++++++++++ source/PlayState.hx | 93 ++++++++++++++++++++------------------- 3 files changed, 168 insertions(+), 55 deletions(-) diff --git a/source/Boyfriend.hx b/source/Boyfriend.hx index 73a6d2bdd..a201bd290 100644 --- a/source/Boyfriend.hx +++ b/source/Boyfriend.hx @@ -6,7 +6,9 @@ import flixel.graphics.frames.FlxAtlasFrames; class Boyfriend extends FlxSprite { - private var animOffsets:Map>; + public var animOffsets:Map>; + + public var debugMode:Bool = false; public function new(x:Float, y:Float) { @@ -21,27 +23,30 @@ class Boyfriend extends FlxSprite animation.addByPrefix('singRIGHT', 'BF NOTE RIGHT', 24, false); animation.addByPrefix('singDOWN', 'BF NOTE DOWN', 24, false); animation.addByPrefix('hey', 'BF HEY', 24, false); - animation.play('idle'); + playAnim('idle'); - addOffset("singUP", -25, 35); - addOffset("singRIGHT", -40, -8); - addOffset("singLEFT", 0, 0); - addOffset("singDOWN", 0, -45); - addOffset("hey", 0, -0); + addOffset('idle'); + addOffset("singUP", -28, 27); + addOffset("singRIGHT", -38, -7); + addOffset("singLEFT", 12, -6); + addOffset("singDOWN", -14, -50); + addOffset("hey", 1, 6); } override function update(elapsed:Float) { super.update(elapsed); + } + + public function playAnim(AnimName:String, Force:Bool = false, Reversed:Bool = false, Frame:Int = 0):Void + { + animation.play(AnimName, Force, Reversed, Frame); var daOffset = animOffsets.get(animation.curAnim.name); - if (animOffsets.exists(animation.curAnim.name)) { offset.set(daOffset[0], daOffset[1]); } - else - centerOffsets(); } public function addOffset(name:String, x:Float = 0, y:Float = 0) diff --git a/source/Charting.hx b/source/Charting.hx index 7c8e573cc..2468dbba8 100644 --- a/source/Charting.hx +++ b/source/Charting.hx @@ -1,14 +1,119 @@ package; import flixel.FlxG; +import flixel.FlxSprite; import flixel.FlxState; +import flixel.addons.display.FlxGridOverlay; +import flixel.group.FlxGroup.FlxTypedGroup; +import flixel.text.FlxText; +/** + *DEBUG MODE + */ class Charting extends FlxState { + var bf:Boyfriend; + var textAnim:FlxText; + var dumbTexts:FlxTypedGroup; + var animList:Array = []; + var curAnim:Int = 0; + override function create() { FlxG.sound.music.stop(); + var gridBG:FlxSprite = FlxGridOverlay.create(4, 4); + + add(gridBG); + + bf = new Boyfriend(0, 0); + bf.screenCenter(); + bf.debugMode = true; + add(bf); + + dumbTexts = new FlxTypedGroup(); + add(dumbTexts); + + textAnim = new FlxText(); + textAnim.size = 26; + add(textAnim); + + genBoyOffsets(); + super.create(); } + + function genBoyOffsets(pushList:Bool = true):Void + { + var daLoop:Int = 0; + for (anim => offsets in bf.animOffsets) + { + var text:FlxText = new FlxText(10, 20 + (18 * daLoop), 0, anim + ": " + offsets, 15); + dumbTexts.add(text); + + if (pushList) + animList.push(anim); + + daLoop++; + } + } + + function updateTexts():Void + { + dumbTexts.forEach(function(text:FlxText) + { + text.kill(); + dumbTexts.remove(text, true); + }); + } + + override function update(elapsed:Float) + { + textAnim.setPosition(bf.x, bf.y - 60); + textAnim.text = bf.animation.curAnim.name; + + if (FlxG.keys.justPressed.W) + { + curAnim -= 1; + } + + if (FlxG.keys.justPressed.S) + { + curAnim += 1; + } + + if (curAnim < 0) + curAnim = animList.length - 1; + + if (curAnim >= animList.length) + curAnim = 0; + + if (FlxG.keys.justPressed.S || FlxG.keys.justPressed.W || FlxG.keys.justPressed.SPACE) + { + bf.animation.play(animList[curAnim]); + } + + var upP = FlxG.keys.anyJustPressed([UP]); + var rightP = FlxG.keys.anyJustPressed([RIGHT]); + var downP = FlxG.keys.anyJustPressed([DOWN]); + var leftP = FlxG.keys.anyJustPressed([LEFT]); + + if (upP || rightP || downP || leftP) + { + updateTexts(); + if (upP) + bf.animOffsets.get(animList[curAnim])[1] += 1; + if (downP) + bf.animOffsets.get(animList[curAnim])[1] -= 1; + if (leftP) + bf.animOffsets.get(animList[curAnim])[0] += 1; + if (rightP) + bf.animOffsets.get(animList[curAnim])[0] -= 1; + + updateTexts(); + genBoyOffsets(false); + } + + super.update(elapsed); + } } diff --git a/source/PlayState.hx b/source/PlayState.hx index 3d3000e0e..4ff812852 100644 --- a/source/PlayState.hx +++ b/source/PlayState.hx @@ -4,6 +4,7 @@ import flixel.FlxG; import flixel.FlxObject; import flixel.FlxSprite; import flixel.FlxState; +import flixel.addons.display.FlxGridOverlay; import flixel.graphics.atlas.FlxAtlas; import flixel.graphics.frames.FlxAtlasFrames; import flixel.group.FlxGroup.FlxTypedGroup; @@ -48,6 +49,10 @@ class PlayState extends FlxState override public function create() { + var bg:FlxSprite = FlxGridOverlay.create(50, 50); + bg.scrollFactor.set(0.5, 0.5); + add(bg); + dad = new FlxSprite(100, 100).loadGraphic(AssetPaths.DADDY_DEAREST__png); var dadTex = FlxAtlasFrames.fromSparrow(AssetPaths.DADDY_DEAREST__png, AssetPaths.DADDY_DEAREST__xml); dad.frames = dadTex; @@ -113,7 +118,6 @@ class PlayState extends FlxState for (i in 1...songData.sections + 1) { - trace(i); noteData.push(ChartParser.parse(songData.song.toLowerCase(), i)); } @@ -230,6 +234,8 @@ class PlayState extends FlxState override public function update(elapsed:Float) { + keyShit(); + super.update(elapsed); if (FlxG.keys.justPressed.NINE) @@ -305,13 +311,11 @@ class PlayState extends FlxState daNote.y = (strumLine.y - (Conductor.songPosition - daNote.strumTime) * 0.45); }); - - keyShit(); } private function popUpScore():Void { - boyfriend.animation.play('hey'); + boyfriend.playAnim('hey'); vocals.volume = 1; var placement:String = sectionScores[1][curSection] + '/' + sectionScores[0][curSection]; @@ -349,42 +353,6 @@ class PlayState extends FlxState var downR = FlxG.keys.anyJustReleased([S, DOWN]); var leftR = FlxG.keys.anyJustReleased([A, LEFT]); - playerStrums.forEach(function(spr:FlxSprite) - { - switch (spr.ID) - { - case 1: - if (upP) - spr.animation.play('pressed'); - if (upR) - spr.animation.play('static'); - case 2: - if (rightP) - spr.animation.play('pressed'); - if (rightR) - spr.animation.play('static'); - case 3: - if (downP) - spr.animation.play('pressed'); - if (downR) - spr.animation.play('static'); - case 4: - if (leftP) - spr.animation.play('pressed'); - if (leftR) - spr.animation.play('static'); - } - - if (spr.animation.curAnim.name == 'confirm') - { - spr.centerOffsets(); - spr.offset.x -= 13; - spr.offset.y -= 13; - } - else - spr.centerOffsets(); - }); - if (up || right || down || left) { notes.forEach(function(daNote:Note) @@ -427,6 +395,41 @@ class PlayState extends FlxState } }); } + + playerStrums.forEach(function(spr:FlxSprite) + { + switch (spr.ID) + { + case 1: + if (upP && spr.animation.curAnim.name != 'confirm') + spr.animation.play('pressed'); + if (upR) + spr.animation.play('static'); + case 2: + if (rightP && spr.animation.curAnim.name != 'confirm') + spr.animation.play('pressed'); + if (rightR) + spr.animation.play('static'); + case 3: + if (downP && spr.animation.curAnim.name != 'confirm') + spr.animation.play('pressed'); + if (downR) + spr.animation.play('static'); + case 4: + if (leftP && spr.animation.curAnim.name != 'confirm') + spr.animation.play('pressed'); + if (leftR) + spr.animation.play('static'); + } + if (spr.animation.curAnim.name == 'confirm') + { + spr.centerOffsets(); + spr.offset.x -= 13; + spr.offset.y -= 13; + } + else + spr.centerOffsets(); + }); } function goodNoteHit(note:Note):Void @@ -436,13 +439,13 @@ class PlayState extends FlxState switch (Math.abs(note.noteData)) { case 1: - boyfriend.animation.play('singUP'); + boyfriend.playAnim('singUP'); case 2: - boyfriend.animation.play('singRIGHT'); + boyfriend.playAnim('singRIGHT'); case 3: - boyfriend.animation.play('singDOWN'); + boyfriend.playAnim('singDOWN'); case 4: - boyfriend.animation.play('singLEFT'); + boyfriend.playAnim('singLEFT'); } playerStrums.forEach(function(spr:FlxSprite) @@ -474,7 +477,7 @@ class PlayState extends FlxState dad.animation.play('idle'); if (!boyfriend.animation.curAnim.name.startsWith("sing")) - boyfriend.animation.play('idle'); + boyfriend.playAnim('idle'); } } }