mirror of
https://github.com/FunkinCrew/Funkin.git
synced 2024-11-27 10:05:41 -05:00
Merge branch 'master' of github.com:ninjamuffin99/Funkin-secret into nitpix
This commit is contained in:
commit
532e2f18ae
6 changed files with 166 additions and 40 deletions
63
source/ColorpickSubstate.hx
Normal file
63
source/ColorpickSubstate.hx
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
package;
|
||||||
|
|
||||||
|
import flixel.FlxG;
|
||||||
|
import flixel.group.FlxGroup.FlxTypedGroup;
|
||||||
|
import shaderslmfao.ColorSwap;
|
||||||
|
|
||||||
|
class ColorpickSubstate extends MusicBeatSubstate
|
||||||
|
{
|
||||||
|
var curSelected:Int = 0;
|
||||||
|
|
||||||
|
var grpNotes:FlxTypedGroup<Note>;
|
||||||
|
|
||||||
|
public function new()
|
||||||
|
{
|
||||||
|
super();
|
||||||
|
|
||||||
|
grpNotes = new FlxTypedGroup<Note>();
|
||||||
|
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.BACK)
|
||||||
|
{
|
||||||
|
FlxG.state.closeSubState();
|
||||||
|
FlxG.state.openSubState(new OptionsSubState());
|
||||||
|
}
|
||||||
|
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
|
@ -28,6 +28,7 @@ class Note extends FlxSprite
|
||||||
public var sustainLength:Float = 0;
|
public var sustainLength:Float = 0;
|
||||||
public var isSustainNote:Bool = false;
|
public var isSustainNote:Bool = false;
|
||||||
|
|
||||||
|
public var colorSwap:ColorSwap;
|
||||||
public var noteScore:Float = 1;
|
public var noteScore:Float = 1;
|
||||||
|
|
||||||
public static var swagWidth:Float = 160 * 0.7;
|
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 BLUE_NOTE:Int = 1;
|
||||||
public static var RED_NOTE:Int = 3;
|
public static var RED_NOTE:Int = 3;
|
||||||
|
|
||||||
|
public static var arrowColors:Array<Float> = [1, 1, 1, 1];
|
||||||
|
|
||||||
public function new(strumTime:Float, noteData:Int, ?prevNote:Note, ?sustainNote:Bool = false)
|
public function new(strumTime:Float, noteData:Int, ?prevNote:Note, ?sustainNote:Bool = false)
|
||||||
{
|
{
|
||||||
super();
|
super();
|
||||||
|
@ -105,10 +108,6 @@ class Note extends FlxSprite
|
||||||
updateHitbox();
|
updateHitbox();
|
||||||
antialiasing = true;
|
antialiasing = true;
|
||||||
|
|
||||||
var colorSwap = new ColorSwap();
|
|
||||||
|
|
||||||
// shader = colorSwap.shader;
|
|
||||||
|
|
||||||
// colorSwap.colorToReplace = 0xFFF9393F;
|
// colorSwap.colorToReplace = 0xFFF9393F;
|
||||||
// colorSwap.newColor = 0xFF00FF00;
|
// colorSwap.newColor = 0xFF00FF00;
|
||||||
|
|
||||||
|
@ -117,11 +116,16 @@ class Note extends FlxSprite
|
||||||
// replaceColor(0xFFC1C1C1, FlxColor.RED);
|
// replaceColor(0xFFC1C1C1, FlxColor.RED);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
colorSwap = new ColorSwap();
|
||||||
|
shader = colorSwap.shader;
|
||||||
|
updateColors();
|
||||||
|
|
||||||
switch (noteData)
|
switch (noteData)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
x += swagWidth * 0;
|
x += swagWidth * 0;
|
||||||
animation.play('purpleScroll');
|
animation.play('purpleScroll');
|
||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
x += swagWidth * 1;
|
x += swagWidth * 1;
|
||||||
animation.play('blueScroll');
|
animation.play('blueScroll');
|
||||||
|
@ -182,6 +186,11 @@ class Note extends FlxSprite
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function updateColors():Void
|
||||||
|
{
|
||||||
|
colorSwap.update(arrowColors[noteData]);
|
||||||
|
}
|
||||||
|
|
||||||
override function update(elapsed:Float)
|
override function update(elapsed:Float)
|
||||||
{
|
{
|
||||||
super.update(elapsed);
|
super.update(elapsed);
|
||||||
|
|
|
@ -8,7 +8,7 @@ import flixel.util.FlxColor;
|
||||||
|
|
||||||
class OptionsSubState extends MusicBeatSubstate
|
class OptionsSubState extends MusicBeatSubstate
|
||||||
{
|
{
|
||||||
var textMenuItems:Array<String> = ['Master Volume', 'Sound Volume', 'Controls'];
|
var textMenuItems:Array<String> = ['Master Volume', 'Sound Volume', 'Controls', 'Colors', 'Back'];
|
||||||
|
|
||||||
var selector:FlxSprite;
|
var selector:FlxSprite;
|
||||||
var curSelected:Int = 0;
|
var curSelected:Int = 0;
|
||||||
|
@ -63,16 +63,24 @@ class OptionsSubState extends MusicBeatSubstate
|
||||||
txt.color = FlxColor.YELLOW;
|
txt.color = FlxColor.YELLOW;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (controls.BACK)
|
||||||
|
FlxG.switchState(new MainMenuState());
|
||||||
|
|
||||||
if (controls.ACCEPT)
|
if (controls.ACCEPT)
|
||||||
{
|
{
|
||||||
switch (textMenuItems[curSelected])
|
switch (textMenuItems[curSelected])
|
||||||
{
|
{
|
||||||
|
case "Colors":
|
||||||
|
FlxG.state.closeSubState();
|
||||||
|
FlxG.state.openSubState(new ColorpickSubstate());
|
||||||
case "Controls":
|
case "Controls":
|
||||||
FlxG.state.closeSubState();
|
FlxG.state.closeSubState();
|
||||||
FlxG.state.openSubState(new ControlsSubState());
|
FlxG.state.openSubState(new ControlsSubState());
|
||||||
case "Mods":
|
case "Mods":
|
||||||
FlxG.state.closeSubState();
|
FlxG.state.closeSubState();
|
||||||
FlxG.state.openSubState(new ModdingSubstate());
|
FlxG.state.openSubState(new ModdingSubstate());
|
||||||
|
case "Back":
|
||||||
|
FlxG.switchState(new MainMenuState());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,5 @@
|
||||||
package;
|
package;
|
||||||
|
|
||||||
#if desktop
|
|
||||||
import Discord.DiscordClient;
|
|
||||||
#end
|
|
||||||
import Section.SwagSection;
|
import Section.SwagSection;
|
||||||
import Song.SwagSong;
|
import Song.SwagSong;
|
||||||
import WiggleEffect.WiggleEffectType;
|
import WiggleEffect.WiggleEffectType;
|
||||||
|
@ -41,9 +38,14 @@ import lime.utils.Assets;
|
||||||
import openfl.display.BlendMode;
|
import openfl.display.BlendMode;
|
||||||
import openfl.display.StageQuality;
|
import openfl.display.StageQuality;
|
||||||
import openfl.filters.ShaderFilter;
|
import openfl.filters.ShaderFilter;
|
||||||
|
import shaderslmfao.ColorSwap;
|
||||||
|
|
||||||
using StringTools;
|
using StringTools;
|
||||||
|
|
||||||
|
#if desktop
|
||||||
|
import Discord.DiscordClient;
|
||||||
|
#end
|
||||||
|
|
||||||
class PlayState extends MusicBeatState
|
class PlayState extends MusicBeatState
|
||||||
{
|
{
|
||||||
public static var curStage:String = '';
|
public static var curStage:String = '';
|
||||||
|
@ -1188,6 +1190,9 @@ class PlayState extends MusicBeatState
|
||||||
{
|
{
|
||||||
// FlxG.log.add(i);
|
// FlxG.log.add(i);
|
||||||
var babyArrow:FlxSprite = new FlxSprite(0, strumLine.y);
|
var babyArrow:FlxSprite = new FlxSprite(0, strumLine.y);
|
||||||
|
var colorswap:ColorSwap = new ColorSwap();
|
||||||
|
babyArrow.shader = colorswap.shader;
|
||||||
|
colorswap.update(Note.arrowColors[i]);
|
||||||
|
|
||||||
switch (curStage)
|
switch (curStage)
|
||||||
{
|
{
|
||||||
|
@ -2006,8 +2011,11 @@ class PlayState extends MusicBeatState
|
||||||
var controlArray:Array<Bool> = [leftP, downP, upP, rightP];
|
var controlArray:Array<Bool> = [leftP, downP, upP, rightP];
|
||||||
|
|
||||||
// FlxG.watch.addQuick('asdfa', upP);
|
// FlxG.watch.addQuick('asdfa', upP);
|
||||||
if ((upP || rightP || downP || leftP) && !boyfriend.stunned && generatedMusic)
|
if ((upP || rightP || downP || leftP) && generatedMusic)
|
||||||
{
|
{
|
||||||
|
// note to self, used to have stunned
|
||||||
|
// && !boyfriend.stunned
|
||||||
|
|
||||||
boyfriend.holdTimer = 0;
|
boyfriend.holdTimer = 0;
|
||||||
|
|
||||||
var possibleNotes:Array<Note> = [];
|
var possibleNotes:Array<Note> = [];
|
||||||
|
|
|
@ -1,9 +1,5 @@
|
||||||
package;
|
package;
|
||||||
|
|
||||||
#if desktop
|
|
||||||
import Discord.DiscordClient;
|
|
||||||
import sys.thread.Thread;
|
|
||||||
#end
|
|
||||||
import flixel.FlxG;
|
import flixel.FlxG;
|
||||||
import flixel.FlxSprite;
|
import flixel.FlxSprite;
|
||||||
import flixel.addons.transition.FlxTransitionSprite.GraphicTransTileDiamond;
|
import flixel.addons.transition.FlxTransitionSprite.GraphicTransTileDiamond;
|
||||||
|
@ -21,9 +17,15 @@ import flixel.util.FlxTimer;
|
||||||
import io.newgrounds.NG;
|
import io.newgrounds.NG;
|
||||||
import lime.app.Application;
|
import lime.app.Application;
|
||||||
import openfl.Assets;
|
import openfl.Assets;
|
||||||
|
import shaderslmfao.ColorSwap;
|
||||||
|
|
||||||
using StringTools;
|
using StringTools;
|
||||||
|
|
||||||
|
#if desktop
|
||||||
|
import Discord.DiscordClient;
|
||||||
|
import sys.thread.Thread;
|
||||||
|
#end
|
||||||
|
|
||||||
class TitleState extends MusicBeatState
|
class TitleState extends MusicBeatState
|
||||||
{
|
{
|
||||||
static var initialized:Bool = false;
|
static var initialized:Bool = false;
|
||||||
|
@ -40,12 +42,16 @@ class TitleState extends MusicBeatState
|
||||||
|
|
||||||
var lastBeat:Int = 0;
|
var lastBeat:Int = 0;
|
||||||
|
|
||||||
|
var swagShader:ColorSwap;
|
||||||
|
|
||||||
override public function create():Void
|
override public function create():Void
|
||||||
{
|
{
|
||||||
#if polymod
|
#if polymod
|
||||||
polymod.Polymod.init({modRoot: "mods", dirs: ['introMod'], framework: OPENFL});
|
polymod.Polymod.init({modRoot: "mods", dirs: ['introMod'], framework: OPENFL});
|
||||||
#end
|
#end
|
||||||
|
|
||||||
|
swagShader = new ColorSwap();
|
||||||
|
|
||||||
FlxG.sound.muteKeys = [ZERO];
|
FlxG.sound.muteKeys = [ZERO];
|
||||||
|
|
||||||
PlayerSettings.init();
|
PlayerSettings.init();
|
||||||
|
@ -148,6 +154,8 @@ class TitleState extends MusicBeatState
|
||||||
logoBl.animation.play('bump');
|
logoBl.animation.play('bump');
|
||||||
logoBl.updateHitbox();
|
logoBl.updateHitbox();
|
||||||
|
|
||||||
|
logoBl.shader = swagShader.shader;
|
||||||
|
|
||||||
// trace();
|
// trace();
|
||||||
// logoBl.screenCenter();
|
// logoBl.screenCenter();
|
||||||
// logoBl.color = FlxColor.BLACK;
|
// logoBl.color = FlxColor.BLACK;
|
||||||
|
@ -158,6 +166,9 @@ class TitleState extends MusicBeatState
|
||||||
gfDance.animation.addByIndices('danceRight', 'gfDance', [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "", 24, false);
|
gfDance.animation.addByIndices('danceRight', 'gfDance', [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "", 24, false);
|
||||||
gfDance.antialiasing = true;
|
gfDance.antialiasing = true;
|
||||||
add(gfDance);
|
add(gfDance);
|
||||||
|
|
||||||
|
gfDance.shader = swagShader.shader;
|
||||||
|
|
||||||
add(logoBl);
|
add(logoBl);
|
||||||
|
|
||||||
titleText = new FlxSprite(100, FlxG.height * 0.8);
|
titleText = new FlxSprite(100, FlxG.height * 0.8);
|
||||||
|
@ -322,6 +333,16 @@ class TitleState extends MusicBeatState
|
||||||
skipIntro();
|
skipIntro();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (controls.LEFT)
|
||||||
|
{
|
||||||
|
swagShader.update(-elapsed * 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (controls.RIGHT)
|
||||||
|
{
|
||||||
|
swagShader.update(elapsed * 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
super.update(elapsed);
|
super.update(elapsed);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -355,6 +376,8 @@ class TitleState extends MusicBeatState
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var isRainbow:Bool = false;
|
||||||
|
|
||||||
override function beatHit()
|
override function beatHit()
|
||||||
{
|
{
|
||||||
super.beatHit();
|
super.beatHit();
|
||||||
|
|
|
@ -8,33 +8,39 @@ class ColorSwap
|
||||||
public var shader(default, null):ColorSwapShader;
|
public var shader(default, null):ColorSwapShader;
|
||||||
public var colorToReplace(default, set):FlxColor;
|
public var colorToReplace(default, set):FlxColor;
|
||||||
public var newColor(default, set):FlxColor;
|
public var newColor(default, set):FlxColor;
|
||||||
|
public var daTime(default, set):Float;
|
||||||
|
public var hueShit:Float = 0;
|
||||||
|
|
||||||
public function new():Void
|
public function new():Void
|
||||||
{
|
{
|
||||||
shader = new ColorSwapShader();
|
shader = new ColorSwapShader();
|
||||||
shader.colorOld.value = [];
|
shader.uTime.value = [0];
|
||||||
shader.colorNew.value = [];
|
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
|
function set_colorToReplace(color:FlxColor):FlxColor
|
||||||
{
|
{
|
||||||
colorToReplace = color;
|
colorToReplace = color;
|
||||||
|
|
||||||
shader.colorOld.value[0] = color.red;
|
|
||||||
shader.colorOld.value[1] = color.green;
|
|
||||||
shader.colorOld.value[2] = color.blue;
|
|
||||||
|
|
||||||
return color;
|
return color;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function set_daTime(daTime:Float):Float
|
||||||
|
{
|
||||||
|
return daTime;
|
||||||
|
}
|
||||||
|
|
||||||
function set_newColor(color:FlxColor):FlxColor
|
function set_newColor(color:FlxColor):FlxColor
|
||||||
{
|
{
|
||||||
newColor = color;
|
newColor = color;
|
||||||
|
|
||||||
shader.colorNew.value[0] = color.red;
|
|
||||||
shader.colorNew.value[1] = color.green;
|
|
||||||
shader.colorNew.value[2] = color.blue;
|
|
||||||
|
|
||||||
return color;
|
return color;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -44,9 +50,8 @@ class ColorSwapShader extends FlxShader
|
||||||
@:glFragmentSource('
|
@:glFragmentSource('
|
||||||
#pragma header
|
#pragma header
|
||||||
|
|
||||||
uniform vec3 colorOld;
|
uniform float uTime;
|
||||||
uniform vec3 colorNew;
|
uniform float money;
|
||||||
uniform float u_time;
|
|
||||||
|
|
||||||
vec3 normalizeColor(vec3 color)
|
vec3 normalizeColor(vec3 color)
|
||||||
{
|
{
|
||||||
|
@ -57,29 +62,39 @@ class ColorSwapShader extends FlxShader
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
vec3 hueShift(vec3 color, float hue) {
|
vec3 rgb2hsv(vec3 c)
|
||||||
const vec3 k = vec3(0.57735, 0.57735, 0.57735);
|
{
|
||||||
float cosAngle = cos(hue);
|
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||||
return vec3(color * cosAngle + cross(k, color) * sin(hue) + k * dot(k, color) * (1.0 - cosAngle));
|
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||||
|
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||||
|
|
||||||
|
float d = q.x - min(q.w, q.y);
|
||||||
|
float e = 1.0e-10;
|
||||||
|
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
vec3 hsv2rgb(vec3 c)
|
||||||
|
{
|
||||||
|
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||||
|
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||||
|
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||||
|
}
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
vec4 pixel = texture2D(bitmap, openfl_TextureCoordv);
|
vec4 color = flixel_texture2D(bitmap, openfl_TextureCoordv);
|
||||||
|
|
||||||
vec3 eps = vec3(0.02, 0.02, 0.02);
|
vec4 swagColor = vec4(rgb2hsv(vec3(color[0], color[1], color[2])), color[3]);
|
||||||
|
|
||||||
vec3 colorOldNormalized = normalizeColor(colorOld);
|
// [0] is the hue???
|
||||||
vec3 colorNewNormalized = normalizeColor(colorNew);
|
swagColor[0] += uTime;
|
||||||
|
// swagColor[1] += uTime;
|
||||||
|
|
||||||
if (all(greaterThanEqual(pixel, vec4(colorOldNormalized - eps, 1.0)) ) && all(lessThanEqual(pixel, vec4(colorOldNormalized + eps, 1.0)) )
|
// money += swagColor[0];
|
||||||
)
|
|
||||||
{
|
|
||||||
pixel = vec4(hueShift(colorOldNormalized, 0.7), 1.0);
|
|
||||||
}
|
|
||||||
|
|
||||||
gl_FragColor = pixel;
|
color = vec4(hsv2rgb(vec3(swagColor[0], swagColor[1], swagColor[2])), swagColor[3]);
|
||||||
|
|
||||||
|
gl_FragColor = color;
|
||||||
}
|
}
|
||||||
|
|
||||||
')
|
')
|
||||||
|
|
Loading…
Reference in a new issue