home and end can now jump to the beginning and end of freeplay

This commit is contained in:
Abnormal 2025-02-04 09:34:31 -06:00 committed by Eric
parent 0e0c4aeb77
commit bb974c2642
2 changed files with 48 additions and 0 deletions
source/funkin

View file

@ -67,6 +67,8 @@ class Controls extends FlxActionSet
var _freeplay_left = new FunkinAction(Action.FREEPLAY_LEFT);
var _freeplay_right = new FunkinAction(Action.FREEPLAY_RIGHT);
var _freeplay_char_select = new FunkinAction(Action.FREEPLAY_CHAR_SELECT);
var _freeplay_top_scroll = new FunkinAction(Action.FREEPLAY_TOP_SCROLL);
var _freeplay_bottom_scroll = new FunkinAction(Action.FREEPLAY_BOTTOM_SCROLL);
var _cutscene_advance = new FunkinAction(Action.CUTSCENE_ADVANCE);
var _debug_menu = new FunkinAction(Action.DEBUG_MENU);
#if FEATURE_CHART_EDITOR
@ -276,6 +278,16 @@ class Controls extends FlxActionSet
inline function get_FREEPLAY_CHAR_SELECT()
return _freeplay_char_select.check();
public var FREEPLAY_BOTTOM_SCROLL(get, never):Bool;
inline function get_FREEPLAY_BOTTOM_SCROLL()
return _freeplay_bottom_scroll.check();
public var FREEPLAY_TOP_SCROLL(get, never):Bool;
inline function get_FREEPLAY_TOP_SCROLL()
return _freeplay_top_scroll.check();
public var CUTSCENE_ADVANCE(get, never):Bool;
inline function get_CUTSCENE_ADVANCE()
@ -337,6 +349,8 @@ class Controls extends FlxActionSet
add(_freeplay_left);
add(_freeplay_right);
add(_freeplay_char_select);
add(_freeplay_bottom_scroll);
add(_freeplay_top_scroll);
add(_cutscene_advance);
add(_debug_menu);
#if FEATURE_CHART_EDITOR add(_debug_chart); #end
@ -462,6 +476,8 @@ class Controls extends FlxActionSet
case FREEPLAY_LEFT: _freeplay_left;
case FREEPLAY_RIGHT: _freeplay_right;
case FREEPLAY_CHAR_SELECT: _freeplay_char_select;
case FREEPLAY_BOTTOM_SCROLL: _freeplay_bottom_scroll;
case FREEPLAY_TOP_SCROLL: _freeplay_top_scroll;
case CUTSCENE_ADVANCE: _cutscene_advance;
case DEBUG_MENU: _debug_menu;
#if FEATURE_CHART_EDITOR case DEBUG_CHART: _debug_chart; #end
@ -542,6 +558,10 @@ class Controls extends FlxActionSet
func(_freeplay_right, JUST_PRESSED);
case FREEPLAY_CHAR_SELECT:
func(_freeplay_char_select, JUST_PRESSED);
case FREEPLAY_BOTTOM_SCROLL:
func(_freeplay_bottom_scroll, JUST_PRESSED);
case FREEPLAY_TOP_SCROLL:
func(_freeplay_top_scroll, JUST_PRESSED);
case CUTSCENE_ADVANCE:
func(_cutscene_advance, JUST_PRESSED);
case DEBUG_MENU:
@ -770,6 +790,8 @@ class Controls extends FlxActionSet
bindKeys(Control.FREEPLAY_LEFT, getDefaultKeybinds(scheme, Control.FREEPLAY_LEFT));
bindKeys(Control.FREEPLAY_RIGHT, getDefaultKeybinds(scheme, Control.FREEPLAY_RIGHT));
bindKeys(Control.FREEPLAY_CHAR_SELECT, getDefaultKeybinds(scheme, Control.FREEPLAY_CHAR_SELECT));
bindKeys(Control.FREEPLAY_BOTTOM_SCROLL, getDefaultKeybinds(scheme, Control.FREEPLAY_BOTTOM_SCROLL));
bindKeys(Control.FREEPLAY_TOP_SCROLL, getDefaultKeybinds(scheme, Control.FREEPLAY_TOP_SCROLL));
bindKeys(Control.CUTSCENE_ADVANCE, getDefaultKeybinds(scheme, Control.CUTSCENE_ADVANCE));
bindKeys(Control.DEBUG_MENU, getDefaultKeybinds(scheme, Control.DEBUG_MENU));
#if FEATURE_CHART_EDITOR
@ -810,6 +832,8 @@ class Controls extends FlxActionSet
case Control.FREEPLAY_LEFT: return [Q]; // Switch tabs on the menu
case Control.FREEPLAY_RIGHT: return [E]; // Switch tabs on the menu
case Control.FREEPLAY_CHAR_SELECT: return [TAB];
case Control.FREEPLAY_BOTTOM_SCROLL: return [END];
case Control.FREEPLAY_TOP_SCROLL: return [HOME];
case Control.CUTSCENE_ADVANCE: return [Z, ENTER];
case Control.DEBUG_MENU: return [GRAVEACCENT];
#if FEATURE_CHART_EDITOR case Control.DEBUG_CHART: return []; #end
@ -839,6 +863,8 @@ class Controls extends FlxActionSet
case Control.FREEPLAY_LEFT: return [Q]; // Switch tabs on the menu
case Control.FREEPLAY_RIGHT: return [E]; // Switch tabs on the menu
case Control.FREEPLAY_CHAR_SELECT: return [TAB];
case Control.FREEPLAY_BOTTOM_SCROLL: return [END];
case Control.FREEPLAY_TOP_SCROLL: return [HOME];
case Control.CUTSCENE_ADVANCE: return [G, Z];
case Control.DEBUG_MENU: return [GRAVEACCENT];
#if FEATURE_CHART_EDITOR case Control.DEBUG_CHART: return []; #end
@ -868,6 +894,8 @@ class Controls extends FlxActionSet
case Control.FREEPLAY_LEFT: return [];
case Control.FREEPLAY_RIGHT: return [];
case Control.FREEPLAY_CHAR_SELECT: return [];
case Control.FREEPLAY_BOTTOM_SCROLL: return [];
case Control.FREEPLAY_TOP_SCROLL: return [];
case Control.CUTSCENE_ADVANCE: return [ENTER];
case Control.DEBUG_MENU: return [];
#if FEATURE_CHART_EDITOR case Control.DEBUG_CHART: return []; #end
@ -984,6 +1012,8 @@ class Controls extends FlxActionSet
Control.FREEPLAY_LEFT => getDefaultGamepadBinds(Control.FREEPLAY_LEFT),
Control.FREEPLAY_RIGHT => getDefaultGamepadBinds(Control.FREEPLAY_RIGHT),
Control.FREEPLAY_CHAR_SELECT => getDefaultGamepadBinds(Control.FREEPLAY_CHAR_SELECT),
Control.FREEPLAY_BOTTOM_SCROLL => getDefaultGamepadBinds(Control.FREEPLAY_BOTTOM_SCROLL),
Control.FREEPLAY_TOP_SCROLL => getDefaultGamepadBinds(Control.FREEPLAY_TOP_SCROLL),
Control.VOLUME_UP => getDefaultGamepadBinds(Control.VOLUME_UP),
Control.VOLUME_DOWN => getDefaultGamepadBinds(Control.VOLUME_DOWN),
Control.VOLUME_MUTE => getDefaultGamepadBinds(Control.VOLUME_MUTE),
@ -1041,6 +1071,10 @@ class Controls extends FlxActionSet
return [RIGHT_SHOULDER];
case Control.FREEPLAY_CHAR_SELECT:
return [X];
case Control.FREEPLAY_BOTTOM_SCROLL:
return [];
case Control.FREEPLAY_TOP_SCROLL:
return [];
case Control.VOLUME_UP:
[];
case Control.VOLUME_DOWN:
@ -1620,6 +1654,8 @@ enum Control
FREEPLAY_LEFT;
FREEPLAY_RIGHT;
FREEPLAY_CHAR_SELECT;
FREEPLAY_BOTTOM_SCROLL;
FREEPLAY_TOP_SCROLL;
// WINDOW
#if FEATURE_SCREENSHOTS WINDOW_SCREENSHOT; #end
WINDOW_FULLSCREEN;
@ -1677,6 +1713,8 @@ enum abstract Action(String) to String from String
var FREEPLAY_LEFT = "freeplay_left";
var FREEPLAY_RIGHT = "freeplay_right";
var FREEPLAY_CHAR_SELECT = "freeplay_char_select";
var FREEPLAY_BOTTOM_SCROLL = "freeplay_bottom_scroll";
var FREEPLAY_TOP_SCROLL = "freeplay_top_scroll";
// VOLUME
var VOLUME_UP = "volume_up";
var VOLUME_DOWN = "volume_down";

View file

@ -1400,6 +1400,16 @@ class FreeplayState extends MusicBeatSubState
}
}
if (controls.FREEPLAY_BOTTOM_SCROLL && !busy)
{
changeSelection(grpCapsules.countLiving() - curSelected - 1);
}
if (controls.FREEPLAY_TOP_SCROLL && !busy)
{
changeSelection(-curSelected);
}
lerpScore = MathUtil.smoothLerp(lerpScore, intendedScore, elapsed, 0.5);
lerpCompletion = MathUtil.smoothLerp(lerpCompletion, intendedCompletion, elapsed, 0.5);