Files
tankz/src/common/haxe/ru/m/tankz/config/ConfigBundle.hx

37 lines
1.0 KiB
Haxe

package ru.m.tankz.config;
import yaml.Parser;
import openfl.Assets;
import yaml.Yaml;
import ru.m.tankz.config.Config;
typedef ConfigSource = {
var game:GameConfig;
var map: MapConfig;
var bricks: Array<BrickConfig>;
var teams: Array<TeamConfig>;
var points: Array<SpawnPoint>;
var tanks: Dynamic<Array<TankConfig>>;
}
class ConfigBundle {
private static function convert(raw:Dynamic):ConfigSource {
return raw;
}
public static function get(type:String):Config {
var source:ConfigSource = convert(Yaml.parse(Assets.getText('resources/${type}/config.yaml'), Parser.options().useObjects()));
var tanks:Array<TankConfig> = [];
for (group in Reflect.fields(source.tanks)) {
var data:Array<TankConfig> = Reflect.field(source.tanks, group);
for (item in data) {
item.group = group;
tanks.push(item);
}
}
return new Config(type, source.game, source.map, source.bricks, source.teams, source.points, tanks);
}
}