gf fix on non codename charts

This commit is contained in:
Yoshman29
2023-03-19 13:15:59 +01:00
parent 7fa6cdd91e
commit 36ab52b160
9 changed files with 38 additions and 110 deletions
+1 -1
View File
@@ -1 +1 @@
2607
2609
+32 -3
View File
@@ -1,7 +1,5 @@
package funkin.chart;
import funkin.system.Song.SwagSong;
class BaseGameParser {
public static function parse(data:Dynamic, result:ChartData) {
// base fnf chart parsing
@@ -18,7 +16,7 @@ class BaseGameParser {
result.strumLines.push({
characters: [data.player2],
type: 0,
position: "dad",
position: data.player2.startsWith("gf") ? "girlfriend" : "dad",
notes: []
});
result.strumLines.push({
@@ -99,4 +97,35 @@ class BaseGameParser {
curTime += curCrochet * beatsPerMesure;
}
}
}
typedef SwagSong =
{
var song:String;
var notes:Array<SwagSection>;
var bpm:Float;
var needsVoices:Bool;
var speed:Float;
var stage:String;
var noteTypes:Array<String>;
var player1:String;
var player2:String;
var gf:String;
var validScore:Bool;
// ADDITIONAL STUFF THAT MAY NOT BE PRESENT IN CHART
var ?maxHealth:Float;
var ?beatsPerMesure:Float;
var ?stepsPerBeat:Float;
}
typedef SwagSection =
{
var sectionNotes:Array<Dynamic>;
var lengthInSteps:Int;
var mustHitSection:Bool;
var bpm:Float;
var changeBPM:Bool;
var altAnim:Bool;
@:optional var camTarget:Null<Float>;
}
+5 -1
View File
@@ -3,7 +3,6 @@ package funkin.chart;
import funkin.chart.ChartData;
import flixel.util.FlxColor;
import haxe.io.Path;
import funkin.system.Song.SwagSong;
import haxe.Json;
#if sys
@@ -98,6 +97,10 @@ class Chart {
Logs.trace('Could not parse chart for song ${songName} ($difficulty): ${Std.string(e)}', ERROR, RED);
}
/**
* CHART CONVERSION
*/
#if REGION
if (Reflect.hasField(data, "codenameChart") && Reflect.field(data, "codenameChart") == true) {
// codename chart
base = data;
@@ -105,6 +108,7 @@ class Chart {
// base game chart
BaseGameParser.parse(data, base);
}
#end
if (base.meta == null)
base.meta = loadChartMeta(songName, difficulty, base.fromMods);
-40
View File
@@ -1,40 +0,0 @@
{
"meta": {
"song": "Test",
"bpm": 120
},
"strumLines": [
{
"characters": ["bf-pixel"],
"opponent": true,
"notes": [
{
"time": 1500,
"id": 1,
"type": 0,
"sustainLength": 1500
}
]
},
{
"characters": ["bf"],
"opponent": false,
"notes": [
{
"time": 1500,
"id": 1,
"type": 0,
"sustainLength": 1500
}
]
}
],
"events": [
{
"time": 1500,
"type": -1,
"params": ["changeShit", true, false]
}
],
"codenameChart": true
}
-1
View File
@@ -9,7 +9,6 @@ import flixel.addons.display.FlxGridOverlay;
import flixel.text.FlxText;
import flixel.util.FlxColor;
import lime.utils.Assets;
import funkin.system.Song;
import funkin.game.HealthIcon;
import funkin.game.Highscore;
import haxe.Json;
-1
View File
@@ -5,7 +5,6 @@ import funkin.chart.ChartData;
import openfl.Lib;
import flixel.FlxState;
import funkin.interfaces.IBeatReceiver;
import funkin.system.Song.SwagSong;
import flixel.util.FlxSignal.FlxTypedSignal;
/**
-12
View File
@@ -1,12 +0,0 @@
package funkin.system;
typedef SwagSection =
{
var sectionNotes:Array<Dynamic>;
var lengthInSteps:Int;
var mustHitSection:Bool;
var bpm:Float;
var changeBPM:Bool;
var altAnim:Bool;
@:optional var camTarget:Null<Float>;
}
-50
View File
@@ -1,50 +0,0 @@
package funkin.system;
import funkin.system.Section.SwagSection;
import haxe.Json;
import haxe.format.JsonParser;
import lime.utils.Assets;
using StringTools;
typedef SwagSong =
{
var song:String;
var notes:Array<SwagSection>;
var bpm:Float;
var needsVoices:Bool;
var speed:Float;
var stage:String;
var noteTypes:Array<String>;
var player1:String;
var player2:String;
var gf:String;
var validScore:Bool;
// ADDITIONAL STUFF THAT MAY NOT BE PRESENT IN CHART
var ?maxHealth:Float;
var ?beatsPerMesure:Float;
var ?stepsPerBeat:Float;
}
class Song
{
public static function loadFromJson(songName:String, ?difficulty:String = "normal"):SwagSong
{
var assetPath = Paths.chart(songName, difficulty);
PlayState.fromMods = Paths.assetsTree.existsSpecific(assetPath, "TEXT", MODS);
var rawJson = Assets.getText(assetPath).trim();
rawJson = rawJson.substr(0, rawJson.lastIndexOf('}') + 1);
return parseJSONshit(rawJson);
}
public static function parseJSONshit(rawJson:String):SwagSong
{
var swagShit:SwagSong = cast Json.parse(rawJson).song;
swagShit.validScore = true;
return swagShit;
}
}
-1
View File
@@ -1,6 +1,5 @@
package funkin.utils;
import funkin.system.Song;
import funkin.system.Conductor;
import flixel.system.FlxSoundGroup;
import animateatlas.AtlasFrameMaker;