From 08699d150b420d779711345dad3731ff63931992 Mon Sep 17 00:00:00 2001 From: JordanSantiagoYT Date: Fri, 25 Oct 2024 00:33:30 -0400 Subject: [PATCH] PEAK!!!!! Fixed the rating sprites in the Note Offset menu being HaxeFlixel logos (closes #690) Added the Hold Note Splashes from Base 0.3.X and up (special thanks to Psych Online (more specifically, NotMagniill and Snirozu) for the code) --- assets/preload/images/credits/magniill.png | Bin 0 -> 6033 bytes .../noteSplashes/holdSplashes/holdSplash.png | Bin 0 -> 61099 bytes .../noteSplashes/holdSplashes/holdSplash.xml | 16 +++ source/CreditsState.hx | 1 + source/Note.hx | 12 +- source/PlayState.hx | 49 +++++++- source/editors/EditorPlayState.hx | 35 ++++++ source/objects/SustainSplash.hx | 113 ++++++++++++++++++ source/options/NoteOffsetState.hx | 4 +- 9 files changed, 224 insertions(+), 6 deletions(-) create mode 100644 assets/preload/images/credits/magniill.png create mode 100644 assets/shared/images/noteSplashes/holdSplashes/holdSplash.png create mode 100644 assets/shared/images/noteSplashes/holdSplashes/holdSplash.xml create mode 100644 source/objects/SustainSplash.hx diff --git a/assets/preload/images/credits/magniill.png b/assets/preload/images/credits/magniill.png new file mode 100644 index 0000000000000000000000000000000000000000..c39696dc39f0a007aa13da498182d788b2079f2a GIT binary patch literal 6033 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%0DYY%d@$oP!0@)ZQDp%UpP5oHQZ!Gw*@C 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 literal 0 HcmV?d00001 diff --git a/assets/shared/images/noteSplashes/holdSplashes/holdSplash.xml b/assets/shared/images/noteSplashes/holdSplashes/holdSplash.xml new file mode 100644 index 00000000000..dc1e46d7e0c --- /dev/null +++ b/assets/shared/images/noteSplashes/holdSplashes/holdSplash.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/source/CreditsState.hx b/source/CreditsState.hx index 400c95002e7..72212494103 100644 --- a/source/CreditsState.hx +++ b/source/CreditsState.hx @@ -93,6 +93,7 @@ class CreditsState extends MusicBeatState ['SomeGuyWhoLovesCoding', 'sgwlc', 'Rewrote the chart loading system and ported the new Rendering Mode to source', 'https://www.youtube.com/channel/UCMSusVA3DY-4EtiGP4zKAJA', 'FFBD40'], ['Betopia', 'nothing', 'Freeplay Search bar creator', 'https://www.youtube.com/channel/UCfjyz9xRhZiRbLMteQloVeg', 'FFFFFF'], ['CDEV Engine', 'cdev', 'Update Screen Creator', 'https://github.com/Core5570RYT/FNF-CDEV-Engine', '00427B'], + ['NotMagniill', 'magniill', 'Code for the Sustain Note Splashes', 'https://github.com/notmagniill', 'FFBD40'], [''], ['Psych Engine Team'], ['Shadow Mario', 'shadowmario', 'Main Programmer of Psych Engine', 'https://twitter.com/Shadow_Mario_', '444444'], diff --git a/source/Note.hx b/source/Note.hx index 30cdbad84ee..13f5c0fec1b 100644 --- a/source/Note.hx +++ b/source/Note.hx @@ -6,6 +6,8 @@ import flixel.util.FlxColor; import shaders.RGBPalette; import shaders.RGBPalette.RGBShaderReference; +import objects.SustainSplash; + using StringTools; typedef EventNote = { @@ -32,6 +34,7 @@ typedef PreloadedChartNote = { sustainLength:Float, sustainScale:Float, parentST:Float, + parentSL:Float, hitHealth:Float, missHealth:Float, hitCausesMiss:Null, @@ -66,6 +69,7 @@ class Note extends FlxSprite public var extraData:Map = new Map(); public var parentST:Float = 0; + public var parentSL:Float = 0; public var strumTime:Float = 0; public var mustPress:Bool = false; public var doOppStuff:Bool = false; @@ -82,6 +86,7 @@ class Note extends FlxSprite public var sustainLength:Float = 0; public var isSustainNote:Bool = false; + public var isSustainEnd:Bool = false; public var noteType(default, set):String = null; public var eventName:String = ''; @@ -115,6 +120,7 @@ class Note extends FlxSprite b: -1, a: 1 }; + public var noteHoldSplash:SustainSplash; // Lua shit public var noteSplashDisabled:Bool = false; @@ -603,9 +609,13 @@ class Note extends FlxSprite doOppStuff = chartNoteData.oppNote; gfNote = chartNoteData.gfNote; isSustainNote = chartNoteData.isSustainNote; + isSustainEnd = chartNoteData.isSustainEnd; sustainScale = chartNoteData.sustainScale; lowPriority = chartNoteData.lowPriority; - if (isSustainNote) parentST = chartNoteData.parentST; + if (isSustainNote) { + parentST = chartNoteData.parentST; + parentSL = chartNoteData.parentSL; + } hitHealth = chartNoteData.hitHealth; missHealth = chartNoteData.missHealth; diff --git a/source/PlayState.hx b/source/PlayState.hx index 2e95f2e051b..b13dde1be13 100644 --- a/source/PlayState.hx +++ b/source/PlayState.hx @@ -43,6 +43,7 @@ import vlc.MP4Handler; #end import Note; +import objects.SustainSplash; using StringTools; @@ -132,7 +133,7 @@ class PlayState extends MusicBeatState public var healthDrainFloor:Float = 0.1; var strumsHit:Array = [false, false, false, false, false, false, false, false]; - public var splashesPerFrame:Array = [0, 0]; + public var splashesPerFrame:Array = [0, 0, 0, 0]; public var vocals:FlxSound; public var opponentVocals:FlxSound; @@ -169,6 +170,7 @@ class PlayState extends MusicBeatState public var strumLineNotes:FlxTypedGroup; public var opponentStrums:FlxTypedGroup; public var playerStrums:FlxTypedGroup; + public var grpHoldSplashes:FlxTypedGroup; public var grpNoteSplashes:FlxTypedGroup; public var laneunderlay:FlxSprite; public var laneunderlayOpponent:FlxSprite; @@ -590,6 +592,7 @@ class PlayState extends MusicBeatState FlxG.cameras.reset(camGame); FlxG.cameras.add(camHUD, false); FlxG.cameras.add(camOther, false); + grpHoldSplashes = new FlxTypedGroup((ClientPrefs.maxSplashLimit != 0 ? ClientPrefs.maxSplashLimit : 10000)); grpNoteSplashes = new FlxTypedGroup((ClientPrefs.maxSplashLimit != 0 ? ClientPrefs.maxSplashLimit : 10000)); FlxG.cameras.setDefaultDrawTarget(camGame, true); @@ -1172,6 +1175,7 @@ class PlayState extends MusicBeatState notes.visible = sustainNotes.visible = ClientPrefs.showNotes; //that was easier than expected add(grpNoteSplashes); + add(grpHoldSplashes); if(ClientPrefs.timeBarType == 'Song Name' && ClientPrefs.timeBarStyle == 'VS Impostor') @@ -1181,7 +1185,14 @@ class PlayState extends MusicBeatState var splash:NoteSplash = new NoteSplash(100, 100, 0); grpNoteSplashes.add(splash); - splash.alpha = 0.0; + splash.alpha = 0.0001; + + SustainSplash.startCrochet = Conductor.stepCrochet; + SustainSplash.frameRate = Math.floor(24 / 100 * SONG.bpm); + var splash:SustainSplash = new SustainSplash(); + grpHoldSplashes.add(splash); + splash.visible = true; + splash.alpha = 0.0001; playerStrums = new FlxTypedGroup(); opponentStrums = new FlxTypedGroup(); @@ -1620,6 +1631,7 @@ class PlayState extends MusicBeatState laneunderlay.cameras = [camHUD]; strumLineNotes.cameras = [camHUD]; grpNoteSplashes.cameras = [camHUD]; + grpHoldSplashes.cameras = [camHUD]; sustainNotes.cameras = [camHUD]; notes.cameras = [camHUD]; healthBar.cameras = [camHUD]; @@ -3047,6 +3059,7 @@ class PlayState extends MusicBeatState isSustainEnd: susNote == floorSus, sustainScale: 1 / ratio, parentST: swagNote.strumTime, + parentSL: swagNote.sustainLength, hitHealth: 0.023, missHealth: songNotes[3] != 'Hurt Note' ? 0.0475 : 0.1, wasHit: false, @@ -3620,7 +3633,8 @@ class PlayState extends MusicBeatState if (charAnimsFrame > 0) charAnimsFrame = 0; if (oppAnimsFrame > 0) oppAnimsFrame = 0; strumsHit = [false, false, false, false, false, false, false, false]; - if (splashesPerFrame[0] > 0 || splashesPerFrame[1] > 0) splashesPerFrame = [0, 0]; + for (i in 0...splashesPerFrame.length) + if (splashesPerFrame[i] > 0) splashesPerFrame[i] = 0; if (hitImagesFrame > 0) hitImagesFrame = 0; @@ -5637,6 +5651,10 @@ class PlayState extends MusicBeatState } } + if (daNote.noteHoldSplash != null) { + daNote.noteHoldSplash.kill(); + } + callOnLuas('noteMiss', [notes.members.indexOf(daNote), daNote.noteData, daNote.noteType, daNote.isSustainNote]); if (ClientPrefs.missRating) popUpScore(daNote, true); } @@ -5961,6 +5979,7 @@ class PlayState extends MusicBeatState camHUD.shake(playerChar.shakeIntensity / 2, playerChar.shakeDuration / playbackRate); } note.wasGoodHit = true; + if (ClientPrefs.noteSplashes && note.isSustainNote && splashesPerFrame[3] <= 4) spawnHoldSplashOnNote(note); if (SONG.needsVoices && ClientPrefs.songLoading && !ffmpegMode) if (opponentChart && opponentVocals != null && opponentVocals.volume != 1) opponentVocals.volume = 1; else if (!opponentChart && vocals.volume != 1 || vocals.volume != 1) vocals.volume = 1; @@ -6109,6 +6128,7 @@ class PlayState extends MusicBeatState } daNote.hitByOpponent = true; + if (ClientPrefs.oppNoteSplashes && daNote.isSustainNote && splashesPerFrame[2] <= 4) spawnHoldSplashOnNote(daNote, true); if (!ClientPrefs.noHitFuncs) callOnLuas(!opponentChart ? 'opponentNoteHit' : 'goodNoteHit', [notes.members.indexOf(daNote), Math.abs(daNote.noteData), daNote.noteType, daNote.isSustainNote]); @@ -6203,6 +6223,29 @@ class PlayState extends MusicBeatState if (ClientPrefs.fastNoteSpawn) (note.isSustainNote ? sustainNotes : notes).pushToPool(note); } + public function spawnHoldSplashOnNote(note:Note, ?isDad:Bool = false) { + if (!ClientPrefs.noteSplashes || note == null) + return; + + splashesPerFrame[(isDad ? 2 : 3)] += 1; + + if (note != null) { + var strum:StrumNote = (isDad ? playerStrums : opponentStrums).members[note.noteData]; + final susLength:Float = (!note.isSustainNote ? note.sustainLength : note.parentSL); + final tailLength:Int = Math.floor(susLength / Conductor.stepCrochet); + + if(strum != null && tailLength != 0) + spawnHoldSplash(note); + } + } + + public function spawnHoldSplash(note:Note) { + var end:Note = note; + var splash:SustainSplash = grpHoldSplashes.recycle(SustainSplash); + splash.setupSusSplash((note.mustPress ? playerStrums : opponentStrums).members[note.noteData], note, playbackRate); + grpHoldSplashes.add(end.noteHoldSplash = splash); + } + public function spawnNoteSplashOnNote(isDad:Bool, note:Note, ?isGf:Bool = false) { if(ClientPrefs.noteSplashes && note != null) { splashesPerFrame[(isDad ? 0 : 1)] += 1; diff --git a/source/editors/EditorPlayState.hx b/source/editors/EditorPlayState.hx index dafcc93cac1..e6c03ef7f52 100644 --- a/source/editors/EditorPlayState.hx +++ b/source/editors/EditorPlayState.hx @@ -20,6 +20,7 @@ import flixel.util.FlxTimer; import flixel.input.keyboard.FlxKey; import openfl.events.KeyboardEvent; import Note.PreloadedChartNote; +import objects.SustainSplash; import Character.CharacterFile; @@ -33,6 +34,7 @@ class EditorPlayState extends MusicBeatState public var strumLineNotes:FlxTypedGroup; public var opponentStrums:FlxTypedGroup; public var playerStrums:FlxTypedGroup; + public var grpHoldSplashes:FlxTypedGroup; public var grpNoteSplashes:FlxTypedGroup; public var sustainNotes:NoteGroup; @@ -110,6 +112,9 @@ class EditorPlayState extends MusicBeatState notes = new NoteGroup(); add(notes); + + grpHoldSplashes = new FlxTypedGroup((ClientPrefs.maxSplashLimit != 0 ? ClientPrefs.maxSplashLimit : 10000)); + add(grpHoldSplashes); grpNoteSplashes = new FlxTypedGroup(); add(grpNoteSplashes); @@ -118,6 +123,13 @@ class EditorPlayState extends MusicBeatState grpNoteSplashes.add(splash); splash.alpha = 0.0; + SustainSplash.startCrochet = Conductor.stepCrochet; + SustainSplash.frameRate = Math.floor(24 / 100 * PlayState.SONG.bpm); + var splash:SustainSplash = new SustainSplash(); + grpHoldSplashes.add(splash); + splash.visible = true; + splash.alpha = 0.0001; + Paths.initDefaultSkin(PlayState.SONG.arrowSkin); generateSong(PlayState.SONG.song, startPos); @@ -278,6 +290,7 @@ class EditorPlayState extends MusicBeatState sustainLength: 0, sustainScale: 1 / ratio, parentST: swagNote.strumTime, + parentSL: swagNote.sustainLength, hitHealth: 0.023, missHealth: 0.0475, wasHit: false, @@ -754,6 +767,8 @@ class EditorPlayState extends MusicBeatState } } + if (ClientPrefs.noteSplashes && note.isSustainNote) spawnHoldSplashOnNote(note); + if (!note.isSustainNote) invalidateNote(note); note.wasGoodHit = true; @@ -981,6 +996,26 @@ class EditorPlayState extends MusicBeatState } } + public function spawnHoldSplashOnNote(note:Note, ?isDad:Bool = false) { + if (!ClientPrefs.noteSplashes || note == null) + return; + + if (note != null) { + var strum:StrumNote = (isDad ? playerStrums : opponentStrums).members[note.noteData]; + final susLength:Float = (!note.isSustainNote ? note.sustainLength : note.parentSL); + final tailLength:Int = Math.floor(susLength / Conductor.stepCrochet); + + if(strum != null && tailLength != 0) + spawnHoldSplash(note); + } + } + + public function spawnHoldSplash(note:Note) { + var end:Note = note; + var splash:SustainSplash = grpHoldSplashes.recycle(SustainSplash); + splash.setupSusSplash((note.mustPress ? playerStrums : opponentStrums).members[note.noteData], note, 1); + grpHoldSplashes.add(end.noteHoldSplash = splash); + } // Note splash shit, duh function spawnNoteSplashOnNote(note:Note) { diff --git a/source/objects/SustainSplash.hx b/source/objects/SustainSplash.hx new file mode 100644 index 00000000000..5beac352433 --- /dev/null +++ b/source/objects/SustainSplash.hx @@ -0,0 +1,113 @@ +package objects; + +import shaders.RGBPalette; + +//This code was from Psych Online, so credit to NotMagniill and Snirozu for the code + +using StringTools; + +class SustainSplash extends FlxSprite { + public var rgbShader:NoteSplash.PixelSplashShaderRef; + public static var startCrochet:Float; + public static var frameRate:Int; + + public var strumNote:StrumNote; + + var timer:FlxTimer; + + public static var defaultNoteHoldSplash(default, never):String = 'noteSplashes/holdSplashes/holdSplash'; + + public function new():Void { + super(); + rgbShader = new NoteSplash.PixelSplashShaderRef(); + shader = rgbShader.shader; + var skin:String = defaultNoteHoldSplash + getSplashSkinPostfix(); + frames = Paths.getSparrowAtlas(skin); + if (frames == null) { + skin = defaultNoteHoldSplash; + frames = Paths.getSparrowAtlas(skin); + } + animation.addByPrefix('hold', 'hold', 24, true); + animation.addByPrefix('end', 'end', 24, false); + } + + override function update(elapsed) { + super.update(elapsed); + + if (strumNote != null) { + setPosition(strumNote.x, strumNote.y); + visible = strumNote.visible; + alpha = 1 - (1 - strumNote.alpha); + + if (animation.curAnim.name == "hold" && strumNote.animation.curAnim.name == "static" || animation.curAnim.name == "end" && animation.curAnim.finished) { + x = -50000; + kill(); + } + } + } + + public function setupSusSplash(strum:StrumNote, daNote:Note, ?playbackRate:Float = 1):Void { + final susLength:Float = (!daNote.isSustainNote ? daNote.sustainLength : daNote.parentSL); + final lengthToGet:Int = Math.floor(susLength / Conductor.stepCrochet); + final timeToGet:Float = !daNote.isSustainNote ? daNote.strumTime : daNote.parentST; + final timeThingy:Float = (startCrochet * lengthToGet + (timeToGet - Conductor.songPosition + ClientPrefs.ratingOffset)) / playbackRate * .001; + + animation.play('hold', true, false, 0); + animation.curAnim.frameRate = frameRate; + animation.curAnim.looped = true; + + shader = (ClientPrefs.enableColorShader ? rgbShader.shader : null); + + clipRect = new flixel.math.FlxRect(0, !PlayState.isPixelStage ? 0 : -210, frameWidth, frameHeight); + + if (daNote != null && daNote.rgbShader != null) + { + var tempShader:RGBPalette = null; + if((daNote == null || daNote.noteSplashData.useRGBShader) && (PlayState.SONG == null || !PlayState.SONG.disableNoteRGB)) + { + // If Note RGB is enabled: + if(daNote != null && !daNote.noteSplashData.useGlobalShader) + { + if(daNote.noteSplashData.r != -1) daNote.rgbShader.r = daNote.noteSplashData.r; + if(daNote.noteSplashData.g != -1) daNote.rgbShader.g = daNote.noteSplashData.g; + if(daNote.noteSplashData.b != -1) daNote.rgbShader.b = daNote.noteSplashData.b; + tempShader = daNote.rgbShader.parent; + } + else tempShader = Note.globalRgbShaders[daNote.noteData]; + } + rgbShader.copyValues(tempShader); + } + + strumNote = strum; + + if (timer != null) + timer.cancel(); + + offset.set(PlayState.isPixelStage ? 112.5 : 106.25, 100); + + timer = new FlxTimer().start(timeThingy, (idk:FlxTimer) -> { + if (daNote.isSustainEnd && daNote.mustPress && !daNote.noteSplashData.disabled && ClientPrefs.noteSplashes) { + alpha = 1; + animation.play('end', true, false, 0); + animation.curAnim.looped = false; + animation.curAnim.frameRate = 24; + clipRect = null; + animation.finishCallback = (idkEither:Dynamic) -> { + kill(); + } + return; + } + kill(); + }); + + } + + public static function getSplashSkinPostfix() + { + var skin:String = ''; + if(ClientPrefs.splashType != 'Default') + skin = '-' + ClientPrefs.splashType.trim().toLowerCase().replace(' ', '_'); + return skin; + } + +} \ No newline at end of file diff --git a/source/options/NoteOffsetState.hx b/source/options/NoteOffsetState.hx index 421fb74b12d..743f95ee8b1 100644 --- a/source/options/NoteOffsetState.hx +++ b/source/options/NoteOffsetState.hx @@ -100,7 +100,7 @@ class NoteOffsetState extends MusicBeatState coolText.screenCenter(); coolText.x = FlxG.width * 0.35; - rating = new FlxSprite().loadGraphic(Paths.image('sick')); + rating = new FlxSprite().loadGraphic(Paths.image('ratings/default/sick')); rating.cameras = [camHUD]; rating.setGraphicSize(Std.int(rating.width * 0.7)); rating.updateHitbox(); @@ -121,7 +121,7 @@ class NoteOffsetState extends MusicBeatState var daLoop:Int = 0; for (i in seperatedScore) { - var numScore:FlxSprite = new FlxSprite(43 * daLoop).loadGraphic(Paths.image('num' + i)); + var numScore:FlxSprite = new FlxSprite(43 * daLoop).loadGraphic(Paths.image('ratings/default/num' + i)); numScore.cameras = [camHUD]; numScore.setGraphicSize(Std.int(numScore.width * 0.5)); numScore.updateHitbox();