60 lines
2.0 KiB
Haxe
60 lines
2.0 KiB
Haxe
package ru.m.tankz.view;
|
|
|
|
import haxework.view.LabelView;
|
|
import haxework.view.ButtonView;
|
|
import haxework.view.DataView;
|
|
import haxework.view.frame.FrameSwitcher;
|
|
import haxework.view.VGroupView;
|
|
import ru.m.tankz.control.Control;
|
|
import ru.m.tankz.view.classic.ClassicGameFrame;
|
|
import ru.m.tankz.view.common.LifeView;
|
|
import ru.m.tankz.view.dota.DotaGameFrame;
|
|
import ru.m.tankz.game.GameState;
|
|
import ru.m.tankz.preset.ClassicGame;
|
|
import ru.m.tankz.preset.DotaGame;
|
|
|
|
@:template class ResultFrame extends VGroupView {
|
|
public static var ID(default, never):String = "result";
|
|
|
|
@:view("result") var resultView:DataView<PlayerState, LifeView>;
|
|
@:view("next") var nextButton:ButtonView;
|
|
@:view("level") var levelLabel:LabelView;
|
|
|
|
@:provide var frames:FrameSwitcher;
|
|
@:provide var state:GameState;
|
|
@:provide("result") var resultState:GameState;
|
|
|
|
private function playerViewFactory(index:Int, player:PlayerState) {
|
|
var view = new LifeView();
|
|
var playerConfig = resultState.config.getPlayer(player.id);
|
|
var tankType = playerConfig.tanks[0].type;
|
|
var tankConfig = resultState.config.getTank(tankType);
|
|
view.tank = tankConfig == null ? 'ba' : tankConfig.skin;
|
|
view.color = resultState.getPlayerColor(player.id);
|
|
view.life = player.frags;
|
|
view.score = player.score;
|
|
return view;
|
|
}
|
|
|
|
public function onShow() {
|
|
resultView.data = Lambda.array(Lambda.filter(resultState.players, function(player:PlayerState):Bool return switch player.controller {
|
|
case HUMAN(_): true;
|
|
case _: false;
|
|
}));
|
|
levelLabel.text = 'Level ${resultState.level}';
|
|
nextButton.visible = state != null;
|
|
}
|
|
|
|
private function next() {
|
|
frames.change(switch state == null ? null : state.type {
|
|
case ClassicGame.TYPE: ClassicGameFrame.ID;
|
|
case DotaGame.TYPE: DotaGameFrame.ID;
|
|
case _: StartFrame.ID;
|
|
});
|
|
}
|
|
|
|
private function close() {
|
|
frames.change(StartFrame.ID);
|
|
}
|
|
}
|