mirror of
https://github.com/ninjamuffin99/Funkin.git
synced 2025-11-25 21:55:55 +00:00
Merge branch 'bugfix/vocal-loop' into rewrite/master
This commit is contained in:
commit
8fdf04796c
2
assets
2
assets
|
|
@ -1 +1 @@
|
||||||
Subproject commit bd1bdcf5e1349e6199d9d32e617cbefa2cea093b
|
Subproject commit 3954e95646643dfc729607d0da57ba0bbf273521
|
||||||
|
|
@ -14,7 +14,7 @@
|
||||||
5. Run `haxelib --global install hmm` and then `haxelib --global run hmm setup` to install hmm.json
|
5. Run `haxelib --global install hmm` and then `haxelib --global run hmm setup` to install hmm.json
|
||||||
6. Run `hmm install` to install all haxelibs of the current branch
|
6. Run `hmm install` to install all haxelibs of the current branch
|
||||||
7. Run `haxelib run lime setup` to set up lime
|
7. Run `haxelib run lime setup` to set up lime
|
||||||
8. Platform setup
|
8. Perform additional platform setup
|
||||||
- For Windows, download the [Visual Studio Build Tools](https://aka.ms/vs/17/release/vs_BuildTools.exe)
|
- For Windows, download the [Visual Studio Build Tools](https://aka.ms/vs/17/release/vs_BuildTools.exe)
|
||||||
- When prompted, select "Individual Components" and make sure to download the following:
|
- When prompted, select "Individual Components" and make sure to download the following:
|
||||||
- MSVC v143 VS 2022 C++ x64/x86 build tools
|
- MSVC v143 VS 2022 C++ x64/x86 build tools
|
||||||
|
|
@ -22,8 +22,24 @@
|
||||||
- Mac: [`lime setup mac` Documentation](https://lime.openfl.org/docs/advanced-setup/macos/)
|
- Mac: [`lime setup mac` Documentation](https://lime.openfl.org/docs/advanced-setup/macos/)
|
||||||
- Linux: [`lime setup linux` Documentation](https://lime.openfl.org/docs/advanced-setup/linux/)
|
- Linux: [`lime setup linux` Documentation](https://lime.openfl.org/docs/advanced-setup/linux/)
|
||||||
- HTML5: Compiles without any extra setup
|
- HTML5: Compiles without any extra setup
|
||||||
9. If you are targeting for native, you may need to run `lime rebuild PLATFORM` and `lime rebuild PLATFORM -debug`
|
9. If you are targeting for native, you may need to run `lime rebuild <PLATFORM>` and `lime rebuild <PLATFORM> -debug`
|
||||||
10. `lime test PLATFORM` ! Add `-debug` to enable several debug features such as time travel (`PgUp`/`PgDn` in Play State).
|
10. `lime test <PLATFORM>` to build and launch the game for your platform (for example, `lime test windows`)
|
||||||
|
|
||||||
|
## Build Flags
|
||||||
|
|
||||||
|
There are several useful build flags you can add to a build to affect how it works. A full list can be found in `project.hxp`, but here's information on some of them:
|
||||||
|
|
||||||
|
- `-debug` to build the game in debug mode. This automatically enables several useful debug features.
|
||||||
|
- This includes enabling in-game debug functions, disables compile-time optimizations, enabling asset redirection (see below), and enabling the VSCode debug server (which can slow the game on some machines but allows for powerful debugging through breakpoints).
|
||||||
|
- `-DGITHUB_BUILD` will enable in-game debug functions (such as the ability to time travel in a song by pressing `PgUp`/`PgDn`), without enabling the other stuff
|
||||||
|
- `-DFEATURE_POLYMOD_MODS` or `-DNO_FEATURE_POLYMOD_MODS` to forcibly enable or disable modding support.
|
||||||
|
- `-DREDIRECT_ASSETS_FOLDER` or `-DNO_REDIRECT_ASSETS_FOLDER` to forcibly enable or disable asset redirection.
|
||||||
|
- This feature causes the game to load exported assets from the project's assets folder rather than the exported one. Great for fast iteration, but the game
|
||||||
|
- `-DFEATURE_DISCORD_RPC` or `-DNO_FEATURE_DISCORD_RPC` to forcibly enable or disable support for Discord Rich Presence.
|
||||||
|
- `-DFEATURE_VIDEO_PLAYBACK` or `-DNO_FEATURE_VIDEO_PLAYBACK` to forcibly enable or disable video cutscene support.
|
||||||
|
- `-DFEATURE_CHART_EDITOR` or `-DNO_FEATURE_CHART_EDITOR` to forcibly enable or disable the chart editor in the Debug menu.
|
||||||
|
- `-DFEATURE_STAGE_EDITOR` to forcibly enable the experimental stage editor.
|
||||||
|
- `-DFEATURE_GHOST_TAPPING` to forcibly enable an experimental gameplay change to the anti-mash system.
|
||||||
|
|
||||||
# Troubleshooting - GO THROUGH THESE STEPS BEFORE OPENING ISSUES ON GITHUB!
|
# Troubleshooting - GO THROUGH THESE STEPS BEFORE OPENING ISSUES ON GITHUB!
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -567,6 +567,14 @@ class FunkinSound extends FlxSound implements ICloneable<FunkinSound>
|
||||||
|
|
||||||
return sound;
|
return sound;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Produces a string representation suitable for debugging.
|
||||||
|
*/
|
||||||
|
public override function toString():String
|
||||||
|
{
|
||||||
|
return 'FunkinSound(${this._label})';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -113,6 +113,11 @@ class SoundGroup extends FlxTypedGroup<FunkinSound>
|
||||||
public function play(forceRestart:Bool = false, startTime:Float = 0.0, ?endTime:Float)
|
public function play(forceRestart:Bool = false, startTime:Float = 0.0, ?endTime:Float)
|
||||||
{
|
{
|
||||||
forEachAlive(function(sound:FunkinSound) {
|
forEachAlive(function(sound:FunkinSound) {
|
||||||
|
if (sound.length < startTime)
|
||||||
|
{
|
||||||
|
// trace('Queuing sound (${sound.toString()} past its length! Skipping...)');
|
||||||
|
return;
|
||||||
|
}
|
||||||
sound.play(forceRestart, startTime, endTime);
|
sound.play(forceRestart, startTime, endTime);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -375,6 +375,13 @@ class FreeplayDJ extends FlxAtlasSprite
|
||||||
|
|
||||||
public function confirm():Void
|
public function confirm():Void
|
||||||
{
|
{
|
||||||
|
// We really don't want to play anything but the new character animation here.
|
||||||
|
if (PlayerRegistry.instance.hasNewCharacter())
|
||||||
|
{
|
||||||
|
currentState = NewUnlock;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
currentState = Confirm;
|
currentState = Confirm;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -397,6 +404,13 @@ class FreeplayDJ extends FlxAtlasSprite
|
||||||
|
|
||||||
public function fistPumpIntro():Void
|
public function fistPumpIntro():Void
|
||||||
{
|
{
|
||||||
|
// We really don't want to play anything but the new character animation here.
|
||||||
|
if (PlayerRegistry.instance.hasNewCharacter())
|
||||||
|
{
|
||||||
|
currentState = NewUnlock;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
currentState = FistPumpIntro;
|
currentState = FistPumpIntro;
|
||||||
var animPrefix = playableCharData.getAnimationPrefix('fistPump');
|
var animPrefix = playableCharData.getAnimationPrefix('fistPump');
|
||||||
playFlashAnimation(animPrefix, true, false, false, playableCharData.getFistPumpIntroStartFrame());
|
playFlashAnimation(animPrefix, true, false, false, playableCharData.getFistPumpIntroStartFrame());
|
||||||
|
|
@ -404,6 +418,13 @@ class FreeplayDJ extends FlxAtlasSprite
|
||||||
|
|
||||||
public function fistPump():Void
|
public function fistPump():Void
|
||||||
{
|
{
|
||||||
|
// We really don't want to play anything but the new character animation here.
|
||||||
|
if (PlayerRegistry.instance.hasNewCharacter())
|
||||||
|
{
|
||||||
|
currentState = NewUnlock;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
currentState = FistPump;
|
currentState = FistPump;
|
||||||
var animPrefix = playableCharData.getAnimationPrefix('fistPump');
|
var animPrefix = playableCharData.getAnimationPrefix('fistPump');
|
||||||
playFlashAnimation(animPrefix, true, false, false, playableCharData.getFistPumpLoopStartFrame());
|
playFlashAnimation(animPrefix, true, false, false, playableCharData.getFistPumpLoopStartFrame());
|
||||||
|
|
@ -411,6 +432,13 @@ class FreeplayDJ extends FlxAtlasSprite
|
||||||
|
|
||||||
public function fistPumpLossIntro():Void
|
public function fistPumpLossIntro():Void
|
||||||
{
|
{
|
||||||
|
// We really don't want to play anything but the new character animation here.
|
||||||
|
if (PlayerRegistry.instance.hasNewCharacter())
|
||||||
|
{
|
||||||
|
currentState = NewUnlock;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
currentState = FistPumpIntro;
|
currentState = FistPumpIntro;
|
||||||
var animPrefix = playableCharData.getAnimationPrefix('loss');
|
var animPrefix = playableCharData.getAnimationPrefix('loss');
|
||||||
playFlashAnimation(animPrefix, true, false, false, playableCharData.getFistPumpIntroBadStartFrame());
|
playFlashAnimation(animPrefix, true, false, false, playableCharData.getFistPumpIntroBadStartFrame());
|
||||||
|
|
@ -418,6 +446,13 @@ class FreeplayDJ extends FlxAtlasSprite
|
||||||
|
|
||||||
public function fistPumpLoss():Void
|
public function fistPumpLoss():Void
|
||||||
{
|
{
|
||||||
|
// We really don't want to play anything but the new character animation here.
|
||||||
|
if (PlayerRegistry.instance.hasNewCharacter())
|
||||||
|
{
|
||||||
|
currentState = NewUnlock;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
currentState = FistPump;
|
currentState = FistPump;
|
||||||
var animPrefix = playableCharData.getAnimationPrefix('loss');
|
var animPrefix = playableCharData.getAnimationPrefix('loss');
|
||||||
playFlashAnimation(animPrefix, true, false, false, playableCharData.getFistPumpLoopBadStartFrame());
|
playFlashAnimation(animPrefix, true, false, false, playableCharData.getFistPumpLoopBadStartFrame());
|
||||||
|
|
|
||||||
|
|
@ -358,6 +358,7 @@ class MainMenuState extends MusicBeatState
|
||||||
// Ctrl+Alt+Shift+W = Meet requirements for Pico Unlock
|
// Ctrl+Alt+Shift+W = Meet requirements for Pico Unlock
|
||||||
// Ctrl+Alt+Shift+L = Revoke requirements for Pico Unlock
|
// Ctrl+Alt+Shift+L = Revoke requirements for Pico Unlock
|
||||||
// Ctrl+Alt+Shift+R = Score/Rank conflict test
|
// Ctrl+Alt+Shift+R = Score/Rank conflict test
|
||||||
|
// Ctrl+Alt+Shift+N = Mark all characters as not seen
|
||||||
// Ctrl+Alt+Shift+E = Dump save data
|
// Ctrl+Alt+Shift+E = Dump save data
|
||||||
|
|
||||||
if (FlxG.keys.pressed.CONTROL && FlxG.keys.pressed.ALT && FlxG.keys.pressed.SHIFT && FlxG.keys.justPressed.P)
|
if (FlxG.keys.pressed.CONTROL && FlxG.keys.pressed.ALT && FlxG.keys.pressed.SHIFT && FlxG.keys.justPressed.P)
|
||||||
|
|
@ -433,6 +434,12 @@ class MainMenuState extends MusicBeatState
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (FlxG.keys.pressed.CONTROL && FlxG.keys.pressed.ALT && FlxG.keys.pressed.SHIFT && FlxG.keys.justPressed.N)
|
||||||
|
{
|
||||||
|
@:privateAccess
|
||||||
|
funkin.save.Save.instance.data.unlocks.charactersSeen = ["bf"];
|
||||||
|
}
|
||||||
|
|
||||||
if (FlxG.keys.pressed.CONTROL && FlxG.keys.pressed.ALT && FlxG.keys.pressed.SHIFT && FlxG.keys.justPressed.E)
|
if (FlxG.keys.pressed.CONTROL && FlxG.keys.pressed.ALT && FlxG.keys.pressed.SHIFT && FlxG.keys.justPressed.E)
|
||||||
{
|
{
|
||||||
funkin.save.Save.instance.debug_dumpSave();
|
funkin.save.Save.instance.debug_dumpSave();
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue