mirror of
https://github.com/ninjamuffin99/Funkin.git
synced 2025-11-26 06:09:02 +00:00
Implement Nene Christmas, and fix Nene offsets on other stages.
This commit is contained in:
parent
50b587e3b8
commit
416d60000f
2
assets
2
assets
|
|
@ -1 +1 @@
|
||||||
Subproject commit 005c96f85f4304865acb196e7cc4d6d83f9d76d8
|
Subproject commit d5b2d05df6d197f90a1b93f5b50835209c21adf7
|
||||||
|
|
@ -382,12 +382,19 @@ class BaseCharacter extends Bopper
|
||||||
// and Darnell (this keeps the flame on his lighter flickering).
|
// and Darnell (this keeps the flame on his lighter flickering).
|
||||||
// Works for idle, singLEFT/RIGHT/UP/DOWN, alt singing animations, and anything else really.
|
// Works for idle, singLEFT/RIGHT/UP/DOWN, alt singing animations, and anything else really.
|
||||||
|
|
||||||
if (!getCurrentAnimation().endsWith(Constants.ANIMATION_HOLD_SUFFIX)
|
if (isAnimationFinished()
|
||||||
&& hasAnimation(getCurrentAnimation() + Constants.ANIMATION_HOLD_SUFFIX)
|
&& !getCurrentAnimation().endsWith(Constants.ANIMATION_HOLD_SUFFIX)
|
||||||
&& isAnimationFinished())
|
&& hasAnimation(getCurrentAnimation() + Constants.ANIMATION_HOLD_SUFFIX))
|
||||||
{
|
{
|
||||||
playAnimation(getCurrentAnimation() + Constants.ANIMATION_HOLD_SUFFIX);
|
playAnimation(getCurrentAnimation() + Constants.ANIMATION_HOLD_SUFFIX);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (isAnimationFinished())
|
||||||
|
{
|
||||||
|
trace('Not playing hold (${getCurrentAnimation()}) (${isAnimationFinished()}, ${getCurrentAnimation().endsWith(Constants.ANIMATION_HOLD_SUFFIX)}, ${hasAnimation(getCurrentAnimation() + Constants.ANIMATION_HOLD_SUFFIX)})');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Handle character note hold time.
|
// Handle character note hold time.
|
||||||
if (isSinging())
|
if (isSinging())
|
||||||
|
|
@ -427,7 +434,7 @@ class BaseCharacter extends Bopper
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Play the idle animation.
|
// Play the idle animation.
|
||||||
trace('${characterId}: attempting dance');
|
// trace('${characterId}: attempting dance');
|
||||||
dance(true);
|
dance(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -638,6 +645,7 @@ class BaseCharacter extends Bopper
|
||||||
var anim:String = 'sing${dir.nameUpper}${miss ? 'miss' : ''}${suffix != '' ? '-${suffix}' : ''}';
|
var anim:String = 'sing${dir.nameUpper}${miss ? 'miss' : ''}${suffix != '' ? '-${suffix}' : ''}';
|
||||||
|
|
||||||
// restart even if already playing, because the character might sing the same note twice.
|
// restart even if already playing, because the character might sing the same note twice.
|
||||||
|
trace('Playing ${anim}...');
|
||||||
playAnimation(anim, true);
|
playAnimation(anim, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -178,9 +178,22 @@ class FreeplayState extends MusicBeatSubState
|
||||||
|
|
||||||
var stickerSubState:Null<StickerSubState> = null;
|
var stickerSubState:Null<StickerSubState> = null;
|
||||||
|
|
||||||
public static var rememberedDifficulty:Null<String> = Constants.DEFAULT_DIFFICULTY;
|
/**
|
||||||
|
* The difficulty we were on when this menu was last accessed.
|
||||||
|
*/
|
||||||
|
public static var rememberedDifficulty:String = Constants.DEFAULT_DIFFICULTY;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The song we were on when this menu was last accessed.
|
||||||
|
* NOTE: `null` if the last song was `Random`.
|
||||||
|
*/
|
||||||
public static var rememberedSongId:Null<String> = 'tutorial';
|
public static var rememberedSongId:Null<String> = 'tutorial';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The character we were on when this menu was last accessed.
|
||||||
|
*/
|
||||||
|
public static var rememberedCharacterId:String = Constants.DEFAULT_CHARACTER;
|
||||||
|
|
||||||
var funnyCam:FunkinCamera;
|
var funnyCam:FunkinCamera;
|
||||||
var rankCamera:FunkinCamera;
|
var rankCamera:FunkinCamera;
|
||||||
var rankBg:FunkinSprite;
|
var rankBg:FunkinSprite;
|
||||||
|
|
@ -210,14 +223,16 @@ class FreeplayState extends MusicBeatSubState
|
||||||
|
|
||||||
public function new(?params:FreeplayStateParams, ?stickers:StickerSubState)
|
public function new(?params:FreeplayStateParams, ?stickers:StickerSubState)
|
||||||
{
|
{
|
||||||
currentCharacterId = params?.character ?? Constants.DEFAULT_CHARACTER;
|
currentCharacterId = params?.character ?? rememberedCharacterId;
|
||||||
var fetchPlayableCharacter = function():PlayableCharacter {
|
var fetchPlayableCharacter = function():PlayableCharacter {
|
||||||
var result = PlayerRegistry.instance.fetchEntry(params?.character ?? Constants.DEFAULT_CHARACTER);
|
var result = PlayerRegistry.instance.fetchEntry(params?.character ?? rememberedCharacterId);
|
||||||
if (result == null) throw 'No valid playable character with id ${params?.character}';
|
if (result == null) throw 'No valid playable character with id ${params?.character}';
|
||||||
return result;
|
return result;
|
||||||
};
|
};
|
||||||
currentCharacter = fetchPlayableCharacter();
|
currentCharacter = fetchPlayableCharacter();
|
||||||
|
|
||||||
|
rememberedCharacterId = currentCharacter?.id ?? Constants.DEFAULT_CHARACTER;
|
||||||
|
|
||||||
fromResultsParams = params?.fromResults;
|
fromResultsParams = params?.fromResults;
|
||||||
|
|
||||||
if (fromResultsParams?.playRankAnim == true)
|
if (fromResultsParams?.playRankAnim == true)
|
||||||
|
|
@ -744,10 +759,7 @@ class FreeplayState extends MusicBeatSubState
|
||||||
var tempSongs:Array<Null<FreeplaySongData>> = songs;
|
var tempSongs:Array<Null<FreeplaySongData>> = songs;
|
||||||
|
|
||||||
// Remember just the difficulty because it's important for song sorting.
|
// Remember just the difficulty because it's important for song sorting.
|
||||||
if (rememberedDifficulty != null)
|
currentDifficulty = rememberedDifficulty;
|
||||||
{
|
|
||||||
currentDifficulty = rememberedDifficulty;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (filterStuff != null) tempSongs = sortSongs(tempSongs, filterStuff);
|
if (filterStuff != null) tempSongs = sortSongs(tempSongs, filterStuff);
|
||||||
|
|
||||||
|
|
@ -1216,7 +1228,7 @@ class FreeplayState extends MusicBeatSubState
|
||||||
FlxG.switchState(FreeplayState.build(
|
FlxG.switchState(FreeplayState.build(
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
character: currentCharacterId == "pico" ? "bf" : "pico",
|
character: currentCharacterId == "pico" ? Constants.DEFAULT_CHARACTER : "pico",
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
@ -1889,7 +1901,7 @@ class FreeplayState extends MusicBeatSubState
|
||||||
intendedCompletion = 0.0;
|
intendedCompletion = 0.0;
|
||||||
diffIdsCurrent = diffIdsTotal;
|
diffIdsCurrent = diffIdsTotal;
|
||||||
rememberedSongId = null;
|
rememberedSongId = null;
|
||||||
rememberedDifficulty = null;
|
rememberedDifficulty = Constants.DEFAULT_DIFFICULTY;
|
||||||
albumRoll.albumId = null;
|
albumRoll.albumId = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -162,7 +162,7 @@ class SongMenuItem extends FlxSpriteGroup
|
||||||
|
|
||||||
sparkle = new FlxSprite(ranking.x, ranking.y);
|
sparkle = new FlxSprite(ranking.x, ranking.y);
|
||||||
sparkle.frames = Paths.getSparrowAtlas('freeplay/sparkle');
|
sparkle.frames = Paths.getSparrowAtlas('freeplay/sparkle');
|
||||||
sparkle.animation.addByPrefix('sparkle', 'sparkle', 24, false);
|
sparkle.animation.addByPrefix('sparkle', 'sparkle Export0', 24, false);
|
||||||
sparkle.animation.play('sparkle', true);
|
sparkle.animation.play('sparkle', true);
|
||||||
sparkle.scale.set(0.8, 0.8);
|
sparkle.scale.set(0.8, 0.8);
|
||||||
sparkle.blend = BlendMode.ADD;
|
sparkle.blend = BlendMode.ADD;
|
||||||
|
|
@ -523,7 +523,6 @@ class SongMenuItem extends FlxSpriteGroup
|
||||||
checkWeek(songData?.songId);
|
checkWeek(songData?.songId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
var frameInTicker:Float = 0;
|
var frameInTicker:Float = 0;
|
||||||
var frameInTypeBeat:Int = 0;
|
var frameInTypeBeat:Int = 0;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -119,7 +119,10 @@ class MainMenuState extends MusicBeatState
|
||||||
|
|
||||||
openSubState(new FreeplayState(
|
openSubState(new FreeplayState(
|
||||||
{
|
{
|
||||||
character: FlxG.keys.pressed.SHIFT ? 'pico' : 'bf',
|
#if debug
|
||||||
|
// If SHIFT is held, toggle the selected character, else use the remembered character
|
||||||
|
character: (FlxG.keys.pressed.SHIFT) ? (FreeplayState.rememberedCharacterId == Constants.DEFAULT_CHARACTER ? 'pico' : 'bf') : null,
|
||||||
|
#end
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue