mirror of
https://github.com/ninjamuffin99/Funkin.git
synced 2024-11-15 11:22:55 +00:00
Merge pull request #591 from FunkinCrew/rank-fixes
Freeplay rank fixes + freeplay rank cutscene fixes
This commit is contained in:
commit
0346c3767e
2
assets
2
assets
|
@ -1 +1 @@
|
|||
Subproject commit 3bfa4e3da87713ea651f60d4f898c283e5d86093
|
||||
Subproject commit d9ea5ebe5e4db8584a8b1e1e16820b4d1527794c
|
|
@ -359,7 +359,7 @@ class FunkinSound extends FlxSound implements ICloneable<FunkinSound>
|
|||
|
||||
if (shouldLoadPartial)
|
||||
{
|
||||
var music = FunkinSound.loadPartial(pathToUse, params.partialParams?.start ?? 0, params.partialParams?.end ?? 1, params?.startingVolume ?? 1.0,
|
||||
var music = FunkinSound.loadPartial(pathToUse, params.partialParams?.start ?? 0.0, params.partialParams?.end ?? 1.0, params?.startingVolume ?? 1.0,
|
||||
params.loop ?? true, false, false, params.onComplete);
|
||||
|
||||
if (music != null)
|
||||
|
|
|
@ -61,6 +61,7 @@ class ResultState extends MusicBeatSubState
|
|||
var gfGood:Null<FlxSprite> = null;
|
||||
var bfShit:Null<FlxAtlasSprite> = null;
|
||||
|
||||
var rankBg:FunkinSprite;
|
||||
final cameraBG:FunkinCamera;
|
||||
final cameraScroll:FunkinCamera;
|
||||
final cameraEverything:FunkinCamera;
|
||||
|
@ -105,6 +106,8 @@ class ResultState extends MusicBeatSubState
|
|||
highscoreNew = new FlxSprite(310, 570);
|
||||
|
||||
score = new ResultScore(35, 305, 10, params.scoreData.score);
|
||||
|
||||
rankBg = new FunkinSprite(0, 0);
|
||||
}
|
||||
|
||||
override function create():Void
|
||||
|
@ -382,6 +385,12 @@ class ResultState extends MusicBeatSubState
|
|||
}
|
||||
});
|
||||
|
||||
rankBg.makeSolidColor(FlxG.width, FlxG.height, 0xFF000000);
|
||||
rankBg.zIndex = 99999;
|
||||
add(rankBg);
|
||||
|
||||
rankBg.alpha = 0;
|
||||
|
||||
refresh();
|
||||
|
||||
super.create();
|
||||
|
@ -691,18 +700,48 @@ class ResultState extends MusicBeatSubState
|
|||
}
|
||||
else
|
||||
{
|
||||
openSubState(new funkin.ui.transition.StickerSubState(null, (sticker) -> FreeplayState.build(
|
||||
{
|
||||
var rigged:Bool = true;
|
||||
if (rank > Scoring.calculateRank(params?.prevScoreData)) // if (rigged)
|
||||
{
|
||||
trace('THE RANK IS Higher.....');
|
||||
|
||||
FlxTween.tween(rankBg, {alpha: 1}, 0.5,
|
||||
{
|
||||
fromResults:
|
||||
{
|
||||
oldRank: Scoring.calculateRank(params?.prevScoreData),
|
||||
newRank: rank,
|
||||
songId: params.songId,
|
||||
difficultyId: params.difficultyId
|
||||
}
|
||||
}
|
||||
}, sticker)));
|
||||
ease: FlxEase.expoOut,
|
||||
onComplete: function(_) {
|
||||
FlxG.switchState(FreeplayState.build(
|
||||
{
|
||||
{
|
||||
fromResults:
|
||||
{
|
||||
oldRank: Scoring.calculateRank(params?.prevScoreData),
|
||||
newRank: rank,
|
||||
songId: params.songId,
|
||||
difficultyId: params.difficultyId,
|
||||
playRankAnim: true
|
||||
}
|
||||
}
|
||||
}));
|
||||
}
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
trace('rank is lower...... and/or equal');
|
||||
openSubState(new funkin.ui.transition.StickerSubState(null, (sticker) -> FreeplayState.build(
|
||||
{
|
||||
{
|
||||
fromResults:
|
||||
{
|
||||
oldRank: null,
|
||||
playRankAnim: false,
|
||||
newRank: rank,
|
||||
songId: params.songId,
|
||||
difficultyId: params.difficultyId
|
||||
}
|
||||
}
|
||||
}, sticker)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -349,7 +349,7 @@ class Scoring
|
|||
|
||||
public static function calculateRank(scoreData:Null<SaveScoreData>):Null<ScoringRank>
|
||||
{
|
||||
if (scoreData == null) return null;
|
||||
if (scoreData?.tallies.totalNotes == 0 || scoreData == null) return null;
|
||||
|
||||
// we can return null here, meaning that the player hasn't actually played and finished the song (thus has no data)
|
||||
if (scoreData.tallies.totalNotes == 0) return null;
|
||||
|
@ -397,6 +397,62 @@ enum abstract ScoringRank(String)
|
|||
var GOOD;
|
||||
var SHIT;
|
||||
|
||||
@:op(A > B) static function compare(a:Null<ScoringRank>, b:Null<ScoringRank>):Bool
|
||||
{
|
||||
if (a != null && b == null) return true;
|
||||
if (a == null || b == null) return false;
|
||||
|
||||
var temp1:Int = 0;
|
||||
var temp2:Int = 0;
|
||||
|
||||
// temp 1
|
||||
switch (a)
|
||||
{
|
||||
case PERFECT_GOLD:
|
||||
temp1 = 5;
|
||||
case PERFECT:
|
||||
temp1 = 4;
|
||||
case EXCELLENT:
|
||||
temp1 = 3;
|
||||
case GREAT:
|
||||
temp1 = 2;
|
||||
case GOOD:
|
||||
temp1 = 1;
|
||||
case SHIT:
|
||||
temp1 = 0;
|
||||
default:
|
||||
temp1 = -1;
|
||||
}
|
||||
|
||||
// temp 2
|
||||
switch (b)
|
||||
{
|
||||
case PERFECT_GOLD:
|
||||
temp2 = 5;
|
||||
case PERFECT:
|
||||
temp2 = 4;
|
||||
case EXCELLENT:
|
||||
temp2 = 3;
|
||||
case GREAT:
|
||||
temp2 = 2;
|
||||
case GOOD:
|
||||
temp2 = 1;
|
||||
case SHIT:
|
||||
temp2 = 0;
|
||||
default:
|
||||
temp2 = -1;
|
||||
}
|
||||
|
||||
if (temp1 > temp2)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Delay in seconds
|
||||
*/
|
||||
|
|
|
@ -4,6 +4,7 @@ import flixel.text.FlxText;
|
|||
import flixel.util.FlxColor;
|
||||
import funkin.audio.FunkinSound;
|
||||
import flixel.FlxSprite;
|
||||
import funkin.ui.mainmenu.MainMenuState;
|
||||
import flixel.group.FlxSpriteGroup;
|
||||
|
||||
/**
|
||||
|
@ -199,7 +200,7 @@ class CreditsState extends MusicBeatState
|
|||
|
||||
function exit():Void
|
||||
{
|
||||
FlxG.switchState(funkin.ui.mainmenu.MainMenuState.new);
|
||||
FlxG.switchState(() -> new MainMenuState());
|
||||
}
|
||||
|
||||
public override function destroy():Void
|
||||
|
|
|
@ -131,7 +131,7 @@ class AlbumRoll extends FlxSpriteGroup
|
|||
|
||||
if (exitMovers == null) return;
|
||||
|
||||
exitMovers.set([newAlbumArt],
|
||||
exitMovers.set([newAlbumArt, difficultyStars],
|
||||
{
|
||||
x: FlxG.width,
|
||||
speed: 0.4,
|
||||
|
|
|
@ -6,6 +6,7 @@ import flixel.addons.ui.FlxInputText;
|
|||
import flixel.FlxCamera;
|
||||
import flixel.FlxSprite;
|
||||
import flixel.group.FlxGroup;
|
||||
import funkin.graphics.shaders.GaussianBlurShader;
|
||||
import flixel.group.FlxGroup.FlxTypedGroup;
|
||||
import flixel.group.FlxSpriteGroup.FlxTypedSpriteGroup;
|
||||
import flixel.input.touch.FlxTouch;
|
||||
|
@ -45,6 +46,7 @@ import funkin.util.MathUtil;
|
|||
import lime.utils.Assets;
|
||||
import flixel.tweens.misc.ShakeTween;
|
||||
import funkin.effects.IntervalShake;
|
||||
import funkin.ui.freeplay.SongMenuItem.FreeplayRank;
|
||||
|
||||
/**
|
||||
* Parameters used to initialize the FreeplayState.
|
||||
|
@ -66,6 +68,11 @@ typedef FromResultsParams =
|
|||
*/
|
||||
var ?oldRank:ScoringRank;
|
||||
|
||||
/**
|
||||
* Whether or not to play the rank animation on returning to freeplay.
|
||||
*/
|
||||
var playRankAnim:Bool;
|
||||
|
||||
/**
|
||||
* The new rank the song has.
|
||||
*/
|
||||
|
@ -194,12 +201,19 @@ class FreeplayState extends MusicBeatSubState
|
|||
|
||||
var fromResultsParams:Null<FromResultsParams> = null;
|
||||
|
||||
var prepForNewRank:Bool = false;
|
||||
|
||||
public function new(?params:FreeplayStateParams, ?stickers:StickerSubState)
|
||||
{
|
||||
currentCharacter = params?.character ?? Constants.DEFAULT_CHARACTER;
|
||||
|
||||
fromResultsParams = params?.fromResults;
|
||||
|
||||
if (fromResultsParams?.playRankAnim == true)
|
||||
{
|
||||
prepForNewRank = true;
|
||||
}
|
||||
|
||||
if (stickers != null)
|
||||
{
|
||||
stickerSubState = stickers;
|
||||
|
@ -236,11 +250,14 @@ class FreeplayState extends MusicBeatSubState
|
|||
isDebug = true;
|
||||
#end
|
||||
|
||||
FunkinSound.playMusic('freakyMenu',
|
||||
{
|
||||
overrideExisting: true,
|
||||
restartTrack: false
|
||||
});
|
||||
if (prepForNewRank == false)
|
||||
{
|
||||
FunkinSound.playMusic('freakyMenu',
|
||||
{
|
||||
overrideExisting: true,
|
||||
restartTrack: false
|
||||
});
|
||||
}
|
||||
|
||||
// Add a null entry that represents the RANDOM option
|
||||
songs.push(null);
|
||||
|
@ -638,7 +655,7 @@ class FreeplayState extends MusicBeatSubState
|
|||
cardGlow.visible = true;
|
||||
FlxTween.tween(cardGlow, {alpha: 0, "scale.x": 1.2, "scale.y": 1.2}, 0.45, {ease: FlxEase.sineOut});
|
||||
|
||||
if (fromResultsParams != null)
|
||||
if (prepForNewRank == true)
|
||||
{
|
||||
rankAnimStart(fromResultsParams);
|
||||
}
|
||||
|
@ -668,6 +685,11 @@ class FreeplayState extends MusicBeatSubState
|
|||
FlxG.cameras.add(rankCamera, false);
|
||||
rankBg.cameras = [rankCamera];
|
||||
rankBg.alpha = 0;
|
||||
|
||||
if (prepForNewRank == true)
|
||||
{
|
||||
rankCamera.fade(0xFF000000, 0, false, null, true);
|
||||
}
|
||||
}
|
||||
|
||||
var currentFilter:SongFilter = null;
|
||||
|
@ -818,9 +840,13 @@ class FreeplayState extends MusicBeatSubState
|
|||
return songsToFilter;
|
||||
}
|
||||
|
||||
var sparks:FlxSprite;
|
||||
var sparksADD:FlxSprite;
|
||||
|
||||
function rankAnimStart(fromResults:Null<FromResultsParams>):Void
|
||||
{
|
||||
busy = true;
|
||||
// grpCapsules.members[curSelected].forcePosition();
|
||||
|
||||
if (fromResults != null)
|
||||
{
|
||||
|
@ -836,11 +862,60 @@ class FreeplayState extends MusicBeatSubState
|
|||
if (FlxG.sound.music != null) FlxG.sound.music.volume = 0;
|
||||
rankBg.alpha = 1;
|
||||
|
||||
originalPos.x = grpCapsules.members[curSelected].x;
|
||||
originalPos.y = grpCapsules.members[curSelected].y;
|
||||
if (fromResults?.oldRank != null)
|
||||
{
|
||||
grpCapsules.members[curSelected].fakeRanking.rank = fromResults.oldRank;
|
||||
grpCapsules.members[curSelected].fakeBlurredRanking.rank = fromResults.oldRank;
|
||||
|
||||
grpCapsules.members[curSelected].ranking.alpha = 0;
|
||||
grpCapsules.members[curSelected].blurredRanking.alpha = 0;
|
||||
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;
|
||||
|
||||
// originalPos.x = grpCapsules.members[curSelected].x;
|
||||
// originalPos.y = grpCapsules.members[curSelected].y;
|
||||
|
||||
originalPos.x = 320.488;
|
||||
originalPos.y = 235.6;
|
||||
trace(originalPos);
|
||||
|
||||
grpCapsules.members[curSelected].ranking.visible = false;
|
||||
grpCapsules.members[curSelected].blurredRanking.visible = false;
|
||||
|
||||
rankCamera.zoom = 1.85;
|
||||
FlxTween.tween(rankCamera, {"zoom": 1.8}, 0.6, {ease: FlxEase.sineIn});
|
||||
|
@ -849,20 +924,21 @@ class FreeplayState extends MusicBeatSubState
|
|||
FlxTween.tween(funnyCam, {"zoom": 1.1}, 0.6, {ease: FlxEase.sineIn});
|
||||
|
||||
grpCapsules.members[curSelected].cameras = [rankCamera];
|
||||
grpCapsules.members[curSelected].targetPos.set((FlxG.width / 2) - (grpCapsules.members[curSelected].width / 2),
|
||||
// grpCapsules.members[curSelected].targetPos.set((FlxG.width / 2) - (grpCapsules.members[curSelected].width / 2),
|
||||
// (FlxG.height / 2) - (grpCapsules.members[curSelected].height / 2));
|
||||
|
||||
grpCapsules.members[curSelected].setPosition((FlxG.width / 2) - (grpCapsules.members[curSelected].width / 2),
|
||||
(FlxG.height / 2) - (grpCapsules.members[curSelected].height / 2));
|
||||
|
||||
new FlxTimer().start(0.5, _ -> {
|
||||
grpCapsules.members[curSelected].doLerp = false;
|
||||
rankDisplayNew(fromResults);
|
||||
});
|
||||
}
|
||||
|
||||
function rankDisplayNew(fromResults:Null<FromResultsParams>):Void
|
||||
{
|
||||
grpCapsules.members[curSelected].ranking.alpha = 1;
|
||||
grpCapsules.members[curSelected].blurredRanking.alpha = 1;
|
||||
|
||||
grpCapsules.members[curSelected].ranking.visible = true;
|
||||
grpCapsules.members[curSelected].blurredRanking.visible = true;
|
||||
grpCapsules.members[curSelected].ranking.scale.set(20, 20);
|
||||
grpCapsules.members[curSelected].blurredRanking.scale.set(20, 20);
|
||||
|
||||
|
@ -875,7 +951,23 @@ class FreeplayState extends MusicBeatSubState
|
|||
FlxTween.tween(grpCapsules.members[curSelected].blurredRanking, {"scale.x": 1, "scale.y": 1}, 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)
|
||||
{
|
||||
case SHIT:
|
||||
|
@ -1031,7 +1123,7 @@ class FreeplayState extends MusicBeatSubState
|
|||
|
||||
new FlxTimer().start(2, _ -> {
|
||||
// dj.fistPump();
|
||||
FlxG.sound.music.fadeIn(4.0, 0.0, 1.0);
|
||||
prepForNewRank = false;
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -1066,39 +1158,60 @@ class FreeplayState extends MusicBeatSubState
|
|||
rankAnimStart(fromResultsParams);
|
||||
}
|
||||
|
||||
if (FlxG.keys.justPressed.H)
|
||||
{
|
||||
rankDisplayNew(fromResultsParams);
|
||||
}
|
||||
// if (FlxG.keys.justPressed.H)
|
||||
// {
|
||||
// rankDisplayNew(fromResultsParams);
|
||||
// }
|
||||
|
||||
// if (FlxG.keys.justPressed.G)
|
||||
// {
|
||||
// rankAnimSlam(fromResultsParams);
|
||||
// }
|
||||
|
||||
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)
|
||||
{
|
||||
confirmTextGlow.y -= 1;
|
||||
trace(confirmTextGlow.x, confirmTextGlow.y);
|
||||
sparksADD.y -= 2;
|
||||
trace(sparksADD.x, sparksADD.y);
|
||||
}
|
||||
if (FlxG.keys.justPressed.J)
|
||||
{
|
||||
confirmTextGlow.x -= 1;
|
||||
trace(confirmTextGlow.x, confirmTextGlow.y);
|
||||
sparksADD.x -= 2;
|
||||
trace(sparksADD.x, sparksADD.y);
|
||||
}
|
||||
if (FlxG.keys.justPressed.L)
|
||||
{
|
||||
confirmTextGlow.x += 1;
|
||||
trace(confirmTextGlow.x, confirmTextGlow.y);
|
||||
sparksADD.x += 2;
|
||||
trace(sparksADD.x, sparksADD.y);
|
||||
}
|
||||
if (FlxG.keys.justPressed.K)
|
||||
{
|
||||
confirmTextGlow.y += 1;
|
||||
trace(confirmTextGlow.x, confirmTextGlow.y);
|
||||
sparksADD.y += 2;
|
||||
trace(sparksADD.x, sparksADD.y);
|
||||
}
|
||||
#end
|
||||
|
||||
if (FlxG.keys.justPressed.F)
|
||||
if (FlxG.keys.justPressed.F && !busy)
|
||||
{
|
||||
var targetSong = grpCapsules.members[curSelected]?.songData;
|
||||
if (targetSong != null)
|
||||
|
@ -1107,24 +1220,45 @@ class FreeplayState extends MusicBeatSubState
|
|||
var isFav = targetSong.toggleFavorite();
|
||||
if (isFav)
|
||||
{
|
||||
FlxTween.tween(grpCapsules.members[realShit], {angle: 360}, 0.4,
|
||||
grpCapsules.members[realShit].favIcon.visible = true;
|
||||
grpCapsules.members[realShit].favIcon.animation.play('fav');
|
||||
FunkinSound.playOnce(Paths.sound('fav'), 1);
|
||||
busy = true;
|
||||
|
||||
grpCapsules.members[realShit].doLerp = false;
|
||||
FlxTween.tween(grpCapsules.members[realShit], {y: grpCapsules.members[realShit].y - 5}, 0.1, {ease: FlxEase.expoOut});
|
||||
|
||||
FlxTween.tween(grpCapsules.members[realShit], {y: grpCapsules.members[realShit].y + 5}, 0.1,
|
||||
{
|
||||
ease: FlxEase.elasticOut,
|
||||
onComplete: _ -> {
|
||||
grpCapsules.members[realShit].favIcon.visible = true;
|
||||
grpCapsules.members[realShit].favIcon.animation.play('fav');
|
||||
ease: FlxEase.expoIn,
|
||||
startDelay: 0.1,
|
||||
onComplete: function(_) {
|
||||
grpCapsules.members[realShit].doLerp = true;
|
||||
busy = false;
|
||||
}
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
grpCapsules.members[realShit].favIcon.animation.play('fav', false, true);
|
||||
new FlxTimer().start((1 / 24) * 14, _ -> {
|
||||
grpCapsules.members[realShit].favIcon.animation.play('fav', true, true, 9);
|
||||
FunkinSound.playOnce(Paths.sound('unfav'), 1);
|
||||
new FlxTimer().start(0.2, _ -> {
|
||||
grpCapsules.members[realShit].favIcon.visible = false;
|
||||
});
|
||||
new FlxTimer().start((1 / 24) * 24, _ -> {
|
||||
FlxTween.tween(grpCapsules.members[realShit], {angle: 0}, 0.4, {ease: FlxEase.elasticOut});
|
||||
});
|
||||
|
||||
busy = true;
|
||||
grpCapsules.members[realShit].doLerp = false;
|
||||
FlxTween.tween(grpCapsules.members[realShit], {y: grpCapsules.members[realShit].y + 5}, 0.1, {ease: FlxEase.expoOut});
|
||||
|
||||
FlxTween.tween(grpCapsules.members[realShit], {y: grpCapsules.members[realShit].y - 5}, 0.1,
|
||||
{
|
||||
ease: FlxEase.expoIn,
|
||||
startDelay: 0.1,
|
||||
onComplete: function(_) {
|
||||
grpCapsules.members[realShit].doLerp = true;
|
||||
busy = false;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1328,6 +1462,24 @@ class FreeplayState extends MusicBeatSubState
|
|||
|
||||
var longestTimer:Float = 0;
|
||||
|
||||
// FlxTween.color(bgDad, 0.33, 0xFFFFFFFF, 0xFF555555, {ease: FlxEase.quadOut});
|
||||
FlxTween.color(pinkBack, 0.25, 0xFFFFD863, 0xFFFFD0D5, {ease: FlxEase.quadOut});
|
||||
|
||||
cardGlow.visible = true;
|
||||
cardGlow.alpha = 1;
|
||||
cardGlow.scale.set(1, 1);
|
||||
FlxTween.tween(cardGlow, {alpha: 0, "scale.x": 1.2, "scale.y": 1.2}, 0.25, {ease: FlxEase.sineOut});
|
||||
|
||||
orangeBackShit.visible = false;
|
||||
alsoOrangeLOL.visible = false;
|
||||
|
||||
moreWays.visible = false;
|
||||
funnyScroll.visible = false;
|
||||
txtNuts.visible = false;
|
||||
funnyScroll2.visible = false;
|
||||
moreWays2.visible = false;
|
||||
funnyScroll3.visible = false;
|
||||
|
||||
for (grpSpr in exitMovers.keys())
|
||||
{
|
||||
var moveData:MoveData = exitMovers.get(grpSpr);
|
||||
|
@ -1372,6 +1524,7 @@ class FreeplayState extends MusicBeatSubState
|
|||
overrideExisting: true,
|
||||
restartTrack: false
|
||||
});
|
||||
FlxG.sound.music.fadeIn(4.0, 0.0, 1.0);
|
||||
close();
|
||||
}
|
||||
else
|
||||
|
@ -1558,6 +1711,7 @@ class FreeplayState extends MusicBeatSubState
|
|||
FunkinSound.playOnce(Paths.sound('confirmMenu'));
|
||||
dj.confirm();
|
||||
|
||||
grpCapsules.members[curSelected].forcePosition();
|
||||
grpCapsules.members[curSelected].songText.flickerText();
|
||||
|
||||
// FlxTween.color(bgDad, 0.33, 0xFFFFFFFF, 0xFF555555, {ease: FlxEase.quadOut});
|
||||
|
@ -1686,7 +1840,7 @@ class FreeplayState extends MusicBeatSubState
|
|||
{
|
||||
startingVolume: 0.0,
|
||||
overrideExisting: true,
|
||||
restartTrack: true
|
||||
restartTrack: false
|
||||
});
|
||||
FlxG.sound.music.fadeIn(2, 0, 0.8);
|
||||
}
|
||||
|
@ -1721,7 +1875,10 @@ class FreeplayState extends MusicBeatSubState
|
|||
*/
|
||||
public static function build(?params:FreeplayStateParams, ?stickers:StickerSubState):MusicBeatState
|
||||
{
|
||||
var result = new MainMenuState();
|
||||
var result:MainMenuState;
|
||||
if (params?.fromResults.playRankAnim) result = new MainMenuState(true);
|
||||
else
|
||||
result = new MainMenuState(false);
|
||||
|
||||
result.openSubState(new FreeplayState(params, stickers));
|
||||
result.persistentUpdate = false;
|
||||
|
|
|
@ -39,9 +39,13 @@ class SongMenuItem extends FlxSpriteGroup
|
|||
|
||||
public var songText:CapsuleText;
|
||||
public var favIcon:FlxSprite;
|
||||
|
||||
public var ranking:FreeplayRank;
|
||||
public var blurredRanking:FreeplayRank;
|
||||
|
||||
public var fakeRanking:FreeplayRank;
|
||||
public var fakeBlurredRanking:FreeplayRank;
|
||||
|
||||
var ranks:Array<String> = ["fail", "average", "great", "excellent", "perfect", "perfectsick"];
|
||||
|
||||
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!
|
||||
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);
|
||||
add(ranking);
|
||||
|
||||
blurredRanking = new FreeplayRank(ranking.x, ranking.y);
|
||||
blurredRanking.shader = new GaussianBlurShader(1);
|
||||
add(blurredRanking);
|
||||
|
||||
// ranking.loadGraphic(Paths.image('freeplay/ranks/' + rank));
|
||||
// ranking.scale.x = ranking.scale.y = realScaled;
|
||||
// ranking.alpha = 0.75;
|
||||
|
@ -369,7 +384,7 @@ class SongMenuItem extends FlxSpriteGroup
|
|||
switch (i)
|
||||
{
|
||||
case 0:
|
||||
if (newRating > 10)
|
||||
if (newRating < 10)
|
||||
{
|
||||
bigNumbers[i].digit = 0;
|
||||
}
|
||||
|
@ -675,7 +690,7 @@ class FreeplayRank extends FlxSprite
|
|||
{
|
||||
rank = val;
|
||||
|
||||
if (rank == null)
|
||||
if (rank == null || val == null)
|
||||
{
|
||||
this.visible = false;
|
||||
}
|
||||
|
@ -685,6 +700,8 @@ class FreeplayRank extends FlxSprite
|
|||
|
||||
animation.play(val.getFreeplayRankIconAsset(), true, false);
|
||||
|
||||
trace(val.getFreeplayRankIconAsset());
|
||||
|
||||
centerOffsets(false);
|
||||
|
||||
switch (val)
|
||||
|
@ -705,6 +722,7 @@ class FreeplayRank extends FlxSprite
|
|||
// offset.y += 5;
|
||||
default:
|
||||
centerOffsets(false);
|
||||
this.visible = false;
|
||||
}
|
||||
updateHitbox();
|
||||
}
|
||||
|
|
|
@ -42,6 +42,15 @@ class MainMenuState extends MusicBeatState
|
|||
var magenta:FlxSprite;
|
||||
var camFollow:FlxObject;
|
||||
|
||||
var overrideMusic:Bool = false;
|
||||
|
||||
public function new(?_overrideMusic:Bool = false)
|
||||
{
|
||||
super();
|
||||
overrideMusic = _overrideMusic;
|
||||
|
||||
}
|
||||
|
||||
override function create():Void
|
||||
{
|
||||
#if discord_rpc
|
||||
|
@ -54,7 +63,7 @@ class MainMenuState extends MusicBeatState
|
|||
transIn = FlxTransitionableState.defaultTransIn;
|
||||
transOut = FlxTransitionableState.defaultTransOut;
|
||||
|
||||
playMenuMusic();
|
||||
if(overrideMusic == false) playMenuMusic();
|
||||
|
||||
// We want the state to always be able to begin with being able to accept inputs and show the anims of the menu items.
|
||||
persistentUpdate = true;
|
||||
|
@ -163,7 +172,7 @@ class MainMenuState extends MusicBeatState
|
|||
|
||||
function playMenuMusic():Void
|
||||
{
|
||||
FunkinSound.playMusic('freakyMenu',
|
||||
FunkinSound.playMusic('freakyMenu',
|
||||
{
|
||||
overrideExisting: true,
|
||||
restartTrack: false
|
||||
|
|
Loading…
Reference in a new issue