37 lines
1.0 KiB
Haxe
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);
|
|
}
|
|
}
|