59 lines
1.8 KiB
Haxe
59 lines
1.8 KiB
Haxe
package ru.m.tankz.view.common;
|
|
|
|
import haxework.gui.ButtonView;
|
|
import haxework.gui.GroupView;
|
|
import haxework.resources.IResources;
|
|
import ru.m.tankz.bundle.IConfigBundle;
|
|
import ru.m.tankz.config.Config;
|
|
import ru.m.tankz.control.Control.Controller;
|
|
import ru.m.tankz.game.GameState;
|
|
import ru.m.tankz.Type;
|
|
|
|
class LevelFrame extends GroupView {
|
|
|
|
public var gameType(default, set):GameType;
|
|
public var preset(default, set):GamePreset;
|
|
public var level(default, set):Int;
|
|
private var config(default, null):Config;
|
|
|
|
@:provide var configBundle:IConfigBundle;
|
|
@:provide var state:GameState;
|
|
@:provide var resources:IResources;
|
|
|
|
private function set_gameType(value:GameType):GameType {
|
|
if (gameType != value || true) { // ToDo:
|
|
gameType = value;
|
|
config = configBundle.get(gameType);
|
|
preset = config.presets[0];
|
|
}
|
|
return gameType;
|
|
}
|
|
|
|
private function set_preset(value:GamePreset):GamePreset {
|
|
if (preset != value || true) { // ToDo:
|
|
preset = value;
|
|
state = new GameState(gameType, preset.id);
|
|
for (team in value.teams) {
|
|
for (player in team.players) {
|
|
var playerId = new PlayerId(team.id, player.index);
|
|
var controller = player.human ? HUMAN(player.index) : NONE;
|
|
state.players.push(new PlayerState(playerId, controller, player.life));
|
|
}
|
|
}
|
|
}
|
|
return preset;
|
|
}
|
|
|
|
private function set_level(value:Int):Int {
|
|
state.level = value;
|
|
return state.level;
|
|
}
|
|
|
|
private function levelViewFactory(index:Int, level:Int):ButtonView {
|
|
var view = new ButtonView();
|
|
view.text = '${level}';
|
|
resources.skin.bind("button.level", view, "skin");
|
|
return view;
|
|
}
|
|
}
|