58 lines
1.6 KiB
Haxe
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);
|
|
};
|
|
}
|
|
}
|