forked from nebulazorua/andromeda-engine-legacy
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSong.hx
More file actions
94 lines (78 loc) · 1.94 KB
/
Copy pathSong.hx
File metadata and controls
94 lines (78 loc) · 1.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
package;
import Section.SwagSection;
import haxe.Json;
import haxe.format.JsonParser;
import lime.utils.Assets;
import sys.io.File;
import flixel.util.typeLimit.OneOfTwo;
using StringTools;
typedef VelocityChange = {
var startTime:Float;
var multiplier:Float;
}
typedef SwagSong =
{
var song:String;
var notes:Array<SwagSection>;
var bpm:Int;
var needsVoices:Bool;
var speed:Float;
var player1:String;
var player2:String;
var stage:String;
var validScore:Bool;
var noteModifier:String;
@:optional var format:String;
@:optional var sliderVelocities:Array<VelocityChange>;
@:optional var initialSpeed:Float;
}
class Song
{
public var song:String;
public var notes:Array<SwagSection>;
public var bpm:Int;
public var needsVoices:Bool = true;
public var stage:String;
public var noteModifier:String;
public var speed:Float = 1;
public var initialSpeed:Float = 1;
public var sliderVelocities:Array<VelocityChange>=[];
public var player1:String = 'bf';
public var player2:String = 'dad';
public function new(song, notes, bpm)
{
this.song = song;
this.notes = notes;
this.bpm = bpm;
}
public static function loadFromJson(jsonInput:String, ?folder:String):SwagSong
{
var rawJson = File.getContent(Paths.chart(jsonInput.toLowerCase(),folder.toLowerCase())).trim();
while (!rawJson.endsWith("}"))
{
rawJson = rawJson.substr(0, rawJson.length - 1);
}
return parseJSONshit(rawJson);
}
public static function parseJSONshit(rawJson:String):SwagSong
{
var cumData = Json.parse(rawJson);
var swagShit:SwagSong = cast cumData.song;
swagShit.initialSpeed=1;
if(cumData.sliderVelocities!=null){
var shit:Array<VelocityChange> = cast cumData.sliderVelocities;
shit.sort((a,b)->Std.int(a.startTime-b.startTime));
swagShit.sliderVelocities = shit;
}else{
trace("SLIDERS");
swagShit.sliderVelocities = [
{
startTime:0,
multiplier:1
}
];
}
swagShit.validScore = true;
return swagShit;
}
}