mirror of
https://github.com/ninjamuffin99/Funkin.git
synced 2025-12-02 01:00:21 +00:00
freeplay transition + wip card classes
This commit is contained in:
parent
e37330f288
commit
55dd1857c9
|
|
@ -41,6 +41,7 @@ class AlbumRoll extends FlxSpriteGroup
|
||||||
|
|
||||||
var difficultyStars:DifficultyStars;
|
var difficultyStars:DifficultyStars;
|
||||||
var _exitMovers:Null<FreeplayState.ExitMoverData>;
|
var _exitMovers:Null<FreeplayState.ExitMoverData>;
|
||||||
|
var _exitMoversCharSel:Null<FreeplayState.ExitMoverData>;
|
||||||
|
|
||||||
var albumData:Album;
|
var albumData:Album;
|
||||||
|
|
||||||
|
|
@ -128,7 +129,7 @@ class AlbumRoll extends FlxSpriteGroup
|
||||||
* Apply exit movers for the album roll.
|
* Apply exit movers for the album roll.
|
||||||
* @param exitMovers The exit movers to apply.
|
* @param exitMovers The exit movers to apply.
|
||||||
*/
|
*/
|
||||||
public function applyExitMovers(?exitMovers:FreeplayState.ExitMoverData):Void
|
public function applyExitMovers(?exitMovers:FreeplayState.ExitMoverData, ?exitMoversCharSel:FreeplayState.ExitMoverData):Void
|
||||||
{
|
{
|
||||||
if (exitMovers == null)
|
if (exitMovers == null)
|
||||||
{
|
{
|
||||||
|
|
@ -141,12 +142,30 @@ class AlbumRoll extends FlxSpriteGroup
|
||||||
|
|
||||||
if (exitMovers == null) return;
|
if (exitMovers == null) return;
|
||||||
|
|
||||||
|
if (exitMoversCharSel == null)
|
||||||
|
{
|
||||||
|
exitMoversCharSel = _exitMoversCharSel;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_exitMoversCharSel = exitMoversCharSel;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (exitMoversCharSel == null) return;
|
||||||
|
|
||||||
exitMovers.set([newAlbumArt, difficultyStars],
|
exitMovers.set([newAlbumArt, difficultyStars],
|
||||||
{
|
{
|
||||||
x: FlxG.width,
|
x: FlxG.width,
|
||||||
speed: 0.4,
|
speed: 0.4,
|
||||||
wait: 0
|
wait: 0
|
||||||
});
|
});
|
||||||
|
|
||||||
|
exitMoversCharSel.set([newAlbumArt, difficultyStars],
|
||||||
|
{
|
||||||
|
y: -175,
|
||||||
|
speed: 0.8,
|
||||||
|
wait: 0.1
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
var titleTimer:Null<FlxTimer> = null;
|
var titleTimer:Null<FlxTimer> = null;
|
||||||
|
|
@ -207,6 +226,13 @@ class AlbumRoll extends FlxSpriteGroup
|
||||||
speed: 0.4,
|
speed: 0.4,
|
||||||
wait: 0
|
wait: 0
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (_exitMoversCharSel != null) _exitMoversCharSel.set([albumTitle],
|
||||||
|
{
|
||||||
|
y: -190,
|
||||||
|
speed: 0.8,
|
||||||
|
wait: 0.1
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setDifficultyStars(?difficulty:Int):Void
|
public function setDifficultyStars(?difficulty:Int):Void
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,8 @@
|
||||||
package funkin.ui.freeplay;
|
package funkin.ui.freeplay;
|
||||||
|
|
||||||
|
import funkin.ui.freeplay.backcards.BackingCard;
|
||||||
|
import funkin.ui.freeplay.backcards.BoyfriendCard;
|
||||||
|
import funkin.ui.freeplay.backcards.PicoCard;
|
||||||
import flixel.addons.transition.FlxTransitionableState;
|
import flixel.addons.transition.FlxTransitionableState;
|
||||||
import flixel.addons.ui.FlxInputText;
|
import flixel.addons.ui.FlxInputText;
|
||||||
import flixel.FlxCamera;
|
import flixel.FlxCamera;
|
||||||
|
|
@ -30,7 +33,9 @@ import funkin.graphics.shaders.AngleMask;
|
||||||
import funkin.graphics.shaders.GaussianBlurShader;
|
import funkin.graphics.shaders.GaussianBlurShader;
|
||||||
import funkin.graphics.shaders.HSVShader;
|
import funkin.graphics.shaders.HSVShader;
|
||||||
import funkin.graphics.shaders.PureColor;
|
import funkin.graphics.shaders.PureColor;
|
||||||
|
import funkin.graphics.shaders.BlueFade;
|
||||||
import funkin.graphics.shaders.StrokeShader;
|
import funkin.graphics.shaders.StrokeShader;
|
||||||
|
import openfl.filters.ShaderFilter;
|
||||||
import funkin.input.Controls;
|
import funkin.input.Controls;
|
||||||
import funkin.play.PlayStatePlaylist;
|
import funkin.play.PlayStatePlaylist;
|
||||||
import funkin.play.scoring.Scoring;
|
import funkin.play.scoring.Scoring;
|
||||||
|
|
@ -176,6 +181,8 @@ class FreeplayState extends MusicBeatSubState
|
||||||
var letterSort:LetterSort;
|
var letterSort:LetterSort;
|
||||||
var exitMovers:ExitMoverData = new Map();
|
var exitMovers:ExitMoverData = new Map();
|
||||||
|
|
||||||
|
var exitMoversCharSel:ExitMoverData = new Map();
|
||||||
|
|
||||||
var stickerSubState:Null<StickerSubState> = null;
|
var stickerSubState:Null<StickerSubState> = null;
|
||||||
|
|
||||||
public static var rememberedDifficulty:Null<String> = Constants.DEFAULT_DIFFICULTY;
|
public static var rememberedDifficulty:Null<String> = Constants.DEFAULT_DIFFICULTY;
|
||||||
|
|
@ -186,23 +193,9 @@ class FreeplayState extends MusicBeatSubState
|
||||||
var rankBg:FunkinSprite;
|
var rankBg:FunkinSprite;
|
||||||
var rankVignette:FlxSprite;
|
var rankVignette:FlxSprite;
|
||||||
|
|
||||||
var backingTextYeah:FlxAtlasSprite;
|
var backingCard:Null<BackingCard> = null;
|
||||||
var orangeBackShit:FunkinSprite;
|
|
||||||
var alsoOrangeLOL:FunkinSprite;
|
|
||||||
var pinkBack:FunkinSprite;
|
|
||||||
var confirmGlow:FlxSprite;
|
|
||||||
var confirmGlow2:FlxSprite;
|
|
||||||
var confirmTextGlow:FlxSprite;
|
|
||||||
|
|
||||||
var moreWays:BGScrollingText;
|
public var bgDad:FlxSprite;
|
||||||
var funnyScroll:BGScrollingText;
|
|
||||||
var txtNuts:BGScrollingText;
|
|
||||||
var funnyScroll2:BGScrollingText;
|
|
||||||
var moreWays2:BGScrollingText;
|
|
||||||
var funnyScroll3:BGScrollingText;
|
|
||||||
|
|
||||||
var bgDad:FlxSprite;
|
|
||||||
var cardGlow:FlxSprite;
|
|
||||||
|
|
||||||
var fromResultsParams:Null<FromResultsParams> = null;
|
var fromResultsParams:Null<FromResultsParams> = null;
|
||||||
|
|
||||||
|
|
@ -232,49 +225,38 @@ class FreeplayState extends MusicBeatSubState
|
||||||
stickerSubState = stickers;
|
stickerSubState = stickers;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
switch (currentCharacterId)
|
||||||
|
{
|
||||||
|
case 'bf':
|
||||||
|
backingCard = new BoyfriendCard(currentCharacter);
|
||||||
|
case 'pico':
|
||||||
|
backingCard = new PicoCard(currentCharacter);
|
||||||
|
default:
|
||||||
|
backingCard = new BackingCard(currentCharacter);
|
||||||
|
}
|
||||||
|
|
||||||
// We build a bunch of sprites BEFORE create() so we can guarantee they aren't null later on.
|
// We build a bunch of sprites BEFORE create() so we can guarantee they aren't null later on.
|
||||||
albumRoll = new AlbumRoll();
|
albumRoll = new AlbumRoll();
|
||||||
fp = new FreeplayScore(460, 60, 7, 100);
|
fp = new FreeplayScore(460, 60, 7, 100);
|
||||||
cardGlow = new FlxSprite(-30, -30).loadGraphic(Paths.image('freeplay/cardGlow'));
|
|
||||||
confirmGlow = new FlxSprite(-30, 240).loadGraphic(Paths.image('freeplay/confirmGlow'));
|
|
||||||
confirmTextGlow = new FlxSprite(-8, 115).loadGraphic(Paths.image('freeplay/glowingText'));
|
|
||||||
rankCamera = new FunkinCamera('rankCamera', 0, 0, FlxG.width, FlxG.height);
|
rankCamera = new FunkinCamera('rankCamera', 0, 0, FlxG.width, FlxG.height);
|
||||||
funnyCam = new FunkinCamera('freeplayFunny', 0, 0, FlxG.width, FlxG.height);
|
funnyCam = new FunkinCamera('freeplayFunny', 0, 0, FlxG.width, FlxG.height);
|
||||||
funnyScroll = new BGScrollingText(0, 220, currentCharacter.getFreeplayDJText(1), FlxG.width / 2, false, 60);
|
|
||||||
funnyScroll2 = new BGScrollingText(0, 335, currentCharacter.getFreeplayDJText(1), FlxG.width / 2, false, 60);
|
|
||||||
grpCapsules = new FlxTypedGroup<SongMenuItem>();
|
grpCapsules = new FlxTypedGroup<SongMenuItem>();
|
||||||
grpDifficulties = new FlxTypedSpriteGroup<DifficultySprite>(-300, 80);
|
grpDifficulties = new FlxTypedSpriteGroup<DifficultySprite>(-300, 80);
|
||||||
letterSort = new LetterSort(400, 75);
|
letterSort = new LetterSort(400, 75);
|
||||||
grpSongs = new FlxTypedGroup<Alphabet>();
|
grpSongs = new FlxTypedGroup<Alphabet>();
|
||||||
moreWays = new BGScrollingText(0, 160, currentCharacter.getFreeplayDJText(2), FlxG.width, true, 43);
|
|
||||||
moreWays2 = new BGScrollingText(0, 397, currentCharacter.getFreeplayDJText(2), FlxG.width, true, 43);
|
|
||||||
pinkBack = FunkinSprite.create('freeplay/pinkBack');
|
|
||||||
rankBg = new FunkinSprite(0, 0);
|
rankBg = new FunkinSprite(0, 0);
|
||||||
rankVignette = new FlxSprite(0, 0).loadGraphic(Paths.image('freeplay/rankVignette'));
|
rankVignette = new FlxSprite(0, 0).loadGraphic(Paths.image('freeplay/rankVignette'));
|
||||||
sparks = new FlxSprite(0, 0);
|
sparks = new FlxSprite(0, 0);
|
||||||
sparksADD = new FlxSprite(0, 0);
|
sparksADD = new FlxSprite(0, 0);
|
||||||
txtCompletion = new AtlasText(1185, 87, '69', AtlasFont.FREEPLAY_CLEAR);
|
txtCompletion = new AtlasText(1185, 87, '69', AtlasFont.FREEPLAY_CLEAR);
|
||||||
txtNuts = new BGScrollingText(0, 285, currentCharacter.getFreeplayDJText(3), FlxG.width / 2, true, 43);
|
|
||||||
|
|
||||||
ostName = new FlxText(8, 8, FlxG.width - 8 - 8, 'OFFICIAL OST', 48);
|
ostName = new FlxText(8, 8, FlxG.width - 8 - 8, 'OFFICIAL OST', 48);
|
||||||
|
|
||||||
orangeBackShit = new FunkinSprite(84, 440).makeSolidColor(Std.int(pinkBack.width), 75, 0xFFFEDA00);
|
bgDad = new FlxSprite(backingCard.pinkBack.width * 0.74, 0).loadGraphic(Paths.image('freeplay/freeplayBGdad'));
|
||||||
|
|
||||||
bgDad = new FlxSprite(pinkBack.width * 0.74, 0).loadGraphic(Paths.image('freeplay/freeplayBGdad'));
|
|
||||||
alsoOrangeLOL = new FunkinSprite(0, orangeBackShit.y).makeSolidColor(100, Std.int(orangeBackShit.height), 0xFFFFD400);
|
|
||||||
confirmGlow2 = new FlxSprite(confirmGlow.x, confirmGlow.y).loadGraphic(Paths.image('freeplay/confirmGlow2'));
|
|
||||||
funnyScroll3 = new BGScrollingText(0, orangeBackShit.y + 10, currentCharacter.getFreeplayDJText(1), FlxG.width / 2, 60);
|
|
||||||
backingTextYeah = new FlxAtlasSprite(640, 370, Paths.animateAtlas("freeplay/backing-text-yeah"),
|
|
||||||
{
|
|
||||||
FrameRate: 24.0,
|
|
||||||
Reversed: false,
|
|
||||||
// ?OnComplete:Void -> Void,
|
|
||||||
ShowPivot: false,
|
|
||||||
Antialiasing: true,
|
|
||||||
ScrollFactor: new FlxPoint(1, 1),
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var fadeShader:BlueFade = new BlueFade();
|
||||||
|
|
||||||
override function create():Void
|
override function create():Void
|
||||||
{
|
{
|
||||||
super.create();
|
super.create();
|
||||||
|
|
@ -283,6 +265,9 @@ class FreeplayState extends MusicBeatSubState
|
||||||
|
|
||||||
FlxTransitionableState.skipNextTransIn = true;
|
FlxTransitionableState.skipNextTransIn = true;
|
||||||
|
|
||||||
|
var fadeShaderFilter:ShaderFilter = new ShaderFilter(fadeShader);
|
||||||
|
funnyCam.setFilters([fadeShaderFilter]);
|
||||||
|
|
||||||
if (stickerSubState != null)
|
if (stickerSubState != null)
|
||||||
{
|
{
|
||||||
this.persistentUpdate = true;
|
this.persistentUpdate = true;
|
||||||
|
|
@ -360,113 +345,12 @@ class FreeplayState extends MusicBeatSubState
|
||||||
trace(FlxG.camera.initialZoom);
|
trace(FlxG.camera.initialZoom);
|
||||||
trace(FlxCamera.defaultZoom);
|
trace(FlxCamera.defaultZoom);
|
||||||
|
|
||||||
pinkBack.color = 0xFFFFD4E9; // sets it to pink!
|
if (backingCard != null)
|
||||||
pinkBack.x -= pinkBack.width;
|
{
|
||||||
|
add(backingCard);
|
||||||
FlxTween.tween(pinkBack, {x: 0}, 0.6, {ease: FlxEase.quartOut});
|
backingCard.init();
|
||||||
add(pinkBack);
|
backingCard.applyExitMovers(exitMovers, exitMoversCharSel);
|
||||||
|
}
|
||||||
add(orangeBackShit);
|
|
||||||
|
|
||||||
add(alsoOrangeLOL);
|
|
||||||
|
|
||||||
exitMovers.set([pinkBack, orangeBackShit, alsoOrangeLOL],
|
|
||||||
{
|
|
||||||
x: -pinkBack.width,
|
|
||||||
y: pinkBack.y,
|
|
||||||
speed: 0.4,
|
|
||||||
wait: 0
|
|
||||||
});
|
|
||||||
|
|
||||||
FlxSpriteUtil.alphaMaskFlxSprite(orangeBackShit, pinkBack, orangeBackShit);
|
|
||||||
orangeBackShit.visible = false;
|
|
||||||
alsoOrangeLOL.visible = false;
|
|
||||||
|
|
||||||
confirmTextGlow.blend = BlendMode.ADD;
|
|
||||||
confirmTextGlow.visible = false;
|
|
||||||
|
|
||||||
confirmGlow.blend = BlendMode.ADD;
|
|
||||||
|
|
||||||
confirmGlow.visible = false;
|
|
||||||
confirmGlow2.visible = false;
|
|
||||||
|
|
||||||
add(confirmGlow2);
|
|
||||||
add(confirmGlow);
|
|
||||||
|
|
||||||
add(confirmTextGlow);
|
|
||||||
|
|
||||||
var grpTxtScrolls:FlxGroup = new FlxGroup();
|
|
||||||
add(grpTxtScrolls);
|
|
||||||
grpTxtScrolls.visible = false;
|
|
||||||
|
|
||||||
FlxG.debugger.addTrackerProfile(new TrackerProfile(BGScrollingText, ['x', 'y', 'speed', 'size']));
|
|
||||||
|
|
||||||
moreWays.funnyColor = 0xFFFFF383;
|
|
||||||
moreWays.speed = 6.8;
|
|
||||||
grpTxtScrolls.add(moreWays);
|
|
||||||
|
|
||||||
exitMovers.set([moreWays],
|
|
||||||
{
|
|
||||||
x: FlxG.width * 2,
|
|
||||||
speed: 0.4,
|
|
||||||
});
|
|
||||||
|
|
||||||
funnyScroll.funnyColor = 0xFFFF9963;
|
|
||||||
funnyScroll.speed = -3.8;
|
|
||||||
grpTxtScrolls.add(funnyScroll);
|
|
||||||
|
|
||||||
exitMovers.set([funnyScroll],
|
|
||||||
{
|
|
||||||
x: -funnyScroll.width * 2,
|
|
||||||
y: funnyScroll.y,
|
|
||||||
speed: 0.4,
|
|
||||||
wait: 0
|
|
||||||
});
|
|
||||||
|
|
||||||
txtNuts.speed = 3.5;
|
|
||||||
grpTxtScrolls.add(txtNuts);
|
|
||||||
exitMovers.set([txtNuts],
|
|
||||||
{
|
|
||||||
x: FlxG.width * 2,
|
|
||||||
speed: 0.4,
|
|
||||||
});
|
|
||||||
|
|
||||||
funnyScroll2.funnyColor = 0xFFFF9963;
|
|
||||||
funnyScroll2.speed = -3.8;
|
|
||||||
grpTxtScrolls.add(funnyScroll2);
|
|
||||||
|
|
||||||
exitMovers.set([funnyScroll2],
|
|
||||||
{
|
|
||||||
x: -funnyScroll2.width * 2,
|
|
||||||
speed: 0.5,
|
|
||||||
});
|
|
||||||
|
|
||||||
moreWays2.funnyColor = 0xFFFFF383;
|
|
||||||
moreWays2.speed = 6.8;
|
|
||||||
grpTxtScrolls.add(moreWays2);
|
|
||||||
|
|
||||||
exitMovers.set([moreWays2],
|
|
||||||
{
|
|
||||||
x: FlxG.width * 2,
|
|
||||||
speed: 0.4
|
|
||||||
});
|
|
||||||
|
|
||||||
funnyScroll3.funnyColor = 0xFFFEA400;
|
|
||||||
funnyScroll3.speed = -3.8;
|
|
||||||
grpTxtScrolls.add(funnyScroll3);
|
|
||||||
|
|
||||||
exitMovers.set([funnyScroll3],
|
|
||||||
{
|
|
||||||
x: -funnyScroll3.width * 2,
|
|
||||||
speed: 0.3
|
|
||||||
});
|
|
||||||
|
|
||||||
add(backingTextYeah);
|
|
||||||
|
|
||||||
cardGlow.blend = BlendMode.ADD;
|
|
||||||
cardGlow.visible = false;
|
|
||||||
|
|
||||||
add(cardGlow);
|
|
||||||
|
|
||||||
if (currentCharacter?.getFreeplayDJData() != null)
|
if (currentCharacter?.getFreeplayDJData() != null)
|
||||||
{
|
{
|
||||||
|
|
@ -477,6 +361,12 @@ class FreeplayState extends MusicBeatSubState
|
||||||
speed: 0.5
|
speed: 0.5
|
||||||
});
|
});
|
||||||
add(dj);
|
add(dj);
|
||||||
|
exitMoversCharSel.set([dj],
|
||||||
|
{
|
||||||
|
y: -175,
|
||||||
|
speed: 0.8,
|
||||||
|
wait: 0.1
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
bgDad.shader = new AngleMask();
|
bgDad.shader = new AngleMask();
|
||||||
|
|
@ -499,8 +389,16 @@ class FreeplayState extends MusicBeatSubState
|
||||||
wait: 0
|
wait: 0
|
||||||
});
|
});
|
||||||
|
|
||||||
|
exitMoversCharSel.set([blackOverlayBullshitLOLXD, bgDad],
|
||||||
|
{
|
||||||
|
y: -100,
|
||||||
|
speed: 0.8,
|
||||||
|
wait: 0.1
|
||||||
|
});
|
||||||
|
|
||||||
add(bgDad);
|
add(bgDad);
|
||||||
FlxTween.tween(blackOverlayBullshitLOLXD, {x: pinkBack.width * 0.74}, 0.7, {ease: FlxEase.quintOut});
|
// backingCard.pinkBack.width * 0.74
|
||||||
|
FlxTween.tween(blackOverlayBullshitLOLXD, {x: 387.76}, 0.7, {ease: FlxEase.quintOut});
|
||||||
|
|
||||||
blackOverlayBullshitLOLXD.shader = bgDad.shader;
|
blackOverlayBullshitLOLXD.shader = bgDad.shader;
|
||||||
|
|
||||||
|
|
@ -520,6 +418,13 @@ class FreeplayState extends MusicBeatSubState
|
||||||
wait: 0
|
wait: 0
|
||||||
});
|
});
|
||||||
|
|
||||||
|
exitMoversCharSel.set([grpDifficulties],
|
||||||
|
{
|
||||||
|
y: -270,
|
||||||
|
speed: 0.8,
|
||||||
|
wait: 0.1
|
||||||
|
});
|
||||||
|
|
||||||
for (diffId in diffIdsTotal)
|
for (diffId in diffIdsTotal)
|
||||||
{
|
{
|
||||||
var diffSprite:DifficultySprite = new DifficultySprite(diffId);
|
var diffSprite:DifficultySprite = new DifficultySprite(diffId);
|
||||||
|
|
@ -540,12 +445,12 @@ class FreeplayState extends MusicBeatSubState
|
||||||
albumRoll.albumId = null;
|
albumRoll.albumId = null;
|
||||||
add(albumRoll);
|
add(albumRoll);
|
||||||
|
|
||||||
albumRoll.applyExitMovers(exitMovers);
|
albumRoll.applyExitMovers(exitMovers, exitMoversCharSel);
|
||||||
|
|
||||||
var overhangStuff:FlxSprite = new FlxSprite().makeGraphic(FlxG.width, 64, FlxColor.BLACK);
|
var overhangStuff:FlxSprite = new FlxSprite().makeGraphic(FlxG.width, 164, FlxColor.BLACK);
|
||||||
overhangStuff.y -= overhangStuff.height;
|
overhangStuff.y -= overhangStuff.height;
|
||||||
add(overhangStuff);
|
|
||||||
FlxTween.tween(overhangStuff, {y: 0}, 0.3, {ease: FlxEase.quartOut});
|
FlxTween.tween(overhangStuff, {y: -100}, 0.3, {ease: FlxEase.quartOut});
|
||||||
|
|
||||||
var fnfFreeplay:FlxText = new FlxText(8, 8, 0, 'FREEPLAY', 48);
|
var fnfFreeplay:FlxText = new FlxText(8, 8, 0, 'FREEPLAY', 48);
|
||||||
fnfFreeplay.font = 'VCR OSD Mono';
|
fnfFreeplay.font = 'VCR OSD Mono';
|
||||||
|
|
@ -563,11 +468,16 @@ class FreeplayState extends MusicBeatSubState
|
||||||
wait: 0
|
wait: 0
|
||||||
});
|
});
|
||||||
|
|
||||||
|
exitMoversCharSel.set([overhangStuff, fnfFreeplay, ostName],
|
||||||
|
{
|
||||||
|
y: -300,
|
||||||
|
speed: 0.8,
|
||||||
|
wait: 0.1
|
||||||
|
});
|
||||||
|
|
||||||
var sillyStroke:StrokeShader = new StrokeShader(0xFFFFFFFF, 2, 2);
|
var sillyStroke:StrokeShader = new StrokeShader(0xFFFFFFFF, 2, 2);
|
||||||
fnfFreeplay.shader = sillyStroke;
|
fnfFreeplay.shader = sillyStroke;
|
||||||
ostName.shader = sillyStroke;
|
ostName.shader = sillyStroke;
|
||||||
add(fnfFreeplay);
|
|
||||||
add(ostName);
|
|
||||||
|
|
||||||
var fnfHighscoreSpr:FlxSprite = new FlxSprite(860, 70);
|
var fnfHighscoreSpr:FlxSprite = new FlxSprite(860, 70);
|
||||||
fnfHighscoreSpr.frames = Paths.getSparrowAtlas('freeplay/highscore');
|
fnfHighscoreSpr.frames = Paths.getSparrowAtlas('freeplay/highscore');
|
||||||
|
|
@ -601,6 +511,13 @@ class FreeplayState extends MusicBeatSubState
|
||||||
speed: 0.3
|
speed: 0.3
|
||||||
});
|
});
|
||||||
|
|
||||||
|
exitMoversCharSel.set([letterSort],
|
||||||
|
{
|
||||||
|
y: -270,
|
||||||
|
speed: 0.8,
|
||||||
|
wait: 0.1
|
||||||
|
});
|
||||||
|
|
||||||
letterSort.changeSelectionCallback = (str) -> {
|
letterSort.changeSelectionCallback = (str) -> {
|
||||||
switch (str)
|
switch (str)
|
||||||
{
|
{
|
||||||
|
|
@ -630,6 +547,13 @@ class FreeplayState extends MusicBeatSubState
|
||||||
speed: 0.3
|
speed: 0.3
|
||||||
});
|
});
|
||||||
|
|
||||||
|
exitMoversCharSel.set([fp, txtCompletion, fnfHighscoreSpr, txtCompletion, clearBoxSprite],
|
||||||
|
{
|
||||||
|
y: -270,
|
||||||
|
speed: 0.8,
|
||||||
|
wait: 0.1
|
||||||
|
});
|
||||||
|
|
||||||
var diffSelLeft:DifficultySelector = new DifficultySelector(20, grpDifficulties.y - 10, false, controls);
|
var diffSelLeft:DifficultySelector = new DifficultySelector(20, grpDifficulties.y - 10, false, controls);
|
||||||
var diffSelRight:DifficultySelector = new DifficultySelector(325, grpDifficulties.y - 10, true, controls);
|
var diffSelRight:DifficultySelector = new DifficultySelector(325, grpDifficulties.y - 10, true, controls);
|
||||||
diffSelLeft.visible = false;
|
diffSelLeft.visible = false;
|
||||||
|
|
@ -637,6 +561,11 @@ class FreeplayState extends MusicBeatSubState
|
||||||
add(diffSelLeft);
|
add(diffSelLeft);
|
||||||
add(diffSelRight);
|
add(diffSelRight);
|
||||||
|
|
||||||
|
// putting these here to fix the layering
|
||||||
|
add(overhangStuff);
|
||||||
|
add(fnfFreeplay);
|
||||||
|
add(ostName);
|
||||||
|
|
||||||
// be careful not to "add()" things in here unless it's to a group that's already added to the state
|
// be careful not to "add()" things in here unless it's to a group that's already added to the state
|
||||||
// otherwise it won't be properly attatched to funnyCamera (relavent code should be at the bottom of create())
|
// otherwise it won't be properly attatched to funnyCamera (relavent code should be at the bottom of create())
|
||||||
var onDJIntroDone = function() {
|
var onDJIntroDone = function() {
|
||||||
|
|
@ -656,6 +585,13 @@ class FreeplayState extends MusicBeatSubState
|
||||||
speed: 0.26
|
speed: 0.26
|
||||||
});
|
});
|
||||||
|
|
||||||
|
exitMoversCharSel.set([diffSelLeft, diffSelRight],
|
||||||
|
{
|
||||||
|
y: -270,
|
||||||
|
speed: 0.8,
|
||||||
|
wait: 0.1
|
||||||
|
});
|
||||||
|
|
||||||
new FlxTimer().start(1 / 24, function(handShit) {
|
new FlxTimer().start(1 / 24, function(handShit) {
|
||||||
fnfHighscoreSpr.visible = true;
|
fnfHighscoreSpr.visible = true;
|
||||||
fnfFreeplay.visible = true;
|
fnfFreeplay.visible = true;
|
||||||
|
|
@ -674,18 +610,12 @@ class FreeplayState extends MusicBeatSubState
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
pinkBack.color = 0xFFFFD863;
|
|
||||||
bgDad.visible = true;
|
bgDad.visible = true;
|
||||||
orangeBackShit.visible = true;
|
backingCard?.introDone();
|
||||||
alsoOrangeLOL.visible = true;
|
|
||||||
grpTxtScrolls.visible = true;
|
|
||||||
|
|
||||||
// render optimisation
|
// render optimisation
|
||||||
if (_parentState != null) _parentState.persistentDraw = false;
|
if (_parentState != null) _parentState.persistentDraw = false;
|
||||||
|
|
||||||
cardGlow.visible = true;
|
|
||||||
FlxTween.tween(cardGlow, {alpha: 0, "scale.x": 1.2, "scale.y": 1.2}, 0.45, {ease: FlxEase.sineOut});
|
|
||||||
|
|
||||||
if (prepForNewRank && fromResultsParams != null)
|
if (prepForNewRank && fromResultsParams != null)
|
||||||
{
|
{
|
||||||
rankAnimStart(fromResultsParams);
|
rankAnimStart(fromResultsParams);
|
||||||
|
|
@ -872,7 +802,7 @@ class FreeplayState extends MusicBeatSubState
|
||||||
return str.songName.toLowerCase().startsWith(songFilter.filterData ?? '');
|
return str.songName.toLowerCase().startsWith(songFilter.filterData ?? '');
|
||||||
});
|
});
|
||||||
case ALL:
|
case ALL:
|
||||||
// no filter!
|
// no filter!
|
||||||
case FAVORITE:
|
case FAVORITE:
|
||||||
songsToFilter = songsToFilter.filter(str -> {
|
songsToFilter = songsToFilter.filter(str -> {
|
||||||
if (str == null) return true; // Random
|
if (str == null) return true; // Random
|
||||||
|
|
@ -1174,6 +1104,62 @@ class FreeplayState extends MusicBeatSubState
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function goToCharSelect():Void
|
||||||
|
{
|
||||||
|
var transitionGradient = new FlxSprite(0, 720).loadGraphic(Paths.image('freeplay/transitionGradient'));
|
||||||
|
transitionGradient.scale.set(1280, 1);
|
||||||
|
transitionGradient.updateHitbox();
|
||||||
|
transitionGradient.cameras = [rankCamera];
|
||||||
|
exitMoversCharSel.set([transitionGradient],
|
||||||
|
{
|
||||||
|
y: -720,
|
||||||
|
speed: 0.8,
|
||||||
|
wait: 0.1
|
||||||
|
});
|
||||||
|
add(transitionGradient);
|
||||||
|
// busy = true;
|
||||||
|
for (index => capsule in grpCapsules.members)
|
||||||
|
{
|
||||||
|
var distFromSelected:Float = Math.abs(index - curSelected) - 1;
|
||||||
|
if (distFromSelected < 5)
|
||||||
|
{
|
||||||
|
capsule.doLerp = false;
|
||||||
|
exitMoversCharSel.set([capsule],
|
||||||
|
{
|
||||||
|
y: -250,
|
||||||
|
speed: 0.8,
|
||||||
|
wait: 0.1
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fadeShader.fade(1.0, 0.0, 0.8, {ease: FlxEase.quadIn});
|
||||||
|
FlxG.sound.music.fadeOut(0.9, 0);
|
||||||
|
// FlxTween.tween(transitionGradient, {y: 0}, 1, {ease: FlxEase.expoOut, startDelay: 0.3});
|
||||||
|
new FlxTimer().start(0.9, _ -> {
|
||||||
|
FlxG.switchState(new funkin.ui.charSelect.CharSelectSubState());
|
||||||
|
});
|
||||||
|
for (grpSpr in exitMoversCharSel.keys())
|
||||||
|
{
|
||||||
|
var moveData:Null<MoveData> = exitMoversCharSel.get(grpSpr);
|
||||||
|
if (moveData == null) continue;
|
||||||
|
|
||||||
|
for (spr in grpSpr)
|
||||||
|
{
|
||||||
|
if (spr == null) continue;
|
||||||
|
|
||||||
|
var funnyMoveShit:MoveData = moveData;
|
||||||
|
|
||||||
|
var moveDataX = funnyMoveShit.x ?? spr.x;
|
||||||
|
var moveDataY = funnyMoveShit.y ?? spr.y;
|
||||||
|
var moveDataSpeed = funnyMoveShit.speed ?? 0.2;
|
||||||
|
var moveDataWait = funnyMoveShit.wait ?? 0.0;
|
||||||
|
|
||||||
|
FlxTween.tween(spr, {x: moveDataX, y: moveDataY + spr.y}, moveDataSpeed, {ease: FlxEase.backIn});
|
||||||
|
// longestTimer = Math.max(longestTimer, moveDataSpeed + moveDataWait);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var touchY:Float = 0;
|
var touchY:Float = 0;
|
||||||
var touchX:Float = 0;
|
var touchX:Float = 0;
|
||||||
var dxTouch:Float = 0;
|
var dxTouch:Float = 0;
|
||||||
|
|
@ -1199,16 +1185,9 @@ class FreeplayState extends MusicBeatSubState
|
||||||
{
|
{
|
||||||
super.update(elapsed);
|
super.update(elapsed);
|
||||||
|
|
||||||
#if debug
|
if (FlxG.keys.justPressed.G)
|
||||||
if (FlxG.keys.justPressed.T)
|
|
||||||
{
|
{
|
||||||
rankAnimStart(fromResultsParams ??
|
goToCharSelect();
|
||||||
{
|
|
||||||
playRankAnim: true,
|
|
||||||
newRank: PERFECT_GOLD,
|
|
||||||
songId: "tutorial",
|
|
||||||
difficultyId: "hard"
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (FlxG.keys.justPressed.P)
|
if (FlxG.keys.justPressed.P)
|
||||||
|
|
@ -1221,6 +1200,18 @@ class FreeplayState extends MusicBeatSubState
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if debug
|
||||||
|
if (FlxG.keys.justPressed.T)
|
||||||
|
{
|
||||||
|
rankAnimStart(fromResultsParams ??
|
||||||
|
{
|
||||||
|
playRankAnim: true,
|
||||||
|
newRank: PERFECT_GOLD,
|
||||||
|
songId: "tutorial",
|
||||||
|
difficultyId: "hard"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
// if (FlxG.keys.justPressed.H)
|
// if (FlxG.keys.justPressed.H)
|
||||||
// {
|
// {
|
||||||
// rankDisplayNew(fromResultsParams);
|
// rankDisplayNew(fromResultsParams);
|
||||||
|
|
@ -1495,23 +1486,7 @@ class FreeplayState extends MusicBeatSubState
|
||||||
|
|
||||||
var longestTimer:Float = 0;
|
var longestTimer:Float = 0;
|
||||||
|
|
||||||
// FlxTween.color(bgDad, 0.33, 0xFFFFFFFF, 0xFF555555, {ease: FlxEase.quadOut});
|
backingCard?.disappear();
|
||||||
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())
|
for (grpSpr in exitMovers.keys())
|
||||||
{
|
{
|
||||||
|
|
@ -1787,39 +1762,7 @@ class FreeplayState extends MusicBeatSubState
|
||||||
grpCapsules.members[curSelected].forcePosition();
|
grpCapsules.members[curSelected].forcePosition();
|
||||||
grpCapsules.members[curSelected].confirm();
|
grpCapsules.members[curSelected].confirm();
|
||||||
|
|
||||||
// FlxTween.color(bgDad, 0.33, 0xFFFFFFFF, 0xFF555555, {ease: FlxEase.quadOut});
|
backingCard?.confirm();
|
||||||
FlxTween.color(pinkBack, 0.33, 0xFFFFD0D5, 0xFF171831, {ease: FlxEase.quadOut});
|
|
||||||
orangeBackShit.visible = false;
|
|
||||||
alsoOrangeLOL.visible = false;
|
|
||||||
|
|
||||||
confirmGlow.visible = true;
|
|
||||||
confirmGlow2.visible = true;
|
|
||||||
|
|
||||||
backingTextYeah.playAnimation("BF back card confirm raw", false, false, false, 0);
|
|
||||||
confirmGlow2.alpha = 0;
|
|
||||||
confirmGlow.alpha = 0;
|
|
||||||
|
|
||||||
FlxTween.tween(confirmGlow2, {alpha: 0.5}, 0.33,
|
|
||||||
{
|
|
||||||
ease: FlxEase.quadOut,
|
|
||||||
onComplete: function(_) {
|
|
||||||
confirmGlow2.alpha = 0.6;
|
|
||||||
confirmGlow.alpha = 1;
|
|
||||||
confirmTextGlow.visible = true;
|
|
||||||
confirmTextGlow.alpha = 1;
|
|
||||||
FlxTween.tween(confirmTextGlow, {alpha: 0.4}, 0.5);
|
|
||||||
FlxTween.tween(confirmGlow, {alpha: 0}, 0.5);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// confirmGlow
|
|
||||||
|
|
||||||
moreWays.visible = false;
|
|
||||||
funnyScroll.visible = false;
|
|
||||||
txtNuts.visible = false;
|
|
||||||
funnyScroll2.visible = false;
|
|
||||||
moreWays2.visible = false;
|
|
||||||
funnyScroll3.visible = false;
|
|
||||||
|
|
||||||
new FlxTimer().start(1, function(tmr:FlxTimer) {
|
new FlxTimer().start(1, function(tmr:FlxTimer) {
|
||||||
FunkinSound.emptyPartialQueue();
|
FunkinSound.emptyPartialQueue();
|
||||||
|
|
|
||||||
217
source/funkin/ui/freeplay/backcards/BackingCard.hx
Normal file
217
source/funkin/ui/freeplay/backcards/BackingCard.hx
Normal file
|
|
@ -0,0 +1,217 @@
|
||||||
|
package funkin.ui.freeplay.backcards;
|
||||||
|
|
||||||
|
import funkin.ui.freeplay.FreeplayState;
|
||||||
|
import flixel.FlxCamera;
|
||||||
|
import flixel.FlxSprite;
|
||||||
|
import flixel.group.FlxGroup;
|
||||||
|
import flixel.group.FlxGroup.FlxTypedGroup;
|
||||||
|
import flixel.group.FlxSpriteGroup.FlxTypedSpriteGroup;
|
||||||
|
import flixel.math.FlxAngle;
|
||||||
|
import flixel.math.FlxPoint;
|
||||||
|
import flixel.text.FlxText;
|
||||||
|
import flixel.tweens.FlxEase;
|
||||||
|
import flixel.tweens.FlxTween;
|
||||||
|
import flixel.util.FlxColor;
|
||||||
|
import flixel.util.FlxSpriteUtil;
|
||||||
|
import flixel.util.FlxTimer;
|
||||||
|
import funkin.graphics.adobeanimate.FlxAtlasSprite;
|
||||||
|
import funkin.graphics.FunkinSprite;
|
||||||
|
import funkin.ui.freeplay.charselect.PlayableCharacter;
|
||||||
|
import funkin.ui.MusicBeatSubState;
|
||||||
|
import lime.utils.Assets;
|
||||||
|
import openfl.display.BlendMode;
|
||||||
|
import flixel.group.FlxSpriteGroup;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A class for the backing cards so they dont have to be part of freeplayState......
|
||||||
|
*/
|
||||||
|
class BackingCard extends FlxSpriteGroup
|
||||||
|
{
|
||||||
|
public var backingTextYeah:FlxAtlasSprite;
|
||||||
|
public var orangeBackShit:FunkinSprite;
|
||||||
|
public var alsoOrangeLOL:FunkinSprite;
|
||||||
|
public var pinkBack:FunkinSprite;
|
||||||
|
public var confirmGlow:FlxSprite;
|
||||||
|
public var confirmGlow2:FlxSprite;
|
||||||
|
public var confirmTextGlow:FlxSprite;
|
||||||
|
public var cardGlow:FlxSprite;
|
||||||
|
|
||||||
|
var _exitMovers:Null<FreeplayState.ExitMoverData>;
|
||||||
|
var _exitMoversCharSel:Null<FreeplayState.ExitMoverData>;
|
||||||
|
|
||||||
|
public function new(currentCharacter:PlayableCharacter)
|
||||||
|
{
|
||||||
|
super();
|
||||||
|
|
||||||
|
cardGlow = new FlxSprite(-30, -30).loadGraphic(Paths.image('freeplay/cardGlow'));
|
||||||
|
confirmGlow = new FlxSprite(-30, 240).loadGraphic(Paths.image('freeplay/confirmGlow'));
|
||||||
|
confirmTextGlow = new FlxSprite(-8, 115).loadGraphic(Paths.image('freeplay/glowingText'));
|
||||||
|
pinkBack = FunkinSprite.create('freeplay/pinkBack');
|
||||||
|
orangeBackShit = new FunkinSprite(84, 440).makeSolidColor(Std.int(pinkBack.width), 75, 0xFFFEDA00);
|
||||||
|
alsoOrangeLOL = new FunkinSprite(0, orangeBackShit.y).makeSolidColor(100, Std.int(orangeBackShit.height), 0xFFFFD400);
|
||||||
|
confirmGlow2 = new FlxSprite(confirmGlow.x, confirmGlow.y).loadGraphic(Paths.image('freeplay/confirmGlow2'));
|
||||||
|
backingTextYeah = new FlxAtlasSprite(640, 370, Paths.animateAtlas("freeplay/backing-text-yeah"),
|
||||||
|
{
|
||||||
|
FrameRate: 24.0,
|
||||||
|
Reversed: false,
|
||||||
|
// ?OnComplete:Void -> Void,
|
||||||
|
ShowPivot: false,
|
||||||
|
Antialiasing: true,
|
||||||
|
ScrollFactor: new FlxPoint(1, 1),
|
||||||
|
});
|
||||||
|
|
||||||
|
pinkBack.color = 0xFFFFD4E9; // sets it to pink!
|
||||||
|
pinkBack.x -= pinkBack.width;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Apply exit movers for the pieces of the backing card.
|
||||||
|
* @param exitMovers The exit movers to apply.
|
||||||
|
*/
|
||||||
|
public function applyExitMovers(?exitMovers:FreeplayState.ExitMoverData, ?exitMoversCharSel:FreeplayState.ExitMoverData):Void
|
||||||
|
{
|
||||||
|
if (exitMovers == null)
|
||||||
|
{
|
||||||
|
exitMovers = _exitMovers;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_exitMovers = exitMovers;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (exitMovers == null) return;
|
||||||
|
|
||||||
|
if (exitMoversCharSel == null)
|
||||||
|
{
|
||||||
|
exitMoversCharSel = _exitMoversCharSel;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_exitMoversCharSel = exitMoversCharSel;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (exitMoversCharSel == null) return;
|
||||||
|
|
||||||
|
exitMovers.set([pinkBack, orangeBackShit, alsoOrangeLOL],
|
||||||
|
{
|
||||||
|
x: -pinkBack.width,
|
||||||
|
y: pinkBack.y,
|
||||||
|
speed: 0.4,
|
||||||
|
wait: 0
|
||||||
|
});
|
||||||
|
|
||||||
|
exitMoversCharSel.set([pinkBack],
|
||||||
|
{
|
||||||
|
y: -100,
|
||||||
|
speed: 0.8,
|
||||||
|
wait: 0.1
|
||||||
|
});
|
||||||
|
|
||||||
|
exitMoversCharSel.set([orangeBackShit, alsoOrangeLOL],
|
||||||
|
{
|
||||||
|
y: -40,
|
||||||
|
speed: 0.8,
|
||||||
|
wait: 0.1
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called in create. Adds sprites and tweens.
|
||||||
|
*/
|
||||||
|
public function init():Void
|
||||||
|
{
|
||||||
|
FlxTween.tween(pinkBack, {x: 0}, 0.6, {ease: FlxEase.quartOut});
|
||||||
|
add(pinkBack);
|
||||||
|
|
||||||
|
add(orangeBackShit);
|
||||||
|
|
||||||
|
add(alsoOrangeLOL);
|
||||||
|
|
||||||
|
FlxSpriteUtil.alphaMaskFlxSprite(orangeBackShit, pinkBack, orangeBackShit);
|
||||||
|
orangeBackShit.visible = false;
|
||||||
|
alsoOrangeLOL.visible = false;
|
||||||
|
|
||||||
|
confirmTextGlow.blend = BlendMode.ADD;
|
||||||
|
confirmTextGlow.visible = false;
|
||||||
|
|
||||||
|
confirmGlow.blend = BlendMode.ADD;
|
||||||
|
|
||||||
|
confirmGlow.visible = false;
|
||||||
|
confirmGlow2.visible = false;
|
||||||
|
|
||||||
|
add(confirmGlow2);
|
||||||
|
add(confirmGlow);
|
||||||
|
|
||||||
|
add(confirmTextGlow);
|
||||||
|
|
||||||
|
add(backingTextYeah);
|
||||||
|
|
||||||
|
cardGlow.blend = BlendMode.ADD;
|
||||||
|
cardGlow.visible = false;
|
||||||
|
|
||||||
|
add(cardGlow);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Override parts of Freeplay depending on the card class.
|
||||||
|
*/
|
||||||
|
public function applyStyle(_freeplayState:FreeplayState):Void {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called after the dj finishes their start animation.
|
||||||
|
*/
|
||||||
|
public function introDone():Void
|
||||||
|
{
|
||||||
|
pinkBack.color = 0xFFFFD863;
|
||||||
|
orangeBackShit.visible = true;
|
||||||
|
alsoOrangeLOL.visible = true;
|
||||||
|
cardGlow.visible = true;
|
||||||
|
FlxTween.tween(cardGlow, {alpha: 0, "scale.x": 1.2, "scale.y": 1.2}, 0.45, {ease: FlxEase.sineOut});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when selecting a song.
|
||||||
|
*/
|
||||||
|
public function confirm():Void
|
||||||
|
{
|
||||||
|
FlxTween.color(pinkBack, 0.33, 0xFFFFD0D5, 0xFF171831, {ease: FlxEase.quadOut});
|
||||||
|
orangeBackShit.visible = false;
|
||||||
|
alsoOrangeLOL.visible = false;
|
||||||
|
|
||||||
|
confirmGlow.visible = true;
|
||||||
|
confirmGlow2.visible = true;
|
||||||
|
|
||||||
|
backingTextYeah.playAnimation("BF back card confirm raw", false, false, false, 0);
|
||||||
|
confirmGlow2.alpha = 0;
|
||||||
|
confirmGlow.alpha = 0;
|
||||||
|
|
||||||
|
FlxTween.tween(confirmGlow2, {alpha: 0.5}, 0.33,
|
||||||
|
{
|
||||||
|
ease: FlxEase.quadOut,
|
||||||
|
onComplete: function(_) {
|
||||||
|
confirmGlow2.alpha = 0.6;
|
||||||
|
confirmGlow.alpha = 1;
|
||||||
|
confirmTextGlow.visible = true;
|
||||||
|
confirmTextGlow.alpha = 1;
|
||||||
|
FlxTween.tween(confirmTextGlow, {alpha: 0.4}, 0.5);
|
||||||
|
FlxTween.tween(confirmGlow, {alpha: 0}, 0.5);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when exiting the freeplay menu
|
||||||
|
*/
|
||||||
|
public function disappear():Void
|
||||||
|
{
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
168
source/funkin/ui/freeplay/backcards/BoyfriendCard.hx
Normal file
168
source/funkin/ui/freeplay/backcards/BoyfriendCard.hx
Normal file
|
|
@ -0,0 +1,168 @@
|
||||||
|
package funkin.ui.freeplay.backcards;
|
||||||
|
|
||||||
|
import funkin.ui.freeplay.FreeplayState;
|
||||||
|
import flixel.FlxCamera;
|
||||||
|
import flixel.FlxSprite;
|
||||||
|
import flixel.group.FlxGroup;
|
||||||
|
import flixel.group.FlxGroup.FlxTypedGroup;
|
||||||
|
import flixel.group.FlxSpriteGroup.FlxTypedSpriteGroup;
|
||||||
|
import flixel.math.FlxAngle;
|
||||||
|
import flixel.math.FlxPoint;
|
||||||
|
import flixel.text.FlxText;
|
||||||
|
import flixel.tweens.FlxEase;
|
||||||
|
import flixel.tweens.FlxTween;
|
||||||
|
import flixel.util.FlxColor;
|
||||||
|
import flixel.util.FlxSpriteUtil;
|
||||||
|
import flixel.util.FlxTimer;
|
||||||
|
import funkin.graphics.adobeanimate.FlxAtlasSprite;
|
||||||
|
import funkin.graphics.FunkinSprite;
|
||||||
|
import funkin.ui.freeplay.charselect.PlayableCharacter;
|
||||||
|
import funkin.ui.MusicBeatSubState;
|
||||||
|
import lime.utils.Assets;
|
||||||
|
import openfl.display.BlendMode;
|
||||||
|
import flixel.group.FlxSpriteGroup;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A class for the backing cards so they dont have to be part of freeplayState......
|
||||||
|
*/
|
||||||
|
class BoyfriendCard extends BackingCard
|
||||||
|
{
|
||||||
|
public var moreWays:BGScrollingText;
|
||||||
|
public var funnyScroll:BGScrollingText;
|
||||||
|
public var txtNuts:BGScrollingText;
|
||||||
|
public var funnyScroll2:BGScrollingText;
|
||||||
|
public var moreWays2:BGScrollingText;
|
||||||
|
public var funnyScroll3:BGScrollingText;
|
||||||
|
|
||||||
|
public override function applyExitMovers(?exitMovers:FreeplayState.ExitMoverData, ?exitMoversCharSel:FreeplayState.ExitMoverData):Void
|
||||||
|
{
|
||||||
|
super.applyExitMovers(exitMovers, exitMoversCharSel);
|
||||||
|
if (exitMovers == null || exitMoversCharSel == null) return;
|
||||||
|
exitMovers.set([moreWays],
|
||||||
|
{
|
||||||
|
x: FlxG.width * 2,
|
||||||
|
speed: 0.4,
|
||||||
|
});
|
||||||
|
exitMovers.set([funnyScroll],
|
||||||
|
{
|
||||||
|
x: -funnyScroll.width * 2,
|
||||||
|
y: funnyScroll.y,
|
||||||
|
speed: 0.4,
|
||||||
|
wait: 0
|
||||||
|
});
|
||||||
|
exitMovers.set([txtNuts],
|
||||||
|
{
|
||||||
|
x: FlxG.width * 2,
|
||||||
|
speed: 0.4,
|
||||||
|
});
|
||||||
|
exitMovers.set([funnyScroll2],
|
||||||
|
{
|
||||||
|
x: -funnyScroll2.width * 2,
|
||||||
|
speed: 0.5,
|
||||||
|
});
|
||||||
|
exitMovers.set([moreWays2],
|
||||||
|
{
|
||||||
|
x: FlxG.width * 2,
|
||||||
|
speed: 0.4
|
||||||
|
});
|
||||||
|
exitMovers.set([funnyScroll3],
|
||||||
|
{
|
||||||
|
x: -funnyScroll3.width * 2,
|
||||||
|
speed: 0.3
|
||||||
|
});
|
||||||
|
|
||||||
|
exitMoversCharSel.set([moreWays, funnyScroll, txtNuts, funnyScroll2, moreWays2, funnyScroll3],
|
||||||
|
{
|
||||||
|
y: -60,
|
||||||
|
speed: 0.8,
|
||||||
|
wait: 0.1
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public override function new(currentCharacter:PlayableCharacter)
|
||||||
|
{
|
||||||
|
super(currentCharacter);
|
||||||
|
|
||||||
|
funnyScroll = new BGScrollingText(0, 220, currentCharacter.getFreeplayDJText(1), FlxG.width / 2, false, 60);
|
||||||
|
funnyScroll2 = new BGScrollingText(0, 335, currentCharacter.getFreeplayDJText(1), FlxG.width / 2, false, 60);
|
||||||
|
moreWays = new BGScrollingText(0, 160, currentCharacter.getFreeplayDJText(2), FlxG.width, true, 43);
|
||||||
|
moreWays2 = new BGScrollingText(0, 397, currentCharacter.getFreeplayDJText(2), FlxG.width, true, 43);
|
||||||
|
txtNuts = new BGScrollingText(0, 285, currentCharacter.getFreeplayDJText(3), FlxG.width / 2, true, 43);
|
||||||
|
funnyScroll3 = new BGScrollingText(0, orangeBackShit.y + 10, currentCharacter.getFreeplayDJText(1), FlxG.width / 2, 60);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override function init():Void
|
||||||
|
{
|
||||||
|
super.init();
|
||||||
|
|
||||||
|
// var grpTxtScrolls:FlxGroup = new FlxGroup();
|
||||||
|
// add(grpTxtScrolls);
|
||||||
|
|
||||||
|
moreWays.visible = false;
|
||||||
|
funnyScroll.visible = false;
|
||||||
|
txtNuts.visible = false;
|
||||||
|
funnyScroll2.visible = false;
|
||||||
|
moreWays2.visible = false;
|
||||||
|
funnyScroll3.visible = false;
|
||||||
|
|
||||||
|
moreWays.funnyColor = 0xFFFFF383;
|
||||||
|
moreWays.speed = 6.8;
|
||||||
|
add(moreWays);
|
||||||
|
|
||||||
|
funnyScroll.funnyColor = 0xFFFF9963;
|
||||||
|
funnyScroll.speed = -3.8;
|
||||||
|
add(funnyScroll);
|
||||||
|
|
||||||
|
txtNuts.speed = 3.5;
|
||||||
|
add(txtNuts);
|
||||||
|
|
||||||
|
funnyScroll2.funnyColor = 0xFFFF9963;
|
||||||
|
funnyScroll2.speed = -3.8;
|
||||||
|
add(funnyScroll2);
|
||||||
|
|
||||||
|
moreWays2.funnyColor = 0xFFFFF383;
|
||||||
|
moreWays2.speed = 6.8;
|
||||||
|
add(moreWays2);
|
||||||
|
|
||||||
|
funnyScroll3.funnyColor = 0xFFFEA400;
|
||||||
|
funnyScroll3.speed = -3.8;
|
||||||
|
add(funnyScroll3);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override function introDone():Void
|
||||||
|
{
|
||||||
|
super.introDone();
|
||||||
|
moreWays.visible = true;
|
||||||
|
funnyScroll.visible = true;
|
||||||
|
txtNuts.visible = true;
|
||||||
|
funnyScroll2.visible = true;
|
||||||
|
moreWays2.visible = true;
|
||||||
|
funnyScroll3.visible = true;
|
||||||
|
// grpTxtScrolls.visible = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override function confirm():Void
|
||||||
|
{
|
||||||
|
super.confirm();
|
||||||
|
// FlxTween.color(bgDad, 0.33, 0xFFFFFFFF, 0xFF555555, {ease: FlxEase.quadOut});
|
||||||
|
|
||||||
|
moreWays.visible = false;
|
||||||
|
funnyScroll.visible = false;
|
||||||
|
txtNuts.visible = false;
|
||||||
|
funnyScroll2.visible = false;
|
||||||
|
moreWays2.visible = false;
|
||||||
|
funnyScroll3.visible = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override function disappear():Void
|
||||||
|
{
|
||||||
|
super.disappear();
|
||||||
|
|
||||||
|
moreWays.visible = false;
|
||||||
|
funnyScroll.visible = false;
|
||||||
|
txtNuts.visible = false;
|
||||||
|
funnyScroll2.visible = false;
|
||||||
|
moreWays2.visible = false;
|
||||||
|
funnyScroll3.visible = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
74
source/funkin/ui/freeplay/backcards/PicoCard.hx
Normal file
74
source/funkin/ui/freeplay/backcards/PicoCard.hx
Normal file
|
|
@ -0,0 +1,74 @@
|
||||||
|
package funkin.ui.freeplay.backcards;
|
||||||
|
|
||||||
|
import funkin.ui.freeplay.FreeplayState;
|
||||||
|
import flixel.FlxCamera;
|
||||||
|
import flixel.FlxSprite;
|
||||||
|
import flixel.group.FlxGroup;
|
||||||
|
import flixel.group.FlxGroup.FlxTypedGroup;
|
||||||
|
import flixel.group.FlxSpriteGroup.FlxTypedSpriteGroup;
|
||||||
|
import flixel.math.FlxAngle;
|
||||||
|
import flixel.math.FlxPoint;
|
||||||
|
import flixel.text.FlxText;
|
||||||
|
import flixel.tweens.FlxEase;
|
||||||
|
import flixel.tweens.FlxTween;
|
||||||
|
import flixel.util.FlxColor;
|
||||||
|
import flixel.util.FlxSpriteUtil;
|
||||||
|
import flixel.util.FlxTimer;
|
||||||
|
import funkin.graphics.adobeanimate.FlxAtlasSprite;
|
||||||
|
import funkin.graphics.FunkinSprite;
|
||||||
|
import funkin.ui.freeplay.charselect.PlayableCharacter;
|
||||||
|
import funkin.ui.MusicBeatSubState;
|
||||||
|
import lime.utils.Assets;
|
||||||
|
import openfl.display.BlendMode;
|
||||||
|
import flixel.group.FlxSpriteGroup;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A class for the backing cards so they dont have to be part of freeplayState......
|
||||||
|
*/
|
||||||
|
class PicoCard extends BackingCard
|
||||||
|
{
|
||||||
|
public override function init():Void
|
||||||
|
{
|
||||||
|
FlxTween.tween(pinkBack, {x: 0}, 0.6, {ease: FlxEase.quartOut});
|
||||||
|
add(pinkBack);
|
||||||
|
|
||||||
|
// add(orangeBackShit);
|
||||||
|
|
||||||
|
// add(alsoOrangeLOL);
|
||||||
|
|
||||||
|
// FlxSpriteUtil.alphaMaskFlxSprite(orangeBackShit, pinkBack, orangeBackShit);
|
||||||
|
// orangeBackShit.visible = false;
|
||||||
|
// alsoOrangeLOL.visible = false;
|
||||||
|
|
||||||
|
confirmTextGlow.blend = BlendMode.ADD;
|
||||||
|
confirmTextGlow.visible = false;
|
||||||
|
|
||||||
|
confirmGlow.blend = BlendMode.ADD;
|
||||||
|
|
||||||
|
confirmGlow.visible = false;
|
||||||
|
confirmGlow2.visible = false;
|
||||||
|
|
||||||
|
add(confirmGlow2);
|
||||||
|
add(confirmGlow);
|
||||||
|
|
||||||
|
add(confirmTextGlow);
|
||||||
|
|
||||||
|
add(backingTextYeah);
|
||||||
|
|
||||||
|
cardGlow.blend = BlendMode.ADD;
|
||||||
|
cardGlow.visible = false;
|
||||||
|
|
||||||
|
add(cardGlow);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override function applyStyle(_freeplayState:FreeplayState):Void {}
|
||||||
|
|
||||||
|
public override function introDone():Void
|
||||||
|
{
|
||||||
|
pinkBack.color = 0xFF98A2F3;
|
||||||
|
// orangeBackShit.visible = true;
|
||||||
|
// alsoOrangeLOL.visible = true;
|
||||||
|
cardGlow.visible = true;
|
||||||
|
FlxTween.tween(cardGlow, {alpha: 0, "scale.x": 1.2, "scale.y": 1.2}, 0.45, {ease: FlxEase.sineOut});
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in a new issue