Files
tankz/src/client/haxe/ru/m/tankz/view/ViewUtil.hx

58 lines
1.6 KiB
Haxe

package ru.m.tankz.view;
import openfl.Assets;
import ru.m.control.DeviceAction;
import ru.m.tankz.config.Config;
import ru.m.tankz.control.Binding;
import ru.m.tankz.control.Control;
class KeyboardMap {
private var data:Map<Int, String>;
public function new() {
this.data = new Map();
var data = Assets.getText("resources/keyboard.txt");
for (line in data.split("\n")) {
var arr = line.split("\t");
if (arr.length == 2) {
this.data.set(Std.parseInt(arr[1]), arr[0]);
}
}
}
private static var instance:KeyboardMap;
public static function getName(key:Int):String {
if (instance == null) instance = new KeyboardMap();
return key == -1 ? "(NONE)" : instance.data.exists(key) ? instance.data.get(key) : Std.string(key);
}
}
class ViewUtil {
public static function toLevelLabel(level:LevelConfig, oneline:Bool = false):String {
var result:Array<String> = ['${level.packId.type} #${level.id}'];
if (level.name != null) {
result.push(level.name);
}
return result.join(oneline ? " " : "\n");
}
public static function toActionLabel(action:TankAction):String {
return switch (action) {
case MOVE(d): 'MOVE_$d';
case SHOT(w): 'SHOT_$w';
case x: '$x';
}
}
public static function toBindLabel(bind:BindAction):String {
return bind == null ? "(NONE)" : Std.string(bind.device) + " " + switch bind.action {
case KEY(code): KeyboardMap.getName(code);
case DIRECTION(direction): Std.string(direction);
};
}
}