[client] text.box style update

This commit is contained in:
2019-07-26 12:04:59 +03:00
parent a547b68dc0
commit 523f334c1b
23 changed files with 47 additions and 41 deletions

View File

@@ -61,13 +61,14 @@ class AppTheme extends Theme {
"skin.background.color" => Color.fromInt(0x000000), "skin.background.color" => Color.fromInt(0x000000),
"skin.background.alpha" => 0.1, "skin.background.alpha" => 0.1,
"skin.border.color" => colors.light, "skin.border.color" => colors.light,
"geometry.padding" => Box.fromArray([15, 8]),
], ["text"])); ], ["text"]));
register(new Style("text.box.active", [ register(new Style("text.box.active", [
"skin.background.color" => Color.fromInt(0x55aa55), "skin.background.color" => Color.fromInt(0x55aa55),
"skin.background.alpha" => 1, "skin.background.alpha" => 1,
"skin.border.color" => Color.fromInt(0x88dd88), "skin.border.color" => Color.fromInt(0x88dd88),
], ["text"])); ], ["text.box"]));
register(new Style("button.level", [ register(new Style("button.level", [
"font.size" => fontSize.veryBig, "font.size" => fontSize.veryBig,

View File

@@ -34,7 +34,6 @@ views:
- $type: haxework.view.form.LabelView - $type: haxework.view.form.LabelView
geometry.hAlign: right geometry.hAlign: right
geometry.vAlign: top geometry.vAlign: top
geometry.padding: [20, 5]
geometry.position: absolute geometry.position: absolute
geometry.margin: [0, 20, 20, 0] geometry.margin: [0, 20, 20, 0]
style: text.box style: text.box

View File

@@ -89,6 +89,7 @@ using ru.m.tankz.view.ViewUtil;
var result = new SlotView(); var result = new SlotView();
result.select.onSelect.connect(function(controller:Controller) setController(value, controller)); result.select.onSelect.connect(function(controller:Controller) setController(value, controller));
result.control = value; result.control = value;
result.tank = start.state.config.getTank(start.state.config.getPlayer(value.playerId).tanks[0].type).skin;
return result; return result;
} }

View File

@@ -32,12 +32,12 @@ class KeyboardMap {
class ViewUtil { class ViewUtil {
public static function toLevelLabel(level:LevelConfig):String { public static function toLevelLabel(level:LevelConfig, oneline:Bool = false):String {
var result:Array<String> = ['${level.packId.type} #${level.id}']; var result:Array<String> = ['${level.packId.type} #${level.id}'];
if (level.name != null) { if (level.name != null) {
result.push(level.name); result.push(level.name);
} }
return result.join("\n"); return result.join(oneline ? " " : "\n");
} }
public static function toActionLabel(action:TankAction):String { public static function toActionLabel(action:TankAction):String {

View File

@@ -7,9 +7,7 @@ views:
$type: haxework.view.form.LabelView $type: haxework.view.form.LabelView
style: text.box style: text.box
geometry.width: 50 geometry.width: 50
geometry.height: 38
- id: score - id: score
$type: haxework.view.form.LabelView $type: haxework.view.form.LabelView
style: text.box style: text.box
geometry.width: 100 geometry.width: 100
geometry.height: 38

View File

@@ -11,22 +11,18 @@ views:
$type: haxework.view.form.LabelView $type: haxework.view.form.LabelView
style: text.box style: text.box
geometry.width: 200 geometry.width: 200
geometry.height: 38
- id: type - id: type
$type: haxework.view.form.LabelView $type: haxework.view.form.LabelView
style: text.box style: text.box
geometry.width: 200 geometry.width: 200
geometry.height: 38
- id: level - id: level
$type: haxework.view.form.LabelView $type: haxework.view.form.LabelView
style: text.box style: text.box
geometry.width: 100 geometry.width: 100
geometry.height: 38
- id: preset - id: preset
$type: haxework.view.form.LabelView $type: haxework.view.form.LabelView
style: text.box style: text.box
geometry.width: 100 geometry.width: 100
geometry.height: 38
- id: delete - id: delete
$type: haxework.view.form.ButtonView $type: haxework.view.form.ButtonView
style: button.close.small style: button.close.small

View File

@@ -1,5 +1,7 @@
package ru.m.tankz.view.common; package ru.m.tankz.view.common;
import openfl.Assets;
import haxework.view.ImageView;
import haxework.view.form.LabelView; import haxework.view.form.LabelView;
import haxework.view.form.SelectView; import haxework.view.form.SelectView;
import haxework.view.group.HGroupView; import haxework.view.group.HGroupView;
@@ -9,10 +11,12 @@ import ru.m.tankz.control.PlayerControl;
@:template class SlotView extends HGroupView { @:template class SlotView extends HGroupView {
@:view("tank") public var tankView:ImageView;
@:view("slot") public var slotLabel:LabelView; @:view("slot") public var slotLabel:LabelView;
@:view("select") public var select:SelectView<Controller>; @:view("select") public var select:SelectView<Controller>;
public var control(default, set):PlayerControl; public var control(default, set):PlayerControl;
public var tank(default, set):String;
private function set_control(value:PlayerControl):PlayerControl { private function set_control(value:PlayerControl):PlayerControl {
control = value; control = value;
@@ -23,9 +27,18 @@ import ru.m.tankz.control.PlayerControl;
skin.background.color = value.color; skin.background.color = value.color;
skin.background.alpha = 0.2; skin.background.alpha = 0.2;
select.selected = control.controller; select.selected = control.controller;
tankView.color = value.color;
return control; return control;
} }
private function set_tank(value:String):String {
if (tank != value) {
tank = value;
tankView.image = Assets.getBitmapData('resources/image/tank/${tank}-0.png');
}
return tank;
}
private function onControllerSelect(value:Controller):Void { private function onControllerSelect(value:Controller):Void {
select.currentView.style = switch value { select.currentView.style = switch value {
case HUMAN(_): "button.active"; case HUMAN(_): "button.active";

View File

@@ -1,12 +1,13 @@
--- ---
geometry.height: 48
geometry.padding: 2 geometry.padding: 2
layout.margin: 10 layout.margin: 10
layout.vAlign: middle
views: views:
- id: tank
$type: haxework.view.ImageView
- id: slot - id: slot
$type: haxework.view.form.LabelView $type: haxework.view.form.LabelView
style: text.box style: text.box
geometry.height: 100%
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>

View File

@@ -9,6 +9,8 @@ import ru.m.tankz.preset.ClassicGame;
import ru.m.tankz.Type.PlayerId; import ru.m.tankz.Type.PlayerId;
import ru.m.tankz.view.common.LifeView; import ru.m.tankz.view.common.LifeView;
using ru.m.tankz.view.ViewUtil;
@:template class ClassicGamePanel extends VGroupView implements IGamePanel { @:template class ClassicGamePanel extends VGroupView implements IGamePanel {
public var position(default, null):Direction = Direction.RIGHT; public var position(default, null):Direction = Direction.RIGHT;
@@ -36,7 +38,7 @@ import ru.m.tankz.view.common.LifeView;
public function onGameEvent(event:GameEvent):Void { public function onGameEvent(event:GameEvent):Void {
switch event { switch event {
case START(start): case START(start):
this.level.text = 'Level ${start.level.id}'; this.level.text = start.level.toLevelLabel();
refresh(start.state); refresh(start.state);
case CHANGE(TEAM_LIFE(teamId, life)): case CHANGE(TEAM_LIFE(teamId, life)):
if (teamId == ClassicGame.BOT) { if (teamId == ClassicGame.BOT) {

View File

@@ -7,7 +7,6 @@ views:
- id: level - id: level
$type: haxework.view.form.LabelView $type: haxework.view.form.LabelView
style: text.box style: text.box
geometry.height: 38
geometry.width: 100% geometry.width: 100%
- $type: haxework.view.SpriteView - $type: haxework.view.SpriteView
geometry.height: 50% geometry.height: 50%

View File

@@ -10,6 +10,8 @@ import ru.m.tankz.game.GameState;
import ru.m.tankz.preset.DeathGame; import ru.m.tankz.preset.DeathGame;
import ru.m.tankz.view.common.LifeView; import ru.m.tankz.view.common.LifeView;
using ru.m.tankz.view.ViewUtil;
@:template class DeathGamePanel extends VGroupView implements IGamePanel { @:template class DeathGamePanel extends VGroupView implements IGamePanel {
public var position(default, null):Direction = Direction.RIGHT; public var position(default, null):Direction = Direction.RIGHT;
@@ -30,7 +32,7 @@ import ru.m.tankz.view.common.LifeView;
public function onGameEvent(event:GameEvent):Void { public function onGameEvent(event:GameEvent):Void {
switch event { switch event {
case START(start): case START(start):
this.level.text = 'Level ${start.level.id}'; this.level.text = start.level.toLevelLabel();
players.data = Lambda.array(start.state.players); players.data = Lambda.array(start.state.players);
case SPAWN(TANK(_, _, playerId, info)): case SPAWN(TANK(_, _, playerId, info)):
var skin = configBundle.get(DeathGame.TYPE).getTank(info.type).skin; var skin = configBundle.get(DeathGame.TYPE).getTank(info.type).skin;

View File

@@ -7,7 +7,6 @@ views:
- id: level - id: level
$type: haxework.view.form.LabelView $type: haxework.view.form.LabelView
style: text.box style: text.box
geometry.height: 38
geometry.width: 100% geometry.width: 100%
- $type: haxework.view.SpriteView - $type: haxework.view.SpriteView
geometry.height: 50% geometry.height: 50%

View File

@@ -9,6 +9,8 @@ import ru.m.tankz.preset.DotaGame;
import ru.m.tankz.Type.TeamId; import ru.m.tankz.Type.TeamId;
import ru.m.tankz.view.common.LifeView; import ru.m.tankz.view.common.LifeView;
using ru.m.tankz.view.ViewUtil;
@:template class DotaGamePanel extends HGroupView implements IGamePanel { @:template class DotaGamePanel extends HGroupView implements IGamePanel {
public var position(default, null):Direction = Direction.TOP; public var position(default, null):Direction = Direction.TOP;
@@ -34,7 +36,7 @@ import ru.m.tankz.view.common.LifeView;
public function onGameEvent(event:GameEvent):Void { public function onGameEvent(event:GameEvent):Void {
switch event { switch event {
case START(start): case START(start):
this.level.text = 'Level ${start.level.id}'; this.level.text = start.level.toLevelLabel(true);
refresh(start.state); refresh(start.state);
case CHANGE(TEAM_LIFE(teamId, life)): case CHANGE(TEAM_LIFE(teamId, life)):
getLifeView(teamId).life = life; getLifeView(teamId).life = life;

View File

@@ -7,14 +7,12 @@ views:
tank: bc tank: bc
color: 0xff4422 color: 0xff4422
- $type: haxework.view.SpriteView - $type: haxework.view.SpriteView
geometry.width: 25% geometry.width: 50%
- id: level - id: level
$type: haxework.view.form.LabelView $type: haxework.view.form.LabelView
style: text.box style: text.box
geometry.height: 38
geometry.width: 50%
- $type: haxework.view.SpriteView - $type: haxework.view.SpriteView
geometry.width: 25% geometry.width: 50%
- id: dire - id: dire
$type: ru.m.tankz.view.common.LifeView $type: ru.m.tankz.view.common.LifeView
tank: bc tank: bc

View File

@@ -1,9 +1,9 @@
package ru.m.tankz.view.network; package ru.m.tankz.view.network;
import haxework.view.data.DataView;
import haxework.view.form.ButtonView; import haxework.view.form.ButtonView;
import haxework.view.frame.FrameSwitcher; import haxework.view.frame.FrameSwitcher;
import haxework.view.frame.FrameView; import haxework.view.frame.FrameView;
import haxework.view.list.VListView;
import haxework.view.text.TextView; import haxework.view.text.TextView;
import ru.m.tankz.game.GameInit; import ru.m.tankz.game.GameInit;
import ru.m.tankz.network.NetworkManager; import ru.m.tankz.network.NetworkManager;
@@ -16,7 +16,7 @@ import ru.m.tankz.proto.room.RoomSlotProto;
@:view var start:ButtonView; @:view var start:ButtonView;
@:view var info:TextView; @:view var info:TextView;
@:view var slots:VListView<RoomSlotProto>; @:view var slots:DataView<RoomSlotProto, SlotItemView>;
@:provide var switcher:FrameSwitcher; @:provide var switcher:FrameSwitcher;
@:provide var network:NetworkManager; @:provide var network:NetworkManager;

View File

@@ -34,6 +34,8 @@ views:
geometry.height: 3 geometry.height: 3
style: line style: line
- id: slots - id: slots
$type: haxework.view.list.VListView $type: haxework.view.data.DataView
layout.hAlign: center
geometry.stretch: true geometry.stretch: true
overflow.y: scroll
factory: ~ru.m.tankz.view.network.SlotItemView.factory factory: ~ru.m.tankz.view.network.SlotItemView.factory

View File

@@ -1,26 +1,20 @@
--- ---
# geometry.width: 100%
geometry.height: 48
layout.margin: 10 layout.margin: 10
layout.hAlign: center layout.hAlign: center
views: views:
- id: creator - id: creator
$type: haxework.view.form.LabelView $type: haxework.view.form.LabelView
geometry.height: 100%
geometry.width: 200 geometry.width: 200
style: text.box style: text.box
- id: type - id: type
$type: haxework.view.form.LabelView $type: haxework.view.form.LabelView
geometry.height: 100%
geometry.width: 200 geometry.width: 200
style: text.box style: text.box
- id: users - id: users
$type: haxework.view.form.LabelView $type: haxework.view.form.LabelView
geometry.height: 100%
geometry.width: 150 geometry.width: 150
style: text.box style: text.box
- id: join - id: join
$type: haxework.view.form.ButtonView $type: haxework.view.form.ButtonView
geometry.height: 100%
text: Join text: Join
+onPress: ~join() +onPress: ~join()

View File

@@ -37,7 +37,10 @@ import ru.m.tankz.proto.room.RoomSlotProto;
network.selectSlot(data.slot); network.selectSlot(data.slot);
} }
public static function factory():SlotItemView { public static function factory(index:Int, value:RoomSlotProto):SlotItemView {
return new SlotItemView(); var result = new SlotItemView();
result.index = index;
result.data = value;
return result;
} }
} }

View File

@@ -1,17 +1,14 @@
--- ---
geometry.height: 48
geometry.padding: 2 geometry.padding: 2
layout.margin: 10 layout.margin: 10
views: views:
- id: type - id: type
$type: haxework.view.form.LabelView $type: haxework.view.form.LabelView
style: text.box style: text.box
geometry.height: 100%
geometry.width: 150 geometry.width: 150
- $type: haxework.view.group.HGroupView - $type: haxework.view.group.HGroupView
layout.hAlign: center layout.hAlign: center
layout.vAlign: middle layout.vAlign: middle
geometry.height: 100%
geometry.width: 300 geometry.width: 300
views: views:
- id: user - id: user

View File

@@ -36,7 +36,6 @@ view:
- id: username - id: username
$type: haxework.view.form.InputView $type: haxework.view.form.InputView
geometry.width: 100% geometry.width: 100%
geometry.height: 28
style: text.box style: text.box
- $type: haxework.view.form.LabelView - $type: haxework.view.form.LabelView
geometry.width: 100% geometry.width: 100%
@@ -47,7 +46,6 @@ view:
$type: haxework.view.form.InputView $type: haxework.view.form.InputView
textField.displayAsPassword: true textField.displayAsPassword: true
geometry.width: 100% geometry.width: 100%
geometry.height: 28
style: text.box style: text.box
visible: false visible: false
- id: error - id: error

View File

@@ -1,14 +1,11 @@
--- ---
geometry.margin: 5
layout.margin: 5 layout.margin: 5
views: views:
- id: action - id: action
$type: haxework.view.form.LabelView $type: haxework.view.form.LabelView
geometry.width: 180 geometry.width: 180
geometry.height: 38
style: text.box style: text.box
- id: key - id: key
$type: haxework.view.form.LabelView $type: haxework.view.form.LabelView
geometry.width: 250 geometry.width: 250
geometry.height: 38
style: text.box style: text.box

View File

@@ -25,5 +25,6 @@ views:
$type: haxework.view.data.DataView $type: haxework.view.data.DataView
layout: layout:
$type: haxework.view.layout.VerticalLayout $type: haxework.view.layout.VerticalLayout
margin: 5
factory: ~viewFactory factory: ~viewFactory
+onItemSelect: ~onItemSelect +onItemSelect: ~onItemSelect

View File

@@ -16,7 +16,10 @@ class ServerLevelBundle implements ILevelBundle {
var bytes = File.getBytes(path); var bytes = File.getBytes(path);
return { return {
id: id, id: id,
data: LevelUtil.unpack(bytes), data: LevelUtil.unpack(bytes).map(function(level) {
level.packId = id;
return level;
}),
}; };
} }
} }