1
0
Fork 0
mirror of https://github.com/ninjamuffin99/Funkin.git synced 2024-11-15 19:33:36 +00:00

Merge branch 'rewrite/master' into anysad/tutorial-hey-events

This commit is contained in:
Cameron Taylor 2024-07-18 15:08:10 -04:00 committed by GitHub
commit f90c2bda99
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 37 additions and 112 deletions

View file

@ -503,7 +503,7 @@ class PlayState extends MusicBeatSubState
public var camGame:FlxCamera; public var camGame:FlxCamera;
/** /**
* The camera which contains, and controls visibility of, a video cutscene. * The camera which contains, and controls visibility of, a video cutscene, dialogue, pause menu and sticker transition.
*/ */
public var camCutscene:FlxCamera; public var camCutscene:FlxCamera;
@ -975,7 +975,7 @@ class PlayState extends MusicBeatSubState
FlxTransitionableState.skipNextTransIn = true; FlxTransitionableState.skipNextTransIn = true;
FlxTransitionableState.skipNextTransOut = true; FlxTransitionableState.skipNextTransOut = true;
pauseSubState.camera = camHUD; pauseSubState.camera = camCutscene;
openSubState(pauseSubState); openSubState(pauseSubState);
// boyfriendPos.put(); // TODO: Why is this here? // boyfriendPos.put(); // TODO: Why is this here?
} }
@ -1348,64 +1348,13 @@ class PlayState extends MusicBeatSubState
} }
/** /**
* Removes any references to the current stage, then clears the stage cache,
* then reloads all the stages.
*
* This is useful for when you want to edit a stage without reloading the whole game.
* Reloading works on both the JSON and the HXC, if applicable.
*
* Call this by pressing F5 on a debug build. * Call this by pressing F5 on a debug build.
*/ */
override function debug_refreshModules():Void override function reloadAssets():Void
{ {
// Prevent further gameplay updates, which will try to reference dead objects. funkin.modding.PolymodHandler.forceReloadAssets();
criticalFailure = true; lastParams.targetSong = SongRegistry.instance.fetchEntry(currentSong.id);
LoadingState.loadPlayState(lastParams);
// Remove the current stage. If the stage gets deleted while it's still in use,
// it'll probably crash the game or something.
if (this.currentStage != null)
{
remove(currentStage);
var event:ScriptEvent = new ScriptEvent(DESTROY, false);
ScriptEventDispatcher.callEvent(currentStage, event);
currentStage = null;
}
if (!overrideMusic)
{
// Stop the instrumental.
if (FlxG.sound.music != null)
{
FlxG.sound.music.destroy();
FlxG.sound.music = null;
}
// Stop the vocals.
if (vocals != null && vocals.exists)
{
vocals.destroy();
vocals = null;
}
}
else
{
// Stop the instrumental.
if (FlxG.sound.music != null)
{
FlxG.sound.music.stop();
}
// Stop the vocals.
if (vocals != null && vocals.exists)
{
vocals.stop();
}
}
super.debug_refreshModules();
var event:ScriptEvent = new ScriptEvent(CREATE, false);
ScriptEventDispatcher.callEvent(currentSong, event);
} }
override function stepHit():Bool override function stepHit():Bool
@ -1911,7 +1860,6 @@ class PlayState extends MusicBeatSubState
if (!result) return; if (!result) return;
isInCutscene = false; isInCutscene = false;
camCutscene.visible = false;
// TODO: Maybe tween in the camera after any cutscenes. // TODO: Maybe tween in the camera after any cutscenes.
camHUD.visible = true; camHUD.visible = true;

View file

