diff --git a/.gitignore b/.gitignore index 415caf3..08da7b0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,2 @@ export/ .vscode/ -APIStuff.hx diff --git a/Project.xml b/Project.xml index 08b9a5a..0de6121 100644 --- a/Project.xml +++ b/Project.xml @@ -116,7 +116,7 @@ - + diff --git a/README.md b/README.md index 5cd5c57..3bb9a06 100644 --- a/README.md +++ b/README.md @@ -15,11 +15,20 @@ This is the repository for Friday Night Funkin' Kade Engine, a game originally made for Ludum Dare 47 "Stuck In a Loop". And a completely reworked engine. +### Links to the original game Play the Ludum Dare prototype here: https://ninja-muffin24.itch.io/friday-night-funkin Play the Newgrounds one here: https://www.newgrounds.com/portal/view/770371 Support the project on the itch.io page: https://ninja-muffin24.itch.io/funkin +### Links to Kade Engine Mod Page: https://gamebanana.com/gamefiles/16761 + +Latest GitHub release: https://github.com/KadeDev/Kade-Engine/releases/latest + +AppVeyor CI (Automatic builds of the latest commit): +- Windows: [AppVeyor Project](https://ci.appveyor.com/project/daniel11420/kade-engine-windows) | [Artifacts (downloads)](https://ci.appveyor.com/project/daniel11420/kade-engine-windows/build/artifacts) + +- Linux: [AppVeyor Project](https://ci.appveyor.com/project/daniel11420/kade-engine-linux) | [Artifacts (downloads)](https://ci.appveyor.com/project/daniel11420/kade-engine-linux/build/artifacts) ## What is Kade Engine? diff --git a/appveyor-linux.yml b/appveyor-linux.yml new file mode 100644 index 0000000..bc3bed6 --- /dev/null +++ b/appveyor-linux.yml @@ -0,0 +1,42 @@ +version: '{build}' +image: Ubuntu2004 +environment: + global: + HAXELIB_ROOT: /home/appveyor/haxelib + HAXE_INSTALLDIR: /home/appveyor/haxe + +install: + - cd /home/appveyor + - sudo add-apt-repository ppa:haxe/releases -y + - sudo apt update + - sudo apt install neko tar -y + - wget https://github.com/HaxeFoundation/haxe/releases/download/4.1.5/haxe-4.1.5-linux64.tar.gz + - mkdir $HAXE_INSTALLDIR + - tar -xf haxe-4.1.5-linux64.tar.gz -C $HAXE_INSTALLDIR + - export PATH=$PATH:$HAXE_INSTALLDIR/haxe_20201231082044_5e33a78aa + - mkdir $HAXELIB_ROOT && haxelib setup $HAXELIB_ROOT + - haxelib install lime 7.9.0 + - haxelib install openfl + - haxelib install flixel + - haxelib run lime setup flixel + - haxelib run lime setup + - haxelib install flixel-tools + - haxelib install flixel-addons + - haxelib install flixel-ui + - haxelib install hscript + - haxelib install newgrounds + - haxelib git faxe https://github.com/uhrobots/faxe + - haxelib git polymod https://github.com/larsiusprime/polymod.git + - haxelib git discord_rpc https://github.com/Aidan63/linc_discord-rpc + - haxelib list + - cd /home/appveyor/projects/kade-engine-linux + +build_script: + - haxelib run lime build linux + +after_build: + - tar -cvf funkin-ke.tar -C /home/appveyor/projects/kade-engine-linux/export/release/linux/bin . + +artifacts: +- path: funkin-ke.tar + name: Linux build \ No newline at end of file diff --git a/appveyor-windows.yml b/appveyor-windows.yml new file mode 100644 index 0000000..801fd23 --- /dev/null +++ b/appveyor-windows.yml @@ -0,0 +1,45 @@ +# Taken from https://github.com/andyli/HaxeCI/blob/master/appveyor.yml +version: "{build}" + +environment: + global: + HAXELIB_ROOT: C:\projects\haxelib + +install: + # http://help.appveyor.com/discussions/problems/5616-not-able-to-build-due-to-problem-in-chocolateyinstallps1 + - ps: Set-Service wuauserv -StartupType Manual + # Install the neko chocolatey package (https://chocolatey.org/packages/neko) + - cinst neko --version 2.3.0 -y + # Install the haxe chocolatey package (https://chocolatey.org/packages/haxe) + - cinst haxe --version 4.1.5 -y + - RefreshEnv + # Setup haxelib + - mkdir "%HAXELIB_ROOT%" + - haxelib setup "%HAXELIB_ROOT%" + # Install project dependencies + - haxelib install lime 7.9.0 + - haxelib install openfl + - haxelib install flixel + - haxelib run lime setup flixel + - haxelib run lime setup + - haxelib install flixel-tools + # haxelib run flixel-tools setup -y # Can't do this since it asks [y/n] even with -y argument! Stupid + - haxelib install flixel-addons + - haxelib install flixel-ui + - haxelib install hscript + - haxelib install newgrounds + - haxelib install flixel-addons + - haxelib git faxe https://github.com/uhrobots/faxe + - haxelib git polymod https://github.com/larsiusprime/polymod.git + - haxelib git discord_rpc https://github.com/Aidan63/linc_discord-rpc + - haxelib list + +# No tests idk lol +build_script: + - haxelib run lime build windows + # haxelib run lime build linux + +artifacts: + - path: export/release/windows/bin + name: Windows release + type: zip \ No newline at end of file diff --git a/source/APIStuff.hx b/source/APIStuff.hx new file mode 100644 index 0000000..f05fa06 --- /dev/null +++ b/source/APIStuff.hx @@ -0,0 +1,7 @@ +package; + +class APIStuff +{ + public static var API:String = ""; + public static var EncKey:String = ""; +} diff --git a/source/Discord.hx b/source/Discord.hx index 5dc9c64..00018e7 100644 --- a/source/Discord.hx +++ b/source/Discord.hx @@ -1,5 +1,6 @@ package; +#if windows import Sys.sleep; import discord_rpc.DiscordRpc; @@ -84,4 +85,5 @@ class DiscordClient //trace('Discord RPC Updated. Arguments: $details, $state, $smallImageKey, $hasStartTimestamp, $endTimestamp'); } -} \ No newline at end of file +} +#end \ No newline at end of file diff --git a/source/FreeplayState.hx b/source/FreeplayState.hx index 145f2fc..b7efe64 100644 --- a/source/FreeplayState.hx +++ b/source/FreeplayState.hx @@ -11,7 +11,7 @@ import flixel.util.FlxColor; import lime.utils.Assets; -#if desktop +#if windows import Discord.DiscordClient; #end @@ -53,7 +53,7 @@ class FreeplayState extends MusicBeatState } */ - #if desktop + #if windows // Updating Discord Rich Presence DiscordClient.changePresence("In the Menus", null); #end diff --git a/source/GameplayCustomizeState.hx b/source/GameplayCustomizeState.hx index 355691e..b3991c8 100644 --- a/source/GameplayCustomizeState.hx +++ b/source/GameplayCustomizeState.hx @@ -2,7 +2,7 @@ import flixel.math.FlxMath; import flixel.FlxCamera; import flixel.math.FlxPoint; import flixel.FlxObject; -#if desktop +#if windows import Discord.DiscordClient; import sys.thread.Thread; #end @@ -33,7 +33,7 @@ class GameplayCustomizeState extends MusicBeatState private var camHUD:FlxCamera; public override function create() { - #if desktop + #if windows // Updating Discord Rich Presence DiscordClient.changePresence("Customizing Gameplay", null); #end diff --git a/source/MainMenuState.hx b/source/MainMenuState.hx index f33ad95..0351715 100644 --- a/source/MainMenuState.hx +++ b/source/MainMenuState.hx @@ -14,7 +14,7 @@ import flixel.util.FlxColor; import io.newgrounds.NG; import lime.app.Application; -#if desktop +#if windows import Discord.DiscordClient; #end @@ -46,7 +46,7 @@ class MainMenuState extends MusicBeatState override function create() { - #if desktop + #if windows // Updating Discord Rich Presence DiscordClient.changePresence("In the Menus", null); #end diff --git a/source/MusicBeatState.hx b/source/MusicBeatState.hx index 3900654..29260f8 100644 --- a/source/MusicBeatState.hx +++ b/source/MusicBeatState.hx @@ -1,6 +1,8 @@ package; +#if windows import Discord.DiscordClient; +#end import flixel.tweens.FlxTween; import flixel.util.FlxColor; import openfl.Lib; diff --git a/source/PlayState.hx b/source/PlayState.hx index 415de42..aa54b97 100644 --- a/source/PlayState.hx +++ b/source/PlayState.hx @@ -40,7 +40,7 @@ import openfl.display.BlendMode; import openfl.display.StageQuality; import openfl.filters.ShaderFilter; -#if desktop +#if windows import Discord.DiscordClient; #end @@ -72,7 +72,7 @@ class PlayState extends MusicBeatState var songLength:Float = 0; - #if desktop + #if windows // Discord RPC variables var storyDifficultyText:String = ""; var iconRPC:String = ""; @@ -197,7 +197,7 @@ class PlayState extends MusicBeatState repPresses = 0; repReleases = 0; - #if desktop + #if windows // Making difficulty text for Discord Rich Presence. switch (storyDifficulty) { @@ -1192,7 +1192,7 @@ class PlayState extends MusicBeatState default: allowedToHeadbang = false; } - #if desktop + #if windows // Updating Discord Rich Presence (with Time Left) DiscordClient.changePresence(detailsText + " " + SONG.song + " (" + storyDifficultyText + ") " + generateRanking(), "\nAcc: " + truncateFloat(accuracy, 2) + "% | Score: " + songScore + " | Misses: " + misses , iconRPC); #end @@ -1421,7 +1421,7 @@ class PlayState extends MusicBeatState vocals.pause(); } - #if desktop + #if windows DiscordClient.changePresence("PAUSED on " + SONG.song + " (" + storyDifficultyText + ") " + generateRanking(), "Acc: " + truncateFloat(accuracy, 2) + "% | Score: " + songScore + " | Misses: " + misses , iconRPC); #end if (!startTimer.finished) @@ -1444,7 +1444,7 @@ class PlayState extends MusicBeatState startTimer.active = true; paused = false; - #if desktop + #if windows if (startTimer.finished) { DiscordClient.changePresence(detailsText + " " + SONG.song + " (" + storyDifficultyText + ") " + generateRanking(), "\nAcc: " + truncateFloat(accuracy, 2) + "% | Score: " + songScore + " | Misses: " + misses, iconRPC, true, songLength - Conductor.songPosition); @@ -1469,7 +1469,7 @@ class PlayState extends MusicBeatState vocals.time = Conductor.songPosition; vocals.play(); - #if desktop + #if windows DiscordClient.changePresence(detailsText + " " + SONG.song + " (" + storyDifficultyText + ") " + generateRanking(), "\nAcc: " + truncateFloat(accuracy, 2) + "% | Score: " + songScore + " | Misses: " + misses , iconRPC); #end } @@ -1655,7 +1655,7 @@ class PlayState extends MusicBeatState if (FlxG.keys.justPressed.SEVEN) { - #if desktop + #if windows DiscordClient.changePresence("Chart Editor", null, null, true); #end FlxG.switchState(new ChartingState()); @@ -1940,7 +1940,7 @@ class PlayState extends MusicBeatState openSubState(new GameOverSubstate(boyfriend.getScreenPosition().x, boyfriend.getScreenPosition().y)); - #if desktop + #if windows // Game Over doesn't get his own variable because it's only used here DiscordClient.changePresence("GAME OVER -- " + SONG.song + " (" + storyDifficultyText + ") " + generateRanking(),"\nAcc: " + truncateFloat(accuracy, 2) + "% | Score: " + songScore + " | Misses: " + misses , iconRPC); #end @@ -3111,7 +3111,7 @@ class PlayState extends MusicBeatState // yes this updates every step. // yes this is bad // but i'm doing it to update misses and accuracy - #if desktop + #if windows // Song duration in a float, useful for the time left feature songLength = FlxG.sound.music.length; diff --git a/source/StoryMenuState.hx b/source/StoryMenuState.hx index c2e1cb7..a7677a5 100644 --- a/source/StoryMenuState.hx +++ b/source/StoryMenuState.hx @@ -13,7 +13,7 @@ import flixel.util.FlxColor; import flixel.util.FlxTimer; import lime.net.curl.CURLCode; -#if desktop +#if windows import Discord.DiscordClient; #end @@ -74,7 +74,7 @@ class StoryMenuState extends MusicBeatState override function create() { - #if desktop + #if windows // Updating Discord Rich Presence DiscordClient.changePresence("In the Menus", null); #end diff --git a/source/TitleState.hx b/source/TitleState.hx index ec98454..e38e58e 100644 --- a/source/TitleState.hx +++ b/source/TitleState.hx @@ -24,8 +24,11 @@ import io.newgrounds.NG; import lime.app.Application; import openfl.Assets; -#if desktop +#if windows import Discord.DiscordClient; +#end + +#if desktop import sys.thread.Thread; #end @@ -59,7 +62,7 @@ class TitleState extends MusicBeatState PlayerSettings.init(); - #if desktop + #if windows DiscordClient.initialize(); Application.current.onExit.add (function (exitCode) {