gf fix on non codename charts
This commit is contained in:
+1
-1
@@ -1 +1 @@
|
||||
2607
|
||||
2609
|
||||
@@ -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>;
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
/**
|
||||
|
||||
@@ -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>;
|
||||
}
|
||||
@@ -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,6 +1,5 @@
|
||||
package funkin.utils;
|
||||
|
||||
import funkin.system.Song;
|
||||
import funkin.system.Conductor;
|
||||
import flixel.system.FlxSoundGroup;
|
||||
import animateatlas.AtlasFrameMaker;
|
||||
|
||||
Reference in New Issue
Block a user