diff --git a/source/ColorpickSubstate.hx b/source/ColorpickSubstate.hx new file mode 100644 index 000000000..b39957de5 --- /dev/null +++ b/source/ColorpickSubstate.hx @@ -0,0 +1,56 @@ +package; + +import flixel.group.FlxGroup.FlxTypedGroup; +import shaderslmfao.ColorSwap; + +class ColorpickSubstate extends MusicBeatSubstate +{ + var curSelected:Int = 0; + + var grpNotes:FlxTypedGroup; + + public function new() + { + super(); + + grpNotes = new FlxTypedGroup(); + add(grpNotes); + + for (i in 0...4) + { + var note:Note = new Note(0, i); + + note.x = (100 * i) + i; + note.screenCenter(Y); + + grpNotes.add(note); + } + } + + override function update(elapsed:Float) + { + if (controls.RIGHT_P) + curSelected += 1; + if (controls.LEFT_P) + curSelected -= 1; + + if (curSelected < 0) + curSelected = grpNotes.members.length - 1; + if (curSelected >= grpNotes.members.length) + curSelected = 0; + + if (controls.UP) + { + grpNotes.members[curSelected].colorSwap.update(elapsed * 0.3); + Note.arrowColors[curSelected] += elapsed * 0.3; + } + + if (controls.DOWN) + { + grpNotes.members[curSelected].colorSwap.update(-elapsed * 0.3); + Note.arrowColors[curSelected] += -elapsed * 0.3; + } + + super.update(elapsed); + } +} diff --git a/source/Note.hx b/source/Note.hx index 9659ad3c0..c39bf8bc1 100644 --- a/source/Note.hx +++ b/source/Note.hx @@ -28,6 +28,7 @@ class Note extends FlxSprite public var sustainLength:Float = 0; public var isSustainNote:Bool = false; + public var colorSwap:ColorSwap; public var noteScore:Float = 1; public static var swagWidth:Float = 160 * 0.7; @@ -36,6 +37,8 @@ class Note extends FlxSprite public static var BLUE_NOTE:Int = 1; public static var RED_NOTE:Int = 3; + public static var arrowColors:Array = [1, 1, 1, 1]; + public function new(strumTime:Float, noteData:Int, ?prevNote:Note, ?sustainNote:Bool = false) { super(); @@ -105,10 +108,6 @@ class Note extends FlxSprite updateHitbox(); antialiasing = true; - var colorSwap = new ColorSwap(); - - // shader = colorSwap.shader; - // colorSwap.colorToReplace = 0xFFF9393F; // colorSwap.newColor = 0xFF00FF00; @@ -117,11 +116,15 @@ class Note extends FlxSprite // replaceColor(0xFFC1C1C1, FlxColor.RED); } + colorSwap = new ColorSwap(); + shader = colorSwap.shader; + switch (noteData) { case 0: x += swagWidth * 0; animation.play('purpleScroll'); + case 1: x += swagWidth * 1; animation.play('blueScroll'); @@ -155,6 +158,7 @@ class Note extends FlxSprite } updateHitbox(); + updateColors(); x -= width / 2; @@ -182,6 +186,11 @@ class Note extends FlxSprite } } + public function updateColors():Void + { + colorSwap.update(arrowColors[noteData]); + } + override function update(elapsed:Float) { super.update(elapsed); diff --git a/source/OptionsSubState.hx b/source/OptionsSubState.hx index 00ca548f1..323094b7e 100644 --- a/source/OptionsSubState.hx +++ b/source/OptionsSubState.hx @@ -8,7 +8,7 @@ import flixel.util.FlxColor; class OptionsSubState extends MusicBeatSubstate { - var textMenuItems:Array = ['Master Volume', 'Sound Volume', 'Controls']; + var textMenuItems:Array = ['Master Volume', 'Sound Volume', 'Controls', 'Colors']; var selector:FlxSprite; var curSelected:Int = 0; @@ -67,6 +67,9 @@ class OptionsSubState extends MusicBeatSubstate { switch (textMenuItems[curSelected]) { + case "Colors": + FlxG.state.closeSubState(); + FlxG.state.openSubState(new ColorpickSubstate()); case "Controls": FlxG.state.closeSubState(); FlxG.state.openSubState(new ControlsSubState()); diff --git a/source/TitleState.hx b/source/TitleState.hx index b825af96e..ca5340b93 100644 --- a/source/TitleState.hx +++ b/source/TitleState.hx @@ -42,7 +42,7 @@ class TitleState extends MusicBeatState var lastBeat:Int = 0; - // var swagShader:ColorSwap; + var swagShader:ColorSwap; override public function create():Void { @@ -50,7 +50,7 @@ class TitleState extends MusicBeatState polymod.Polymod.init({modRoot: "mods", dirs: ['introMod'], framework: OPENFL}); #end - // swagShader = new ColorSwap(); + swagShader = new ColorSwap(); FlxG.sound.muteKeys = [ZERO]; @@ -154,7 +154,7 @@ class TitleState extends MusicBeatState logoBl.animation.play('bump'); logoBl.updateHitbox(); - // logoBl.shader = swagShader.shader; + logoBl.shader = swagShader.shader; // trace(); // logoBl.screenCenter(); @@ -167,7 +167,7 @@ class TitleState extends MusicBeatState gfDance.antialiasing = true; add(gfDance); - // gfDance.shader = swagShader.shader; + gfDance.shader = swagShader.shader; add(logoBl); @@ -333,6 +333,16 @@ class TitleState extends MusicBeatState skipIntro(); } + if (controls.LEFT) + { + swagShader.update(-elapsed * 0.1); + } + + if (controls.RIGHT) + { + swagShader.update(elapsed * 0.1); + } + super.update(elapsed); } @@ -366,12 +376,12 @@ class TitleState extends MusicBeatState } } + var isRainbow:Bool = false; + override function beatHit() { super.beatHit(); - // swagShader.update(FlxG.random.float(0.1, 0.7)); - logoBl.animation.play('bump', true); danceLeft = !danceLeft; diff --git a/source/shaderslmfao/ColorSwap.hx b/source/shaderslmfao/ColorSwap.hx index ff13871b3..1f57dc7a0 100644 --- a/source/shaderslmfao/ColorSwap.hx +++ b/source/shaderslmfao/ColorSwap.hx @@ -9,16 +9,20 @@ class ColorSwap public var colorToReplace(default, set):FlxColor; public var newColor(default, set):FlxColor; public var daTime(default, set):Float; + public var hueShit:Float = 0; public function new():Void { shader = new ColorSwapShader(); shader.uTime.value = [0]; + shader.money.value = [0]; } public function update(elapsed:Float):Void { shader.uTime.value[0] += elapsed; + hueShit += elapsed; + // trace(shader.money.value[0]); } function set_colorToReplace(color:FlxColor):FlxColor @@ -46,8 +50,8 @@ class ColorSwapShader extends FlxShader @:glFragmentSource(' #pragma header - uniform float uTime; + uniform float money; vec3 normalizeColor(vec3 color) { @@ -86,6 +90,8 @@ class ColorSwapShader extends FlxShader swagColor[0] += uTime; // swagColor[1] += uTime; + // money += swagColor[0]; + color = vec4(hsv2rgb(vec3(swagColor[0], swagColor[1], swagColor[2])), swagColor[3]); gl_FragColor = color;