week loading
This commit is contained in:
@@ -22,7 +22,7 @@
|
||||
<!-- IF YOU WANT CUSTOM DIFFICULTIES, ADD THIS: difficulties="easy,normal,hard" -->
|
||||
<!-- DIFFICULTIES SPRITES IN "images/menus/storymenu/difficulties/" -->
|
||||
|
||||
<week name="" chars="dad,bf,gf" sprite="tutorial">
|
||||
<week name="" chars="none,bf,gf" sprite="tutorial">
|
||||
<song name="Tutorial" show="true" />
|
||||
</week>
|
||||
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
997
|
||||
999
|
||||
@@ -1,5 +1,6 @@
|
||||
package funkin.menus;
|
||||
|
||||
import openfl.utils.Assets;
|
||||
import flixel.FlxG;
|
||||
import flixel.util.FlxColor;
|
||||
import funkin.ui.FunkinText;
|
||||
@@ -11,6 +12,7 @@ class StoryMenuState extends MusicBeatState {
|
||||
public var weekData:Array<WeekData> = [];
|
||||
|
||||
public var characters:Map<String, MenuCharacter> = [];
|
||||
public var weeks:Array<WeekData> = [];
|
||||
|
||||
public var scoreText:FlxText;
|
||||
public var tracklist:FlxText;
|
||||
@@ -24,7 +26,6 @@ class StoryMenuState extends MusicBeatState {
|
||||
public var leftArrow:FlxSprite;
|
||||
public var rightArrow:FlxSprite;
|
||||
|
||||
|
||||
public override function create() {
|
||||
super.create();
|
||||
loadXMLs();
|
||||
@@ -52,9 +53,67 @@ class StoryMenuState extends MusicBeatState {
|
||||
}
|
||||
|
||||
public function loadXML(xmlPath:String) {
|
||||
// try {
|
||||
|
||||
// }
|
||||
try {
|
||||
var xml = new Access(Xml.parse(Assets.getText(xmlPath)).firstElement());
|
||||
|
||||
for(el in xml.elements) {
|
||||
switch(el.name) {
|
||||
case 'characters':
|
||||
for(k=>char in el.nodes.char) {
|
||||
if (!char.has.name) {
|
||||
Logs.trace('weeks.xml: Character at index ${k} has no name. Skipping...', WARNING);
|
||||
continue;
|
||||
}
|
||||
if (characters[char.att.name] != null) continue;
|
||||
var charObj:MenuCharacter = {
|
||||
spritePath: Paths.image(char.getAtt('scale').getDefault('menus/storymenu/characters/${char.att.name}')),
|
||||
scale: Std.parseFloat(char.getAtt('scale')).getDefault(1),
|
||||
xml: char
|
||||
};
|
||||
characters[char.att.name] = charObj;
|
||||
}
|
||||
case 'weeks':
|
||||
for(k=>week in el.nodes.week) {
|
||||
if (!week.has.name) {
|
||||
Logs.trace('weeks.xml: Week at index ${k} has no name. Skipping...', WARNING);
|
||||
continue;
|
||||
}
|
||||
var weekObj:WeekData = {
|
||||
name: week.att.name,
|
||||
sprite: week.getAtt('sprite').getDefault('week${k}'),
|
||||
chars: [null, null, null],
|
||||
songs: []
|
||||
};
|
||||
if (week.has.chars) {
|
||||
for(k=>e in week.att.chars.split(",")) {
|
||||
if (e.trim() == "" || e == "none" || e == "null")
|
||||
weekObj.chars[k] = null;
|
||||
else
|
||||
weekObj.chars[k] = e.trim();
|
||||
}
|
||||
}
|
||||
for(k2=>song in week.nodes.song) {
|
||||
if (!song.has.name) {
|
||||
Logs.trace('weeks.xml: Song at index ${k2} in week ${weekObj.name} has no name. Skipping...', WARNING);
|
||||
continue;
|
||||
}
|
||||
weekObj.songs.push({
|
||||
name: song.att.name,
|
||||
hide: week.getAtt('hide').getDefault('false') == "true"
|
||||
});
|
||||
}
|
||||
if (weekObj.songs.length <= 0) {
|
||||
Logs.trace('weeks.xml: Week ${weekObj.name} has no songs. Skipping...', WARNING);
|
||||
continue;
|
||||
}
|
||||
weeks.push(weekObj);
|
||||
}
|
||||
}
|
||||
}
|
||||
trace(weeks);
|
||||
} catch(e) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -70,8 +129,8 @@ typedef WeekSong = {
|
||||
var hide:Bool;
|
||||
}
|
||||
|
||||
class MenuCharacter extends FlxSprite {
|
||||
public function new(xml:Access) {
|
||||
super();
|
||||
}
|
||||
typedef MenuCharacter = {
|
||||
var spritePath:String;
|
||||
var xml:Access;
|
||||
var scale:Float;
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
package funkin.system;
|
||||
|
||||
import haxe.xml.Access;
|
||||
import flixel.input.keyboard.FlxKey;
|
||||
import lime.utils.Assets;
|
||||
import flixel.animation.FlxAnimation;
|
||||
@@ -211,6 +212,11 @@ class CoolUtil
|
||||
sprite.updateHitbox();
|
||||
}
|
||||
|
||||
public static function getAtt(xml:Access, name:String) {
|
||||
if (!xml.has.resolve(name)) return null;
|
||||
return xml.att.resolve(name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns last member of array
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user