From 7a2b023f307c673d212ddec1817e97ef8933167e Mon Sep 17 00:00:00 2001 From: Cameron Taylor Date: Wed, 12 Jun 2024 15:29:44 -0400 Subject: [PATCH 01/22] gitmodules for dev repo --- .gitmodules | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index be5e0aaa8..452c0089b 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,6 @@ [submodule "assets"] path = assets - url = https://github.com/FunkinCrew/funkin.assets + url = https://github.com/FunkinCrew/Funkin-Assets-secret [submodule "art"] path = art - url = https://github.com/FunkinCrew/funkin.art + url = https://github.com/FunkinCrew/Funkin-Art-secret From 80981eee3733c3507250a37e2bff9807a481aa0c Mon Sep 17 00:00:00 2001 From: Cameron Taylor Date: Wed, 12 Jun 2024 15:41:42 -0400 Subject: [PATCH 02/22] inputs null fix --- source/funkin/input/Controls.hx | 370 +++++++++++++++++++------------- 1 file changed, 218 insertions(+), 152 deletions(-) diff --git a/source/funkin/input/Controls.hx b/source/funkin/input/Controls.hx index e2cae5613..f6c881f6d 100644 --- a/source/funkin/input/Controls.hx +++ b/source/funkin/input/Controls.hx @@ -31,6 +31,7 @@ class Controls extends FlxActionSet * Uses FlxActions to funnel various inputs to a single action. */ var _ui_up = new FunkinAction(Action.UI_UP); + var _ui_left = new FunkinAction(Action.UI_LEFT); var _ui_right = new FunkinAction(Action.UI_RIGHT); var _ui_down = new FunkinAction(Action.UI_DOWN); @@ -325,19 +326,18 @@ class Controls extends FlxActionSet add(_volume_down); add(_volume_mute); - for (action in digitalActions) { - if (Std.isOfType(action, FunkinAction)) { + for (action in digitalActions) + { + if (Std.isOfType(action, FunkinAction)) + { var funkinAction:FunkinAction = cast action; byName[funkinAction.name] = funkinAction; - if (funkinAction.namePressed != null) - byName[funkinAction.namePressed] = funkinAction; - if (funkinAction.nameReleased != null) - byName[funkinAction.nameReleased] = funkinAction; + if (funkinAction.namePressed != null) byName[funkinAction.namePressed] = funkinAction; + if (funkinAction.nameReleased != null) byName[funkinAction.nameReleased] = funkinAction; } } - if (scheme == null) - scheme = None; + if (scheme == null) scheme = None; setKeyboardScheme(scheme, false); } @@ -350,38 +350,38 @@ class Controls extends FlxActionSet public function check(name:Action, trigger:FlxInputState = JUST_PRESSED, gamepadOnly:Bool = false):Bool { #if debug - if (!byName.exists(name)) - throw 'Invalid name: $name'; + if (!byName.exists(name)) throw 'Invalid name: $name'; #end var action = byName[name]; - if (gamepadOnly) - return action.checkFiltered(trigger, GAMEPAD); + if (gamepadOnly) return action.checkFiltered(trigger, GAMEPAD); else return action.checkFiltered(trigger); } - public function getKeysForAction(name:Action):Array { + public function getKeysForAction(name:Action):Array + { #if debug - if (!byName.exists(name)) - throw 'Invalid name: $name'; + if (!byName.exists(name)) throw 'Invalid name: $name'; #end // TODO: Revert to `.map().filter()` once HashLink doesn't complain anymore. var result:Array = []; - for (input in byName[name].inputs) { + for (input in byName[name].inputs) + { if (input.device == KEYBOARD) result.push(input.inputID); } return result; } - public function getButtonsForAction(name:Action):Array { + public function getButtonsForAction(name:Action):Array + { #if debug - if (!byName.exists(name)) - throw 'Invalid name: $name'; + if (!byName.exists(name)) throw 'Invalid name: $name'; #end var result:Array = []; - for (input in byName[name].inputs) { + for (input in byName[name].inputs) + { if (input.device == GAMEPAD) result.push(input.inputID); } return result; @@ -405,7 +405,7 @@ class Controls extends FlxActionSet function getActionFromControl(control:Control):FlxActionDigital { - return switch(control) + return switch (control) { case UI_UP: _ui_up; case UI_DOWN: _ui_down; @@ -448,7 +448,7 @@ class Controls extends FlxActionSet */ function forEachBound(control:Control, func:FlxActionDigital->FlxInputState->Void) { - switch(control) + switch (control) { case UI_UP: func(_ui_up, PRESSED); @@ -519,10 +519,9 @@ class Controls extends FlxActionSet public function replaceBinding(control:Control, device:Device, toAdd:Int, toRemove:Int) { - if (toAdd == toRemove) - return; + if (toAdd == toRemove) return; - switch(device) + switch (device) { case Keys: forEachBound(control, function(action, state) replaceKey(action, toAdd, toRemove, state)); @@ -534,7 +533,8 @@ class Controls extends FlxActionSet function replaceKey(action:FlxActionDigital, toAdd:FlxKey, toRemove:FlxKey, state:FlxInputState) { - if (action.inputs.length == 0) { + if (action.inputs.length == 0) + { // Add the keybind, don't replace. addKeys(action, [toAdd], state); return; @@ -548,34 +548,44 @@ class Controls extends FlxActionSet if (input.device == KEYBOARD && input.inputID == toRemove) { - if (toAdd == FlxKey.NONE) { + if (toAdd == FlxKey.NONE) + { // Remove the keybind, don't replace. action.inputs.remove(input); - } else { + } + else + { // Replace the keybind. @:privateAccess action.inputs[i].inputID = toAdd; } hasReplaced = true; - } else if (input.device == KEYBOARD && input.inputID == toAdd) { + } + else if (input.device == KEYBOARD && input.inputID == toAdd) + { // This key is already bound! - if (hasReplaced) { + if (hasReplaced) + { // Remove the duplicate keybind, don't replace. action.inputs.remove(input); - } else { + } + else + { hasReplaced = true; } } } - if (!hasReplaced) { + if (!hasReplaced) + { addKeys(action, [toAdd], state); } } function replaceButton(action:FlxActionDigital, deviceID:Int, toAdd:FlxGamepadInputID, toRemove:FlxGamepadInputID, state:FlxInputState) { - if (action.inputs.length == 0) { + if (action.inputs.length == 0) + { addButtons(action, [toAdd], state, deviceID); return; } @@ -594,7 +604,8 @@ class Controls extends FlxActionSet } } - if (!hasReplaced) { + if (!hasReplaced) + { addButtons(action, [toAdd], state, deviceID); } } @@ -606,18 +617,16 @@ class Controls extends FlxActionSet var action = controls.byName[name]; for (input in action.inputs) { - if (device == null || isDevice(input, device)) - byName[name].add(cast input); + if (device == null || isDevice(input, device)) byName[name].add(cast input); } } - switch(device) + switch (device) { case null: // add all for (gamepad in controls.gamepadsAdded) - if (gamepadsAdded.indexOf(gamepad) == -1) - gamepadsAdded.push(gamepad); + if (gamepadsAdded.indexOf(gamepad) == -1) gamepadsAdded.push(gamepad); mergeKeyboardScheme(controls.keyboardScheme); @@ -637,7 +646,7 @@ class Controls extends FlxActionSet { if (scheme != None) { - switch(keyboardScheme) + switch (keyboardScheme) { case None: keyboardScheme = scheme; @@ -672,7 +681,8 @@ class Controls extends FlxActionSet static function addKeys(action:FlxActionDigital, keys:Array, state:FlxInputState) { - for (key in keys) { + for (key in keys) + { if (key == FlxKey.NONE) continue; // Ignore unbound keys. action.addKey(key, state); } @@ -684,15 +694,13 @@ class Controls extends FlxActionSet while (i-- > 0) { var input = action.inputs[i]; - if (input.device == KEYBOARD && keys.indexOf(cast input.inputID) != -1) - action.remove(input); + if (input.device == KEYBOARD && keys.indexOf(cast input.inputID) != -1) action.remove(input); } } public function setKeyboardScheme(scheme:KeyboardScheme, reset = true) { - if (reset) - removeKeyboard(); + if (reset) removeKeyboard(); keyboardScheme = scheme; @@ -724,10 +732,13 @@ class Controls extends FlxActionSet bindMobileLol(); } - function getDefaultKeybinds(scheme:KeyboardScheme, control:Control):Array { - switch (scheme) { + function getDefaultKeybinds(scheme:KeyboardScheme, control:Control):Array + { + switch (scheme) + { case Solo: - switch (control) { + switch (control) + { case Control.UI_UP: return [W, FlxKey.UP]; case Control.UI_DOWN: return [S, FlxKey.DOWN]; case Control.UI_LEFT: return [A, FlxKey.LEFT]; @@ -754,7 +765,8 @@ class Controls extends FlxActionSet case Control.VOLUME_MUTE: return [ZERO, NUMPADZERO]; } case Duo(true): - switch (control) { + switch (control) + { case Control.UI_UP: return [W]; case Control.UI_DOWN: return [S]; case Control.UI_LEFT: return [A]; @@ -779,10 +791,10 @@ class Controls extends FlxActionSet case Control.VOLUME_UP: return [PLUS]; case Control.VOLUME_DOWN: return [MINUS]; case Control.VOLUME_MUTE: return [ZERO]; - } case Duo(false): - switch (control) { + switch (control) + { case Control.UI_UP: return [FlxKey.UP]; case Control.UI_DOWN: return [FlxKey.DOWN]; case Control.UI_LEFT: return [FlxKey.LEFT]; @@ -807,7 +819,6 @@ class Controls extends FlxActionSet case Control.VOLUME_UP: return [NUMPADPLUS]; case Control.VOLUME_DOWN: return [NUMPADMINUS]; case Control.VOLUME_MUTE: return [NUMPADZERO]; - } default: // Fallthrough. @@ -834,8 +845,7 @@ class Controls extends FlxActionSet #end #if android - forEachBound(Control.BACK, function(action, pres) - { + forEachBound(Control.BACK, function(action, pres) { action.add(new FlxActionInputDigitalAndroid(FlxAndroidKey.BACK, JUST_PRESSED)); }); #end @@ -849,8 +859,7 @@ class Controls extends FlxActionSet while (i-- > 0) { var input = action.inputs[i]; - if (input.device == KEYBOARD) - action.remove(input); + if (input.device == KEYBOARD) action.remove(input); } } } @@ -862,11 +871,13 @@ class Controls extends FlxActionSet fromSaveData(padData, Gamepad(id)); } - public function getGamepadIds():Array { + public function getGamepadIds():Array + { return gamepadsAdded; } - public function getGamepads():Array { + public function getGamepads():Array + { return [for (id in gamepadsAdded) FlxG.gamepads.getByID(id)]; } @@ -886,8 +897,7 @@ class Controls extends FlxActionSet while (i-- > 0) { var input = action.inputs[i]; - if (isGamepad(input, deviceID)) - action.remove(input); + if (isGamepad(input, deviceID)) action.remove(input); } } @@ -924,32 +934,58 @@ class Controls extends FlxActionSet ]); } - function getDefaultGamepadBinds(control:Control):Array { - switch(control) { - case Control.ACCEPT: return [#if switch B #else A #end]; - case Control.BACK: return [#if switch A #else B #end]; - 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_LEFT: return [DPAD_LEFT, LEFT_STICK_DIGITAL_LEFT]; - case Control.UI_RIGHT: return [DPAD_RIGHT, LEFT_STICK_DIGITAL_RIGHT]; - case Control.NOTE_UP: return [DPAD_UP, Y, LEFT_STICK_DIGITAL_UP, RIGHT_STICK_DIGITAL_UP]; - case Control.NOTE_DOWN: return [DPAD_DOWN, A, LEFT_STICK_DIGITAL_DOWN, RIGHT_STICK_DIGITAL_DOWN]; - 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.PAUSE: return [START]; - case Control.RESET: return [FlxGamepadInputID.BACK]; // Back (i.e. Select) - case Control.WINDOW_FULLSCREEN: []; - case Control.WINDOW_SCREENSHOT: []; - case Control.CUTSCENE_ADVANCE: return [A]; - case Control.FREEPLAY_FAVORITE: [FlxGamepadInputID.BACK]; // Back (i.e. Select) - case Control.FREEPLAY_LEFT: [LEFT_SHOULDER]; - 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: []; + function getDefaultGamepadBinds(control:Control):Array + { + switch (control) + { + case Control.ACCEPT: + return [#if switch B #else A #end]; + case Control.BACK: + return [#if switch A #else B #end]; + 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_LEFT: + return [DPAD_LEFT, LEFT_STICK_DIGITAL_LEFT]; + case Control.UI_RIGHT: + return [DPAD_RIGHT, LEFT_STICK_DIGITAL_RIGHT]; + case Control.NOTE_UP: + return [DPAD_UP, Y, LEFT_STICK_DIGITAL_UP, RIGHT_STICK_DIGITAL_UP]; + case Control.NOTE_DOWN: + return [DPAD_DOWN, A, LEFT_STICK_DIGITAL_DOWN, RIGHT_STICK_DIGITAL_DOWN]; + 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.PAUSE: + return [START]; + case Control.RESET: + return [FlxGamepadInputID.BACK]; // Back (i.e. Select) + case Control.WINDOW_FULLSCREEN: + []; + case Control.WINDOW_SCREENSHOT: + []; + case Control.CUTSCENE_ADVANCE: + return [A]; + case Control.FREEPLAY_FAVORITE: + [FlxGamepadInputID.BACK]; // Back (i.e. Select) + case Control.FREEPLAY_LEFT: + [LEFT_SHOULDER]; + 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: // Fallthrough. } @@ -967,8 +1003,7 @@ class Controls extends FlxActionSet public function touchShit(control:Control, id) { - forEachBound(control, function(action, state) - { + forEachBound(control, function(action, state) { // action }); } @@ -984,7 +1019,8 @@ class Controls extends FlxActionSet inline static function addButtons(action:FlxActionDigital, buttons:Array, state, id) { - for (button in buttons) { + for (button in buttons) + { if (button == FlxGamepadInputID.NONE) continue; // Ignore unbound keys. action.addGamepad(button, state, id); } @@ -996,29 +1032,25 @@ class Controls extends FlxActionSet while (i-- > 0) { var input = action.inputs[i]; - if (isGamepad(input, gamepadID) && buttons.indexOf(cast input.inputID) != -1) - action.remove(input); + if (isGamepad(input, gamepadID) && buttons.indexOf(cast input.inputID) != -1) action.remove(input); } } public function getInputsFor(control:Control, device:Device, ?list:Array):Array { - if (list == null) - list = []; + if (list == null) list = []; - switch(device) + switch (device) { case Keys: for (input in getActionFromControl(control).inputs) { - if (input.device == KEYBOARD) - list.push(input.inputID); + if (input.device == KEYBOARD) list.push(input.inputID); } case Gamepad(id): for (input in getActionFromControl(control).inputs) { - if (isGamepad(input, id)) - list.push(input.inputID); + if (isGamepad(input, id)) list.push(input.inputID); } } return list; @@ -1026,7 +1058,7 @@ class Controls extends FlxActionSet public function removeDevice(device:Device) { - switch(device) + switch (device) { case Keys: setKeyboardScheme(None); @@ -1040,27 +1072,32 @@ class Controls extends FlxActionSet * An EMPTY array means the control is uninitialized and needs to be reset to default. * An array with a single FlxKey.NONE means the control was intentionally unbound by the user. */ - public function fromSaveData(data:Dynamic, device:Device) + public function fromSaveData(data:Dynamic, device:Device):Void { for (control in Control.createAll()) { var inputs:Array = Reflect.field(data, control.getName()); - inputs = inputs.distinct(); + inputs = inputs?.distinct(); if (inputs != null) { - if (inputs.length == 0) { + if (inputs.length == 0) + { trace('Control ${control} is missing bindings, resetting to default.'); - switch(device) + switch (device) { case Keys: bindKeys(control, getDefaultKeybinds(Solo, control)); case Gamepad(id): bindButtons(control, id, getDefaultGamepadBinds(control)); } - } else if (inputs == [FlxKey.NONE]) { + } + else if (inputs == [FlxKey.NONE]) + { trace('Control ${control} is unbound, leaving it be.'); - } else { - switch(device) + } + else + { + switch (device) { case Keys: bindKeys(control, inputs.copy()); @@ -1068,9 +1105,11 @@ class Controls extends FlxActionSet bindButtons(control, id, inputs.copy()); } } - } else { + } + else + { trace('Control ${control} is missing bindings, resetting to default.'); - switch(device) + switch (device) { case Keys: bindKeys(control, getDefaultKeybinds(Solo, control)); @@ -1095,9 +1134,12 @@ class Controls extends FlxActionSet var inputs = getInputsFor(control, device); isEmpty = isEmpty && inputs.length == 0; - if (inputs.length == 0) { + if (inputs.length == 0) + { inputs = [FlxKey.NONE]; - } else { + } + else + { inputs = inputs.distinct(); } @@ -1109,7 +1151,7 @@ class Controls extends FlxActionSet static function isDevice(input:FlxActionInput, device:Device) { - return switch(device) + return switch (device) { case Keys: input.device == KEYBOARD; case Gamepad(id): isGamepad(input, id); @@ -1141,7 +1183,8 @@ typedef Swipes = * - Combining `pressed` and `released` inputs into one action. * - Filtering by input method (`KEYBOARD`, `MOUSE`, `GAMEPAD`, etc). */ -class FunkinAction extends FlxActionDigital { +class FunkinAction extends FlxActionDigital +{ public var namePressed(default, null):Null; public var nameReleased(default, null):Null; @@ -1158,83 +1201,102 @@ class FunkinAction extends FlxActionDigital { /** * Input checks default to whether the input was just pressed, on any input device. */ - public override function check():Bool { + public override function check():Bool + { return checkFiltered(JUST_PRESSED); } /** * Check whether the input is currently being held. */ - public function checkPressed():Bool { + public function checkPressed():Bool + { return checkFiltered(PRESSED); } /** * Check whether the input is currently being held, and was not held last frame. */ - public function checkJustPressed():Bool { + public function checkJustPressed():Bool + { return checkFiltered(JUST_PRESSED); } /** * Check whether the input is not currently being held. */ - public function checkReleased():Bool { + public function checkReleased():Bool + { return checkFiltered(RELEASED); } /** * Check whether the input is not currently being held, and was held last frame. */ - public function checkJustReleased():Bool { + public function checkJustReleased():Bool + { return checkFiltered(JUST_RELEASED); } /** * Check whether the input is currently being held by a gamepad device. */ - public function checkPressedGamepad():Bool { + public function checkPressedGamepad():Bool + { return checkFiltered(PRESSED, GAMEPAD); } /** * Check whether the input is currently being held by a gamepad device, and was not held last frame. */ - public function checkJustPressedGamepad():Bool { + public function checkJustPressedGamepad():Bool + { return checkFiltered(JUST_PRESSED, GAMEPAD); } /** * Check whether the input is not currently being held by a gamepad device. */ - public function checkReleasedGamepad():Bool { + public function checkReleasedGamepad():Bool + { return checkFiltered(RELEASED, GAMEPAD); } /** * Check whether the input is not currently being held by a gamepad device, and was held last frame. */ - public function checkJustReleasedGamepad():Bool { + public function checkJustReleasedGamepad():Bool + { return checkFiltered(JUST_RELEASED, GAMEPAD); } - public function checkMultiFiltered(?filterTriggers:Array, ?filterDevices:Array):Bool { - if (filterTriggers == null) { + public function checkMultiFiltered(?filterTriggers:Array, ?filterDevices:Array):Bool + { + if (filterTriggers == null) + { filterTriggers = [PRESSED, JUST_PRESSED]; } - if (filterDevices == null) { + if (filterDevices == null) + { filterDevices = []; } // Perform checkFiltered for each combination. - for (i in filterTriggers) { - if (filterDevices.length == 0) { - if (checkFiltered(i)) { + for (i in filterTriggers) + { + if (filterDevices.length == 0) + { + if (checkFiltered(i)) + { return true; } - } else { - for (j in filterDevices) { - if (checkFiltered(i, j)) { + } + else + { + for (j in filterDevices) + { + if (checkFiltered(i, j)) + { return true; } } @@ -1249,52 +1311,56 @@ class FunkinAction extends FlxActionDigital { * @param filterTrigger Optionally filter by trigger condition (`JUST_PRESSED`, `PRESSED`, `JUST_RELEASED`, `RELEASED`). * @param filterDevice Optionally filter by device (`KEYBOARD`, `MOUSE`, `GAMEPAD`, `OTHER`). */ - public function checkFiltered(?filterTrigger:FlxInputState, ?filterDevice:FlxInputDevice):Bool { + public function checkFiltered(?filterTrigger:FlxInputState, ?filterDevice:FlxInputDevice):Bool + { // The normal // Make sure we only update the inputs once per frame. var key = '${filterTrigger}:${filterDevice}'; var cacheEntry = cache.get(key); - if (cacheEntry != null && cacheEntry.timestamp == FlxG.game.ticks) { + if (cacheEntry != null && cacheEntry.timestamp == FlxG.game.ticks) + { return cacheEntry.value; } // Use a for loop instead so we can remove inputs while iterating. // We don't return early because we need to call check() on ALL inputs. var result = false; - var len = inputs != null ? inputs.length : 0; - for (i in 0...len) - { - var j = len - i - 1; - var input = inputs[j]; + var len = inputs != null ? inputs.length : 0; + for (i in 0...len) + { + var j = len - i - 1; + var input = inputs[j]; // Filter out dead inputs. - if (input.destroyed) - { - inputs.splice(j, 1); - continue; - } + if (input.destroyed) + { + inputs.splice(j, 1); + continue; + } // Update the input. input.update(); // Check whether the input is the right trigger. - if (filterTrigger != null && input.trigger != filterTrigger) { + if (filterTrigger != null && input.trigger != filterTrigger) + { continue; } // Check whether the input is the right device. - if (filterDevice != null && input.device != filterDevice) { + if (filterDevice != null && input.device != filterDevice) + { continue; } // Check whether the input has triggered. - if (input.check(this)) - { - result = true; - } - } + if (input.check(this)) + { + result = true; + } + } // We need to cache this result. cache.set(key, {timestamp: FlxG.game.ticks, value: result}); @@ -1391,12 +1457,12 @@ class FlxActionInputDigitalMobileSwipeGameplay extends FlxActionInputDigital { var degAngle = FlxAngle.asDegrees(swp.touchAngle); - switch(trigger) + switch (trigger) { case JUST_PRESSED: if (swp.touchLength >= activateLength) { - switch(inputID) + switch (inputID) { case FlxDirectionFlags.UP: if (degAngle >= 45 && degAngle <= 90 + 45) return properTouch(swp); @@ -1440,7 +1506,7 @@ class FlxActionInputDigitalAndroid extends FlxActionInputDigital override public function check(Action:FlxAction):Bool { - return switch(trigger) + return switch (trigger) { #if android case PRESSED: FlxG.android.checkStatus(inputID, PRESSED) || FlxG.android.checkStatus(inputID, PRESSED); From 1c45c9b03b86f2c4dc1049f0a41fd61b5e167af5 Mon Sep 17 00:00:00 2001 From: Cameron Taylor Date: Wed, 12 Jun 2024 15:50:59 -0400 Subject: [PATCH 03/22] git modules --- .gitmodules | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index 452c0089b..be5e0aaa8 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,6 @@ [submodule "assets"] path = assets - url = https://github.com/FunkinCrew/Funkin-Assets-secret + url = https://github.com/FunkinCrew/funkin.assets [submodule "art"] path = art - url = https://github.com/FunkinCrew/Funkin-Art-secret + url = https://github.com/FunkinCrew/funkin.art From a63b60d458bedca9bb980e6d7c8e47b73357adfc Mon Sep 17 00:00:00 2001 From: Cameron Taylor Date: Wed, 12 Jun 2024 20:31:27 -0400 Subject: [PATCH 04/22] fix for release, no bf printing directly to stdout! --- source/funkin/util/logging/AnsiTrace.hx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/funkin/util/logging/AnsiTrace.hx b/source/funkin/util/logging/AnsiTrace.hx index 9fdc19e1b..2c18d494d 100644 --- a/source/funkin/util/logging/AnsiTrace.hx +++ b/source/funkin/util/logging/AnsiTrace.hx @@ -51,7 +51,7 @@ class AnsiTrace public static function traceBF() { - #if sys + #if (sys && debug) if (colorSupported) { for (line in ansiBF) From b8c971786486b04663b4cafaf8da88e02296a684 Mon Sep 17 00:00:00 2001 From: Hundrec Date: Fri, 14 Jun 2024 21:52:52 -0700 Subject: [PATCH 05/22] Reorder download Git step in compiling guide MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Moved “download Git” from the middle of the guide to the setup step Should prevent errors with Git before installing Git --- docs/COMPILING.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/COMPILING.md b/docs/COMPILING.md index e7c19875a..b8ddee4a7 100644 --- a/docs/COMPILING.md +++ b/docs/COMPILING.md @@ -2,14 +2,14 @@ 0. Setup - Download Haxe from [Haxe.org](https://haxe.org) + - Download Git from [git-scm.com](https://www.git-scm.com) 1. Cloning the Repository: Make sure when you clone, you clone the submodules to get the assets repo: - `git clone --recurse-submodules https://github.com/FunkinCrew/funkin.git` - If you accidentally cloned without the `assets` submodule (aka didn't follow the step above), you can run `git submodule update --init --recursive` to get the assets in a foolproof way. 2. Install `hmm` (run `haxelib --global install hmm` and then `haxelib --global run hmm setup`) -3. Download Git from [git-scm.com](https://www.git-scm.com) -4. Install all haxelibs of the current branch by running `hmm install` -5. Setup lime: `haxelib run lime setup` -6. Platform setup +3. Install all haxelibs of the current branch by running `hmm install` +4. Setup lime: `haxelib run lime setup` +5. Platform setup - 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: - MSVC v143 VS 2022 C++ x64/x86 build tools @@ -17,8 +17,8 @@ - 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/) - HTML5: Compiles without any extra setup -7. If you are targeting for native, you may need to run `lime rebuild PLATFORM` and `lime rebuild PLATFORM -debug` -8. `lime test PLATFORM` ! Add `-debug` to enable several debug features such as time travel (`PgUp`/`PgDn` in Play State). +6. If you are targeting for native, you may need to run `lime rebuild PLATFORM` and `lime rebuild PLATFORM -debug` +7. `lime test PLATFORM` ! Add `-debug` to enable several debug features such as time travel (`PgUp`/`PgDn` in Play State). # Troubleshooting From 32ad9d159ee46429e582f1bd7c891ccf4cae6138 Mon Sep 17 00:00:00 2001 From: Hundrec Date: Sat, 15 Jun 2024 13:37:21 -0400 Subject: [PATCH 06/22] Add ZIP button warning and restructured sentences Each step should be easier to follow with this structure --- docs/COMPILING.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/docs/COMPILING.md b/docs/COMPILING.md index b8ddee4a7..b2a106c86 100644 --- a/docs/COMPILING.md +++ b/docs/COMPILING.md @@ -3,12 +3,13 @@ 0. Setup - Download Haxe from [Haxe.org](https://haxe.org) - Download Git from [git-scm.com](https://www.git-scm.com) -1. Cloning the Repository: Make sure when you clone, you clone the submodules to get the assets repo: - - `git clone --recurse-submodules https://github.com/FunkinCrew/funkin.git` - - If you accidentally cloned without the `assets` submodule (aka didn't follow the step above), you can run `git submodule update --init --recursive` to get the assets in a foolproof way. -2. Install `hmm` (run `haxelib --global install hmm` and then `haxelib --global run hmm setup`) -3. Install all haxelibs of the current branch by running `hmm install` -4. Setup lime: `haxelib run lime setup` + - Do NOT download the repository using the Download ZIP button on GitHub or you may run into errors! + - Instead, open a command prompt and do the following steps... +1. Run `git clone --recurse-submodules https://github.com/FunkinCrew/funkin.git` to clone the repository with the necessary assets submodule + - _If you accidentally cloned without the `assets` submodule (aka didn't follow the step above), you can run `git submodule update --init --recursive` to get the assets in a foolproof way._ +2. Run `haxelib --global install hmm` and then `haxelib --global run hmm setup` to install hmm.json +3. Run `hmm install` to install all haxelibs of the current branch +4. Run `haxelib run lime setup` to set up lime 5. Platform setup - 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: From 9bd09e37915300ca595950a6dcc2b215f7dcf077 Mon Sep 17 00:00:00 2001 From: Eric Date: Sun, 16 Jun 2024 18:48:01 -0400 Subject: [PATCH 07/22] Make downloading the assets submodule a separate step. --- docs/COMPILING.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/COMPILING.md b/docs/COMPILING.md index b2a106c86..cc90bd348 100644 --- a/docs/COMPILING.md +++ b/docs/COMPILING.md @@ -5,8 +5,9 @@ - Download Git from [git-scm.com](https://www.git-scm.com) - Do NOT download the repository using the Download ZIP button on GitHub or you may run into errors! - Instead, open a command prompt and do the following steps... -1. Run `git clone --recurse-submodules https://github.com/FunkinCrew/funkin.git` to clone the repository with the necessary assets submodule - - _If you accidentally cloned without the `assets` submodule (aka didn't follow the step above), you can run `git submodule update --init --recursive` to get the assets in a foolproof way._ +1. Run `git clone https://github.com/FunkinCrew/funkin.git` to clone the base repository. +2. Run `git submodule update --init --recursive` to download the game's assets. + - NOTE: By performing this operation, you are downloading Content which is proprietary and protected by national and international copyright and trademark laws. See [the LICENSE.md file for the Funkin.assets](https://github.com/FunkinCrew/funkin.assets/blob/main/LICENSE.md) repo for more information. 2. Run `haxelib --global install hmm` and then `haxelib --global run hmm setup` to install hmm.json 3. Run `hmm install` to install all haxelibs of the current branch 4. Run `haxelib run lime setup` to set up lime From 4a73d7e1cec158c7258eca8099954f029fdb5103 Mon Sep 17 00:00:00 2001 From: EliteMasterEric Date: Tue, 25 Jun 2024 18:22:30 -0400 Subject: [PATCH 08/22] Add change counts labels to Actions labeler --- .github/changed-lines-count-labeler.yml | 12 ++++++++++++ .github/workflows/labeler.yml | 15 ++++++++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 .github/changed-lines-count-labeler.yml diff --git a/.github/changed-lines-count-labeler.yml b/.github/changed-lines-count-labeler.yml new file mode 100644 index 000000000..6f890f534 --- /dev/null +++ b/.github/changed-lines-count-labeler.yml @@ -0,0 +1,12 @@ +# Add 'small' to any changes below 10 lines +small: + max: 9 + +# Add 'medium' to any changes between 10 and 100 lines +medium: + min: 10 + max: 99 + +# Add 'large' to any changes for more than 100 lines +large: + min: 100 diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml index 0bcc420d3..a861af578 100644 --- a/.github/workflows/labeler.yml +++ b/.github/workflows/labeler.yml @@ -9,6 +9,19 @@ jobs: pull-requests: write runs-on: ubuntu-latest steps: - - uses: actions/labeler@v5 + - name: Set basic labels + uses: actions/labeler@v5 with: sync-labels: true + changed-lines-count-labeler: + permissions: + contents: read + pull-requests: write + runs-on: ubuntu-latest + name: An action for automatically labelling pull requests based on the changed lines count + steps: + - name: Set change count labels + uses: vkirilichev/changed-lines-count-labeler@v0.2 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + configuration-path: .github/changed-lines-count-labeler.yml From 05b57c88d3ff34ea36ce704678547a1f1ab3dd4a Mon Sep 17 00:00:00 2001 From: Punkinator7 Date: Wed, 3 Jul 2024 20:55:15 -0400 Subject: [PATCH 09/22] Add fixed Changelog There were several duplicate lines in the V4.0 Changelog, so I removed them --- changelog.md | 334 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 334 insertions(+) create mode 100644 changelog.md diff --git a/changelog.md b/changelog.md new file mode 100644 index 000000000..653ee203f --- /dev/null +++ b/changelog.md @@ -0,0 +1,334 @@ +# Changelog +All notable changes will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [0.4.1] - 2024-06-12 +### Added +- Pressing ESCAPE on the title screen on desktop now exits the game, allowing you to exit the game while in fullscreen on desktop +- Freeplay menu controls (favoriting and switching categories) are now rebindable from the Options menu, and now have default binds on controllers. +### Changed +- Highscores and ranks are now saved separately, which fixes the issue where people would overwrite their saves with higher scores, +which would remove their rank if they had a lower one. +- A-Bot speaker now reacts to the user's volume preference on desktop (thanks to [M7theguy for the issue report/suggestion](https://github.com/FunkinCrew/Funkin/issues/2744)!) +- On Freeplay, heart icons are shifted to the right when you favorite a song that has no rank on it. +- Only play `scrollMenu` sound effect when there's a real change on the freeplay menu ([thanks gamerbross for the PR!](https://github.com/FunkinCrew/Funkin/pull/2741)) +- Gave antialiasing to the edge of the dad graphic on Freeplay +- Rearranged some controls in the controls menu +- Made several chart revisions + - Re-enabled custom camera events in Roses (Erect/Nightmare) + - Tweaked the chart for Lit Up (Hard) + - Corrected the difficulty ratings for M.I.L.F. (Easy/Normal/Hard) +### Fixed +- Fixed an issue in the controls menu where some control binds would overlap their names +- Fixed crash when attempting to exit the gameover screen when also attempting to retry the song ([thanks DMMaster636 for the PR!](https://github.com/FunkinCrew/Funkin/pull/2709)) +- Fix botplay sustain release bug ([thanks Hundrec!](Fix botplay sustain release bug #2683)) +- Fix for the camera not pausing during a gameplay pause ([thanks gamerbross!](https://github.com/FunkinCrew/Funkin/pull/2684)) +- Fixed issue where Pico's gameplay sprite would unintentionally appear on the gameover screen when dying on 2Hot from an explosion +- Freeplay previews properly fade volume during the BF idle animation +- Fixed bug where Dadbattle incorrectly appeared as Dadbattle Erect when returning to freeplay on Hard +- Fixed 2Hot not appearing under the "#" category in Freeplay menu +- Fixed a bug where the Chart Editor would crash when attempting to select an event with the Event toolbox open +- Improved offsets for Pico and Tankman opponents so they don't slide around as much. +- Fixed the black "temp" graphic on freeplay from being incorrectly sized / masked, now it's identical to the dad freeplay graphic + +## [0.4.0] - 2024-06-06 +### Added +- 2 new Erect remixes, Eggnog and Satin Panties. Check them out from the Freeplay menu! +- Major visual improvements to the Results screen, with additional animations and audio based on your performance. +- Major visual improvements to the Freeplay screen, with song difficulty ratings and player rank displays. + - Freeplay now plays a preview of songs when you hover over them. +- Added a Charter field to the chart format, to allow for crediting the creator of a level's chart. + - You can see who charted a song from the Pause menu. +- Added a new Scroll Speed chart event to change the note speed mid-song (thanks burgerballs!) +### Changed +- Tweaked the charts for several songs: + - Tutorial (increased the note speed slightly) + - Spookeez + - Monster + - Winter Horrorland + - M.I.L.F. + - Senpai (increased the note speed) + - Roses + - Thorns (increased the note speed slightly) + - Ugh + - Stress + - Lit Up +- Favorite songs marked in Freeplay are now stored between sessions. +- The Freeplay easter eggs are now easier to see. +- In the event that the game cannot load your save data, it will now perform a backup before clearing it, so that we can try to repair it in the future. +- Custom note styles are now properly supported for songs; add new notestyles via JSON, then select it for use from the Chart Editor Metadata toolbox. (thanks Keoiki!) +- Health icons now support a Winning frame without requiring a spritesheet, simply include a third frame in the icon file. (thanks gamerbross!) + - Remember that for more complex behaviors such as animations or transitions, you should use an XML file to define each frame. +- Improved the Event Toolbox in the Chart Editor; dropdowns are now bigger, include search field, and display elements in alphabetical order rather than a random order. +### Fixed +- Fixed an issue where Nene's visualizer would not play on Desktop builds +- Fixed a bug where the game would silently fail to load saves on HTML5 +- Fixed some bugs with the props on the Story Menu not bopping properly +- Additional fixes to the Loading bar on HTML5 (thanks lemz1!) +- Fixed several bugs with the TitleState, including missing music when returning from the Main Menu (thanks gamerbross!) +- Fixed a camera bug in the Main Menu (thanks richTrash21!) +- Fixed a bug where changing difficulties in Story mode wouldn't update the score (thanks sectorA!) +- Fixed a crash in Freeplay caused by a level referencing an invalid song (thanks gamerbross!) +- Fixed a bug where pressing the volume keys would stop the Toy commercial (thanks gamerbross!) +- Fixed a bug where the Chart Editor Playtest would crash when losing (thanks gamerbross!) +- Fixed a bug where hold notes would display improperly in the Chart Editor when downscroll was enabled for gameplay (thanks gamerbross!) +- Fixed a bug where hold notes would be positioned wrong on downscroll (thanks MaybeMaru!) +- Removed a large number of unused imports to optimize builds (thanks Ethan-makes-music!) +- Improved debug logging for unscripted stages (thanks gamerbross!) +- Made improvements to compiling documentation (thanks gedehari!) +- Fixed a crash on Linux caused by an old version of hxCodec (thanks Noobz4Life!) +- Optimized animation handling for characters (thanks richTrash21!) +- Made improvements to compiling documentation (thanks gedehari!) +- Fixed an issue where the Chart Editor would use an incorrect instrumental on imported Legacy songs (thanks gamerbross!) +- Fixed a camera bug in the Main Menu (thanks richTrash21!) +- Fixed a bug where opening the game from the command line would crash the preloader (thanks NotHyper474!) +- Fixed a bug where characters would sometimes use the wrong scale value (thanks PurSnake!) +- Additional bug fixes and optimizations. + +## [0.3.3] - 2024-05-14 +### Changed +- Cleaned up some code in `PlayAnimationSongEvent.hx` (thanks BurgerBalls!) +### Fixed +- Fixes to the Loading bar on HTML5 (thanks lemz1!) +- Don't allow any more inputs when exiting freeplay (thanks gamerbros!) +- Fixed using mouse wheel to scroll on freeplay (thanks JugieNoob!) +- Fixed the reset's of the health icons, score, and notes when re-entering gameplay from gameover (thanks ImCodist!) +- Fixed the chart editor character selector's hitbox width (thanks MadBear422!) +- Fixed camera stutter once a wipe transition to the Main Menu completes (thanks ImCodist!) +- Fixed an issue where hold note would be invisible for a single frame (thanks ImCodist!) +- Fix tween accumulation on title screen when pressing Y multiple times (thanks TheGaloXx!) +- Fix a crash when querying FlxG.state in the crash handler +- Fix for a game over easter egg so you don't accidentally exit it when viewing +- Fix an issue where the Freeplay menu never displays 100% clear +- Fix an issue where Weekend 1 Pico attempted to retrieve a missing asset. +- Fix an issue where duplicate keybinds would be stoed, potentially causing a crash +- Chart debug key now properly returns you to the previous chart editor session if you were playtesting a chart (thanks nebulazorua!) +- Fix a crash on Freeplay found on AMD graphics cards + +## [0.3.2] - 2024-05-03 +### Added +- Added `,` and `.` keybinds to the Chart Editor. These place Focus Camera events at the playhead, for the opponent and player respectively. +- Implemented a blacklist to prevent mods from calling system functions. + - Added a couple utility functions to call useful stuff that got blacklisted. +- Added an `onSongLoad` script event which allows for mutation of notes and events. +- Added the current loaded modlist to crash logs. +- Added the `visible` attribute to Level JSON data. +- Enabled ZIP file system support for Polymod (make sure the metadata is in the root of the ZIP). +### Changed +- Songs in the mod folders will display in Freeplay without any extra scripting. +- Story levels in the mod folders will display in Story without any extra scripting. +- All audio should sound better in HTML5, less muddy +### Fixed +- Fixed a typo in the credits folder (`Custcene` -> `Cutscene`) +- Fixed an issue where health icon transition animations would loop and never finish properly. +- Fixed an issue where video cutscenes flagged as mid-song would crash the game when they finish. +- Fixed an issue where some substate lifecycle events were not being dispatched. +- Fixed a crash when trying to load into the Animation Offsets menu with an invalid character. +- Fixed an issue where the preloader would spam the logs when it was complete and waiting for user input. +- Should definitely have the fix for freeplay where it stops taking control of the main menu below it +- Changed the code for the story menu difficulties so that "normal" doesn't overlap the arrows after leaving Weekend 1 +### Removed +- Removed some unused `.txt` files in the `assets/data` folder. + +## [0.3.1] - 2024-05-01 +### Changed +- Ensure the Git commit hash always displays in the log files. +- Added whether the local Git repo was modified to the log files. +- Removed "PROTOTYPE" text on release builds only (it still shows on debug builds). +- Added additional credits and special thanks. +- Updated peepo in creds to peepo173 +### Fixed +- Fix a crash when retrieving system specs while handing a crash. +- Fix a crash triggered when pausing before the song started. +- Fix a crash triggered when dying before the song started. +- Fix a crash triggered when unloading certain graphics. +- Pico game over confirm plays correctly +- When exiting from a song into freeplay, main menu no longer takes inputs unintentionally (aka issues with merch links opening up when selecting songs) +- Fix for arrow keys causing web browser page scroll + +## [0.3.0] - 2024-04-30 +### Added +- New Story Level: Weekend 1, starting Pico, Darnell, and Nene. + - Beat the level in Story Mode to unlock the songs for Freeplay! +- 12 new Erect remixes, featuring Kawai Sprite, Saruky, Kohta Takahashi, and Saster + - Unlocked instantly in Freeplay +- New visually enhanced Freeplay menu. + - Sorting, favorites, and more. +- New Results screen upon completing any song or story level. +- New refactored Chart Editor prototype (accessible via `~` in the main menu or `7` in the Play State, rebindable). (VERY EARLY PROTOTYPE. EXPECT BUGS AND CRASHES) +- Implemented a new scripting system using HScript (an interpreted language with Haxe-like syntax) for incredible flexibility. + - All character-specific, stage-specific, or song-specific behaviors have been moved to HScript. +- New song events system allows for simple customization of camera behavior. + - Mods can implement custom song events via HScript, and new built-in song events will come in the future. +- New credits menu to list all the dozens of people who contributed. +### Changed +- Completely refactored the game's input system for higher reliability and accuracy. +- Reworked note rendering to massively reduce lag on larger charts. +- Reworks to scoring and health gain. +- Dedicated gamepad support with the ability to rebind buttons. +- Improvements to video cutscenes and dialogue, allowing them to be easily skipped or restarted. +- Updated Polymod by several major versions, allowing for fully dynamic asset replacement and support for scripted classes. +- Completely refactored almost every part of the game's code for performance, stability, and extensibility. + - This is not the Ludem Dare game held together with sticks and glue you played three years ago. +- Characters, stages, songs, story levels, and dialogue are now built from JSON data registries rather than being hardcoded. + - All of these also support attaching scripts for custom behavior, more documentation on this soon. + - You can forcibly reload the game's JSON data and scripts by pressing F5. +- Fully refactored the game's chart file format for extensibility and readability. + - You can migrate old charts using the Import FNF Legacy option in the chart editor. +- Various visual tweaks and improvements. +### Fixed +- 17 quadrillion bugs across hundreds of PRs. + +## [0.2.8] - 2021-04-18 (note, this one is iffy cuz we slacked wit it lol!) +### Added +- TANKMAN! 3 NEW SONGS BY KAWAISPRITE (UGH, GUNS, STRESS)! Charting help by MtH! +- Monster added into week 2, FINALLY (Charting help by MtH and ChaoticGamer!) +- Can now change song difficulty mid-game. +- Shows some song info on pause screen. +- Cute little icons onto freeplay menu +- Offset files for easier modification of characters +### Changed +- ASSET LOADING OVERHAUL, WAY FASTER LOAD TIMES ON WEB!!! (THANKS TO GEOKURELI WOKE KING) +- Made difficulty selector on freeplay menu more apparent +### Fixed +- That one random note on Bopeebo + +## [0.2.7.1] - 2021-02-14 +### Added +- Easter eggs +- readme's in desktop versions of the game +### Changed +- New icons, old one was placeholder since October woops! +- Made the transitions between the story mode levels more seamless. +- Offset of the Newgrounds logo on boot screen. +- Made the changelog txt so it can be opened easier by normal people who don't have a markdown reader (most normal people); +### Fixed +- Fixed crashes on Week 6 story mode dialogue if spam too fast ([Thanks to Lotusotho for the Pull Request!](https://github.com/ninjamuffin99/Funkin/pull/357)) +- Should show intro credits on desktop versions of the game more consistently +- Layering on Week 4 songs with GF and the LIMO LOL HOW TF I MISS THIS +- Chart's and chart editor now support changeBPM, GOD BLESS MTH FOR THIS ONE I BEEN STRUGGLIN WIT THAT SINCE OCTOBER LMAO ([GOD BLESS MTH](https://github.com/ninjamuffin99/Funkin/pull/382)) +- Fixed sustain note trails ALSO THANKS TO MTH U A REAL ONE ([MTH VERY POWERFUL](https://github.com/ninjamuffin99/Funkin/pull/415)) +- Antialiasing on the skyscraper lights + +## [0.2.7] - 2021-02-02 +### Added +- PIXEL DAY UPDATE LOL 1 WEEK LATER +- 3 New songs by Kawaisprite! +- COOL CUTSCENES +- WEEK 6 YOYOYOYOY +- Swaggy pixel art by Moawling! +### Changed +- Made it so you lose sliiiightly more health when you miss a note. +- Removed the default HaxeFlixel pause screen when the game window loses focus, can get screenshots of the game easier hehehe +### Fixed +- Idle animation bug with BF christmas and BF hair blow sprites ([Thanks to Injourn for the Pull Request!](https://github.com/ninjamuffin99/Funkin/pull/237)) + +## [0.2.6] - 2021-01-20 +### Added +- 3 NEW CHRISTMAS SONGS. 2 BY KAWAISPRITE, 1 BY BASSETFILMS!!!!! BF WITH DRIP! SANTA HANGIN OUT! +- Enemy icons change when they you are winning a lot ([Thanks to pahaze for the Pull Request!](https://github.com/ninjamuffin99/Funkin/pull/138)) +- Holding CTRL in charting editor places notes on both sides +- Q and E changes sustain lengths in note editor +- Other charting editor workflow improvements +- More hair physics +- Heads appear at top of chart editor to help show which side ur charting for +### Changed +- Tweaked code relating to inputs, hopefully making notes that are close together more fair to hit +### Removed +- Removed APE +### Fixed +- Maybe fixed double notes / jump notes. Need to tweak it for balance, but should open things up for cooler charts in the future. +- Old Verison popup screen weirdness ([Thanks to gedehari for the Pull Request!](https://github.com/ninjamuffin99/Funkin/pull/155)) +- Song no longer loops when finishing the song. ([Thanks Injourn for the Pull Request!](https://github.com/ninjamuffin99/Funkin/pull/132)) +- Screen wipe being cut off in the limo/mom stage. Should fill the whole screen now. +- Boyfriend animations on hold notes, and pressing on repeating notes should behave differently + +## [0.2.5] - 2020-12-27 +### Added +- MOMMY GF, 3 NEW ASS SONGS BY KAWAISPRITE, NEW ART BY PHANTOMARCADE,WOOOOOOAH!!!! +- Different icons depending on which character you are against, art by EVILSK8R!! +- Autosave to chart editor +- Clear section button to note editor +- Swap button in note editor +- a new boot text or two +- automatic check for when you're on an old version of the game! +### Changed +- Made Spookeez on Normal easier. +- Mouse is now visible in note editor +### Fixed +- Crash when playing Week 3 and then playing a non-week 3 song +- When pausing music at the start, it doesn't continue the song anyways. ([shoutouts gedehari for the Pull Request!](https://github.com/ninjamuffin99/Funkin/pull/48)) +- IDK i think backing out of song menu should play main menu songs again hehe ([shoutouts gedehari for the Pull Request!](https://github.com/ninjamuffin99/Funkin/pull/48)) + +## [0.2.4] - 2020-12-11 +### Added +- 3 NEW SONGS BY KAWAISPRITE. Pico, Philly, and Blammed. +- NEW CHARACTER, PICO. Based off the classic Flash game "Pico's School" by Tom Fulp +- NEW LEVEL WOW! PHILLY BABEEEE +### Changed +- Made it less punishing to ATTEMPT to hit a note and miss, rather than let it pass you +### Fixed +- Song desync of you paused and unpaused frequently ([shoutouts SonicBlam](https://github.com/ninjamuffin99/Funkin/issues/37)) +- Animation offsets when GF is scared + +## [0.2.3] - 2020-12-04 +### Added +- More intro texts +### Fixed +- Exploit where you could potentially give yourself a high score via the debug menu +- Issue/bug where you could spam the confirm button on the story menu ([shoutouts lotusotho for the CODE contribution/pull request!](https://github.com/ninjamuffin99/Funkin/pull/19)) +- Glitch where if you never would lose health if you missed a note on a fast song (shoutouts [MrDulfin](https://github.com/ninjamuffin99/Funkin/issues/10), [HotSauceBurritos](https://github.com/ninjamuffin99/Funkin/issues/13) and [LobsterMango](https://lobstermango.newgrounds.com)) +- Fixed tiny note bleed over thingies (shoutouts [lotusotho](https://github.com/ninjamuffin99/Funkin/pull/24)) + +## [0.2.2] - 2020-11-20 +### Added +- Music playing on the freeplay menu. +- UI sounds on freeplay menu +- Score now shows mid-song. +- Menu on pause screen! Can resume, and restart song, or go back to main menu. +- New music made for pause menu! + +### Changed +- Moved all the intro texts to its own txt file instead of being hardcoded, this allows for much easier customization. File is in the data folder, called "introText.txt", follow the format in there and you're probably good to go! +### Fixed +- Fixed soft lock when pausing on song finish ([shoutouts gedehari](https://github.com/ninjamuffin99/Funkin/issues/15)) +- Think I fixed issue that led to in-game scores being off by 2 ([shoutouts Mike](https://github.com/ninjamuffin99/Funkin/issues/4)) +- Should have fixed the 1 frame note appearance thing. ([shoutouts Mike](https://github.com/ninjamuffin99/Funkin/issues/6)) +- Cleaned up some charting on South on hard mode +- Fixed some animation timings, should feel both better to play, and watch. (shoutouts Dave/Ivan lol) +- Animation issue where GF would freak out on the title screen if you returned to it([shoutouts MultiXIII](https://github.com/ninjamuffin99/Funkin/issues/12)). + +## [0.2.1.2] - 2020-11-06 +### Fixed +- Story mode scores not properly resetting, leading to VERY inflated highscores on the leaderboards. This also requires me to clear the scores that are on the leaderboard right now, sorry! +- Difficulty on storymode and in freeplay scores +- Hard mode difficulty on campaign levels have been fixed + +## [0.2.1.1] - 2020-11-06 +### Fixed +- Week 2 not unlocking properly + +## [0.2.1] - 2020-11-06 +### Added +- Scores to the freeplay menu +- A few new intro boot messages. +- Lightning effect in Spooky stages +- Campaign scores, can now compete on scoreboards for campaign! +- Can now change difficulties in Freeplay mode + +### Changed +- Balanced out Normal mode for the harder songs(Dadbattle and Spookeez, not South yet). Should be much easier all around. +- Put tutorial in it's own 'week', so that if you want to play week 1, you don't have to play the tutorial. + +### Fixed +- One of the charting bits on South and Spookeez during the intro. + +## [0.2.0] - 2020-11-01 +### Added +- Uhh Newgrounds release lolol I always lose track of shit. + +## [0.1.0] - 2020-10-05 +### Added +- Uh, everything. This the game's initial gamejam release. We put it out From cd9400e898fc2b0edd07280c59fc73c3a8b03e64 Mon Sep 17 00:00:00 2001 From: Punkinator7 Date: Wed, 3 Jul 2024 20:56:19 -0400 Subject: [PATCH 10/22] Delete CHANGELOG.md --- CHANGELOG.md | 344 --------------------------------------------------- 1 file changed, 344 deletions(-) delete mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index 755b3b3bc..000000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,344 +0,0 @@ -# Changelog -All notable changes will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## [0.4.1] - 2024-06-12 -### Added -- Pressing ESCAPE on the title screen on desktop now exits the game, allowing you to exit the game while in fullscreen on desktop -- Freeplay menu controls (favoriting and switching categories) are now rebindable from the Options menu, and now have default binds on controllers. -### Changed -- Highscores and ranks are now saved separately, which fixes the issue where people would overwrite their saves with higher scores, -which would remove their rank if they had a lower one. -- A-Bot speaker now reacts to the user's volume preference on desktop (thanks to [M7theguy for the issue report/suggestion](https://github.com/FunkinCrew/Funkin/issues/2744)!) -- On Freeplay, heart icons are shifted to the right when you favorite a song that has no rank on it. -- Only play `scrollMenu` sound effect when there's a real change on the freeplay menu ([thanks gamerbross for the PR!](https://github.com/FunkinCrew/Funkin/pull/2741)) -- Gave antialiasing to the edge of the dad graphic on Freeplay -- Rearranged some controls in the controls menu -- Made several chart revisions - - Re-enabled custom camera events in Roses (Erect/Nightmare) - - Tweaked the chart for Lit Up (Hard) - - Corrected the difficulty ratings for M.I.L.F. (Easy/Normal/Hard) -### Fixed -- Fixed an issue in the controls menu where some control binds would overlap their names -- Fixed crash when attempting to exit the gameover screen when also attempting to retry the song ([thanks DMMaster636 for the PR!](https://github.com/FunkinCrew/Funkin/pull/2709)) -- Fix botplay sustain release bug ([thanks Hundrec!](Fix botplay sustain release bug #2683)) -- Fix for the camera not pausing during a gameplay pause ([thanks gamerbross!](https://github.com/FunkinCrew/Funkin/pull/2684)) -- Fixed issue where Pico's gameplay sprite would unintentionally appear on the gameover screen when dying on 2Hot from an explosion -- Freeplay previews properly fade volume during the BF idle animation -- Fixed bug where Dadbattle incorrectly appeared as Dadbattle Erect when returning to freeplay on Hard -- Fixed 2Hot not appearing under the "#" category in Freeplay menu -- Fixed a bug where the Chart Editor would crash when attempting to select an event with the Event toolbox open -- Improved offsets for Pico and Tankman opponents so they don't slide around as much. -- Fixed the black "temp" graphic on freeplay from being incorrectly sized / masked, now it's identical to the dad freeplay graphic - -## [0.4.0] - 2024-06-06 -### Added -- 2 new Erect remixes, Eggnog and Satin Panties. Check them out from the Freeplay menu! -- Major visual improvements to the Results screen, with additional animations and audio based on your performance. -- Major visual improvements to the Freeplay screen, with song difficulty ratings and player rank displays. - - Freeplay now plays a preview of songs when you hover over them. -- Added a Charter field to the chart format, to allow for crediting the creator of a level's chart. - - You can see who charted a song from the Pause menu. -- Added a new Scroll Speed chart event to change the note speed mid-song (thanks burgerballs!) -### Changed -- Tweaked the charts for several songs: - - Tutorial (increased the note speed slightly) - - Spookeez - - Monster - - Winter Horrorland - - M.I.L.F. - - Senpai (increased the note speed) - - Roses - - Thorns (increased the note speed slightly) - - Ugh - - Stress - - Lit Up -- Favorite songs marked in Freeplay are now stored between sessions. -- The Freeplay easter eggs are now easier to see. -- In the event that the game cannot load your save data, it will now perform a backup before clearing it, so that we can try to repair it in the future. -- Custom note styles are now properly supported for songs; add new notestyles via JSON, then select it for use from the Chart Editor Metadata toolbox. (thanks Keoiki!) -- Health icons now support a Winning frame without requiring a spritesheet, simply include a third frame in the icon file. (thanks gamerbross!) - - Remember that for more complex behaviors such as animations or transitions, you should use an XML file to define each frame. -- Improved the Event Toolbox in the Chart Editor; dropdowns are now bigger, include search field, and display elements in alphabetical order rather than a random order. -### Fixed -- Fixed an issue where Nene's visualizer would not play on Desktop builds -- Fixed a bug where the game would silently fail to load saves on HTML5 -- Fixed some bugs with the props on the Story Menu not bopping properly -- Additional fixes to the Loading bar on HTML5 (thanks lemz1!) -- Fixed several bugs with the TitleState, including missing music when returning from the Main Menu (thanks gamerbross!) -- Fixed a camera bug in the Main Menu (thanks richTrash21!) -- Fixed a bug where changing difficulties in Story mode wouldn't update the score (thanks sectorA!) -- Fixed a crash in Freeplay caused by a level referencing an invalid song (thanks gamerbross!) -- Fixed a bug where pressing the volume keys would stop the Toy commercial (thanks gamerbross!) -- Fixed a bug where the Chart Editor Playtest would crash when losing (thanks gamerbross!) -- Fixed a bug where hold notes would display improperly in the Chart Editor when downscroll was enabled for gameplay (thanks gamerbross!) -- Fixed a bug where hold notes would be positioned wrong on downscroll (thanks MaybeMaru!) -- Removed a large number of unused imports to optimize builds (thanks Ethan-makes-music!) -- Improved debug logging for unscripted stages (thanks gamerbross!) -- Made improvements to compiling documentation (thanks gedehari!) -- Fixed a crash on Linux caused by an old version of hxCodec (thanks Noobz4Life!) -- Optimized animation handling for characters (thanks richTrash21!) -- Made improvements to compiling documentation (thanks gedehari!) -- Fixed a bug where pressing the volume keys would stop the Toy commercial (thanks gamerbross!) -- Fixed a bug where the Chart Editor Playtest would crash when losing (thanks gamerbross!) -- Removed a large number of unused imports to optimize builds (thanks Ethan-makes-music!) -- Fixed a bug where hold notes would be positioned wrong on downscroll (thanks MaybeMaru!) -- Additional fixes to the Loading bar on HTML5 (thanks lemz1!) -- Fixed a crash in Freeplay caused by a level referencing an invalid song (thanks gamerbross!) -- Improved debug logging for unscripted stages (thanks gamerbross!) -- Fixed a bug where changing difficulties in Story mode wouldn't update the score (thanks sectorA!) -- Fixed an issue where the Chart Editor would use an incorrect instrumental on imported Legacy songs (thanks gamerbross!) -- Fixed a camera bug in the Main Menu (thanks richTrash21!) -- Fixed several bugs with the TitleState, including missing music when returning from the Main Menu (thanks gamerbross!) -- Fixed a bug where opening the game from the command line would crash the preloader (thanks NotHyper474!) -- Fixed a bug where hold notes would display improperly in the Chart Editor when downscroll was enabled for gameplay (thanks gamerbross!) -- Fixed a bug where characters would sometimes use the wrong scale value (thanks PurSnake!) -- Additional bug fixes and optimizations. - -## [0.3.3] - 2024-05-14 -### Changed -- Cleaned up some code in `PlayAnimationSongEvent.hx` (thanks BurgerBalls!) -### Fixed -- Fixes to the Loading bar on HTML5 (thanks lemz1!) -- Don't allow any more inputs when exiting freeplay (thanks gamerbros!) -- Fixed using mouse wheel to scroll on freeplay (thanks JugieNoob!) -- Fixed the reset's of the health icons, score, and notes when re-entering gameplay from gameover (thanks ImCodist!) -- Fixed the chart editor character selector's hitbox width (thanks MadBear422!) -- Fixed camera stutter once a wipe transition to the Main Menu completes (thanks ImCodist!) -- Fixed an issue where hold note would be invisible for a single frame (thanks ImCodist!) -- Fix tween accumulation on title screen when pressing Y multiple times (thanks TheGaloXx!) -- Fix a crash when querying FlxG.state in the crash handler -- Fix for a game over easter egg so you don't accidentally exit it when viewing -- Fix an issue where the Freeplay menu never displays 100% clear -- Fix an issue where Weekend 1 Pico attempted to retrieve a missing asset. -- Fix an issue where duplicate keybinds would be stoed, potentially causing a crash -- Chart debug key now properly returns you to the previous chart editor session if you were playtesting a chart (thanks nebulazorua!) -- Fix a crash on Freeplay found on AMD graphics cards - -## [0.3.2] - 2024-05-03 -### Added -- Added `,` and `.` keybinds to the Chart Editor. These place Focus Camera events at the playhead, for the opponent and player respectively. -- Implemented a blacklist to prevent mods from calling system functions. - - Added a couple utility functions to call useful stuff that got blacklisted. -- Added an `onSongLoad` script event which allows for mutation of notes and events. -- Added the current loaded modlist to crash logs. -- Added the `visible` attribute to Level JSON data. -- Enabled ZIP file system support for Polymod (make sure the metadata is in the root of the ZIP). -### Changed -- Songs in the mod folders will display in Freeplay without any extra scripting. -- Story levels in the mod folders will display in Story without any extra scripting. -- All audio should sound better in HTML5, less muddy -### Fixed -- Fixed a typo in the credits folder (`Custcene` -> `Cutscene`) -- Fixed an issue where health icon transition animations would loop and never finish properly. -- Fixed an issue where video cutscenes flagged as mid-song would crash the game when they finish. -- Fixed an issue where some substate lifecycle events were not being dispatched. -- Fixed a crash when trying to load into the Animation Offsets menu with an invalid character. -- Fixed an issue where the preloader would spam the logs when it was complete and waiting for user input. -- Should definitely have the fix for freeplay where it stops taking control of the main menu below it -- Changed the code for the story menu difficulties so that "normal" doesn't overlap the arrows after leaving Weekend 1 -### Removed -- Removed some unused `.txt` files in the `assets/data` folder. - -## [0.3.1] - 2024-05-01 -### Changed -- Ensure the Git commit hash always displays in the log files. -- Added whether the local Git repo was modified to the log files. -- Removed "PROTOTYPE" text on release builds only (it still shows on debug builds). -- Added additional credits and special thanks. -- Updated peepo in creds to peepo173 -### Fixed -- Fix a crash when retrieving system specs while handing a crash. -- Fix a crash triggered when pausing before the song started. -- Fix a crash triggered when dying before the song started. -- Fix a crash triggered when unloading certain graphics. -- Pico game over confirm plays correctly -- When exiting from a song into freeplay, main menu no longer takes inputs unintentionally (aka issues with merch links opening up when selecting songs) -- Fix for arrow keys causing web browser page scroll - -## [0.3.0] - 2024-04-30 -### Added -- New Story Level: Weekend 1, starting Pico, Darnell, and Nene. - - Beat the level in Story Mode to unlock the songs for Freeplay! -- 12 new Erect remixes, featuring Kawai Sprite, Saruky, Kohta Takahashi, and Saster - - Unlocked instantly in Freeplay -- New visually enhanced Freeplay menu. - - Sorting, favorites, and more. -- New Results screen upon completing any song or story level. -- New refactored Chart Editor prototype (accessible via `~` in the main menu or `7` in the Play State, rebindable). (VERY EARLY PROTOTYPE. EXPECT BUGS AND CRASHES) -- Implemented a new scripting system using HScript (an interpreted language with Haxe-like syntax) for incredible flexibility. - - All character-specific, stage-specific, or song-specific behaviors have been moved to HScript. -- New song events system allows for simple customization of camera behavior. - - Mods can implement custom song events via HScript, and new built-in song events will come in the future. -- New credits menu to list all the dozens of people who contributed. -### Changed -- Completely refactored the game's input system for higher reliability and accuracy. -- Reworked note rendering to massively reduce lag on larger charts. -- Reworks to scoring and health gain. -- Dedicated gamepad support with the ability to rebind buttons. -- Improvements to video cutscenes and dialogue, allowing them to be easily skipped or restarted. -- Updated Polymod by several major versions, allowing for fully dynamic asset replacement and support for scripted classes. -- Completely refactored almost every part of the game's code for performance, stability, and extensibility. - - This is not the Ludem Dare game held together with sticks and glue you played three years ago. -- Characters, stages, songs, story levels, and dialogue are now built from JSON data registries rather than being hardcoded. - - All of these also support attaching scripts for custom behavior, more documentation on this soon. - - You can forcibly reload the game's JSON data and scripts by pressing F5. -- Fully refactored the game's chart file format for extensibility and readability. - - You can migrate old charts using the Import FNF Legacy option in the chart editor. -- Various visual tweaks and improvements. -### Fixed -- 17 quadrillion bugs across hundreds of PRs. - -## [0.2.8] - 2021-04-18 (note, this one is iffy cuz we slacked wit it lol!) -### Added -- TANKMAN! 3 NEW SONGS BY KAWAISPRITE (UGH, GUNS, STRESS)! Charting help by MtH! -- Monster added into week 2, FINALLY (Charting help by MtH and ChaoticGamer!) -- Can now change song difficulty mid-game. -- Shows some song info on pause screen. -- Cute little icons onto freeplay menu -- Offset files for easier modification of characters -### Changed -- ASSET LOADING OVERHAUL, WAY FASTER LOAD TIMES ON WEB!!! (THANKS TO GEOKURELI WOKE KING) -- Made difficulty selector on freeplay menu more apparent -### Fixed -- That one random note on Bopeebo - -## [0.2.7.1] - 2021-02-14 -### Added -- Easter eggs -- readme's in desktop versions of the game -### Changed -- New icons, old one was placeholder since October woops! -- Made the transitions between the story mode levels more seamless. -- Offset of the Newgrounds logo on boot screen. -- Made the changelog txt so it can be opened easier by normal people who don't have a markdown reader (most normal people); -### Fixed -- Fixed crashes on Week 6 story mode dialogue if spam too fast ([Thanks to Lotusotho for the Pull Request!](https://github.com/ninjamuffin99/Funkin/pull/357)) -- Should show intro credits on desktop versions of the game more consistently -- Layering on Week 4 songs with GF and the LIMO LOL HOW TF I MISS THIS -- Chart's and chart editor now support changeBPM, GOD BLESS MTH FOR THIS ONE I BEEN STRUGGLIN WIT THAT SINCE OCTOBER LMAO ([GOD BLESS MTH](https://github.com/ninjamuffin99/Funkin/pull/382)) -- Fixed sustain note trails ALSO THANKS TO MTH U A REAL ONE ([MTH VERY POWERFUL](https://github.com/ninjamuffin99/Funkin/pull/415)) -- Antialiasing on the skyscraper lights - -## [0.2.7] - 2021-02-02 -### Added -- PIXEL DAY UPDATE LOL 1 WEEK LATER -- 3 New songs by Kawaisprite! -- COOL CUTSCENES -- WEEK 6 YOYOYOYOY -- Swaggy pixel art by Moawling! -### Changed -- Made it so you lose sliiiightly more health when you miss a note. -- Removed the default HaxeFlixel pause screen when the game window loses focus, can get screenshots of the game easier hehehe -### Fixed -- Idle animation bug with BF christmas and BF hair blow sprites ([Thanks to Injourn for the Pull Request!](https://github.com/ninjamuffin99/Funkin/pull/237)) - -## [0.2.6] - 2021-01-20 -### Added -- 3 NEW CHRISTMAS SONGS. 2 BY KAWAISPRITE, 1 BY BASSETFILMS!!!!! BF WITH DRIP! SANTA HANGIN OUT! -- Enemy icons change when they you are winning a lot ([Thanks to pahaze for the Pull Request!](https://github.com/ninjamuffin99/Funkin/pull/138)) -- Holding CTRL in charting editor places notes on both sides -- Q and E changes sustain lengths in note editor -- Other charting editor workflow improvements -- More hair physics -- Heads appear at top of chart editor to help show which side ur charting for -### Changed -- Tweaked code relating to inputs, hopefully making notes that are close together more fair to hit -### Removed -- Removed APE -### Fixed -- Maybe fixed double notes / jump notes. Need to tweak it for balance, but should open things up for cooler charts in the future. -- Old Verison popup screen weirdness ([Thanks to gedehari for the Pull Request!](https://github.com/ninjamuffin99/Funkin/pull/155)) -- Song no longer loops when finishing the song. ([Thanks Injourn for the Pull Request!](https://github.com/ninjamuffin99/Funkin/pull/132)) -- Screen wipe being cut off in the limo/mom stage. Should fill the whole screen now. -- Boyfriend animations on hold notes, and pressing on repeating notes should behave differently - -## [0.2.5] - 2020-12-27 -### Added -- MOMMY GF, 3 NEW ASS SONGS BY KAWAISPRITE, NEW ART BY PHANTOMARCADE,WOOOOOOAH!!!! -- Different icons depending on which character you are against, art by EVILSK8R!! -- Autosave to chart editor -- Clear section button to note editor -- Swap button in note editor -- a new boot text or two -- automatic check for when you're on an old version of the game! -### Changed -- Made Spookeez on Normal easier. -- Mouse is now visible in note editor -### Fixed -- Crash when playing Week 3 and then playing a non-week 3 song -- When pausing music at the start, it doesn't continue the song anyways. ([shoutouts gedehari for the Pull Request!](https://github.com/ninjamuffin99/Funkin/pull/48)) -- IDK i think backing out of song menu should play main menu songs again hehe ([shoutouts gedehari for the Pull Request!](https://github.com/ninjamuffin99/Funkin/pull/48)) - -## [0.2.4] - 2020-12-11 -### Added -- 3 NEW SONGS BY KAWAISPRITE. Pico, Philly, and Blammed. -- NEW CHARACTER, PICO. Based off the classic Flash game "Pico's School" by Tom Fulp -- NEW LEVEL WOW! PHILLY BABEEEE -### Changed -- Made it less punishing to ATTEMPT to hit a note and miss, rather than let it pass you -### Fixed -- Song desync of you paused and unpaused frequently ([shoutouts SonicBlam](https://github.com/ninjamuffin99/Funkin/issues/37)) -- Animation offsets when GF is scared - -## [0.2.3] - 2020-12-04 -### Added -- More intro texts -### Fixed -- Exploit where you could potentially give yourself a high score via the debug menu -- Issue/bug where you could spam the confirm button on the story menu ([shoutouts lotusotho for the CODE contribution/pull request!](https://github.com/ninjamuffin99/Funkin/pull/19)) -- Glitch where if you never would lose health if you missed a note on a fast song (shoutouts [MrDulfin](https://github.com/ninjamuffin99/Funkin/issues/10), [HotSauceBurritos](https://github.com/ninjamuffin99/Funkin/issues/13) and [LobsterMango](https://lobstermango.newgrounds.com)) -- Fixed tiny note bleed over thingies (shoutouts [lotusotho](https://github.com/ninjamuffin99/Funkin/pull/24)) - -## [0.2.2] - 2020-11-20 -### Added -- Music playing on the freeplay menu. -- UI sounds on freeplay menu -- Score now shows mid-song. -- Menu on pause screen! Can resume, and restart song, or go back to main menu. -- New music made for pause menu! - -### Changed -- Moved all the intro texts to its own txt file instead of being hardcoded, this allows for much easier customization. File is in the data folder, called "introText.txt", follow the format in there and you're probably good to go! -### Fixed -- Fixed soft lock when pausing on song finish ([shoutouts gedehari](https://github.com/ninjamuffin99/Funkin/issues/15)) -- Think I fixed issue that led to in-game scores being off by 2 ([shoutouts Mike](https://github.com/ninjamuffin99/Funkin/issues/4)) -- Should have fixed the 1 frame note appearance thing. ([shoutouts Mike](https://github.com/ninjamuffin99/Funkin/issues/6)) -- Cleaned up some charting on South on hard mode -- Fixed some animation timings, should feel both better to play, and watch. (shoutouts Dave/Ivan lol) -- Animation issue where GF would freak out on the title screen if you returned to it([shoutouts MultiXIII](https://github.com/ninjamuffin99/Funkin/issues/12)). - -## [0.2.1.2] - 2020-11-06 -### Fixed -- Story mode scores not properly resetting, leading to VERY inflated highscores on the leaderboards. This also requires me to clear the scores that are on the leaderboard right now, sorry! -- Difficulty on storymode and in freeplay scores -- Hard mode difficulty on campaign levels have been fixed - -## [0.2.1.1] - 2020-11-06 -### Fixed -- Week 2 not unlocking properly - -## [0.2.1] - 2020-11-06 -### Added -- Scores to the freeplay menu -- A few new intro boot messages. -- Lightning effect in Spooky stages -- Campaign scores, can now compete on scoreboards for campaign! -- Can now change difficulties in Freeplay mode - -### Changed -- Balanced out Normal mode for the harder songs(Dadbattle and Spookeez, not South yet). Should be much easier all around. -- Put tutorial in it's own 'week', so that if you want to play week 1, you don't have to play the tutorial. - -### Fixed -- One of the charting bits on South and Spookeez during the intro. - -## [0.2.0] - 2020-11-01 -### Added -- Uhh Newgrounds release lolol I always lose track of shit. - -## [0.1.0] - 2020-10-05 -### Added -- Uh, everything. This the game's initial gamejam release. We put it out From f31d2f7bfc1ed5918816eda617bd385d0a4b8c94 Mon Sep 17 00:00:00 2001 From: Punkinator7 Date: Wed, 3 Jul 2024 20:57:01 -0400 Subject: [PATCH 11/22] Rename changelog.md to CHANGELOG.md replace the old one with the fixed version --- changelog.md => CHANGELOG.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename changelog.md => CHANGELOG.md (100%) diff --git a/changelog.md b/CHANGELOG.md similarity index 100% rename from changelog.md rename to CHANGELOG.md From 39a774709e7a7ba9776e334837e58e2dde6ee0bd Mon Sep 17 00:00:00 2001 From: Hundrec Date: Tue, 9 Jul 2024 02:10:55 -0700 Subject: [PATCH 12/22] [DOCS] Add common troubleshooting steps to compiling guide Makes compiling easier for everyone --- docs/COMPILING.md | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/docs/COMPILING.md b/docs/COMPILING.md index cc90bd348..db32defe5 100644 --- a/docs/COMPILING.md +++ b/docs/COMPILING.md @@ -8,10 +8,10 @@ 1. Run `git clone https://github.com/FunkinCrew/funkin.git` to clone the base repository. 2. Run `git submodule update --init --recursive` to download the game's assets. - NOTE: By performing this operation, you are downloading Content which is proprietary and protected by national and international copyright and trademark laws. See [the LICENSE.md file for the Funkin.assets](https://github.com/FunkinCrew/funkin.assets/blob/main/LICENSE.md) repo for more information. -2. Run `haxelib --global install hmm` and then `haxelib --global run hmm setup` to install hmm.json -3. Run `hmm install` to install all haxelibs of the current branch -4. Run `haxelib run lime setup` to set up lime -5. Platform setup +3. Run `haxelib --global install hmm` and then `haxelib --global run hmm setup` to install hmm.json +4. Run `hmm install` to install all haxelibs of the current branch +5. Run `haxelib run lime setup` to set up lime +6. Platform setup - 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: - MSVC v143 VS 2022 C++ x64/x86 build tools @@ -19,10 +19,12 @@ - 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/) - HTML5: Compiles without any extra setup -6. If you are targeting for native, you may need to run `lime rebuild PLATFORM` and `lime rebuild PLATFORM -debug` -7. `lime test PLATFORM` ! Add `-debug` to enable several debug features such as time travel (`PgUp`/`PgDn` in Play State). +7. If you are targeting for native, you may need to run `lime rebuild PLATFORM` and `lime rebuild PLATFORM -debug` +8. `lime test PLATFORM` ! Add `-debug` to enable several debug features such as time travel (`PgUp`/`PgDn` in Play State). -# Troubleshooting +# Troubleshooting +## GO THROUGH THESE STEPS BEFORE OPENING ISSUES ON GITHUB! - During the cloning process, you may experience an error along the lines of `error: RPC failed; curl 92 HTTP/2 stream 0 was not closed cleanly: PROTOCOL_ERROR (err 1)` due to poor connectivity. A common fix is to run ` git config --global http.postBuffer 4096M`. - +- Check that your `assets` folder is not empty! If it is, go back to **Step 2** and follow the guide from there. +- The compilation process often fails due to having the wrong versions of the required libraries. Many errors can be resolved by deleting the `.haxelib` folder and rerunning the commands listed in **Step 3** and onwards. From 2d1d6eb19ec5afa157631be9802644b3baa8c145 Mon Sep 17 00:00:00 2001 From: Hundrec Date: Tue, 9 Jul 2024 12:54:29 -0700 Subject: [PATCH 13/22] Add cd step for improved clarity --- docs/COMPILING.md | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/docs/COMPILING.md b/docs/COMPILING.md index db32defe5..5784d9c7e 100644 --- a/docs/COMPILING.md +++ b/docs/COMPILING.md @@ -5,13 +5,15 @@ - Download Git from [git-scm.com](https://www.git-scm.com) - Do NOT download the repository using the Download ZIP button on GitHub or you may run into errors! - Instead, open a command prompt and do the following steps... -1. Run `git clone https://github.com/FunkinCrew/funkin.git` to clone the base repository. -2. Run `git submodule update --init --recursive` to download the game's assets. +1. Run `cd the/directory/you/want/the/source/code/in` to specify which folder the command prompt is working in. + - For example, `cd C:\Users\YOURNAME\Documents` would instruct the command prompt to perform the next steps in your Documents folder. +2. Run `git clone https://github.com/FunkinCrew/funkin.git` to clone the base repository. +3. Run `git submodule update --init --recursive` to download the game's assets. - NOTE: By performing this operation, you are downloading Content which is proprietary and protected by national and international copyright and trademark laws. See [the LICENSE.md file for the Funkin.assets](https://github.com/FunkinCrew/funkin.assets/blob/main/LICENSE.md) repo for more information. -3. Run `haxelib --global install hmm` and then `haxelib --global run hmm setup` to install hmm.json -4. Run `hmm install` to install all haxelibs of the current branch -5. Run `haxelib run lime setup` to set up lime -6. Platform setup +4. Run `haxelib --global install hmm` and then `haxelib --global run hmm setup` to install hmm.json +5. Run `hmm install` to install all haxelibs of the current branch +6. Run `haxelib run lime setup` to set up lime +7. Platform setup - 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: - MSVC v143 VS 2022 C++ x64/x86 build tools @@ -19,12 +21,12 @@ - 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/) - HTML5: Compiles without any extra setup -7. If you are targeting for native, you may need to run `lime rebuild PLATFORM` and `lime rebuild PLATFORM -debug` -8. `lime test PLATFORM` ! Add `-debug` to enable several debug features such as time travel (`PgUp`/`PgDn` in Play State). +8. If you are targeting for native, you may need to run `lime rebuild PLATFORM` and `lime rebuild PLATFORM -debug` +9. `lime test PLATFORM` ! Add `-debug` to enable several debug features such as time travel (`PgUp`/`PgDn` in Play State). -# Troubleshooting -## GO THROUGH THESE STEPS BEFORE OPENING ISSUES ON GITHUB! +# Troubleshooting - GO THROUGH THESE STEPS BEFORE OPENING ISSUES ON GITHUB! - During the cloning process, you may experience an error along the lines of `error: RPC failed; curl 92 HTTP/2 stream 0 was not closed cleanly: PROTOCOL_ERROR (err 1)` due to poor connectivity. A common fix is to run ` git config --global http.postBuffer 4096M`. -- Check that your `assets` folder is not empty! If it is, go back to **Step 2** and follow the guide from there. -- The compilation process often fails due to having the wrong versions of the required libraries. Many errors can be resolved by deleting the `.haxelib` folder and rerunning the commands listed in **Step 3** and onwards. +- Make sure your game directory has an `assets` folder! If it's missing, make sure you're in the right directory by running **Step 1**. +- Check that your `assets` folder is not empty! If it is, go back to **Step 3** and follow the guide from there. +- The compilation process often fails due to having the wrong versions of the required libraries. Many errors can be resolved by deleting the `.haxelib` folder and rerunning the commands listed in **Step 4** and onwards. From ff770d6948caad68086caf597f4cc84dea3c5a91 Mon Sep 17 00:00:00 2001 From: Hundrec Date: Tue, 9 Jul 2024 12:55:04 -0700 Subject: [PATCH 14/22] Wrong slashes lol --- docs/COMPILING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/COMPILING.md b/docs/COMPILING.md index 5784d9c7e..5a0c4dbd7 100644 --- a/docs/COMPILING.md +++ b/docs/COMPILING.md @@ -5,7 +5,7 @@ - Download Git from [git-scm.com](https://www.git-scm.com) - Do NOT download the repository using the Download ZIP button on GitHub or you may run into errors! - Instead, open a command prompt and do the following steps... -1. Run `cd the/directory/you/want/the/source/code/in` to specify which folder the command prompt is working in. +1. Run `cd the\directory\you\want\the\source\code\in` to specify which folder the command prompt is working in. - For example, `cd C:\Users\YOURNAME\Documents` would instruct the command prompt to perform the next steps in your Documents folder. 2. Run `git clone https://github.com/FunkinCrew/funkin.git` to clone the base repository. 3. Run `git submodule update --init --recursive` to download the game's assets. From 6c077cad5f7dce27832f0e38b096a55d987284c2 Mon Sep 17 00:00:00 2001 From: Hundrec Date: Tue, 9 Jul 2024 16:22:43 -0700 Subject: [PATCH 15/22] Add second cd step after cloning --- docs/COMPILING.md | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/docs/COMPILING.md b/docs/COMPILING.md index 5a0c4dbd7..1fc0c51c6 100644 --- a/docs/COMPILING.md +++ b/docs/COMPILING.md @@ -8,12 +8,13 @@ 1. Run `cd the\directory\you\want\the\source\code\in` to specify which folder the command prompt is working in. - For example, `cd C:\Users\YOURNAME\Documents` would instruct the command prompt to perform the next steps in your Documents folder. 2. Run `git clone https://github.com/FunkinCrew/funkin.git` to clone the base repository. -3. Run `git submodule update --init --recursive` to download the game's assets. +3. Run `cd funkin` to enter the cloned repository's directory. +4. Run `git submodule update --init --recursive` to download the game's assets. - NOTE: By performing this operation, you are downloading Content which is proprietary and protected by national and international copyright and trademark laws. See [the LICENSE.md file for the Funkin.assets](https://github.com/FunkinCrew/funkin.assets/blob/main/LICENSE.md) repo for more information. -4. Run `haxelib --global install hmm` and then `haxelib --global run hmm setup` to install hmm.json -5. Run `hmm install` to install all haxelibs of the current branch -6. Run `haxelib run lime setup` to set up lime -7. Platform setup +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 +7. Run `haxelib run lime setup` to set up lime +8. Platform setup - 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: - MSVC v143 VS 2022 C++ x64/x86 build tools @@ -21,12 +22,12 @@ - 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/) - HTML5: Compiles without any extra setup -8. If you are targeting for native, you may need to run `lime rebuild PLATFORM` and `lime rebuild PLATFORM -debug` -9. `lime test PLATFORM` ! Add `-debug` to enable several debug features such as time travel (`PgUp`/`PgDn` in Play State). +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). # Troubleshooting - GO THROUGH THESE STEPS BEFORE OPENING ISSUES ON GITHUB! - During the cloning process, you may experience an error along the lines of `error: RPC failed; curl 92 HTTP/2 stream 0 was not closed cleanly: PROTOCOL_ERROR (err 1)` due to poor connectivity. A common fix is to run ` git config --global http.postBuffer 4096M`. -- Make sure your game directory has an `assets` folder! If it's missing, make sure you're in the right directory by running **Step 1**. -- Check that your `assets` folder is not empty! If it is, go back to **Step 3** and follow the guide from there. -- The compilation process often fails due to having the wrong versions of the required libraries. Many errors can be resolved by deleting the `.haxelib` folder and rerunning the commands listed in **Step 4** and onwards. +- Make sure your game directory has an `assets` folder! If it's missing, copy the path to your `funkin` folder and run `cd the\path\you\copied`. Then follow the guide starting from **Step 4**. +- Check that your `assets` folder is not empty! If it is, go back to **Step 4** and follow the guide from there. +- The compilation process often fails due to having the wrong versions of the required libraries. Many errors can be resolved by deleting the `.haxelib` folder and following the guide starting from **Step 5**. From 2a5a24af708b738154718faab85f318ff1f41f96 Mon Sep 17 00:00:00 2001 From: Hundrec Date: Wed, 10 Jul 2024 15:54:54 -0700 Subject: [PATCH 16/22] Polish and add triage label to bug template --- .github/ISSUE_TEMPLATE/bug.md | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug.md b/.github/ISSUE_TEMPLATE/bug.md index 82c121b5a..d9b5bc34b 100644 --- a/.github/ISSUE_TEMPLATE/bug.md +++ b/.github/ISSUE_TEMPLATE/bug.md @@ -2,7 +2,7 @@ name: Bug Report about: Report a bug or critical performance issue title: 'Bug Report: [DESCRIBE YOUR BUG IN DETAIL HERE]' -labels: bug +labels: 'status: pending triage' --- -## Describe the bug +## Describe the Bug ## To Reproduce - -## Expected behavior + + +## Expected Behavior ## Screenshots/Video +Remember to mark the area in the application that's impacted. --> ## Desktop - OS: - - Browser - + - Browser: + - Version: ## Additional context - + From 6b2ab64e97e656fda98da0b81cf0859410c9e050 Mon Sep 17 00:00:00 2001 From: Hundrec Date: Wed, 10 Jul 2024 15:58:42 -0700 Subject: [PATCH 17/22] Add triage label to enhancement template --- .github/ISSUE_TEMPLATE/enhancement.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/enhancement.md b/.github/ISSUE_TEMPLATE/enhancement.md index e1cc3ae0d..0bdaa953a 100644 --- a/.github/ISSUE_TEMPLATE/enhancement.md +++ b/.github/ISSUE_TEMPLATE/enhancement.md @@ -2,7 +2,7 @@ name: Enhancement about: Suggest a new feature title: 'Enhancement: ' -labels: enhancement +labels: 'status: pending triage' --- -#### Please check for duplicates or similar issues before creating this issue. +#### Please check for duplicates or similar issues before submitting this suggestion. ## What is your suggestion, and why should it be implemented? From 2ba71e78bb3f73ca40a53d754ec8c1732c78c625 Mon Sep 17 00:00:00 2001 From: Hundrec Date: Wed, 10 Jul 2024 16:00:28 -0700 Subject: [PATCH 18/22] Add triage label to PR bugfix template --- .github/PULL_REQUEST_TEMPLATE/bug.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE/bug.md b/.github/PULL_REQUEST_TEMPLATE/bug.md index 41914c5ed..db42b51eb 100644 --- a/.github/PULL_REQUEST_TEMPLATE/bug.md +++ b/.github/PULL_REQUEST_TEMPLATE/bug.md @@ -2,9 +2,9 @@ name: Bug Fix about: Fix a bug or critical performance issue title: 'Bug Fix: ' -labels: bug +labels: 'status: pending triage' --- -#### Please check for duplicates or similar PRs before creating this issue. -## Does this PR close any issue(s)? If so, link them below. +#### Please check for duplicates or similar PRs before submitting this PR. +## Does this PR close any issues? If so, link them below. ## Briefly describe the issue(s) fixed. From fd7cdca333ccd9244231dd6d742188a486e51145 Mon Sep 17 00:00:00 2001 From: Hundrec Date: Wed, 10 Jul 2024 16:01:52 -0700 Subject: [PATCH 19/22] Add triage label to PR enhancement template --- .github/PULL_REQUEST_TEMPLATE/enhancement.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE/enhancement.md b/.github/PULL_REQUEST_TEMPLATE/enhancement.md index e208deefe..192d31c48 100644 --- a/.github/PULL_REQUEST_TEMPLATE/enhancement.md +++ b/.github/PULL_REQUEST_TEMPLATE/enhancement.md @@ -2,9 +2,9 @@ name: Enhancement about: Add a new feature title: 'Enhancement: ' -labels: enhancement +labels: 'status: pending triage" --- -#### Please check for duplicates or similar PRs before creating this issue. -## Does this PR close any issue(s)? If so, link them below. +#### Please check for duplicates or similar PRs before submitting this PR. +## Does this PR close any issues? If so, link them below. -## What do your change(s) add, and why should they be implemented? +## What do your changes add, and why should they be implemented? From 5a534e210b06bc97b01ddca7cf7fb0b713496d22 Mon Sep 17 00:00:00 2001 From: Hundrec Date: Wed, 10 Jul 2024 16:02:18 -0700 Subject: [PATCH 20/22] Wrong quote whoops --- .github/PULL_REQUEST_TEMPLATE/enhancement.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/PULL_REQUEST_TEMPLATE/enhancement.md b/.github/PULL_REQUEST_TEMPLATE/enhancement.md index 192d31c48..439068598 100644 --- a/.github/PULL_REQUEST_TEMPLATE/enhancement.md +++ b/.github/PULL_REQUEST_TEMPLATE/enhancement.md @@ -2,7 +2,7 @@ name: Enhancement about: Add a new feature title: 'Enhancement: ' -labels: 'status: pending triage" +labels: 'status: pending triage' --- #### Please check for duplicates or similar PRs before submitting this PR. ## Does this PR close any issues? If so, link them below. From 56948507e81939c77e7d7aad4d9bc11eca60bac2 Mon Sep 17 00:00:00 2001 From: Hundrec Date: Wed, 10 Jul 2024 16:04:21 -0700 Subject: [PATCH 21/22] Capitalize C in "context" --- .github/ISSUE_TEMPLATE/bug.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/bug.md b/.github/ISSUE_TEMPLATE/bug.md index d9b5bc34b..fcbfacfaa 100644 --- a/.github/ISSUE_TEMPLATE/bug.md +++ b/.github/ISSUE_TEMPLATE/bug.md @@ -45,7 +45,7 @@ Remember to mark the area in the application that's impacted. --> - Version: -## Additional context +## Additional Context From db0bb4d9c23d42e5121a87a4ddfcc759b89f8498 Mon Sep 17 00:00:00 2001 From: Hundrec Date: Wed, 10 Jul 2024 16:14:29 -0700 Subject: [PATCH 22/22] Final bug template polish --- .github/ISSUE_TEMPLATE/bug.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug.md b/.github/ISSUE_TEMPLATE/bug.md index fcbfacfaa..bae88b132 100644 --- a/.github/ISSUE_TEMPLATE/bug.md +++ b/.github/ISSUE_TEMPLATE/bug.md @@ -10,7 +10,7 @@ OR ELSE YOUR ISSUE WILL BE LESS LIKELY TO BE SOLVED! Do not post about issues from other FNF mod engines! We cannot and probably won't solve those! -You can hopefully go to their respective GitHub issues and report them there, thank you :) +You can hopefully go to their respective GitHub issues pages and report them there, thank you :) Please check for duplicates or similar issues, as well as performing simple troubleshooting steps (such as clearing cookies, clearing AppData, trying another browser) before submitting an issue. @@ -48,4 +48,4 @@ Remember to mark the area in the application that's impacted. --> ## Additional Context - +