@ -81,7 +81,6 @@ class VideoCutscene
// Trigger the cutscene. Don't play the song in the background. // Trigger the cutscene. Don't play the song in the background.
PlayState.instance.isInCutscene = true; PlayState.instance.isInCutscene = true;
PlayState.instance.camHUD.visible = false; PlayState.instance.camHUD.visible = false;
PlayState.instance.camCutscene.visible = true;
// Display a black screen to hide the game while the video is playing. // Display a black screen to hide the game while the video is playing.
blackScreen = new FlxSprite(-200, -200).makeGraphic(FlxG.width * 2, FlxG.height * 2, FlxColor.BLACK); blackScreen = new FlxSprite(-200, -200).makeGraphic(FlxG.width * 2, FlxG.height * 2, FlxColor.BLACK);
@ -305,7 +304,6 @@ class VideoCutscene
vid = null; vid = null;
#end #end
PlayState.instance.camCutscene.visible = true;
PlayState.instance.camHUD.visible = true; PlayState.instance.camHUD.visible = true;
FlxTween.tween(blackScreen, {alpha: 0}, transitionTime, FlxTween.tween(blackScreen, {alpha: 0}, transitionTime,

View file

@ -78,9 +78,6 @@ class MusicBeatState extends FlxTransitionableState implements IEventHandler
{ {
// Emergency exit button. // Emergency exit button.
if (FlxG.keys.justPressed.F4) FlxG.switchState(() -> new MainMenuState()); if (FlxG.keys.justPressed.F4) FlxG.switchState(() -> new MainMenuState());
// This can now be used in EVERY STATE YAY!
if (FlxG.keys.justPressed.F5) debug_refreshModules();
} }
override function update(elapsed:Float) override function update(elapsed:Float)
@ -114,12 +111,10 @@ class MusicBeatState extends FlxTransitionableState implements IEventHandler
ModuleHandler.callEvent(event); ModuleHandler.callEvent(event);
} }
function debug_refreshModules() function reloadAssets()
{ {
PolymodHandler.forceReloadAssets(); PolymodHandler.forceReloadAssets();
this.destroy();
// Create a new instance of the current state, so old data is cleared. // Create a new instance of the current state, so old data is cleared.
FlxG.resetState(); FlxG.resetState();
} }

View file

