diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 5fcd9c8e..2d2dc145 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -7,7 +7,7 @@ jobs: build: name: Linux Build permissions: write-all - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 steps: - name: Pulling the source uses: actions/checkout@v2 diff --git a/README.md b/README.md index 2d95c17b..40cdb449 100644 --- a/README.md +++ b/README.md @@ -82,7 +82,6 @@ In the future (when the engine won't be a WIP anymore) we're gonna also publish

Credits

-- Credits to [Ne_Eo](https://twitter.com/Ne_Eo_Twitch) and the [3D-HaxeFlixel](https://github.com/lunarcleint/3D-HaxeFlixel) repository for Away3D Flixel support - Credits to the [FlxAnimate](https://github.com/Dot-Stuff/flxanimate) team for the Animate Atlas support - Credits to Smokey555 for the backup Animate Atlas to spritesheet code - Credits to MAJigsaw77 for [hxvlc](https://github.com/MAJigsaw77/hxvlc) (video cutscene/mp4 support) and [hxdiscord_rpc](https://github.com/MAJigsaw77/hxdiscord_rpc) (discord rpc integration) diff --git a/assets/data/config/discord.json b/assets/data/config/discord.json index 582e510b..f6ad9636 100644 --- a/assets/data/config/discord.json +++ b/assets/data/config/discord.json @@ -1,4 +1,4 @@ { - "clientID": "1027994136193810442", + "clientID": "1383853614589673472", "logoKey": "icon" } \ No newline at end of file diff --git a/source/funkin/backend/utils/DiscordUtil.hx b/source/funkin/backend/utils/DiscordUtil.hx index c453a234..9d26fbda 100644 --- a/source/funkin/backend/utils/DiscordUtil.hx +++ b/source/funkin/backend/utils/DiscordUtil.hx @@ -87,7 +87,7 @@ class DiscordUtil config.logoKey = config.logoKey.getDefault("icon"); config.logoText = config.logoText.getDefault(Application.current.meta.get('title')); - config.clientID = config.clientID.getDefault("1027994136193810442"); + config.clientID = config.clientID.getDefault("1383853614589673472"); currentID = config.clientID; #end } diff --git a/source/funkin/game/Note.hx b/source/funkin/game/Note.hx index b8dd5e10..cc1dab5e 100644 --- a/source/funkin/game/Note.hx +++ b/source/funkin/game/Note.hx @@ -154,7 +154,9 @@ class Note extends FlxSprite case 0: animation.addByPrefix('scroll', 'purple0'); animation.addByPrefix('hold', 'purple hold piece'); - animation.addByPrefix('holdend', 'pruple end hold'); + animation.addByPrefix('holdend', 'purple hold end'); + if (frames.getByName("pruple end hold") != null) + animation.addByPrefix("holdend", "pruple end hold"); case 1: animation.addByPrefix('scroll', 'blue0'); animation.addByPrefix('hold', 'blue hold piece'); diff --git a/source/funkin/game/Splash.hx b/source/funkin/game/Splash.hx new file mode 100644 index 00000000..6352e31f --- /dev/null +++ b/source/funkin/game/Splash.hx @@ -0,0 +1,39 @@ +package funkin.game; + +class Splash extends FunkinSprite +{ + /** + * The current splash strum + * WARNING: It can be null + */ + public var strum:Null; + + /** + * Shortcut to `strum.ID` + * WARNING: It can be null + */ + public var strumID:Null; + + public static function copyFrom(source:Splash):Splash + { + var spr = new Splash(); + @:privateAccess { + spr.setPosition(source.x, source.y); + spr.frames = source.frames; + if (source.animateAtlas != null && source.atlasPath != null) + spr.loadSprite(source.atlasPath); + spr.animation.copyFrom(source.animation); + spr.visible = source.visible; + spr.alpha = source.alpha; + spr.antialiasing = source.antialiasing; + spr.scale.set(source.scale.x, source.scale.y); + spr.scrollFactor.set(source.scrollFactor.x, source.scrollFactor.y); + spr.skew.set(source.skew.x, source.skew.y); + spr.transformMatrix = source.transformMatrix; + spr.matrixExposed = source.matrixExposed; + spr.zoomFactor = source.zoomFactor; + spr.animOffsets = source.animOffsets.copy(); + } + return spr; + } +} diff --git a/source/funkin/game/SplashGroup.hx b/source/funkin/game/SplashGroup.hx index 75008a29..5f0c328e 100644 --- a/source/funkin/game/SplashGroup.hx +++ b/source/funkin/game/SplashGroup.hx @@ -2,7 +2,7 @@ package funkin.game; import haxe.xml.Access; -class SplashGroup extends FlxTypedGroup { +class SplashGroup extends FlxTypedGroup { /** * Whenever the splash group has successfully loaded or not. */ @@ -46,7 +46,7 @@ class SplashGroup extends FlxTypedGroup { } function createSplash(imagePath:String) { - var splash = new FunkinSprite(); + var splash = new Splash(); splash.antialiasing = true; splash.active = splash.visible = false; splash.loadSprite(Paths.image(imagePath)); @@ -56,7 +56,7 @@ class SplashGroup extends FlxTypedGroup { return splash; } - function setupAnims(xml:Access, splash:FunkinSprite) { + function setupAnims(xml:Access, splash:Splash) { for(strum in xml.nodes.strum) { var id:Null = Std.parseInt(strum.att.id); if (id != null) { @@ -85,12 +85,14 @@ class SplashGroup extends FlxTypedGroup { }; } - function pregenerateSplashes(splash:FunkinSprite) { + function pregenerateSplashes(splash:Splash) { // make 7 additional splashes for(i in 0...7) { - var spr = FunkinSprite.copyFrom(splash); + var spr = Splash.copyFrom(splash); spr.animation.finishCallback = function(name:String) { spr.active = spr.visible = false; + spr.strum = null; + spr.strumID = null; }; add(spr); } @@ -103,11 +105,14 @@ class SplashGroup extends FlxTypedGroup { return animationNames[id][FlxG.random.int(0, animationNames[id].length - 1)]; } - var __splash:FunkinSprite; + var __splash:Splash; public function showOnStrum(strum:Strum) { if (!valid) return null; __splash = recycle(); + __splash.strum = strum; + __splash.strumID = strum.ID; + __splash.cameras = strum.lastDrawCameras; __splash.setPosition(strum.x + ((strum.width - __splash.width) / 2), strum.y + ((strum.height - __splash.height) / 2)); __splash.active = __splash.visible = true; diff --git a/source/funkin/game/SplashHandler.hx b/source/funkin/game/SplashHandler.hx index d7bc4e46..b4512bbf 100644 --- a/source/funkin/game/SplashHandler.hx +++ b/source/funkin/game/SplashHandler.hx @@ -1,7 +1,7 @@ package funkin.game; -class SplashHandler extends FlxTypedGroup { +class SplashHandler extends FlxTypedGroup { /** * Map containing all of the splashes group. */ diff --git a/source/funkin/menus/ModSwitchMenu.hx b/source/funkin/menus/ModSwitchMenu.hx index eac992dc..5e42602c 100644 --- a/source/funkin/menus/ModSwitchMenu.hx +++ b/source/funkin/menus/ModSwitchMenu.hx @@ -11,9 +11,15 @@ class ModSwitchMenu extends MusicBeatSubstate { var alphabets:FlxTypedGroup; var curSelected:Int = 0; + var subCam:FlxCamera; + public override function create() { super.create(); + camera = subCam = new FlxCamera(); + subCam.bgColor = 0; + FlxG.cameras.add(subCam, false); + var bg = new FlxSprite(0, 0).makeSolid(FlxG.width, FlxG.height, 0xFF000000); bg.updateHitbox(); bg.scrollFactor.set(); @@ -63,5 +69,12 @@ class ModSwitchMenu extends MusicBeatSubstate { } alphabets.members[curSelected].alpha = 1; } + + override function destroy() { + super.destroy(); + + if (FlxG.cameras.list.contains(subCam)) + FlxG.cameras.remove(subCam); + } } #end