* Lua Improvments * fix * fix 2 * fix 3 * fix 4 * fix 5 * fix 6 * Fix 7, please action dont fail * done * done 2 * done 3 * final * last fix * please last fix final * add `curSection` on lua * ready for pr * oops * oop2 * Lua Improvements 2 * Update Project.xml * fixed `lastCalledScript` * Attempt Fix 2 * Attempt fix 3 * shit * done i think * fuck * fuck 2
289 lines
7.4 KiB
Haxe
289 lines
7.4 KiB
Haxe
package options;
|
|
|
|
import flash.text.TextField;
|
|
import flixel.FlxG;
|
|
import flixel.FlxSprite;
|
|
import flixel.addons.display.FlxGridOverlay;
|
|
import flixel.group.FlxGroup.FlxTypedGroup;
|
|
import flixel.math.FlxMath;
|
|
import flixel.text.FlxText;
|
|
import flixel.util.FlxColor;
|
|
import lime.utils.Assets;
|
|
import flixel.FlxSubState;
|
|
import flash.text.TextField;
|
|
import flixel.FlxG;
|
|
import flixel.FlxSprite;
|
|
import flixel.util.FlxSave;
|
|
import haxe.Json;
|
|
import flixel.tweens.FlxEase;
|
|
import flixel.tweens.FlxTween;
|
|
import flixel.util.FlxTimer;
|
|
import flixel.input.keyboard.FlxKey;
|
|
import flixel.graphics.FlxGraphic;
|
|
import Controls;
|
|
|
|
using StringTools;
|
|
|
|
class NotesSubState extends MusicBeatSubstate
|
|
{
|
|
private static var curSelected:Int = 0;
|
|
private static var typeSelected:Int = 0;
|
|
private var grpNumbers:FlxTypedGroup<Alphabet>;
|
|
private var grpNotes:FlxTypedGroup<FlxSprite>;
|
|
private var shaderArray:Array<ColorSwap> = [];
|
|
var curValue:Float = 0;
|
|
var holdTime:Float = 0;
|
|
var nextAccept:Int = 5;
|
|
|
|
var blackBG:FlxSprite;
|
|
var hsbText:Alphabet;
|
|
|
|
var posX = 230;
|
|
public function new() {
|
|
super();
|
|
|
|
var bg:FlxSprite = new FlxSprite().loadGraphic(Paths.image('menuDesat'));
|
|
bg.color = 0xFFea71fd;
|
|
bg.screenCenter();
|
|
bg.antialiasing = ClientPrefs.globalAntialiasing;
|
|
add(bg);
|
|
|
|
blackBG = new FlxSprite(posX - 25).makeGraphic(870, 200, FlxColor.BLACK);
|
|
blackBG.alpha = 0.4;
|
|
add(blackBG);
|
|
|
|
grpNotes = new FlxTypedGroup<FlxSprite>();
|
|
add(grpNotes);
|
|
grpNumbers = new FlxTypedGroup<Alphabet>();
|
|
add(grpNumbers);
|
|
|
|
for (i in 0...ClientPrefs.arrowHSV.length) {
|
|
var yPos:Float = (165 * i) + 35;
|
|
for (j in 0...3) {
|
|
var optionText:Alphabet = new Alphabet(posX + (225 * j) + 250, yPos + 60, Std.string(ClientPrefs.arrowHSV[i][j]), true);
|
|
grpNumbers.add(optionText);
|
|
}
|
|
|
|
var note:FlxSprite = new FlxSprite(posX, yPos);
|
|
note.frames = Paths.getSparrowAtlas('NOTE_assets');
|
|
var animations:Array<String> = ['purple0', 'blue0', 'green0', 'red0'];
|
|
note.animation.addByPrefix('idle', animations[i]);
|
|
note.animation.play('idle');
|
|
note.antialiasing = ClientPrefs.globalAntialiasing;
|
|
grpNotes.add(note);
|
|
|
|
var newShader:ColorSwap = new ColorSwap();
|
|
note.shader = newShader.shader;
|
|
newShader.hue = ClientPrefs.arrowHSV[i][0] / 360;
|
|
newShader.saturation = ClientPrefs.arrowHSV[i][1] / 100;
|
|
newShader.brightness = ClientPrefs.arrowHSV[i][2] / 100;
|
|
shaderArray.push(newShader);
|
|
}
|
|
|
|
hsbText = new Alphabet(posX + 560, 0, "Hue Saturation Brightness", false);
|
|
hsbText.scaleX = 0.6;
|
|
hsbText.scaleY = 0.6;
|
|
add(hsbText);
|
|
|
|
changeSelection();
|
|
|
|
cameras = [FlxG.cameras.list[FlxG.cameras.list.length-1]];
|
|
}
|
|
|
|
var changingNote:Bool = false;
|
|
override function update(elapsed:Float) {
|
|
if(changingNote) {
|
|
if(holdTime < 0.5) {
|
|
if(controls.UI_LEFT_P) {
|
|
updateValue(-1);
|
|
FlxG.sound.play(Paths.sound('scrollMenu'));
|
|
} else if(controls.UI_RIGHT_P) {
|
|
updateValue(1);
|
|
FlxG.sound.play(Paths.sound('scrollMenu'));
|
|
} else if(controls.RESET) {
|
|
resetValue(curSelected, typeSelected);
|
|
FlxG.sound.play(Paths.sound('scrollMenu'));
|
|
}
|
|
if(controls.UI_LEFT_R || controls.UI_RIGHT_R) {
|
|
holdTime = 0;
|
|
} else if(controls.UI_LEFT || controls.UI_RIGHT) {
|
|
holdTime += elapsed;
|
|
}
|
|
} else {
|
|
var add:Float = 90;
|
|
switch(typeSelected) {
|
|
case 1 | 2: add = 50;
|
|
}
|
|
if(controls.UI_LEFT) {
|
|
updateValue(elapsed * -add);
|
|
} else if(controls.UI_RIGHT) {
|
|
updateValue(elapsed * add);
|
|
}
|
|
if(controls.UI_LEFT_R || controls.UI_RIGHT_R) {
|
|
FlxG.sound.play(Paths.sound('scrollMenu'));
|
|
holdTime = 0;
|
|
}
|
|
}
|
|
} else {
|
|
if (controls.UI_UP_P) {
|
|
changeSelection(-1);
|
|
FlxG.sound.play(Paths.sound('scrollMenu'));
|
|
}
|
|
if (controls.UI_DOWN_P) {
|
|
changeSelection(1);
|
|
FlxG.sound.play(Paths.sound('scrollMenu'));
|
|
}
|
|
if (controls.UI_LEFT_P) {
|
|
changeType(-1);
|
|
FlxG.sound.play(Paths.sound('scrollMenu'));
|
|
}
|
|
if (controls.UI_RIGHT_P) {
|
|
changeType(1);
|
|
FlxG.sound.play(Paths.sound('scrollMenu'));
|
|
}
|
|
if(controls.RESET) {
|
|
for (i in 0...3) {
|
|
resetValue(curSelected, i);
|
|
}
|
|
FlxG.sound.play(Paths.sound('scrollMenu'));
|
|
}
|
|
if (controls.ACCEPT && nextAccept <= 0) {
|
|
FlxG.sound.play(Paths.sound('scrollMenu'));
|
|
changingNote = true;
|
|
holdTime = 0;
|
|
for (i in 0...grpNumbers.length) {
|
|
var item = grpNumbers.members[i];
|
|
item.alpha = 0;
|
|
if ((curSelected * 3) + typeSelected == i) {
|
|
item.alpha = 1;
|
|
}
|
|
}
|
|
for (i in 0...grpNotes.length) {
|
|
var item = grpNotes.members[i];
|
|
item.alpha = 0;
|
|
if (curSelected == i) {
|
|
item.alpha = 1;
|
|
}
|
|
}
|
|
super.update(elapsed);
|
|
return;
|
|
}
|
|
}
|
|
|
|
if (controls.BACK || (changingNote && controls.ACCEPT)) {
|
|
if(!changingNote) {
|
|
close();
|
|
} else {
|
|
changeSelection();
|
|
}
|
|
changingNote = false;
|
|
FlxG.sound.play(Paths.sound('cancelMenu'));
|
|
}
|
|
|
|
if(nextAccept > 0) {
|
|
nextAccept -= 1;
|
|
}
|
|
super.update(elapsed);
|
|
}
|
|
|
|
function changeSelection(change:Int = 0) {
|
|
curSelected += change;
|
|
if (curSelected < 0)
|
|
curSelected = ClientPrefs.arrowHSV.length-1;
|
|
if (curSelected >= ClientPrefs.arrowHSV.length)
|
|
curSelected = 0;
|
|
|
|
curValue = ClientPrefs.arrowHSV[curSelected][typeSelected];
|
|
updateValue();
|
|
|
|
for (i in 0...grpNumbers.length) {
|
|
var item = grpNumbers.members[i];
|
|
item.alpha = 0.6;
|
|
if ((curSelected * 3) + typeSelected == i) {
|
|
item.alpha = 1;
|
|
}
|
|
}
|
|
for (i in 0...grpNotes.length) {
|
|
var item = grpNotes.members[i];
|
|
item.alpha = 0.6;
|
|
item.scale.set(0.75, 0.75);
|
|
if (curSelected == i) {
|
|
item.alpha = 1;
|
|
item.scale.set(1, 1);
|
|
hsbText.y = item.y - 70;
|
|
blackBG.y = item.y - 20;
|
|
}
|
|
}
|
|
FlxG.sound.play(Paths.sound('scrollMenu'));
|
|
}
|
|
|
|
function changeType(change:Int = 0) {
|
|
typeSelected += change;
|
|
if (typeSelected < 0)
|
|
typeSelected = 2;
|
|
if (typeSelected > 2)
|
|
typeSelected = 0;
|
|
|
|
curValue = ClientPrefs.arrowHSV[curSelected][typeSelected];
|
|
updateValue();
|
|
|
|
for (i in 0...grpNumbers.length) {
|
|
var item = grpNumbers.members[i];
|
|
item.alpha = 0.6;
|
|
if ((curSelected * 3) + typeSelected == i) {
|
|
item.alpha = 1;
|
|
}
|
|
}
|
|
}
|
|
|
|
function resetValue(selected:Int, type:Int) {
|
|
curValue = 0;
|
|
ClientPrefs.arrowHSV[selected][type] = 0;
|
|
switch(type) {
|
|
case 0: shaderArray[selected].hue = 0;
|
|
case 1: shaderArray[selected].saturation = 0;
|
|
case 2: shaderArray[selected].brightness = 0;
|
|
}
|
|
|
|
var item = grpNumbers.members[(selected * 3) + type];
|
|
item.text = '0';
|
|
|
|
var add = (40 * (item.letters.length - 1)) / 2;
|
|
for (letter in item.letters)
|
|
{
|
|
letter.offset.x += add;
|
|
}
|
|
}
|
|
function updateValue(change:Float = 0) {
|
|
curValue += change;
|
|
var roundedValue:Int = Math.round(curValue);
|
|
var max:Float = 180;
|
|
switch(typeSelected) {
|
|
case 1 | 2: max = 100;
|
|
}
|
|
|
|
if(roundedValue < -max) {
|
|
curValue = -max;
|
|
} else if(roundedValue > max) {
|
|
curValue = max;
|
|
}
|
|
roundedValue = Math.round(curValue);
|
|
ClientPrefs.arrowHSV[curSelected][typeSelected] = roundedValue;
|
|
|
|
switch(typeSelected) {
|
|
case 0: shaderArray[curSelected].hue = roundedValue / 360;
|
|
case 1: shaderArray[curSelected].saturation = roundedValue / 100;
|
|
case 2: shaderArray[curSelected].brightness = roundedValue / 100;
|
|
}
|
|
|
|
var item = grpNumbers.members[(curSelected * 3) + typeSelected];
|
|
item.text = Std.string(roundedValue);
|
|
|
|
var add = (40 * (item.letters.length - 1)) / 2;
|
|
for (letter in item.letters)
|
|
{
|
|
letter.offset.x += add;
|
|
if(roundedValue < 0) letter.offset.x += 10;
|
|
}
|
|
}
|
|
} |