[client] add result styles

This commit is contained in:
2019-08-02 17:48:27 +03:00
parent 43a34cce39
commit f10da93a12
5 changed files with 33 additions and 9 deletions

View File

@@ -1,5 +1,6 @@
package ru.m.tankz; package ru.m.tankz;
import haxework.color.Color;
import haxework.view.utils.DrawUtil.FillType; import haxework.view.utils.DrawUtil.FillType;
import flash.text.TextFormatAlign; import flash.text.TextFormatAlign;
import haxework.color.Color; import haxework.color.Color;
@@ -112,6 +113,23 @@ class AppTheme extends Theme {
"skin.fillType" => FillType.DEFAULT, "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("settings", "cog-solid.svg");
registerButton("close", "times-circle-solid.svg"); registerButton("close", "times-circle-solid.svg");
registerButton("next", "arrow-alt-circle-right-solid.svg"); registerButton("next", "arrow-alt-circle-right-solid.svg");

View File

@@ -33,9 +33,7 @@ using ru.m.tankz.view.ViewUtil;
override public function onShow(data:Result):Void { override public function onShow(data:Result):Void {
result = data; result = data;
var players = result.state.humans; resultView.data = result.state.humans;
players.sort(function(a, b) return a.id.compare(b.id));
resultView.data = players;
for (view in resultView.dataViews) { for (view in resultView.dataViews) {
view.winner = view.data.id.team == data.winner; view.winner = view.data.id.team == data.winner;
} }

View File

@@ -2,13 +2,14 @@ package ru.m.tankz.view.result;
import haxework.view.data.DataView; import haxework.view.data.DataView;
import haxework.view.form.LabelView; import haxework.view.form.LabelView;
import haxework.view.group.HGroupView;
import haxework.view.group.VGroupView; import haxework.view.group.VGroupView;
import haxework.view.skin.SpriteSkin;
import ru.m.tankz.game.GameState; import ru.m.tankz.game.GameState;
import ru.m.tankz.view.common.TankView; import ru.m.tankz.view.common.TankView;
@:template class ResultPlayerView extends VGroupView { @:template class ResultPlayerView extends VGroupView {
@:view("player") var playerView:HGroupView;
@:view("tank") var tankView:TankView; @:view("tank") var tankView:TankView;
@:view("title") var titleView:LabelView; @:view("title") var titleView:LabelView;
@:view("score") var scoreView:LabelView; @:view("score") var scoreView:LabelView;
@@ -19,7 +20,7 @@ import ru.m.tankz.view.common.TankView;
private function set_data(value:PlayerState):PlayerState { private function set_data(value:PlayerState):PlayerState {
data = value; data = value;
titleView.text = data.name; titleView.text = data.name != null ? '${data.id.format()} * ${data.name}' : data.id.format();
scoreView.text = '${data.score}$'; scoreView.text = '${data.score}$';
tankView.color = value.color; tankView.color = value.color;
fragsView.data = data.frags; fragsView.data = data.frags;
@@ -29,7 +30,8 @@ import ru.m.tankz.view.common.TankView;
private function set_winner(value:Bool):Bool { private function set_winner(value:Bool):Bool {
winner = value; 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; return winner;
} }

View File

@@ -6,7 +6,8 @@ geometry.width: 50%
geometry.height: 100% geometry.height: 100%
layout.hAlign: center layout.hAlign: center
views: views:
- $type: haxework.view.group.HGroupView - id: player
$type: haxework.view.group.HGroupView
geometry.width: 100% geometry.width: 100%
layout.vAlign: middle layout.vAlign: middle
views: views:

View File

@@ -110,12 +110,17 @@ class GameState {
} }
public function get_humans():Array<PlayerState> { 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 { return switch control.controller {
case HUMAN(_): true; case HUMAN(_): true;
case _: false; 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); return players.get(control.playerId);
}); });
} }