1
0
Fork 0
mirror of https://github.com/ninjamuffin99/Funkin.git synced 2025-12-01 08:37:17 +00:00

Merge pull request #616 from FunkinCrew/feature/freeplay-keybinds

[FUNK-391] Rebindable controls for the Freeplay menu
This commit is contained in:
Cameron Taylor 2024-06-11 11:49:24 -04:00 committed by GitHub
commit 381e0104e9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 141 additions and 108 deletions

View file

@ -58,7 +58,11 @@ class Controls extends FlxActionSet
var _back = new FunkinAction(Action.BACK); var _back = new FunkinAction(Action.BACK);
var _pause = new FunkinAction(Action.PAUSE); var _pause = new FunkinAction(Action.PAUSE);
var _reset = new FunkinAction(Action.RESET); var _reset = new FunkinAction(Action.RESET);
var _screenshot = new FunkinAction(Action.SCREENSHOT); var _window_screenshot = new FunkinAction(Action.WINDOW_SCREENSHOT);
var _window_fullscreen = new FunkinAction(Action.WINDOW_FULLSCREEN);
var _freeplay_favorite = new FunkinAction(Action.FREEPLAY_FAVORITE);
var _freeplay_left = new FunkinAction(Action.FREEPLAY_LEFT);
var _freeplay_right = new FunkinAction(Action.FREEPLAY_RIGHT);
var _cutscene_advance = new FunkinAction(Action.CUTSCENE_ADVANCE); var _cutscene_advance = new FunkinAction(Action.CUTSCENE_ADVANCE);
var _debug_menu = new FunkinAction(Action.DEBUG_MENU); var _debug_menu = new FunkinAction(Action.DEBUG_MENU);
var _debug_chart = new FunkinAction(Action.DEBUG_CHART); var _debug_chart = new FunkinAction(Action.DEBUG_CHART);
@ -66,7 +70,6 @@ class Controls extends FlxActionSet
var _volume_up = new FunkinAction(Action.VOLUME_UP); var _volume_up = new FunkinAction(Action.VOLUME_UP);
var _volume_down = new FunkinAction(Action.VOLUME_DOWN); var _volume_down = new FunkinAction(Action.VOLUME_DOWN);
var _volume_mute = new FunkinAction(Action.VOLUME_MUTE); var _volume_mute = new FunkinAction(Action.VOLUME_MUTE);
var _fullscreen = new FunkinAction(Action.FULLSCREEN);
var byName:Map<String, FunkinAction> = new Map<String, FunkinAction>(); var byName:Map<String, FunkinAction> = new Map<String, FunkinAction>();
@ -233,10 +236,30 @@ class Controls extends FlxActionSet
inline function get_RESET() inline function get_RESET()
return _reset.check(); return _reset.check();
public var SCREENSHOT(get, never):Bool; public var WINDOW_FULLSCREEN(get, never):Bool;
inline function get_SCREENSHOT() inline function get_WINDOW_FULLSCREEN()
return _screenshot.check(); return _window_fullscreen.check();
public var WINDOW_SCREENSHOT(get, never):Bool;
inline function get_WINDOW_SCREENSHOT()
return _window_screenshot.check();
public var FREEPLAY_FAVORITE(get, never):Bool;
inline function get_FREEPLAY_FAVORITE()
return _freeplay_favorite.check();
public var FREEPLAY_LEFT(get, never):Bool;
inline function get_FREEPLAY_LEFT()
return _freeplay_left.check();
public var FREEPLAY_RIGHT(get, never):Bool;
inline function get_FREEPLAY_RIGHT()
return _freeplay_right.check();
public var CUTSCENE_ADVANCE(get, never):Bool; public var CUTSCENE_ADVANCE(get, never):Bool;
@ -273,11 +296,6 @@ class Controls extends FlxActionSet
inline function get_VOLUME_MUTE() inline function get_VOLUME_MUTE()
return _volume_mute.check(); return _volume_mute.check();
public var FULLSCREEN(get, never):Bool;
inline function get_FULLSCREEN()
return _fullscreen.check();
public function new(name, scheme:KeyboardScheme = null) public function new(name, scheme:KeyboardScheme = null)
{ {
super(name); super(name);
@ -294,7 +312,11 @@ class Controls extends FlxActionSet
add(_back); add(_back);
add(_pause); add(_pause);
add(_reset); add(_reset);
add(_screenshot); add(_window_screenshot);
add(_window_fullscreen);
add(_freeplay_favorite);
add(_freeplay_left);
add(_freeplay_right);
add(_cutscene_advance); add(_cutscene_advance);
add(_debug_menu); add(_debug_menu);
add(_debug_chart); add(_debug_chart);
@ -302,7 +324,6 @@ class Controls extends FlxActionSet
add(_volume_up); add(_volume_up);
add(_volume_down); add(_volume_down);
add(_volume_mute); add(_volume_mute);
add(_fullscreen);
for (action in digitalActions) { for (action in digitalActions) {
if (Std.isOfType(action, FunkinAction)) { if (Std.isOfType(action, FunkinAction)) {
@ -398,7 +419,11 @@ class Controls extends FlxActionSet
case BACK: _back; case BACK: _back;
case PAUSE: _pause; case PAUSE: _pause;
case RESET: _reset; case RESET: _reset;
case SCREENSHOT: _screenshot; case WINDOW_SCREENSHOT: _window_screenshot;
case WINDOW_FULLSCREEN: _window_fullscreen;
case FREEPLAY_FAVORITE: _freeplay_favorite;
case FREEPLAY_LEFT: _freeplay_left;
case FREEPLAY_RIGHT: _freeplay_right;
case CUTSCENE_ADVANCE: _cutscene_advance; case CUTSCENE_ADVANCE: _cutscene_advance;
case DEBUG_MENU: _debug_menu; case DEBUG_MENU: _debug_menu;
case DEBUG_CHART: _debug_chart; case DEBUG_CHART: _debug_chart;
@ -406,7 +431,6 @@ class Controls extends FlxActionSet
case VOLUME_UP: _volume_up; case VOLUME_UP: _volume_up;
case VOLUME_DOWN: _volume_down; case VOLUME_DOWN: _volume_down;
case VOLUME_MUTE: _volume_mute; case VOLUME_MUTE: _volume_mute;
case FULLSCREEN: _fullscreen;
} }
} }
@ -466,8 +490,16 @@ class Controls extends FlxActionSet
func(_pause, JUST_PRESSED); func(_pause, JUST_PRESSED);
case RESET: case RESET:
func(_reset, JUST_PRESSED); func(_reset, JUST_PRESSED);
case SCREENSHOT: case WINDOW_SCREENSHOT:
func(_screenshot, JUST_PRESSED); func(_window_screenshot, JUST_PRESSED);
case WINDOW_FULLSCREEN:
func(_window_fullscreen, JUST_PRESSED);
case FREEPLAY_FAVORITE:
func(_freeplay_favorite, JUST_PRESSED);
case FREEPLAY_LEFT:
func(_freeplay_left, JUST_PRESSED);
case FREEPLAY_RIGHT:
func(_freeplay_right, JUST_PRESSED);
case CUTSCENE_ADVANCE: case CUTSCENE_ADVANCE:
func(_cutscene_advance, JUST_PRESSED); func(_cutscene_advance, JUST_PRESSED);
case DEBUG_MENU: case DEBUG_MENU:
@ -482,8 +514,6 @@ class Controls extends FlxActionSet
func(_volume_down, JUST_PRESSED); func(_volume_down, JUST_PRESSED);
case VOLUME_MUTE: case VOLUME_MUTE:
func(_volume_mute, JUST_PRESSED); func(_volume_mute, JUST_PRESSED);
case FULLSCREEN:
func(_fullscreen, JUST_PRESSED);
} }
} }
@ -678,7 +708,11 @@ class Controls extends FlxActionSet
bindKeys(Control.BACK, getDefaultKeybinds(scheme, Control.BACK)); bindKeys(Control.BACK, getDefaultKeybinds(scheme, Control.BACK));
bindKeys(Control.PAUSE, getDefaultKeybinds(scheme, Control.PAUSE)); bindKeys(Control.PAUSE, getDefaultKeybinds(scheme, Control.PAUSE));
bindKeys(Control.RESET, getDefaultKeybinds(scheme, Control.RESET)); bindKeys(Control.RESET, getDefaultKeybinds(scheme, Control.RESET));
bindKeys(Control.SCREENSHOT, getDefaultKeybinds(scheme, Control.SCREENSHOT)); bindKeys(Control.WINDOW_SCREENSHOT, getDefaultKeybinds(scheme, Control.WINDOW_SCREENSHOT));
bindKeys(Control.WINDOW_FULLSCREEN, getDefaultKeybinds(scheme, Control.WINDOW_FULLSCREEN));
bindKeys(Control.FREEPLAY_FAVORITE, getDefaultKeybinds(scheme, Control.FREEPLAY_FAVORITE));
bindKeys(Control.FREEPLAY_LEFT, getDefaultKeybinds(scheme, Control.FREEPLAY_LEFT));
bindKeys(Control.FREEPLAY_RIGHT, getDefaultKeybinds(scheme, Control.FREEPLAY_RIGHT));
bindKeys(Control.CUTSCENE_ADVANCE, getDefaultKeybinds(scheme, Control.CUTSCENE_ADVANCE)); bindKeys(Control.CUTSCENE_ADVANCE, getDefaultKeybinds(scheme, Control.CUTSCENE_ADVANCE));
bindKeys(Control.DEBUG_MENU, getDefaultKeybinds(scheme, Control.DEBUG_MENU)); bindKeys(Control.DEBUG_MENU, getDefaultKeybinds(scheme, Control.DEBUG_MENU));
bindKeys(Control.DEBUG_CHART, getDefaultKeybinds(scheme, Control.DEBUG_CHART)); bindKeys(Control.DEBUG_CHART, getDefaultKeybinds(scheme, Control.DEBUG_CHART));
@ -686,7 +720,6 @@ class Controls extends FlxActionSet
bindKeys(Control.VOLUME_UP, getDefaultKeybinds(scheme, Control.VOLUME_UP)); bindKeys(Control.VOLUME_UP, getDefaultKeybinds(scheme, Control.VOLUME_UP));
bindKeys(Control.VOLUME_DOWN, getDefaultKeybinds(scheme, Control.VOLUME_DOWN)); bindKeys(Control.VOLUME_DOWN, getDefaultKeybinds(scheme, Control.VOLUME_DOWN));
bindKeys(Control.VOLUME_MUTE, getDefaultKeybinds(scheme, Control.VOLUME_MUTE)); bindKeys(Control.VOLUME_MUTE, getDefaultKeybinds(scheme, Control.VOLUME_MUTE));
bindKeys(Control.FULLSCREEN, getDefaultKeybinds(scheme, Control.FULLSCREEN));
bindMobileLol(); bindMobileLol();
} }
@ -707,7 +740,11 @@ class Controls extends FlxActionSet
case Control.BACK: return [X, BACKSPACE, ESCAPE]; case Control.BACK: return [X, BACKSPACE, ESCAPE];
case Control.PAUSE: return [P, ENTER, ESCAPE]; case Control.PAUSE: return [P, ENTER, ESCAPE];
case Control.RESET: return [R]; case Control.RESET: return [R];
case Control.SCREENSHOT: return [F3]; // TODO: Change this back to PrintScreen case Control.WINDOW_FULLSCREEN: return [F11]; // We use F for other things LOL.
case Control.WINDOW_SCREENSHOT: return [F3];
case Control.FREEPLAY_FAVORITE: return [F]; // Favorite a song on the menu
case Control.FREEPLAY_LEFT: return [Q]; // Switch tabs on the menu
case Control.FREEPLAY_RIGHT: return [E]; // Switch tabs on the menu
case Control.CUTSCENE_ADVANCE: return [Z, ENTER]; case Control.CUTSCENE_ADVANCE: return [Z, ENTER];
case Control.DEBUG_MENU: return [GRAVEACCENT]; case Control.DEBUG_MENU: return [GRAVEACCENT];
case Control.DEBUG_CHART: return []; case Control.DEBUG_CHART: return [];
@ -715,8 +752,6 @@ class Controls extends FlxActionSet
case Control.VOLUME_UP: return [PLUS, NUMPADPLUS]; case Control.VOLUME_UP: return [PLUS, NUMPADPLUS];
case Control.VOLUME_DOWN: return [MINUS, NUMPADMINUS]; case Control.VOLUME_DOWN: return [MINUS, NUMPADMINUS];
case Control.VOLUME_MUTE: return [ZERO, NUMPADZERO]; case Control.VOLUME_MUTE: return [ZERO, NUMPADZERO];
case Control.FULLSCREEN: return [FlxKey.F11]; // We use F for other things LOL.
} }
case Duo(true): case Duo(true):
switch (control) { switch (control) {
@ -732,7 +767,11 @@ class Controls extends FlxActionSet
case Control.BACK: return [H, X]; case Control.BACK: return [H, X];
case Control.PAUSE: return [ONE]; case Control.PAUSE: return [ONE];
case Control.RESET: return [R]; case Control.RESET: return [R];
case Control.SCREENSHOT: return [PRINTSCREEN]; case Control.WINDOW_SCREENSHOT: return [F3];
case Control.WINDOW_FULLSCREEN: return [F11];
case Control.FREEPLAY_FAVORITE: return [F]; // Favorite a song on the menu
case Control.FREEPLAY_LEFT: return [Q]; // Switch tabs on the menu
case Control.FREEPLAY_RIGHT: return [E]; // Switch tabs on the menu
case Control.CUTSCENE_ADVANCE: return [G, Z]; case Control.CUTSCENE_ADVANCE: return [G, Z];
case Control.DEBUG_MENU: return [GRAVEACCENT]; case Control.DEBUG_MENU: return [GRAVEACCENT];
case Control.DEBUG_CHART: return []; case Control.DEBUG_CHART: return [];
@ -740,7 +779,6 @@ class Controls extends FlxActionSet
case Control.VOLUME_UP: return [PLUS]; case Control.VOLUME_UP: return [PLUS];
case Control.VOLUME_DOWN: return [MINUS]; case Control.VOLUME_DOWN: return [MINUS];
case Control.VOLUME_MUTE: return [ZERO]; case Control.VOLUME_MUTE: return [ZERO];
case Control.FULLSCREEN: return [FlxKey.F];
} }
case Duo(false): case Duo(false):
@ -757,15 +795,18 @@ class Controls extends FlxActionSet
case Control.BACK: return [ESCAPE]; case Control.BACK: return [ESCAPE];
case Control.PAUSE: return [ONE]; case Control.PAUSE: return [ONE];
case Control.RESET: return [R]; case Control.RESET: return [R];
case Control.SCREENSHOT: return [PRINTSCREEN]; case Control.WINDOW_SCREENSHOT: return [];
case Control.WINDOW_FULLSCREEN: return [];
case Control.FREEPLAY_FAVORITE: return [];
case Control.FREEPLAY_LEFT: return [];
case Control.FREEPLAY_RIGHT: return [];
case Control.CUTSCENE_ADVANCE: return [ENTER]; case Control.CUTSCENE_ADVANCE: return [ENTER];
case Control.DEBUG_MENU: return [GRAVEACCENT]; case Control.DEBUG_MENU: return [];
case Control.DEBUG_CHART: return []; case Control.DEBUG_CHART: return [];
case Control.DEBUG_STAGE: return []; case Control.DEBUG_STAGE: return [];
case Control.VOLUME_UP: return [NUMPADPLUS]; case Control.VOLUME_UP: return [NUMPADPLUS];
case Control.VOLUME_DOWN: return [NUMPADMINUS]; case Control.VOLUME_DOWN: return [NUMPADMINUS];
case Control.VOLUME_MUTE: return [NUMPADZERO]; case Control.VOLUME_MUTE: return [NUMPADZERO];
case Control.FULLSCREEN: return [];
} }
default: default:
@ -856,34 +897,37 @@ class Controls extends FlxActionSet
public function addDefaultGamepad(id):Void public function addDefaultGamepad(id):Void
{ {
addGamepadLiteral(id, [ addGamepadLiteral(id, [
Control.ACCEPT => getDefaultGamepadBinds(Control.ACCEPT), Control.ACCEPT => getDefaultGamepadBinds(Control.ACCEPT),
Control.BACK => getDefaultGamepadBinds(Control.BACK), Control.BACK => getDefaultGamepadBinds(Control.BACK),
Control.UI_UP => getDefaultGamepadBinds(Control.UI_UP), Control.UI_UP => getDefaultGamepadBinds(Control.UI_UP),
Control.UI_DOWN => getDefaultGamepadBinds(Control.UI_DOWN), Control.UI_DOWN => getDefaultGamepadBinds(Control.UI_DOWN),
Control.UI_LEFT => getDefaultGamepadBinds(Control.UI_LEFT), Control.UI_LEFT => getDefaultGamepadBinds(Control.UI_LEFT),
Control.UI_RIGHT => getDefaultGamepadBinds(Control.UI_RIGHT), Control.UI_RIGHT => getDefaultGamepadBinds(Control.UI_RIGHT),
// don't swap A/B or X/Y for switch on these. A is always the bottom face button
Control.NOTE_UP => getDefaultGamepadBinds(Control.NOTE_UP), Control.NOTE_UP => getDefaultGamepadBinds(Control.NOTE_UP),
Control.NOTE_DOWN => getDefaultGamepadBinds(Control.NOTE_DOWN), Control.NOTE_DOWN => getDefaultGamepadBinds(Control.NOTE_DOWN),
Control.NOTE_LEFT => getDefaultGamepadBinds(Control.NOTE_LEFT), Control.NOTE_LEFT => getDefaultGamepadBinds(Control.NOTE_LEFT),
Control.NOTE_RIGHT => getDefaultGamepadBinds(Control.NOTE_RIGHT), Control.NOTE_RIGHT => getDefaultGamepadBinds(Control.NOTE_RIGHT),
Control.PAUSE => getDefaultGamepadBinds(Control.PAUSE), Control.PAUSE => getDefaultGamepadBinds(Control.PAUSE),
Control.RESET => getDefaultGamepadBinds(Control.RESET), Control.RESET => getDefaultGamepadBinds(Control.RESET),
// Control.SCREENSHOT => [], Control.WINDOW_FULLSCREEN => getDefaultGamepadBinds(Control.WINDOW_FULLSCREEN),
// Control.VOLUME_UP => [RIGHT_SHOULDER], Control.WINDOW_SCREENSHOT => getDefaultGamepadBinds(Control.WINDOW_SCREENSHOT),
// Control.VOLUME_DOWN => [LEFT_SHOULDER],
// Control.VOLUME_MUTE => [RIGHT_TRIGGER],
Control.CUTSCENE_ADVANCE => getDefaultGamepadBinds(Control.CUTSCENE_ADVANCE), Control.CUTSCENE_ADVANCE => getDefaultGamepadBinds(Control.CUTSCENE_ADVANCE),
// Control.DEBUG_MENU Control.FREEPLAY_FAVORITE => getDefaultGamepadBinds(Control.FREEPLAY_FAVORITE),
// Control.DEBUG_CHART Control.FREEPLAY_LEFT => getDefaultGamepadBinds(Control.FREEPLAY_LEFT),
Control.FREEPLAY_RIGHT => getDefaultGamepadBinds(Control.FREEPLAY_RIGHT),
Control.VOLUME_UP => getDefaultGamepadBinds(Control.VOLUME_UP),
Control.VOLUME_DOWN => getDefaultGamepadBinds(Control.VOLUME_DOWN),
Control.VOLUME_MUTE => getDefaultGamepadBinds(Control.VOLUME_MUTE),
Control.DEBUG_MENU => getDefaultGamepadBinds(Control.DEBUG_MENU),
Control.DEBUG_CHART => getDefaultGamepadBinds(Control.DEBUG_CHART),
Control.DEBUG_STAGE => getDefaultGamepadBinds(Control.DEBUG_STAGE),
]); ]);
} }
function getDefaultGamepadBinds(control:Control):Array<FlxGamepadInputID> { function getDefaultGamepadBinds(control:Control):Array<FlxGamepadInputID> {
switch(control) { switch(control) {
case Control.ACCEPT: return [#if switch B #else A #end]; case Control.ACCEPT: return [#if switch B #else A #end];
case Control.BACK: return [#if switch A #else B #end, FlxGamepadInputID.BACK]; case Control.BACK: return [#if switch A #else B #end];
case Control.UI_UP: return [DPAD_UP, LEFT_STICK_DIGITAL_UP]; case Control.UI_UP: return [DPAD_UP, LEFT_STICK_DIGITAL_UP];
case Control.UI_DOWN: return [DPAD_DOWN, LEFT_STICK_DIGITAL_DOWN]; case Control.UI_DOWN: return [DPAD_DOWN, LEFT_STICK_DIGITAL_DOWN];
case Control.UI_LEFT: return [DPAD_LEFT, LEFT_STICK_DIGITAL_LEFT]; case Control.UI_LEFT: return [DPAD_LEFT, LEFT_STICK_DIGITAL_LEFT];
@ -893,15 +937,19 @@ class Controls extends FlxActionSet
case Control.NOTE_LEFT: return [DPAD_LEFT, X, LEFT_STICK_DIGITAL_LEFT, RIGHT_STICK_DIGITAL_LEFT]; case Control.NOTE_LEFT: return [DPAD_LEFT, X, LEFT_STICK_DIGITAL_LEFT, RIGHT_STICK_DIGITAL_LEFT];
case Control.NOTE_RIGHT: return [DPAD_RIGHT, B, LEFT_STICK_DIGITAL_RIGHT, RIGHT_STICK_DIGITAL_RIGHT]; case Control.NOTE_RIGHT: return [DPAD_RIGHT, B, LEFT_STICK_DIGITAL_RIGHT, RIGHT_STICK_DIGITAL_RIGHT];
case Control.PAUSE: return [START]; case Control.PAUSE: return [START];
case Control.RESET: return [RIGHT_SHOULDER]; case Control.RESET: return [FlxGamepadInputID.BACK]; // Back (i.e. Select)
case Control.SCREENSHOT: return []; case Control.WINDOW_FULLSCREEN: [];
case Control.VOLUME_UP: return []; case Control.WINDOW_SCREENSHOT: [];
case Control.VOLUME_DOWN: return [];
case Control.VOLUME_MUTE: return [];
case Control.CUTSCENE_ADVANCE: return [A]; case Control.CUTSCENE_ADVANCE: return [A];
case Control.DEBUG_MENU: return []; case Control.FREEPLAY_FAVORITE: [FlxGamepadInputID.BACK]; // Back (i.e. Select)
case Control.DEBUG_CHART: return []; case Control.FREEPLAY_LEFT: [LEFT_SHOULDER];
case Control.FULLSCREEN: return []; case Control.FREEPLAY_RIGHT: [RIGHT_SHOULDER];
case Control.VOLUME_UP: [];
case Control.VOLUME_DOWN: [];
case Control.VOLUME_MUTE: [];
case Control.DEBUG_MENU: [];
case Control.DEBUG_CHART: [];
case Control.DEBUG_STAGE: [];
default: default:
// Fallthrough. // Fallthrough.
} }
@ -1392,7 +1440,7 @@ class FlxActionInputDigitalAndroid extends FlxActionInputDigital
override public function check(Action:FlxAction):Bool override public function check(Action:FlxAction):Bool
{ {
returnswitch(trigger) return switch(trigger)
{ {
#if android #if android
case PRESSED: FlxG.android.checkStatus(inputID, PRESSED) || FlxG.android.checkStatus(inputID, PRESSED); case PRESSED: FlxG.android.checkStatus(inputID, PRESSED) || FlxG.android.checkStatus(inputID, PRESSED);
@ -1425,14 +1473,18 @@ enum Control
UI_RIGHT; UI_RIGHT;
UI_DOWN; UI_DOWN;
RESET; RESET;
SCREENSHOT;
ACCEPT; ACCEPT;
BACK; BACK;
PAUSE; PAUSE;
FULLSCREEN;
// CUTSCENE // CUTSCENE
CUTSCENE_ADVANCE; CUTSCENE_ADVANCE;
// SCREENSHOT // FREEPLAY
FREEPLAY_FAVORITE;
FREEPLAY_LEFT;
FREEPLAY_RIGHT;
// WINDOW
WINDOW_SCREENSHOT;
WINDOW_FULLSCREEN;
// VOLUME // VOLUME
VOLUME_UP; VOLUME_UP;
VOLUME_DOWN; VOLUME_DOWN;
@ -1475,11 +1527,15 @@ enum abstract Action(String) to String from String
var BACK = "back"; var BACK = "back";
var PAUSE = "pause"; var PAUSE = "pause";
var RESET = "reset"; var RESET = "reset";
var FULLSCREEN = "fullscreen"; // WINDOW
// SCREENSHOT var WINDOW_FULLSCREEN = "window_fullscreen";
var SCREENSHOT = "screenshot"; var WINDOW_SCREENSHOT = "window_screenshot";
// CUTSCENE // CUTSCENE
var CUTSCENE_ADVANCE = "cutscene_advance"; var CUTSCENE_ADVANCE = "cutscene_advance";
// FREEPLAY
var FREEPLAY_FAVORITE = "freeplay_favorite";
var FREEPLAY_LEFT = "freeplay_left";
var FREEPLAY_RIGHT = "freeplay_right";
// VOLUME // VOLUME
var VOLUME_UP = "volume_up"; var VOLUME_UP = "volume_up";
var VOLUME_DOWN = "volume_down"; var VOLUME_DOWN = "volume_down";

View file

@ -971,16 +971,18 @@ class FreeplayState extends MusicBeatSubState
grpCapsules.members[curSelected].ranking.scale.set(20, 20); grpCapsules.members[curSelected].ranking.scale.set(20, 20);
grpCapsules.members[curSelected].blurredRanking.scale.set(20, 20); grpCapsules.members[curSelected].blurredRanking.scale.set(20, 20);
grpCapsules.members[curSelected].ranking.animation.play(fromResults.newRank.getFreeplayRankIconAsset(), true); if (fromResults?.newRank != null) {
// grpCapsules.members[curSelected].ranking.animation.curAnim.name, true); grpCapsules.members[curSelected].ranking.animation.play(fromResults.newRank.getFreeplayRankIconAsset(), true);
}
FlxTween.tween(grpCapsules.members[curSelected].ranking, {"scale.x": 1, "scale.y": 1}, 0.1); FlxTween.tween(grpCapsules.members[curSelected].ranking, {"scale.x": 1, "scale.y": 1}, 0.1);
grpCapsules.members[curSelected].blurredRanking.animation.play(fromResults.newRank.getFreeplayRankIconAsset(), true); if (fromResults?.newRank != null) {
grpCapsules.members[curSelected].blurredRanking.animation.play(fromResults.newRank.getFreeplayRankIconAsset(), true);
}
FlxTween.tween(grpCapsules.members[curSelected].blurredRanking, {"scale.x": 1, "scale.y": 1}, 0.1); FlxTween.tween(grpCapsules.members[curSelected].blurredRanking, {"scale.x": 1, "scale.y": 1}, 0.1);
new FlxTimer().start(0.1, _ -> { new FlxTimer().start(0.1, _ -> {
// trace(grpCapsules.members[curSelected].ranking.rank);
if (fromResults?.oldRank != null) if (fromResults?.oldRank != null)
{ {
grpCapsules.members[curSelected].fakeRanking.visible = false; grpCapsules.members[curSelected].fakeRanking.visible = false;
@ -1009,7 +1011,6 @@ class FreeplayState extends MusicBeatSubState
FunkinSound.playOnce(Paths.sound('ranks/rankinnormal')); FunkinSound.playOnce(Paths.sound('ranks/rankinnormal'));
} }
rankCamera.zoom = 1.3; rankCamera.zoom = 1.3;
// FlxTween.tween(rankCamera, {"zoom": 1.4}, 0.3, {ease: FlxEase.elasticOut});
FlxTween.tween(rankCamera, {"zoom": 1.5}, 0.3, {ease: FlxEase.backInOut}); FlxTween.tween(rankCamera, {"zoom": 1.5}, 0.3, {ease: FlxEase.backInOut});
@ -1027,13 +1028,11 @@ class FreeplayState extends MusicBeatSubState
new FlxTimer().start(0.4, _ -> { new FlxTimer().start(0.4, _ -> {
FlxTween.tween(funnyCam, {"zoom": 1}, 0.8, {ease: FlxEase.sineIn}); FlxTween.tween(funnyCam, {"zoom": 1}, 0.8, {ease: FlxEase.sineIn});
FlxTween.tween(rankCamera, {"zoom": 1.2}, 0.8, {ease: FlxEase.backIn}); FlxTween.tween(rankCamera, {"zoom": 1.2}, 0.8, {ease: FlxEase.backIn});
// IntervalShake.shake(grpCapsules.members[curSelected], 0.8 + 0.5, 1 / 24, 0, 2, FlxEase.quadIn);
FlxTween.tween(grpCapsules.members[curSelected], {x: originalPos.x - 7, y: originalPos.y - 80}, 0.8 + 0.5, {ease: FlxEase.quartIn}); FlxTween.tween(grpCapsules.members[curSelected], {x: originalPos.x - 7, y: originalPos.y - 80}, 0.8 + 0.5, {ease: FlxEase.quartIn});
}); });
new FlxTimer().start(0.6, _ -> { new FlxTimer().start(0.6, _ -> {
rankAnimSlam(fromResults); rankAnimSlam(fromResults);
// IntervalShake.shake(grpCapsules.members[curSelected].capsule, 0.3, 1 / 30, 0, 0.3, FlxEase.quartIn);
}); });
} }
@ -1198,51 +1197,9 @@ class FreeplayState extends MusicBeatSubState
// { // {
// rankAnimSlam(fromResultsParams); // rankAnimSlam(fromResultsParams);
// } // }
if (FlxG.keys.justPressed.G)
{
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)
{
sparksADD.y -= 2;
trace(sparksADD.x, sparksADD.y);
}
if (FlxG.keys.justPressed.J)
{
sparksADD.x -= 2;
trace(sparksADD.x, sparksADD.y);
}
if (FlxG.keys.justPressed.L)
{
sparksADD.x += 2;
trace(sparksADD.x, sparksADD.y);
}
if (FlxG.keys.justPressed.K)
{
sparksADD.y += 2;
trace(sparksADD.x, sparksADD.y);
}
#end #end
if (FlxG.keys.justPressed.F && !busy) if (controls.FREEPLAY_FAVORITE && !busy)
{ {
var targetSong = grpCapsules.members[curSelected]?.songData; var targetSong = grpCapsules.members[curSelected]?.songData;
if (targetSong != null) if (targetSong != null)

View file

@ -8,6 +8,7 @@ import flixel.tweens.FlxTween;
import flixel.tweens.FlxEase; import flixel.tweens.FlxEase;
import flixel.util.FlxColor; import flixel.util.FlxColor;
import flixel.util.FlxTimer; import flixel.util.FlxTimer;
import funkin.input.Controls;
import funkin.graphics.adobeanimate.FlxAtlasSprite; import funkin.graphics.adobeanimate.FlxAtlasSprite;
class LetterSort extends FlxTypedSpriteGroup<FlxSprite> class LetterSort extends FlxTypedSpriteGroup<FlxSprite>
@ -69,14 +70,19 @@ class LetterSort extends FlxTypedSpriteGroup<FlxSprite>
changeSelection(0); changeSelection(0);
} }
var controls(get, never):Controls;
inline function get_controls():Controls
return PlayerSettings.player1.controls;
override function update(elapsed:Float):Void override function update(elapsed:Float):Void
{ {
super.update(elapsed); super.update(elapsed);
if (inputEnabled) if (inputEnabled)
{ {
if (FlxG.keys.justPressed.E) changeSelection(1); if (controls.FREEPLAY_LEFT) changeSelection(-1);
if (FlxG.keys.justPressed.Q) changeSelection(-1); if (controls.FREEPLAY_RIGHT) changeSelection(1);
} }
} }

View file

@ -28,6 +28,8 @@ class ControlsMenu extends funkin.ui.options.OptionsState.Page
[NOTE_UP, NOTE_DOWN, NOTE_LEFT, NOTE_RIGHT], [NOTE_UP, NOTE_DOWN, NOTE_LEFT, NOTE_RIGHT],
[UI_UP, UI_DOWN, UI_LEFT, UI_RIGHT, ACCEPT, BACK], [UI_UP, UI_DOWN, UI_LEFT, UI_RIGHT, ACCEPT, BACK],
[CUTSCENE_ADVANCE], [CUTSCENE_ADVANCE],
[FREEPLAY_FAVORITE, FREEPLAY_LEFT, FREEPLAY_RIGHT],
[WINDOW_FULLSCREEN, WINDOW_SCREENSHOT],
[VOLUME_UP, VOLUME_DOWN, VOLUME_MUTE], [VOLUME_UP, VOLUME_DOWN, VOLUME_MUTE],
[DEBUG_MENU, DEBUG_CHART] [DEBUG_MENU, DEBUG_CHART]
]; ];
@ -108,6 +110,18 @@ class ControlsMenu extends funkin.ui.options.OptionsState.Page
headers.add(new AtlasText(0, y, "CUTSCENE", AtlasFont.BOLD)).screenCenter(X); headers.add(new AtlasText(0, y, "CUTSCENE", AtlasFont.BOLD)).screenCenter(X);
y += spacer; y += spacer;
} }
else if (currentHeader != "FREEPLAY_" && name.indexOf("FREEPLAY_") == 0)
{
currentHeader = "FREEPLAY_";
headers.add(new AtlasText(0, y, "FREEPLAY", AtlasFont.BOLD)).screenCenter(X);
y += spacer;
}
else if (currentHeader != "WINDOW_" && name.indexOf("WINDOW_") == 0)
{
currentHeader = "WINDOW_";
headers.add(new AtlasText(0, y, "WINDOW", AtlasFont.BOLD)).screenCenter(X);
y += spacer;
}
else if (currentHeader != "VOLUME_" && name.indexOf("VOLUME_") == 0) else if (currentHeader != "VOLUME_" && name.indexOf("VOLUME_") == 0)
{ {
currentHeader = "VOLUME_"; currentHeader = "VOLUME_";
@ -123,10 +137,10 @@ class ControlsMenu extends funkin.ui.options.OptionsState.Page
if (currentHeader != null && name.indexOf(currentHeader) == 0) name = name.substr(currentHeader.length); if (currentHeader != null && name.indexOf(currentHeader) == 0) name = name.substr(currentHeader.length);
var label = labels.add(new AtlasText(150, y, name, AtlasFont.BOLD)); var label = labels.add(new AtlasText(100, y, name, AtlasFont.BOLD));
label.alpha = 0.6; label.alpha = 0.6;
for (i in 0...COLUMNS) for (i in 0...COLUMNS)
createItem(label.x + 400 + i * 300, y, control, i); createItem(label.x + 550 + i * 400, y, control, i);
y += spacer; y += spacer;
} }

View file

@ -92,7 +92,7 @@ class WindowUtil
}); });
openfl.Lib.current.stage.addEventListener(openfl.events.KeyboardEvent.KEY_DOWN, (e:openfl.events.KeyboardEvent) -> { openfl.Lib.current.stage.addEventListener(openfl.events.KeyboardEvent.KEY_DOWN, (e:openfl.events.KeyboardEvent) -> {
for (key in PlayerSettings.player1.controls.getKeysForAction(FULLSCREEN)) for (key in PlayerSettings.player1.controls.getKeysForAction(WINDOW_FULLSCREEN))
{ {
if (e.keyCode == key) if (e.keyCode == key)
{ {

View file

@ -103,7 +103,7 @@ class ScreenshotPlugin extends FlxBasic
public function hasPressedScreenshot():Bool public function hasPressedScreenshot():Bool
{ {
return PlayerSettings.player1.controls.SCREENSHOT; return PlayerSettings.player1.controls.WINDOW_SCREENSHOT;
} }
public function updatePreferences():Void public function updatePreferences():Void