Funkin/source/SongLoad.hx

155 lines
3.3 KiB
Haxe
Raw Normal View History

2020-10-13 04:07:04 -04:00
package;
2020-10-24 05:19:13 -04:00
import Section.SwagSection;
2020-10-13 04:07:04 -04:00
import haxe.Json;
2020-10-24 05:19:13 -04:00
import haxe.format.JsonParser;
2020-10-13 04:07:04 -04:00
import lime.utils.Assets;
2020-10-14 01:02:36 -04:00
using StringTools;
2020-10-24 05:19:13 -04:00
typedef SwagSong =
{
var song:String;
var notes:FunnyNotes;
var bpm:Float;
2020-10-24 05:19:13 -04:00
var needsVoices:Bool;
2021-09-20 13:21:25 -04:00
var voiceList:Array<String>;
var speed:FunnySpeed;
2020-10-24 05:19:13 -04:00
var player1:String;
var player2:String;
2020-12-04 12:32:35 -05:00
var validScore:Bool;
var extraNotes:Map<String, Array<SwagSection>>;
2020-10-24 05:19:13 -04:00
}
typedef FunnySpeed =
{
var ?easy:Float;
var ?normal:Float;
var ?hard:Float;
}
typedef FunnyNotes =
{
var ?easy:Array<SwagSection>;
var ?normal:Array<SwagSection>;
var ?hard:Array<SwagSection>;
}
class SongLoad
2020-10-13 04:07:04 -04:00
{
public static var curDiff:String = 'normal';
2021-11-29 22:12:18 -05:00
public static var curNotes:Array<SwagSection>;
public static var songData:SwagSong;
2020-10-31 21:11:14 -04:00
public static function loadFromJson(jsonInput:String, ?folder:String):SwagSong
2020-10-13 04:07:04 -04:00
{
var rawJson = Assets.getText(Paths.json(folder.toLowerCase() + '/' + jsonInput.toLowerCase())).trim();
2020-10-14 01:02:36 -04:00
while (!rawJson.endsWith("}"))
{
rawJson = rawJson.substr(0, rawJson.length - 1);
// LOL GOING THROUGH THE BULLSHIT TO CLEAN IDK WHATS STRANGE
}
2020-10-23 19:12:38 -04:00
// FIX THE CASTING ON WINDOWS/NATIVE
2020-10-24 05:19:13 -04:00
// Windows???
// trace(songData);
2020-10-13 04:07:04 -04:00
2020-10-18 22:18:06 -04:00
// trace('LOADED FROM JSON: ' + songData.notes);
2020-10-17 21:47:59 -04:00
/*
2020-10-23 19:12:38 -04:00
for (i in 0...songData.notes.length)
{
trace('LOADED FROM JSON: ' + songData.notes[i].sectionNotes);
// songData.notes[i].sectionNotes = songData.notes[i].sectionNotes
}
daNotes = songData.notes;
daSong = songData.song;
daBpm = songData.bpm; */
2020-10-13 04:07:04 -04:00
2020-12-25 04:09:14 -05:00
return parseJSONshit(rawJson);
}
public static function getSong(?diff:String):Array<SwagSection>
{
if (diff == null)
diff = SongLoad.curDiff;
var songShit:Array<SwagSection> = [];
2022-01-20 22:55:19 -05:00
if (songData != null)
{
2022-01-20 22:55:19 -05:00
switch (diff)
{
case 'easy':
songShit = songData.notes.easy;
case 'normal':
songShit = songData.notes.normal;
case 'hard':
songShit = songData.notes.hard;
}
}
return songShit;
}
public static function getSpeed(?diff:String):Float
{
if (diff == null)
diff = SongLoad.curDiff;
var speedShit:Float = 1;
switch (diff)
{
case 'easy':
speedShit = songData.speed.easy;
case 'normal':
speedShit = songData.speed.normal;
case 'hard':
speedShit = songData.speed.hard;
}
return speedShit;
}
2022-01-20 22:55:19 -05:00
public static function getDefaultSwagSong():SwagSong
{
return {
song: 'Test',
notes: {easy: [], normal: [], hard: []},
bpm: 150,
needsVoices: true,
player1: 'bf',
player2: 'dad',
speed: {easy: 1, normal: 1, hard: 1},
validScore: false,
voiceList: ["BF", "BF-pixel"],
extraNotes: []
};
}
2020-12-25 04:09:14 -05:00
public static function parseJSONshit(rawJson:String):SwagSong
{
var swagShit:SwagSong = cast Json.parse(rawJson).song;
swagShit.validScore = true;
2021-11-29 22:12:18 -05:00
trace("SONG SHIT ABOUTTA WEEK AGOOO");
for (field in Reflect.fields(Json.parse(rawJson).song.speed))
{
// swagShit.speed[field] = Reflect.field(Json.parse(rawJson).song.speed, field);
// swagShit.notes[field] = Reflect.field(Json.parse(rawJson).song.notes, field);
// trace(swagShit.notes[field]);
}
// swagShit.notes = cast Json.parse(rawJson).song.notes[SongLoad.curDiff]; // by default uses
// trace(swagShit.notes);
trace('THAT SHIT WAS JUST THE NORMAL NOTES!!!');
2021-11-29 22:12:18 -05:00
songData = swagShit;
// curNotes = songData.notes.get('normal');
2021-11-29 22:12:18 -05:00
2020-10-24 05:19:13 -04:00
return swagShit;
2020-10-13 04:07:04 -04:00
}
}