Compare commits
10 Commits
f488aabc24
...
61eb589cf0
Author | SHA1 | Date | |
---|---|---|---|
![]() |
61eb589cf0 | ||
![]() |
68d2d7d99a | ||
![]() |
69af949c8f | ||
![]() |
c5290eb7f8 | ||
![]() |
f20ed9c7e9 | ||
![]() |
a3059f4490 | ||
![]() |
37dfc3b45c | ||
![]() |
84c4e95ad0 | ||
![]() |
500dd5dd5c | ||
![]() |
84e054d66c |
@ -30,7 +30,7 @@ install:
|
|||||||
- haxelib git discord_rpc https://github.com/Aidan63/linc_discord-rpc
|
- haxelib git discord_rpc https://github.com/Aidan63/linc_discord-rpc
|
||||||
- haxelib git extension-webm https://github.com/KadeDev/extension-webm
|
- haxelib git extension-webm https://github.com/KadeDev/extension-webm
|
||||||
- haxelib run lime rebuild extension-webm linux
|
- haxelib run lime rebuild extension-webm linux
|
||||||
- haxelib install linc_luajit
|
- haxelib git linc_luajit https://github.com/AndreiRudenko/linc_luajit.git
|
||||||
- haxelib install actuate
|
- haxelib install actuate
|
||||||
- haxelib list
|
- haxelib list
|
||||||
- cd /home/appveyor/projects/kade-engine-linux
|
- cd /home/appveyor/projects/kade-engine-linux
|
||||||
|
29
docs/changelogs/changelog-1.6.2.md
Normal file
29
docs/changelogs/changelog-1.6.2.md
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
# Latest (master) changelog/Changelog
|
||||||
|
|
||||||
|
Changes marked with 💖 will be listed in the short version of the changelog in `version.downloadMe`.
|
||||||
|
|
||||||
|
### Additions
|
||||||
|
- Added a Instant Respawn Option
|
||||||
|
- 💖 Added the ability to select and modify notes in the editor
|
||||||
|
- Added the ability for note specific alternative animation toggles
|
||||||
|
- 💖 Added copy and paste (with ctrl z support) while selecting notes
|
||||||
|
- Added 12th and 24th snaps
|
||||||
|
|
||||||
|
### Changes
|
||||||
|
- Play Here option changed for the better
|
||||||
|
- Changed left or right in the charter to skip forward or backward a section
|
||||||
|
- 💖 Optimized gameplay (less lag??)
|
||||||
|
- 💖 Optimized the chart editor (less lag on longer songs, and faster load times)
|
||||||
|
- Gameplay Customization now allows for you to change the zoom of the play field
|
||||||
|
- SM Files now give you more details on why they can't be loaded.
|
||||||
|
|
||||||
|
### Bugfixes
|
||||||
|
- 💖 Fixed stutter at the start of a song
|
||||||
|
- Fixed a bunch of week 6 crashing related issues
|
||||||
|
- Fixed tutorial crashing on story mode
|
||||||
|
- Fixed notes in an SM file desyncing with sections
|
||||||
|
- 💖 Fixed scroll speed changes so they work when more then one of them exist
|
||||||
|
- Fixed steps reseting to 0 on a bpm change IN gameplay
|
||||||
|
- Fixed claps so they're based on time instead of the note's y position
|
||||||
|
- Swap Section no longer breaks with duets
|
||||||
|
- 💖 Modcharts now work on Linux!
|
@ -1,6 +1,7 @@
|
|||||||
# Changelogs
|
# Changelogs
|
||||||
|
|
||||||
- [Latest](latest) (Contains changes that are not in a release yet)
|
- [Latest](latest) (Contains changes that are not in a release yet)
|
||||||
|
- [1.6.2](changelog-1.6.2)
|
||||||
- [1.6.1](changelog-1.6.1)
|
- [1.6.1](changelog-1.6.1)
|
||||||
- [1.6](changelog-1.6)
|
- [1.6](changelog-1.6)
|
||||||
- [1.5.4](changelog-1.5.4)
|
- [1.5.4](changelog-1.5.4)
|
||||||
|
@ -112,8 +112,8 @@ class KadeEngineData
|
|||||||
if (FlxG.save.data.cacheImages == null)
|
if (FlxG.save.data.cacheImages == null)
|
||||||
FlxG.save.data.cacheImages = false;
|
FlxG.save.data.cacheImages = false;
|
||||||
|
|
||||||
if (FlxG.save.data.editor == null)
|
if (FlxG.save.data.editorBG == null)
|
||||||
FlxG.save.data.editor = true;
|
FlxG.save.data.editor = false;
|
||||||
|
|
||||||
if (FlxG.save.data.zoom == null)
|
if (FlxG.save.data.zoom == null)
|
||||||
FlxG.save.data.zoom = 1;
|
FlxG.save.data.zoom = 1;
|
||||||
|
@ -38,7 +38,7 @@ class MainMenuState extends MusicBeatState
|
|||||||
var newGaming2:FlxText;
|
var newGaming2:FlxText;
|
||||||
public static var firstStart:Bool = true;
|
public static var firstStart:Bool = true;
|
||||||
|
|
||||||
public static var nightly:String = "pre-release2";
|
public static var nightly:String = "";
|
||||||
|
|
||||||
public static var kadeEngineVer:String = "1.6.2" + nightly;
|
public static var kadeEngineVer:String = "1.6.2" + nightly;
|
||||||
public static var gameVer:String = "0.2.7.1";
|
public static var gameVer:String = "0.2.7.1";
|
||||||
|
@ -152,7 +152,7 @@ class EditorRes extends Option
|
|||||||
|
|
||||||
public override function press():Bool
|
public override function press():Bool
|
||||||
{
|
{
|
||||||
FlxG.save.data.editor = !FlxG.save.data.editor;
|
FlxG.save.data.editorBG = !FlxG.save.data.editorBG;
|
||||||
|
|
||||||
display = updateDisplay();
|
display = updateDisplay();
|
||||||
return true;
|
return true;
|
||||||
@ -160,7 +160,7 @@ class EditorRes extends Option
|
|||||||
|
|
||||||
private override function updateDisplay():String
|
private override function updateDisplay():String
|
||||||
{
|
{
|
||||||
return FlxG.save.data.editor ? "Show Editor Grid" : "Do not Show Editor Grid";
|
return FlxG.save.data.editorBG ? "Show Editor Grid" : "Do not Show Editor Grid";
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,112 +0,0 @@
|
|||||||
package;
|
|
||||||
|
|
||||||
import flixel.FlxG;
|
|
||||||
import flixel.FlxSprite;
|
|
||||||
import flixel.FlxSubState;
|
|
||||||
import flixel.text.FlxText;
|
|
||||||
import flixel.tweens.FlxEase;
|
|
||||||
import flixel.tweens.FlxTween;
|
|
||||||
import flixel.util.FlxColor;
|
|
||||||
import flixel.util.FlxTimer;
|
|
||||||
import lime.app.Application;
|
|
||||||
|
|
||||||
class OutdatedSubState extends MusicBeatState
|
|
||||||
{
|
|
||||||
public static var leftState:Bool = false;
|
|
||||||
|
|
||||||
public static var needVer:String = "IDFK LOL";
|
|
||||||
public static var currChanges:String = "dk";
|
|
||||||
|
|
||||||
private var bgColors:Array<String> = [
|
|
||||||
'#314d7f',
|
|
||||||
'#4e7093',
|
|
||||||
'#70526e',
|
|
||||||
'#594465'
|
|
||||||
];
|
|
||||||
private var colorRotation:Int = 1;
|
|
||||||
|
|
||||||
override function create()
|
|
||||||
{
|
|
||||||
super.create();
|
|
||||||
var bg:FlxSprite = new FlxSprite().loadGraphic(Paths.image('week54prototype', 'shared'));
|
|
||||||
bg.scale.x *= 1.55;
|
|
||||||
bg.scale.y *= 1.55;
|
|
||||||
bg.screenCenter();
|
|
||||||
bg.antialiasing = FlxG.save.data.antialiasing;
|
|
||||||
add(bg);
|
|
||||||
|
|
||||||
var kadeLogo:FlxSprite = new FlxSprite(FlxG.width, 0).loadGraphic(Paths.image('KadeEngineLogo'));
|
|
||||||
kadeLogo.scale.y = 0.3;
|
|
||||||
kadeLogo.scale.x = 0.3;
|
|
||||||
kadeLogo.x -= kadeLogo.frameHeight;
|
|
||||||
kadeLogo.y -= 180;
|
|
||||||
kadeLogo.alpha = 0.8;
|
|
||||||
kadeLogo.antialiasing = FlxG.save.data.antialiasing;
|
|
||||||
add(kadeLogo);
|
|
||||||
|
|
||||||
var txt:FlxText = new FlxText(0, 0, FlxG.width,
|
|
||||||
"Your Kade Engine is outdated!\nYou are on "
|
|
||||||
+ MainMenuState.kadeEngineVer
|
|
||||||
+ "\nwhile the most recent version is " + needVer + "."
|
|
||||||
+ "\n\nWhat's new:\n\n"
|
|
||||||
+ currChanges
|
|
||||||
+ "\n& more changes and bugfixes in the full changelog"
|
|
||||||
+ "\n\nPress Space to view the full changelog and update\nor ESCAPE to ignore this",
|
|
||||||
32);
|
|
||||||
|
|
||||||
if (MainMenuState.nightly != "")
|
|
||||||
txt.text =
|
|
||||||
"You are on\n"
|
|
||||||
+ MainMenuState.kadeEngineVer
|
|
||||||
+ "\nWhich is a PRE-RELEASE BUILD!"
|
|
||||||
+ "\n\nReport all bugs to the author of the pre-release.\nSpace/Escape ignores this.";
|
|
||||||
|
|
||||||
txt.setFormat("VCR OSD Mono", 32, FlxColor.fromRGB(200, 200, 200), CENTER);
|
|
||||||
txt.borderColor = FlxColor.BLACK;
|
|
||||||
txt.borderSize = 3;
|
|
||||||
txt.borderStyle = FlxTextBorderStyle.OUTLINE;
|
|
||||||
txt.screenCenter();
|
|
||||||
add(txt);
|
|
||||||
|
|
||||||
FlxTween.color(bg, 2, bg.color, FlxColor.fromString(bgColors[colorRotation]));
|
|
||||||
FlxTween.angle(kadeLogo, kadeLogo.angle, -10, 2, {ease: FlxEase.quartInOut});
|
|
||||||
|
|
||||||
new FlxTimer().start(2, function(tmr:FlxTimer)
|
|
||||||
{
|
|
||||||
FlxTween.color(bg, 2, bg.color, FlxColor.fromString(bgColors[colorRotation]));
|
|
||||||
if(colorRotation < (bgColors.length - 1)) colorRotation++;
|
|
||||||
else colorRotation = 0;
|
|
||||||
}, 0);
|
|
||||||
|
|
||||||
new FlxTimer().start(2, function(tmr:FlxTimer)
|
|
||||||
{
|
|
||||||
if(kadeLogo.angle == -10) FlxTween.angle(kadeLogo, kadeLogo.angle, 10, 2, {ease: FlxEase.quartInOut});
|
|
||||||
else FlxTween.angle(kadeLogo, kadeLogo.angle, -10, 2, {ease: FlxEase.quartInOut});
|
|
||||||
}, 0);
|
|
||||||
|
|
||||||
new FlxTimer().start(0.8, function(tmr:FlxTimer)
|
|
||||||
{
|
|
||||||
if(kadeLogo.alpha == 0.8) FlxTween.tween(kadeLogo, {alpha: 1}, 0.8, {ease: FlxEase.quartInOut});
|
|
||||||
else FlxTween.tween(kadeLogo, {alpha: 0.8}, 0.8, {ease: FlxEase.quartInOut});
|
|
||||||
}, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
override function update(elapsed:Float)
|
|
||||||
{
|
|
||||||
if (controls.ACCEPT && MainMenuState.nightly == "")
|
|
||||||
{
|
|
||||||
fancyOpenURL("https://kadedev.github.io/Kade-Engine/changelogs/changelog-" + needVer);
|
|
||||||
}
|
|
||||||
else if (controls.ACCEPT)
|
|
||||||
{
|
|
||||||
leftState = true;
|
|
||||||
FlxG.switchState(new MainMenuState());
|
|
||||||
}
|
|
||||||
if (controls.BACK)
|
|
||||||
{
|
|
||||||
leftState = true;
|
|
||||||
FlxG.switchState(new MainMenuState());
|
|
||||||
}
|
|
||||||
super.update(elapsed);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,8 +1,6 @@
|
|||||||
package;
|
package;
|
||||||
|
|
||||||
import openfl.utils.Assets;
|
|
||||||
import flixel.graphics.FlxGraphic;
|
import flixel.graphics.FlxGraphic;
|
||||||
import flixel.system.FlxAssets.FlxGraphicAsset;
|
|
||||||
import flixel.FlxG;
|
import flixel.FlxG;
|
||||||
import flixel.graphics.frames.FlxAtlasFrames;
|
import flixel.graphics.frames.FlxAtlasFrames;
|
||||||
import openfl.utils.AssetType;
|
import openfl.utils.AssetType;
|
||||||
|
@ -69,7 +69,7 @@ import lime.utils.Assets;
|
|||||||
import openfl.display.BlendMode;
|
import openfl.display.BlendMode;
|
||||||
import openfl.display.StageQuality;
|
import openfl.display.StageQuality;
|
||||||
import openfl.filters.ShaderFilter;
|
import openfl.filters.ShaderFilter;
|
||||||
#if cpp
|
#if windows
|
||||||
import Discord.DiscordClient;
|
import Discord.DiscordClient;
|
||||||
#end
|
#end
|
||||||
#if cpp
|
#if cpp
|
||||||
@ -2109,7 +2109,7 @@ class PlayState extends MusicBeatState
|
|||||||
vocals.pause();
|
vocals.pause();
|
||||||
}
|
}
|
||||||
|
|
||||||
#if cpp
|
#if windows
|
||||||
DiscordClient.changePresence("PAUSED on "
|
DiscordClient.changePresence("PAUSED on "
|
||||||
+ SONG.song
|
+ SONG.song
|
||||||
+ " ("
|
+ " ("
|
||||||
@ -2143,7 +2143,7 @@ class PlayState extends MusicBeatState
|
|||||||
startTimer.active = true;
|
startTimer.active = true;
|
||||||
paused = false;
|
paused = false;
|
||||||
|
|
||||||
#if cpp
|
#if windows
|
||||||
if (startTimer.finished)
|
if (startTimer.finished)
|
||||||
{
|
{
|
||||||
DiscordClient.changePresence(detailsText
|
DiscordClient.changePresence(detailsText
|
||||||
@ -2181,7 +2181,7 @@ class PlayState extends MusicBeatState
|
|||||||
vocals.time = Conductor.songPosition;
|
vocals.time = Conductor.songPosition;
|
||||||
vocals.play();
|
vocals.play();
|
||||||
|
|
||||||
#if cpp
|
#if windows
|
||||||
DiscordClient.changePresence(detailsText
|
DiscordClient.changePresence(detailsText
|
||||||
+ " "
|
+ " "
|
||||||
+ SONG.song
|
+ SONG.song
|
||||||
@ -2429,7 +2429,7 @@ class PlayState extends MusicBeatState
|
|||||||
removedVideo = true;
|
removedVideo = true;
|
||||||
}
|
}
|
||||||
cannotDie = true;
|
cannotDie = true;
|
||||||
#if cpp
|
#if windows
|
||||||
DiscordClient.changePresence("Chart Editor", null, null, true);
|
DiscordClient.changePresence("Chart Editor", null, null, true);
|
||||||
#end
|
#end
|
||||||
|
|
||||||
@ -2853,7 +2853,7 @@ class PlayState extends MusicBeatState
|
|||||||
|
|
||||||
openSubState(new GameOverSubstate(boyfriend.getScreenPosition().x, boyfriend.getScreenPosition().y));
|
openSubState(new GameOverSubstate(boyfriend.getScreenPosition().x, boyfriend.getScreenPosition().y));
|
||||||
|
|
||||||
#if cpp
|
#if windows
|
||||||
// Game Over doesn't get his own variable because it's only used here
|
// Game Over doesn't get his own variable because it's only used here
|
||||||
DiscordClient.changePresence("GAME OVER -- "
|
DiscordClient.changePresence("GAME OVER -- "
|
||||||
+ SONG.song
|
+ SONG.song
|
||||||
@ -2889,7 +2889,7 @@ class PlayState extends MusicBeatState
|
|||||||
|
|
||||||
openSubState(new GameOverSubstate(boyfriend.getScreenPosition().x, boyfriend.getScreenPosition().y));
|
openSubState(new GameOverSubstate(boyfriend.getScreenPosition().x, boyfriend.getScreenPosition().y));
|
||||||
|
|
||||||
#if cpp
|
#if windows
|
||||||
// Game Over doesn't get his own variable because it's only used here
|
// Game Over doesn't get his own variable because it's only used here
|
||||||
DiscordClient.changePresence("GAME OVER -- "
|
DiscordClient.changePresence("GAME OVER -- "
|
||||||
+ SONG.song
|
+ SONG.song
|
||||||
|
@ -21,7 +21,7 @@ class SectionRender extends FlxSprite
|
|||||||
if (Math.floor(h) != h)
|
if (Math.floor(h) != h)
|
||||||
h = GRID_SIZE;
|
h = GRID_SIZE;
|
||||||
|
|
||||||
if (FlxG.save.data.editor)
|
if (FlxG.save.data.editorBG)
|
||||||
FlxGridOverlay.overlay(this,GRID_SIZE, Std.int(h), GRID_SIZE * 8,GRID_SIZE * Height);
|
FlxGridOverlay.overlay(this,GRID_SIZE, Std.int(h), GRID_SIZE * 8,GRID_SIZE * Height);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -290,40 +290,6 @@ class TitleState extends MusicBeatState
|
|||||||
MainMenuState.firstStart = true;
|
MainMenuState.firstStart = true;
|
||||||
MainMenuState.finishedFunnyMove = false;
|
MainMenuState.finishedFunnyMove = false;
|
||||||
|
|
||||||
new FlxTimer().start(2, function(tmr:FlxTimer)
|
|
||||||
{
|
|
||||||
// Get current version of Kade Engine
|
|
||||||
|
|
||||||
var http = new haxe.Http("https://raw.githubusercontent.com/KadeDev/Kade-Engine/master/version.downloadMe");
|
|
||||||
var returnedData:Array<String> = [];
|
|
||||||
|
|
||||||
http.onData = function (data:String)
|
|
||||||
{
|
|
||||||
returnedData[0] = data.substring(0, data.indexOf(';'));
|
|
||||||
returnedData[1] = data.substring(data.indexOf('-'), data.length);
|
|
||||||
if (!MainMenuState.kadeEngineVer.contains(returnedData[0].trim()) && !OutdatedSubState.leftState)
|
|
||||||
{
|
|
||||||
trace('outdated lmao! ' + returnedData[0] + ' != ' + MainMenuState.kadeEngineVer);
|
|
||||||
OutdatedSubState.needVer = returnedData[0];
|
|
||||||
OutdatedSubState.currChanges = returnedData[1];
|
|
||||||
FlxG.switchState(new OutdatedSubState());
|
|
||||||
clean();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
FlxG.switchState(new MainMenuState());
|
|
||||||
clean();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
http.onError = function (error) {
|
|
||||||
trace('error: $error');
|
|
||||||
FlxG.switchState(new MainMenuState()); // fail but we go anyway
|
|
||||||
clean();
|
|
||||||
}
|
|
||||||
|
|
||||||
http.request();
|
|
||||||
});
|
|
||||||
// FlxG.sound.play(Paths.music('titleShoot'), 0.7);
|
// FlxG.sound.play(Paths.music('titleShoot'), 0.7);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -30,6 +30,8 @@ class SMFile
|
|||||||
{
|
{
|
||||||
_fileData = data;
|
_fileData = data;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Gather header data
|
// Gather header data
|
||||||
var headerData = "";
|
var headerData = "";
|
||||||
var inc = 0;
|
var inc = 0;
|
||||||
@ -42,9 +44,16 @@ class SMFile
|
|||||||
|
|
||||||
header = new SMHeader(headerData.split(';'));
|
header = new SMHeader(headerData.split(';'));
|
||||||
|
|
||||||
if (!StringTools.contains(header.MUSIC,"ogg"))
|
if (_fileData.toString().split("#NOTES").length > 2)
|
||||||
{
|
{
|
||||||
Application.current.window.alert("The music MUST be an OGG File.","SM File loading (" + header.TITLE + ")");
|
Application.current.window.alert("The chart must only have 1 difficulty, this one has " + (_fileData.toString().split("#NOTES").length - 1),"SM File loading (" + header.TITLE + ")");
|
||||||
|
isValid = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!StringTools.contains(header.MUSIC.toLowerCase(),"ogg"))
|
||||||
|
{
|
||||||
|
Application.current.window.alert("The music MUST be an OGG File, make sure the sm file has the right music property.","SM File loading (" + header.TITLE + ")");
|
||||||
isValid = false;
|
isValid = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -66,6 +75,8 @@ class SMFile
|
|||||||
|
|
||||||
measures = [];
|
measures = [];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var measure = "";
|
var measure = "";
|
||||||
|
|
||||||
trace(data[inc - 1]);
|
trace(data[inc - 1]);
|
||||||
@ -284,7 +295,6 @@ class SMFile
|
|||||||
{
|
{
|
||||||
song.eventObjects = header.changeEvents;
|
song.eventObjects = header.changeEvents;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*var newSections = [];
|
/*var newSections = [];
|
||||||
|
|
||||||
for(s in 0...song.notes.length) // lets go ahead and make sure each note is actually in their own section haha
|
for(s in 0...song.notes.length) // lets go ahead and make sure each note is actually in their own section haha
|
||||||
|
@ -1,5 +0,0 @@
|
|||||||
1.6.1;
|
|
||||||
- Wiggle Shader for Lua Modcharts
|
|
||||||
- Optimized the editor
|
|
||||||
- Fixed HTML5 Delta Timings
|
|
||||||
- Steps actually exist now
|
|
Loading…
x
Reference in New Issue
Block a user