@ -72,9 +72,6 @@ class MusicBeatSubState extends FlxSubState implements IEventHandler
// Emergency exit button. // Emergency exit button.
if (FlxG.keys.justPressed.F4) FlxG.switchState(() -> new MainMenuState()); if (FlxG.keys.justPressed.F4) FlxG.switchState(() -> new MainMenuState());
// This can now be used in EVERY STATE YAY!
if (FlxG.keys.justPressed.F5) debug_refreshModules();
// Display Conductor info in the watch window. // Display Conductor info in the watch window.
FlxG.watch.addQuick("musicTime", FlxG.sound.music?.time ?? 0.0); FlxG.watch.addQuick("musicTime", FlxG.sound.music?.time ?? 0.0);
Conductor.watchQuick(conductorInUse); Conductor.watchQuick(conductorInUse);
@ -82,7 +79,7 @@ class MusicBeatSubState extends FlxSubState implements IEventHandler
dispatchEvent(new UpdateScriptEvent(elapsed)); dispatchEvent(new UpdateScriptEvent(elapsed));
} }
function debug_refreshModules() function reloadAssets()
{ {
PolymodHandler.forceReloadAssets(); PolymodHandler.forceReloadAssets();

View file

@ -282,6 +282,21 @@ class ChartEditorState extends UIState // UIState derives from MusicBeatState
*/ */
public static final WELCOME_MUSIC_FADE_IN_DURATION:Float = 10.0; public static final WELCOME_MUSIC_FADE_IN_DURATION:Float = 10.0;
/**
* A map of the keys for every live input style.
*/
public static final LIVE_INPUT_KEYS:Map<ChartEditorLiveInputStyle, Array<FlxKey>> = [
NumberKeys => [
FIVE, SIX, SEVEN, EIGHT,
ONE, TWO, THREE, FOUR
],
WASDKeys => [
LEFT, DOWN, UP, RIGHT,
A, S, W, D
],
None => []
];
/** /**
* INSTANCE DATA * INSTANCE DATA
*/ */
@ -5129,46 +5144,10 @@ class ChartEditorState extends UIState // UIState derives from MusicBeatState
function handlePlayhead():Void function handlePlayhead():Void
{ {
// Place notes at the playhead with the keyboard. // Place notes at the playhead with the keyboard.
switch (currentLiveInputStyle) for (note => key in LIVE_INPUT_KEYS[currentLiveInputStyle])
{ {
case ChartEditorLiveInputStyle.WASDKeys: if (FlxG.keys.checkStatus(key, JUST_PRESSED)) placeNoteAtPlayhead(note)
if (FlxG.keys.justPressed.A) placeNoteAtPlayhead(4); else if (FlxG.keys.checkStatus(key, JUST_RELEASED)) finishPlaceNoteAtPlayhead(note);
if (FlxG.keys.justReleased.A) finishPlaceNoteAtPlayhead(4);
if (FlxG.keys.justPressed.S) placeNoteAtPlayhead(5);
if (FlxG.keys.justReleased.S) finishPlaceNoteAtPlayhead(5);
if (FlxG.keys.justPressed.W) placeNoteAtPlayhead(6);
if (FlxG.keys.justReleased.W) finishPlaceNoteAtPlayhead(6);
if (FlxG.keys.justPressed.D) placeNoteAtPlayhead(7);
if (FlxG.keys.justReleased.D) finishPlaceNoteAtPlayhead(7);
if (FlxG.keys.justPressed.LEFT) placeNoteAtPlayhead(0);
if (FlxG.keys.justReleased.LEFT) finishPlaceNoteAtPlayhead(0);
if (FlxG.keys.justPressed.DOWN) placeNoteAtPlayhead(1);
if (FlxG.keys.justReleased.DOWN) finishPlaceNoteAtPlayhead(1);
if (FlxG.keys.justPressed.UP) placeNoteAtPlayhead(2);
if (FlxG.keys.justReleased.UP) finishPlaceNoteAtPlayhead(2);
if (FlxG.keys.justPressed.RIGHT) placeNoteAtPlayhead(3);
if (FlxG.keys.justReleased.RIGHT) finishPlaceNoteAtPlayhead(3);
case ChartEditorLiveInputStyle.NumberKeys:
// Flipped because Dad is on the left but represents data 0-3.
if (FlxG.keys.justPressed.ONE) placeNoteAtPlayhead(4);
if (FlxG.keys.justReleased.ONE) finishPlaceNoteAtPlayhead(4);
if (FlxG.keys.justPressed.TWO) placeNoteAtPlayhead(5);
if (FlxG.keys.justReleased.TWO) finishPlaceNoteAtPlayhead(5);
if (FlxG.keys.justPressed.THREE) placeNoteAtPlayhead(6);
if (FlxG.keys.justReleased.THREE) finishPlaceNoteAtPlayhead(6);
if (FlxG.keys.justPressed.FOUR) placeNoteAtPlayhead(7);
if (FlxG.keys.justReleased.FOUR) finishPlaceNoteAtPlayhead(7);
if (FlxG.keys.justPressed.FIVE) placeNoteAtPlayhead(0);
if (FlxG.keys.justReleased.FIVE) finishPlaceNoteAtPlayhead(0);
if (FlxG.keys.justPressed.SIX) placeNoteAtPlayhead(1);
if (FlxG.keys.justPressed.SEVEN) placeNoteAtPlayhead(2);
if (FlxG.keys.justReleased.SEVEN) finishPlaceNoteAtPlayhead(2);
if (FlxG.keys.justPressed.EIGHT) placeNoteAtPlayhead(3);
if (FlxG.keys.justReleased.EIGHT) finishPlaceNoteAtPlayhead(3);
case ChartEditorLiveInputStyle.None:
// Do nothing.
} }
// Place events at playhead. // Place events at playhead.

View file

@ -1,6 +1,9 @@
package funkin.util.plugins; package funkin.util.plugins;
import flixel.FlxG;
import flixel.FlxBasic; import flixel.FlxBasic;
import funkin.ui.MusicBeatState;
import funkin.ui.MusicBeatSubState;
/** /**
* A plugin which adds functionality to press `F5` to reload all game assets, then reload the current state. * A plugin which adds functionality to press `F5` to reload all game assets, then reload the current state.
@ -27,6 +30,10 @@ class ReloadAssetsDebugPlugin extends FlxBasic
#else #else
if (FlxG.keys.justPressed.F5) if (FlxG.keys.justPressed.F5)
#end #end
{
var state:Dynamic = FlxG.state;
if (state is MusicBeatState || state is MusicBeatSubState) state.reloadAssets();
else
{ {
funkin.modding.PolymodHandler.forceReloadAssets(); funkin.modding.PolymodHandler.forceReloadAssets();
@ -34,6 +41,7 @@ class ReloadAssetsDebugPlugin extends FlxBasic
FlxG.resetState(); FlxG.resetState();
} }
} }
}
public override function destroy():Void public override function destroy():Void
{ {