[client] add result styles
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
package ru.m.tankz;
|
||||
|
||||
import haxework.color.Color;
|
||||
import haxework.view.utils.DrawUtil.FillType;
|
||||
import flash.text.TextFormatAlign;
|
||||
import haxework.color.Color;
|
||||
@@ -112,6 +113,23 @@ class AppTheme extends Theme {
|
||||
"skin.fillType" => FillType.DEFAULT,
|
||||
]));
|
||||
|
||||
var green:Color = 0x00ff00;
|
||||
var red:Color = 0xff0000;
|
||||
register(new Style("result.winner", [
|
||||
"skin.border.color" => green,
|
||||
], ["light"]));
|
||||
register(new Style("result.loser", [
|
||||
"skin.border.color" => red,
|
||||
], ["light"]));
|
||||
register(new Style("player.winner", [
|
||||
"skin.background.alpha" => 0.1,
|
||||
"skin.background.color" => green,
|
||||
]));
|
||||
register(new Style("player.loser", [
|
||||
"skin.background.alpha" => 0.1,
|
||||
"skin.background.color" => red,
|
||||
]));
|
||||
|
||||
registerButton("settings", "cog-solid.svg");
|
||||
registerButton("close", "times-circle-solid.svg");
|
||||
registerButton("next", "arrow-alt-circle-right-solid.svg");
|
||||
|
||||
@@ -33,9 +33,7 @@ using ru.m.tankz.view.ViewUtil;
|
||||
|
||||
override public function onShow(data:Result):Void {
|
||||
result = data;
|
||||
var players = result.state.humans;
|
||||
players.sort(function(a, b) return a.id.compare(b.id));
|
||||
resultView.data = players;
|
||||
resultView.data = result.state.humans;
|
||||
for (view in resultView.dataViews) {
|
||||
view.winner = view.data.id.team == data.winner;
|
||||
}
|
||||
|
||||
@@ -2,13 +2,14 @@ package ru.m.tankz.view.result;
|
||||
|
||||
import haxework.view.data.DataView;
|
||||
import haxework.view.form.LabelView;
|
||||
import haxework.view.group.HGroupView;
|
||||
import haxework.view.group.VGroupView;
|
||||
import haxework.view.skin.SpriteSkin;
|
||||
import ru.m.tankz.game.GameState;
|
||||
import ru.m.tankz.view.common.TankView;
|
||||
|
||||
@:template class ResultPlayerView extends VGroupView {
|
||||
|
||||
@:view("player") var playerView:HGroupView;
|
||||
@:view("tank") var tankView:TankView;
|
||||
@:view("title") var titleView:LabelView;
|
||||
@:view("score") var scoreView:LabelView;
|
||||
@@ -19,7 +20,7 @@ import ru.m.tankz.view.common.TankView;
|
||||
|
||||
private function set_data(value:PlayerState):PlayerState {
|
||||
data = value;
|
||||
titleView.text = data.name;
|
||||
titleView.text = data.name != null ? '${data.id.format()} * ${data.name}' : data.id.format();
|
||||
scoreView.text = '${data.score}$';
|
||||
tankView.color = value.color;
|
||||
fragsView.data = data.frags;
|
||||
@@ -29,7 +30,8 @@ import ru.m.tankz.view.common.TankView;
|
||||
|
||||
private function set_winner(value:Bool):Bool {
|
||||
winner = value;
|
||||
cast(skin, SpriteSkin).border.color = value ? 0x00ff00 : 0xff0000;
|
||||
style = winner ? "result.winner" : "result.loser";
|
||||
playerView.style = winner ? "player.winner" : "player.loser";
|
||||
return winner;
|
||||
}
|
||||
|
||||
|
||||
@@ -6,7 +6,8 @@ geometry.width: 50%
|
||||
geometry.height: 100%
|
||||
layout.hAlign: center
|
||||
views:
|
||||
- $type: haxework.view.group.HGroupView
|
||||
- id: player
|
||||
$type: haxework.view.group.HGroupView
|
||||
geometry.width: 100%
|
||||
layout.vAlign: middle
|
||||
views:
|
||||
|
||||
@@ -110,12 +110,17 @@ class GameState {
|
||||
}
|
||||
|
||||
public function get_humans():Array<PlayerState> {
|
||||
return controls.filter(function(control:PlayerControl):Bool {
|
||||
var humanControls = controls.filter(function(control:PlayerControl):Bool {
|
||||
return switch control.controller {
|
||||
case HUMAN(_): true;
|
||||
case _: false;
|
||||
}
|
||||
}).map(function(control:PlayerControl):PlayerState {
|
||||
});
|
||||
humanControls.sort(function(a, b) return switch [a.controller, b.controller] {
|
||||
case [HUMAN(i), HUMAN(j)]: i - j;
|
||||
case _: 0;
|
||||
});
|
||||
return humanControls.map(function(control:PlayerControl):PlayerState {
|
||||
return players.get(control.playerId);
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user