[client] fixes

This commit is contained in:
2019-07-18 14:32:37 +03:00
parent 3361d252ee
commit 94340bddb1
9 changed files with 25 additions and 27 deletions

View File

@@ -1,5 +1,6 @@
package ru.m.tankz.local; package ru.m.tankz.local;
import ru.m.tankz.control.HumanControl;
import ru.m.tankz.game.GameEvent; import ru.m.tankz.game.GameEvent;
import ru.m.tankz.game.GameRunner; import ru.m.tankz.game.GameRunner;
import ru.m.tankz.local.LocalControlFactory; import ru.m.tankz.local.LocalControlFactory;
@@ -18,20 +19,20 @@ class LocalGame extends GameRunner {
override public function onGameEvent(event:GameEvent):Void { override public function onGameEvent(event:GameEvent):Void {
super.onGameEvent(event); super.onGameEvent(event);
switch event { switch event {
case COMPLETE(result): case COMPLETE(result): updateProgress(result);
updateProgress(result);
case _: case _:
} }
} }
private static function updateProgress(result:Result):Void { private function updateProgress(result:Result):Void {
var complete = true; var complete = false;
for (rule in result.state.config.game.complete) { var humansTeams:Array<TeamId> = [];
if (rule.team != null && rule.team != result.winner) { for (control in controls) {
complete = false; if (Std.is(HumanControl, control) && humansTeams.indexOf(control.playerId.team) == -1) {
humansTeams.push(control.playerId.team);
} }
} }
if (complete) { if (humansTeams.length == 1 && result.winner == humansTeams[0]) {
var progress = gameStorage.get(new PackId(result.state.type)); var progress = gameStorage.get(new PackId(result.state.type));
progress.completeLevel(result.level.id, result.state.presetId); progress.completeLevel(result.level.id, result.state.presetId);
gameStorage.set(progress); gameStorage.set(progress);

View File

@@ -16,10 +16,15 @@ import ru.m.tankz.control.PlayerControl;
private function set_control(value:PlayerControl):PlayerControl { private function set_control(value:PlayerControl):PlayerControl {
control = value; control = value;
slotLabel.text = '${control.playerId.team}(${control.playerId.index})'; slotLabel.text = '${control.playerId.team}(${control.playerId.index})';
// ToDo: style slotLabel.font.color = value.color;
//slotLabel.skin = theme.textBox(value.color != null ? value.color : theme.colors.text);
select.selected = control.controller; select.selected = control.controller;
return control; return control;
} }
private function onControllerSelect(value:Controller):Void {
select.currentView.style = switch value {
case HUMAN(_): "button.active";
case _: "button";
}
}
} }

View File

@@ -10,6 +10,7 @@ views:
geometry.width: 150 geometry.width: 150
- id: select - id: select
$type: haxework.view.form.SelectView<ru.m.tankz.control.Controller> $type: haxework.view.form.SelectView<ru.m.tankz.control.Controller>
geometry.width: 150
labelBuilder: | labelBuilder: |
~function(controller) { ~function(controller) {
var result = ControllerParser.defaultName(controller); var result = ControllerParser.defaultName(controller);
@@ -20,3 +21,4 @@ views:
- ~ru.m.tankz.control.Controller.HUMAN(0) - ~ru.m.tankz.control.Controller.HUMAN(0)
- ~ru.m.tankz.control.Controller.HUMAN(1) - ~ru.m.tankz.control.Controller.HUMAN(1)
selected: ~ru.m.tankz.control.Controller.NONE selected: ~ru.m.tankz.control.Controller.NONE
+onSelect: ~onControllerSelect

View File

@@ -29,10 +29,7 @@ import ru.m.tankz.proto.room.RoomSlotProto;
userView.style = (value.hasUser() && value.user.uuid == network.user.uuid) ? "text.box.active" : "text.box"; userView.style = (value.hasUser() && value.user.uuid == network.user.uuid) ? "text.box.active" : "text.box";
var config = configBundle.get(network.room.game.type); var config = configBundle.get(network.room.game.type);
var color = config.getColor([value.slot.team, value.slot.index]); var color = config.getColor([value.slot.team, value.slot.index]);
if (color != null) { typeView.font.color = color;
// ToDo: style
//typeView.skin = theme.textBox(color);
}
return data; return data;
} }

View File

@@ -4,8 +4,10 @@ layout.vAlign: middle
view: view:
$type: haxework.view.group.VGroupView $type: haxework.view.group.VGroupView
layout.hAlign: center layout.hAlign: center
geometry.width: 400 geometry.width: 100%
geometry.height: 400 geometry.height: 100%
# geometry.width: 400
# geometry.height: 400
geometry.margin: 10 geometry.margin: 10
style: window style: window
views: views:
@@ -30,6 +32,8 @@ view:
id: slots id: slots
$type: haxework.view.data.DataView $type: haxework.view.data.DataView
geometry.padding: 10 geometry.padding: 10
geometry.width: 100%
layout.hAlign: center
factory: ~slotViewFactory factory: ~slotViewFactory
layout: layout:
$type: haxework.view.layout.VerticalLayout $type: haxework.view.layout.VerticalLayout

View File

@@ -4,14 +4,9 @@ import haxework.color.Color;
import ru.m.tankz.control.Controller; import ru.m.tankz.control.Controller;
import ru.m.tankz.Type; import ru.m.tankz.Type;
typedef CompleteRule = {
@:optional var team:TeamId;
}
typedef GameConfig = { typedef GameConfig = {
var levels: Int; var levels: Int;
var friendlyFire:Bool; var friendlyFire:Bool;
var complete:Array<CompleteRule>;
} }
typedef SpawnPoint = { typedef SpawnPoint = {

View File

@@ -1,7 +1,5 @@
game: game:
friendlyFire: false friendlyFire: false
complete:
- team: human
map: map:
cell: cell:

View File

@@ -1,7 +1,5 @@
game: game:
friendlyFire: true friendlyFire: true
complete:
- team: alpha
map: map:
cell: cell:

View File

@@ -1,7 +1,5 @@
game: game:
friendlyFire: true friendlyFire: true
complete:
- team: radiant
map: map:
cell: cell: