Skip to content

Commit

Permalink
WITH THAT, WELCOME TO SCE v1.51
Browse files Browse the repository at this point in the history
WITH THAT, WELCOME TO SCE v1.51
  • Loading branch information
glowsoony authored Feb 18, 2024
2 parents cb2ae06 + 873cd53 commit cc80183
Show file tree
Hide file tree
Showing 6 changed files with 900 additions and 13 deletions.
36 changes: 34 additions & 2 deletions funkinscsource/objects/Note.hx
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ typedef NoteSplashData = {
class Note extends FlxSkewed
{
public static var globalRgbShaders:Array<RGBPalette> = [];
public static var globalQuantRgbShaders:Array<RGBPalette> = [];
public static var instance:Note = null;

#if SCEModchartingTools
Expand Down Expand Up @@ -164,6 +165,7 @@ class Note extends FlxSkewed

//Quant Stuff
public var quantColorsOnNotes:Bool = true;
public var quantizedNotes:Bool = false;

//Extra support for textures
public var containsPixelTexture:Bool = false;
Expand Down Expand Up @@ -205,9 +207,20 @@ class Note extends FlxSkewed
}
}

public function defaultRGBQuant() {
var arrQuantRGB:Array<FlxColor> = ClientPrefs.data.arrowRGBQuantize[noteData];

if (noteData > -1 && noteData <= arrQuantRGB.length)
{
rgbShader.r = arrQuantRGB[0];
rgbShader.g = arrQuantRGB[0];
rgbShader.b = arrQuantRGB[2];
}
}

private function set_noteType(value:String):String {
noteSplashData.texture = PlayState.SONG != null ? PlayState.SONG.splashSkin : 'noteSplashes';
defaultRGB();
quantizedNotes ? defaultRGBQuant() : defaultRGB();

if(noteData > -1 && noteType != value) {
switch(value) {
Expand Down Expand Up @@ -283,7 +296,7 @@ class Note extends FlxSkewed

if(noteData > -1) {
texture = noteSkin;
rgbShader = new RGBShaderReference(this, initializeGlobalRGBShader(noteData));
rgbShader = new RGBShaderReference(this, quantizedNotes ? initializeGlobalQuantRGBShader(noteData) : initializeGlobalRGBShader(noteData));
if(PlayState.SONG != null && PlayState.SONG.disableNoteRGB) rgbShader.enabled = false;

x += swagWidth * (noteData);
Expand Down Expand Up @@ -374,6 +387,25 @@ class Note extends FlxSkewed
return globalRgbShaders[noteData];
}

public static function initializeGlobalQuantRGBShader(noteData:Int)
{
if(globalQuantRgbShaders[noteData] == null)
{
var newRGB:RGBPalette = new RGBPalette();
globalQuantRgbShaders[noteData] = newRGB;

var arr:Array<FlxColor> = ClientPrefs.data.arrowRGBQuantize[noteData];

if (noteData > -1 && noteData <= arr.length)
{
newRGB.r = arr[0];
newRGB.g = arr[1];
newRGB.b = arr[2];
}
}
return globalQuantRgbShaders[noteData];
}

var _lastNoteOffX:Float = 0;
static var _lastValidChecked:String; //optimization
public var originalHeight:Float = 6;
Expand Down
18 changes: 11 additions & 7 deletions funkinscsource/objects/StrumArrow.hx
Original file line number Diff line number Diff line change
Expand Up @@ -33,15 +33,18 @@ class StrumArrow extends FlxSkewed
}

public var useRGBShader:Bool = true;
public function new(x:Float, y:Float, leData:Int, player:Int, style:String) {

public var quantizedNotes:Bool = false;

public function new(x:Float, y:Float, leData:Int, player:Int, ?style:String, ?quantizedNotes:Bool) {
#if (flixel >= "5.5.0")
animation = new backend.animation.PsychAnimationController(this);
#end
rgbShader = new RGBShaderReference(this, Note.initializeGlobalRGBShader(leData));
rgbShader = new RGBShaderReference(this, !quantizedNotes ? Note.initializeGlobalRGBShader(leData) : Note.initializeGlobalQuantRGBShader(leData));
rgbShader.enabled = false;
if(PlayState.SONG != null && PlayState.SONG.disableStrumRGB) useRGBShader = false;

var arr:Array<FlxColor> = ClientPrefs.data.arrowRGB[leData];
var arr:Array<FlxColor> = !quantizedNotes ? ClientPrefs.data.arrowRGB[leData] : ClientPrefs.data.arrowRGBQuantize[leData];
if(texture.contains('pixel') || style.contains('pixel') || containsPixelTexture) arr = ClientPrefs.data.arrowRGBPixel[leData];

if(leData <= arr.length)
Expand All @@ -58,6 +61,7 @@ class StrumArrow extends FlxSkewed
this.player = player;
this.noteData = leData;
this.daStyle = style;
this.quantizedNotes = quantizedNotes;
super(x, y);

var skin:String = null;
Expand Down Expand Up @@ -172,6 +176,10 @@ class StrumArrow extends FlxSkewed

public function addAnims(?pixel:Bool = false)
{
var notesAnim:Array<String> = quantizedNotes ? ['UP', 'UP', 'UP', 'UP', 'UP', 'UP', 'UP', 'UP'] : ['LEFT', 'DOWN', 'UP', 'RIGHT'];
var pressAnim:Array<String> = quantizedNotes ? ['up', 'up', 'up', 'up', 'up', 'up', 'up', 'up'] : ['left', 'down', 'up', 'right'];
var colorAnims:Array<String> = quantizedNotes ? ['green', 'green', 'green', 'green', 'green', 'green', 'green', 'green'] : ['purple', 'blue', 'green', 'red'];

if (pixel)
{
isPixel = true;
Expand All @@ -194,10 +202,6 @@ class StrumArrow extends FlxSkewed
antialiasing = ClientPrefs.data.antialiasing;
setGraphicSize(Std.int(width * 0.7));

var notesAnim:Array<String> = ['LEFT', 'DOWN', 'UP', 'RIGHT'];
var pressAnim:Array<String> = ['left', 'down', 'up', 'right'];
var colorAnims:Array<String> = ['purple', 'blue', 'green', 'red'];

animation.addByPrefix(colorAnims[noteData], 'arrow' + notesAnim[noteData]);

animation.addByPrefix('static', 'arrow' + notesAnim[noteData]);
Expand Down
2 changes: 1 addition & 1 deletion funkinscsource/options/NoteOffsetState.hx
Original file line number Diff line number Diff line change
Expand Up @@ -431,7 +431,7 @@ class NoteOffsetState extends MusicBeatState
if(beatTween != null) beatTween.cancel();

persistentUpdate = false;
MusicBeatState.switchState(new options.OptionsState());
LoadingState.loadAndSwitchState(new options.OptionsState());
if(OptionsState.onPlayState)
{
if(ClientPrefs.data.pauseMusic != 'None')
Expand Down
139 changes: 139 additions & 0 deletions funkinscsource/options/NoteOptions.hx
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
package options;

import flixel.FlxSubState;
import flash.text.TextField;
import flixel.input.keyboard.FlxKey;
import flixel.addons.display.FlxGridOverlay;
import flixel.group.FlxGroup.FlxTypedGroup;
import flixel.graphics.FlxGraphic;
import flixel.util.FlxSave;

import haxe.Json;

import lime.utils.Assets;

using StringTools;

class NoteOptions extends MusicBeatState
{
var options:Array<String> = ['Note Colors', 'Quant Colors'];
private var grpOptions:FlxTypedGroup<Alphabet>;
private static var curSelected:Int = 0;
public static var menuBG:FlxSprite;

public function new()
{
super();
}
function openSelectedSubstate(label:String) {
switch(label) {
case 'Note Colors':
openSubState(new options.NotesSubState());
case 'Quant Colors':
openSubState(new options.QuantSubState());
}
}

var selectorLeft:Alphabet;
var selectorRight:Alphabet;

override function create() {
#if desktop
DiscordClient.changePresence("System - Note Options", null);
#end

var bg:FlxSprite = new FlxSprite().loadGraphic(Paths.image('menuDesat'));
bg.updateHitbox();
bg.screenCenter();
bg.antialiasing = ClientPrefs.data.antialiasing;
add(bg);

grpOptions = new FlxTypedGroup<Alphabet>();
add(grpOptions);

for (i in 0...options.length)
{
var optionText:Alphabet = new Alphabet(0, 0, options[i], true);
optionText.screenCenter();
optionText.y += (100 * (i - (options.length / 2))) + 50;
grpOptions.add(optionText);
}

selectorLeft = new Alphabet(0, 0, '>', true);
add(selectorLeft);
selectorRight = new Alphabet(0, 0, '<', true);
add(selectorRight);

changeSelection();
ClientPrefs.saveSettings();

super.create();
}

override function closeSubState() {
super.closeSubState();
ClientPrefs.saveSettings();
}

override function update(elapsed:Float) {
super.update(elapsed);

if (controls.UI_UP_P) {
changeSelection(-1);
}
if (controls.UI_DOWN_P) {
changeSelection(1);
}

if (controls.BACK) {
FlxG.sound.play(Paths.sound('cancelMenu'));
flixel.addons.transition.FlxTransitionableState.skipNextTransOut = true;
flixel.addons.transition.FlxTransitionableState.skipNextTransIn = true;
LoadingState.loadAndSwitchState(new options.OptionsState());
if(OptionsState.onPlayState)
{
if(ClientPrefs.data.pauseMusic != 'None')
FlxG.sound.playMusic(Paths.music(Paths.formatToSongPath(ClientPrefs.data.pauseMusic)));
else
FlxG.sound.music.volume = 0;
}
else FlxG.sound.playMusic(Paths.music(ClientPrefs.data.SCEWatermark ? "SCE_freakyMenu" : "freakyMenu"));
}

if (controls.ACCEPT) {
openSelectedSubstate(options[curSelected]);
}
}

function changeSelection(change:Int = 0) {
curSelected += change;
if (curSelected < 0)
curSelected = options.length - 1;
if (curSelected >= options.length)
curSelected = 0;

var bullShit:Int = 0;

for (item in grpOptions.members) {
item.targetY = bullShit - curSelected;
bullShit++;

item.alpha = 0.6;
if (item.targetY == 0) {
item.alpha = 1;
selectorLeft.x = item.x - 63;
selectorLeft.y = item.y;
selectorRight.x = item.x + item.width + 15;
selectorRight.y = item.y;
}
}
FlxG.sound.play(Paths.sound('scrollMenu'));
}

override function destroy()
{
ClientPrefs.loadPrefs();
ClientPrefs.keybindSaveLoad();
super.destroy();
}
}
9 changes: 6 additions & 3 deletions funkinscsource/options/OptionsState.hx
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,17 @@ import flixel.FlxObject;

class OptionsState extends MusicBeatState
{
var options:Array<String> = ['Note Colors', 'Controls', 'Adjust Delay and Combo', 'Graphics', 'Visuals and UI', 'Gameplay', 'Misc', 'Game Jolt Login'];
var options:Array<String> = ['Note Options', 'Controls', 'Adjust Delay and Combo', 'Graphics', 'Visuals and UI', 'Gameplay', 'Misc', 'Game Jolt Login'];
private var grpOptions:FlxTypedGroup<Alphabet>;
private static var curSelected:Int = 0;
public static var menuBG:FlxSprite;
public static var onPlayState:Bool = false;
function openSelectedSubstate(label:String) {
switch(label) {
case 'Note Colors': openSubState(new options.NotesSubState());
case 'Note Options':
flixel.addons.transition.FlxTransitionableState.skipNextTransOut = true;
flixel.addons.transition.FlxTransitionableState.skipNextTransIn = true;
MusicBeatState.switchState(new options.NoteOptions());
case 'Controls': openSubState(new options.ControlsSubState());
case 'Graphics': openSubState(new options.GraphicsSettingsSubState());
case 'Visuals and UI': openSubState(new options.VisualsUISubState());
Expand Down Expand Up @@ -56,7 +59,7 @@ class OptionsState extends MusicBeatState
grpOptions = new FlxTypedGroup<Alphabet>();
add(grpOptions);

if (!Main.checkGJKeysAndId()) options = ['Note Colors', 'Controls', 'Adjust Delay and Combo', 'Graphics', 'Visuals and UI', 'Gameplay', 'Misc'];
if (!Main.checkGJKeysAndId()) options = ['Note Options', 'Controls', 'Adjust Delay and Combo', 'Graphics', 'Visuals and UI', 'Gameplay', 'Misc'];

for (i in 0...options.length)
{
Expand Down
Loading

0 comments on commit cc80183

Please sign in to comment.