sparks nd more fixes.. i think

This commit is contained in:
FabsTheFabs 2024-06-02 00:25:52 +01:00
parent 5d0db60810
commit 63bd6f2ace
3 changed files with 164 additions and 54 deletions

View file

@ -665,8 +665,7 @@ class ResultState extends MusicBeatSubState
else else
{ {
var rigged:Bool = true; var rigged:Bool = true;
if (rank > Scoring.calculateRank(params?.prevScoreData)) if (rank > Scoring.calculateRank(params?.prevScoreData)) // if (rigged)
//if (rigged)
{ {
trace('THE RANK IS Higher.....'); trace('THE RANK IS Higher.....');
@ -682,7 +681,8 @@ class ResultState extends MusicBeatSubState
oldRank: Scoring.calculateRank(params?.prevScoreData), oldRank: Scoring.calculateRank(params?.prevScoreData),
newRank: rank, newRank: rank,
songId: params.songId, songId: params.songId,
difficultyId: params.difficultyId difficultyId: params.difficultyId,
playRankAnim: true
} }
} }
})); }));
@ -698,6 +698,7 @@ class ResultState extends MusicBeatSubState
fromResults: fromResults:
{ {
oldRank: null, oldRank: null,
playRankAnim: false,
newRank: rank, newRank: rank,
songId: params.songId, songId: params.songId,
difficultyId: params.difficultyId difficultyId: params.difficultyId

View file

@ -6,6 +6,7 @@ import flixel.addons.ui.FlxInputText;
import flixel.FlxCamera; import flixel.FlxCamera;
import flixel.FlxSprite; import flixel.FlxSprite;
import flixel.group.FlxGroup; import flixel.group.FlxGroup;
import funkin.graphics.shaders.GaussianBlurShader;
import flixel.group.FlxGroup.FlxTypedGroup; import flixel.group.FlxGroup.FlxTypedGroup;
import flixel.group.FlxSpriteGroup.FlxTypedSpriteGroup; import flixel.group.FlxSpriteGroup.FlxTypedSpriteGroup;
import flixel.input.touch.FlxTouch; import flixel.input.touch.FlxTouch;
@ -45,6 +46,7 @@ import funkin.util.MathUtil;
import lime.utils.Assets; import lime.utils.Assets;
import flixel.tweens.misc.ShakeTween; import flixel.tweens.misc.ShakeTween;
import funkin.effects.IntervalShake; import funkin.effects.IntervalShake;
import funkin.ui.freeplay.SongMenuItem.FreeplayRank;
/** /**
* Parameters used to initialize the FreeplayState. * Parameters used to initialize the FreeplayState.
@ -66,6 +68,11 @@ typedef FromResultsParams =
*/ */
var ?oldRank:ScoringRank; var ?oldRank:ScoringRank;
/**
* Whether or not to play the rank animation on returning to freeplay.
*/
var playRankAnim:Bool;
/** /**
* The new rank the song has. * The new rank the song has.
*/ */
@ -201,7 +208,8 @@ class FreeplayState extends MusicBeatSubState
fromResultsParams = params?.fromResults; fromResultsParams = params?.fromResults;
if(fromResultsParams?.oldRank != null){ if (fromResultsParams?.playRankAnim == true)
{
prepForNewRank = true; prepForNewRank = true;
} }
@ -837,6 +845,9 @@ class FreeplayState extends MusicBeatSubState
return songsToFilter; return songsToFilter;
} }
var sparks:FlxSprite;
var sparksADD:FlxSprite;
function rankAnimStart(fromResults:Null<FromResultsParams>):Void function rankAnimStart(fromResults:Null<FromResultsParams>):Void
{ {
busy = true; busy = true;
@ -848,6 +859,49 @@ class FreeplayState extends MusicBeatSubState
FlxG.sound.music.volume = 0; FlxG.sound.music.volume = 0;
rankBg.alpha = 1; rankBg.alpha = 1;
if (fromResults?.oldRank != null)
{
grpCapsules.members[curSelected].fakeRanking.rank = fromResults.oldRank;
grpCapsules.members[curSelected].fakeBlurredRanking.rank = fromResults.oldRank;
sparks = new FlxSprite(0, 0);
sparks.frames = Paths.getSparrowAtlas('freeplay/sparks');
sparks.animation.addByPrefix('sparks', 'sparks', 24, false);
sparks.visible = false;
sparks.blend = BlendMode.ADD;
sparks.setPosition(517, 134);
sparks.scale.set(0.5, 0.5);
add(sparks);
sparks.cameras = [rankCamera];
sparksADD = new FlxSprite(0, 0);
sparksADD.visible = false;
sparksADD.frames = Paths.getSparrowAtlas('freeplay/sparksadd');
sparksADD.animation.addByPrefix('sparks add', 'sparks add', 24, false);
sparksADD.setPosition(498, 116);
sparksADD.blend = BlendMode.ADD;
sparksADD.scale.set(0.5, 0.5);
add(sparksADD);
sparksADD.cameras = [rankCamera];
switch (fromResults.oldRank)
{
case SHIT:
sparksADD.color = 0xFF6044FF;
case GOOD:
sparksADD.color = 0xFFEF8764;
case GREAT:
sparksADD.color = 0xFFEAF6FF;
case EXCELLENT:
sparksADD.color = 0xFFFDCB42;
case PERFECT:
sparksADD.color = 0xFFFF58B4;
case PERFECT_GOLD:
sparksADD.color = 0xFFFFB619;
}
// sparksADD.color = sparks.color;
}
grpCapsules.members[curSelected].doLerp = false; grpCapsules.members[curSelected].doLerp = false;
// originalPos.x = grpCapsules.members[curSelected].x; // originalPos.x = grpCapsules.members[curSelected].x;
@ -857,8 +911,8 @@ class FreeplayState extends MusicBeatSubState
originalPos.y = 235.6; originalPos.y = 235.6;
trace(originalPos); trace(originalPos);
grpCapsules.members[curSelected].ranking.alpha = 0; grpCapsules.members[curSelected].ranking.visible = false;
grpCapsules.members[curSelected].blurredRanking.alpha = 0; grpCapsules.members[curSelected].blurredRanking.visible = false;
rankCamera.zoom = 1.85; rankCamera.zoom = 1.85;
FlxTween.tween(rankCamera, {"zoom": 1.8}, 0.6, {ease: FlxEase.sineIn}); FlxTween.tween(rankCamera, {"zoom": 1.8}, 0.6, {ease: FlxEase.sineIn});
@ -880,9 +934,8 @@ class FreeplayState extends MusicBeatSubState
function rankDisplayNew(fromResults:Null<FromResultsParams>):Void function rankDisplayNew(fromResults:Null<FromResultsParams>):Void
{ {
grpCapsules.members[curSelected].ranking.alpha = 1; grpCapsules.members[curSelected].ranking.visible = true;
grpCapsules.members[curSelected].blurredRanking.alpha = 1; grpCapsules.members[curSelected].blurredRanking.visible = true;
grpCapsules.members[curSelected].ranking.scale.set(20, 20); grpCapsules.members[curSelected].ranking.scale.set(20, 20);
grpCapsules.members[curSelected].blurredRanking.scale.set(20, 20); grpCapsules.members[curSelected].blurredRanking.scale.set(20, 20);
@ -895,7 +948,23 @@ class FreeplayState extends MusicBeatSubState
FlxTween.tween(grpCapsules.members[curSelected].blurredRanking, {"scale.x": 1, "scale.y": 1}, 0.1); FlxTween.tween(grpCapsules.members[curSelected].blurredRanking, {"scale.x": 1, "scale.y": 1}, 0.1);
new FlxTimer().start(0.1, _ -> { new FlxTimer().start(0.1, _ -> {
trace(grpCapsules.members[curSelected].ranking.rank); // trace(grpCapsules.members[curSelected].ranking.rank);
if (fromResults?.oldRank != null)
{
grpCapsules.members[curSelected].fakeRanking.visible = false;
grpCapsules.members[curSelected].fakeBlurredRanking.visible = false;
sparks.visible = true;
sparksADD.visible = true;
sparks.animation.play('sparks', true);
sparksADD.animation.play('sparks add', true);
sparks.animation.finishCallback = anim -> {
sparks.visible = false;
sparksADD.visible = false;
};
}
switch (fromResultsParams?.newRank) switch (fromResultsParams?.newRank)
{ {
case SHIT: case SHIT:
@ -1092,35 +1161,56 @@ class FreeplayState extends MusicBeatSubState
rankAnimStart(fromResultsParams); rankAnimStart(fromResultsParams);
} }
if (FlxG.keys.justPressed.H) // if (FlxG.keys.justPressed.H)
{ // {
rankDisplayNew(fromResultsParams); // rankDisplayNew(fromResultsParams);
} // }
// if (FlxG.keys.justPressed.G)
// {
// rankAnimSlam(fromResultsParams);
// }
if (FlxG.keys.justPressed.G) if (FlxG.keys.justPressed.G)
{ {
rankAnimSlam(fromResultsParams); sparks.y -= 2;
trace(sparks.x, sparks.y);
}
if (FlxG.keys.justPressed.V)
{
sparks.x -= 2;
trace(sparks.x, sparks.y);
}
if (FlxG.keys.justPressed.N)
{
sparks.x += 2;
trace(sparks.x, sparks.y);
}
if (FlxG.keys.justPressed.B)
{
sparks.y += 2;
trace(sparks.x, sparks.y);
} }
if (FlxG.keys.justPressed.I) if (FlxG.keys.justPressed.I)
{ {
confirmTextGlow.y -= 1; sparksADD.y -= 2;
trace(confirmTextGlow.x, confirmTextGlow.y); trace(sparksADD.x, sparksADD.y);
} }
if (FlxG.keys.justPressed.J) if (FlxG.keys.justPressed.J)
{ {
confirmTextGlow.x -= 1; sparksADD.x -= 2;
trace(confirmTextGlow.x, confirmTextGlow.y); trace(sparksADD.x, sparksADD.y);
} }
if (FlxG.keys.justPressed.L) if (FlxG.keys.justPressed.L)
{ {
confirmTextGlow.x += 1; sparksADD.x += 2;
trace(confirmTextGlow.x, confirmTextGlow.y); trace(sparksADD.x, sparksADD.y);
} }
if (FlxG.keys.justPressed.K) if (FlxG.keys.justPressed.K)
{ {
confirmTextGlow.y += 1; sparksADD.y += 2;
trace(confirmTextGlow.x, confirmTextGlow.y); trace(sparksADD.x, sparksADD.y);
} }
#end #end
@ -1758,7 +1848,8 @@ class FreeplayState extends MusicBeatSubState
} }
else else
{ {
if(prepForNewRank == false){ if (prepForNewRank == false)
{
var potentiallyErect:String = (currentDifficulty == "erect") || (currentDifficulty == "nightmare") ? "-erect" : ""; var potentiallyErect:String = (currentDifficulty == "erect") || (currentDifficulty == "nightmare") ? "-erect" : "";
// TODO: Stream the instrumental of the selected song? // TODO: Stream the instrumental of the selected song?
FunkinSound.playMusic(daSongCapsule.songData.songId, FunkinSound.playMusic(daSongCapsule.songData.songId,
@ -1791,9 +1882,12 @@ class FreeplayState extends MusicBeatSubState
public static function build(?params:FreeplayStateParams, ?stickers:StickerSubState):MusicBeatState public static function build(?params:FreeplayStateParams, ?stickers:StickerSubState):MusicBeatState
{ {
var result:MainMenuState; var result:MainMenuState;
if(params?.fromResults.oldRank != null){ if (params?.fromResults.playRankAnim == true)
{
result = new MainMenuState(true); result = new MainMenuState(true);
}else{ }
else
{
result = new MainMenuState(false); result = new MainMenuState(false);
} }

View file

@ -39,9 +39,13 @@ class SongMenuItem extends FlxSpriteGroup
public var songText:CapsuleText; public var songText:CapsuleText;
public var favIcon:FlxSprite; public var favIcon:FlxSprite;
public var ranking:FreeplayRank; public var ranking:FreeplayRank;
public var blurredRanking:FreeplayRank; public var blurredRanking:FreeplayRank;
public var fakeRanking:FreeplayRank;
public var fakeBlurredRanking:FreeplayRank;
var ranks:Array<String> = ["fail", "average", "great", "excellent", "perfect", "perfectsick"]; var ranks:Array<String> = ["fail", "average", "great", "excellent", "perfect", "perfectsick"];
public var targetPos:FlxPoint = new FlxPoint(); public var targetPos:FlxPoint = new FlxPoint();
@ -131,12 +135,23 @@ class SongMenuItem extends FlxSpriteGroup
// doesn't get added, simply is here to help with visibility of things for the pop in! // doesn't get added, simply is here to help with visibility of things for the pop in!
grpHide = new FlxGroup(); grpHide = new FlxGroup();
fakeRanking = new FreeplayRank(420, 41);
add(fakeRanking);
fakeBlurredRanking = new FreeplayRank(fakeRanking.x, fakeRanking.y);
fakeBlurredRanking.shader = new GaussianBlurShader(1);
add(fakeBlurredRanking);
fakeRanking.visible = false;
fakeBlurredRanking.visible = false;
ranking = new FreeplayRank(420, 41); ranking = new FreeplayRank(420, 41);
add(ranking); add(ranking);
blurredRanking = new FreeplayRank(ranking.x, ranking.y); blurredRanking = new FreeplayRank(ranking.x, ranking.y);
blurredRanking.shader = new GaussianBlurShader(1); blurredRanking.shader = new GaussianBlurShader(1);
add(blurredRanking); add(blurredRanking);
// ranking.loadGraphic(Paths.image('freeplay/ranks/' + rank)); // ranking.loadGraphic(Paths.image('freeplay/ranks/' + rank));
// ranking.scale.x = ranking.scale.y = realScaled; // ranking.scale.x = ranking.scale.y = realScaled;
// ranking.alpha = 0.75; // ranking.alpha = 0.75;