update haxework. ep3

This commit is contained in:
2019-03-01 12:48:35 +03:00
parent e3d3359019
commit 2d4c56d04c
21 changed files with 188 additions and 252 deletions

View File

@@ -1,26 +0,0 @@
package ru.m.skin;
import flash.display.Graphics;
import haxework.gui.ButtonView;
import haxework.gui.skin.ButtonColorSkin;
class SimpleButtonSkin extends ButtonColorSkin {
public var borderColor(default, default):Int;
public function new(color:Int = 0xffffff, borderColor:Int = 0xffffff) {
super(color, 0.6);
this.borderColor = borderColor;
}
override public function draw(view:ButtonView):Void {
var color:Int = selectColor(view);
var graphics:Graphics = view.content.graphics;
graphics.clear();
graphics.beginFill(color, alpha);
graphics.lineStyle(2, borderColor);
//graphics.drawRoundRect(0, 0, view.width, view.height, 10, 10);
graphics.drawRect(0, 0, view.width, view.height);
graphics.endFill();
}
}

View File

@@ -33,6 +33,7 @@ class Client {
var view:ClientView = new ClientView(); var view:ClientView = new ClientView();
Root.bind(view); Root.bind(view);
view.launch(); view.launch();
} }
} }

View File

@@ -1,13 +1,14 @@
--- ---
$type: haxework.gui.VGroupView $type: haxework.gui.VGroupView
pWidth: 100 geometry.size.stretch: true
pHeight: 100 layout.hAlign: center
layout.vAlign: middle
skin: $r:skin:light skin: $r:skin:light
views: views:
- id: switcher - id: switcher
$type: haxework.gui.frame.FrameSwitcher $type: haxework.gui.frame.FrameSwitcher
width: 960 geometry.size.width: 960
height: 720 geometry.size.height: 720
skin: $r:skin:dark skin: $r:skin:dark
views: views:
- id: start - id: start

View File

@@ -1,6 +1,6 @@
package ru.m.tankz; package ru.m.tankz;
import ru.m.skin.SimpleButtonSkin; import haxework.gui.utils.ColorUtils;
import haxework.gui.skin.Skin; import haxework.gui.skin.Skin;
import haxework.gui.skin.ButtonBitmapSkin; import haxework.gui.skin.ButtonBitmapSkin;
import haxework.gui.utils.DrawUtil; import haxework.gui.utils.DrawUtil;
@@ -26,14 +26,26 @@ class Style {
resources.skin.put("light", [Skin.color(lightColor)]); resources.skin.put("light", [Skin.color(lightColor)]);
resources.skin.put("dark", [Skin.color(darkColor)]); resources.skin.put("dark", [Skin.color(darkColor)]);
resources.skin.put("text", [Skin.text(textColor, 16, fontFamily)]); resources.skin.put("text", [Skin.text(textColor, 16, fontFamily)]);
resources.skin.put("button", [button, Skin.text(textColor, 18, fontFamily), Skin.size(250, 60)]); resources.skin.put("button", [
button,
Skin.text(textColor, 18, fontFamily),
Skin.size(250, 60)
]);
resources.skin.put("button.simple", [ resources.skin.put("button.simple", [
new SimpleButtonSkin(lightColor, textColor), Skin.buttonColor(lightColor),
Skin.text(textColor, 16, fontFamily), Skin.text(textColor, 16, fontFamily),
Skin.size(100, 36), Skin.size(100, 36),
]); ]);
resources.skin.put("button.toggle", [
Skin.tabColor(lightColor),
Skin.text(textColor, 16, fontFamily),
Skin.size(200, 36),
]);
resources.skin.put("button.close", [ resources.skin.put("button.close", [
new ButtonBitmapSkin(Assets.getBitmapData("resources/image/ui/close.png")) new ButtonBitmapSkin(Assets.getBitmapData("resources/image/ui/close.png"))
]); ]);
resources.skin.put("border", [
Skin.border(ColorUtils.multiply(lightColor, 1.5), 1, 2),
]);
} }
} }

View File

@@ -1,40 +0,0 @@
---
button:
width: 250
height: 60
skin:
$type: haxework.gui.skin.ButtonBitmapSkin
upImage: "@asset:image:resources/image/ui/button/normal.png"
downImage: "@asset:image:resources/image/ui/button/down.png"
overImage: "@asset:image:resources/image/ui/button/over.png"
fillType: NINEPATH
fontFamily: Courirer New
fontColor: 0xE7E0BB
fontSize: 18
button_simple:
width: 100
height: 36
skin:
$type: ru.m.skin.SimpleButtonSkin
fontFamily: Courirer New
fontColor: 0xffffff
fontSize: 18
shadowColor: 0x000000
label:
fontColor: 0xffffff
fontFamily: Courirer New
fontSize: 16
shadowColor: 0x000000
close:
inLayout: false
hAlign: LEFT
vAlign: BOTTOM
leftMargin: 10
bottomMargin: 10
contentSize: true
skin:
$type: haxework.gui.skin.ButtonBitmapSkin
image: "@asset:image:resources/image/ui/close.png"

View File

@@ -1,5 +1,6 @@
package ru.m.tankz.frame; package ru.m.tankz.frame;
import haxework.gui.core.Geometry.Position;
import flash.events.Event; import flash.events.Event;
import haxe.ds.Option; import haxe.ds.Option;
import haxe.Timer; import haxe.Timer;
@@ -19,7 +20,6 @@ import ru.m.tankz.sound.SoundManager;
import ru.m.tankz.storage.SaveStorage; import ru.m.tankz.storage.SaveStorage;
import ru.m.tankz.Type.GameType; import ru.m.tankz.Type.GameType;
@:template class GameFrame extends VGroupView { @:template class GameFrame extends VGroupView {
private static inline var TAG = "GameFrame"; private static inline var TAG = "GameFrame";
@@ -60,7 +60,7 @@ import ru.m.tankz.Type.GameType;
private function start(state:GameState):Void { private function start(state:GameState):Void {
for (type in panels.keys()) { for (type in panels.keys()) {
panels.get(type).visible = type == state.type; panels.get(type).visible = type == state.type;
panels.get(type).inLayout = type == state.type; panels.get(type).geometry.position = type == state.type ? LAYOUT : ABSOLUTE;
} }
// ToDo: local / network game // ToDo: local / network game
switch (1) { switch (1) {
@@ -76,7 +76,7 @@ import ru.m.tankz.Type.GameType;
network.game = cast game; network.game = cast game;
} }
panels.get(state.type).game = game; panels.get(state.type).game = game;
content.addEventListener(Event.ENTER_FRAME, redraw); content.addEventListener(Event.ENTER_FRAME, _redraw);
render.draw(game.engine); render.draw(game.engine);
sound.play('start'); sound.play('start');
} }
@@ -86,7 +86,7 @@ import ru.m.tankz.Type.GameType;
timer.stop(); timer.stop();
timer = null; timer = null;
} }
content.removeEventListener(Event.ENTER_FRAME, redraw); content.removeEventListener(Event.ENTER_FRAME, _redraw);
if (game != null) { if (game != null) {
game.dispose(); game.dispose();
game = null; game = null;
@@ -95,14 +95,14 @@ import ru.m.tankz.Type.GameType;
} }
private function onGameStateChange(s:GameState):GameState { private function onGameStateChange(s:GameState):GameState {
panels.get(s.type).invalidate(); panels.get(s.type).toUpdate();
return s; return s;
} }
private function onGameComplete(result:Option<GameState>):Void { private function onGameComplete(result:Option<GameState>):Void {
switch (result) { switch (result) {
case Option.Some(s): case Option.Some(s):
panels.get(s.type).invalidate(); panels.get(s.type).toUpdate();
case Option.None: case Option.None:
} }
switch (game.next()) { switch (game.next()) {
@@ -125,7 +125,7 @@ import ru.m.tankz.Type.GameType;
game.engine.update(); game.engine.update();
} }
private function redraw(_):Void { private function _redraw(_):Void {
render.draw(game.engine); render.draw(game.engine);
} }
} }

View File

@@ -1,24 +1,24 @@
--- ---
pWidth: 100 geometry.size.stretch: true
pHeight: 100 layout.hAlign: center
layout.vAlign: middle
views: views:
- id: dotaPanel - id: dotaPanel
$type: ru.m.tankz.frame.game.DotaGamePanel $type: ru.m.tankz.frame.game.DotaGamePanel
pWidth: 100 geometry.size.width: 100%
height: 20 geometry.size.height: 20
geometry.position: absolute
visible: false visible: false
inLayout: false
- $type: haxework.gui.HGroupView - $type: haxework.gui.HGroupView
pWidth: 100 geometry.size.stretch: true
pHeight: 100 layout.hAlign: center
layout.vAlign: middle
views: views:
- id: render - id: render
$type: ru.m.tankz.render.Render $type: ru.m.tankz.render.Render
contentSize: true
- id: classicPanel - id: classicPanel
$type: ru.m.tankz.frame.game.ClassicGamePanel $type: ru.m.tankz.frame.game.ClassicGamePanel
width: 200 geometry.size.width: 200
pHeight: 100 geometry.size.height: 100%
geometry.position: absolute
visible: false visible: false
inLayout: false

View File

@@ -1,31 +1,28 @@
--- ---
pWidth: 100 geometry.size.stretch: true
pHeight: 100
views: views:
- $type: haxework.gui.LabelView - $type: haxework.gui.LabelView
skin: $r:skin:text skin: $r:skin:text
pWidth: 100 geometry.size.percent.width: 100
height: 20 geometry.size.fixed.height: 20
text: Settings text: Settings
- $type: haxework.gui.HGroupView - $type: haxework.gui.HGroupView
pWidth: 100 geometry.size.stretch: true
pHeight: 100
views: views:
- $type: ru.m.tankz.frame.settings.SettingsEditor - $type: ru.m.tankz.frame.settings.SettingsEditor
pWidth: 50 geometry.size.percent.width: 50
pHeight: 100 geometry.size.percent.height: 100
controlIndex: 0 controlIndex: 0
- $type: ru.m.tankz.frame.settings.SettingsEditor - $type: ru.m.tankz.frame.settings.SettingsEditor
pWidth: 50 geometry.size.percent.width: 50
pHeight: 100 geometry.size.percent.height: 100
controlIndex: 1 controlIndex: 1
- id: close - id: close
$type: haxework.gui.ButtonView $type: haxework.gui.ButtonView
skin: $r:skin:button.close skin: $r:skin:button.close
+onPress: $this:onPress +onPress: $this:onPress
inLayout: false geometry.position: absolute
hAlign: LEFT geometry.margin.left: 10
vAlign: BOTTOM geometry.margin.bottom: 10
leftMargin: 10 geometry.vAlign: bottom
bottomMargin: 10 geometry.hAlign: left
contentSize: true

View File

@@ -1,13 +1,12 @@
--- ---
pWidth: 100 geometry.size.stretch: true
pHeight: 100 layout.hAlign: center
layout.vAlign: middle
views: views:
- $type: haxework.gui.ImageView - $type: haxework.gui.ImageView
image: $asset:image:resources/image/ui/logo.png image: $asset:image:resources/image/ui/logo.png
contentSize: true geometry.margin.bottom: 15
bottomMargin: 15
- $type: haxework.gui.VGroupView - $type: haxework.gui.VGroupView
contentSize: true
views: views:
- id: classic - id: classic
$type: haxework.gui.ButtonView $type: haxework.gui.ButtonView
@@ -28,21 +27,19 @@ views:
visible: false visible: false
- $type: haxework.gui.LabelView - $type: haxework.gui.LabelView
skin: $r:skin:text skin: $r:skin:text
inLayout: false geometry.position: absolute
contentSize: true geometry.margin.right: 10
vAlign: BOTTOM geometry.margin.bottom: 10
hAlign: RIGHT geometry.vAlign: bottom
rightMargin: 10 geometry.hAlign: right
bottomMargin: 10
text: $r:text:version text: $r:text:version
- id: settings - id: settings
$type: haxework.gui.ButtonView $type: haxework.gui.ButtonView
inLayout: false geometry.position: absolute
hAlign: LEFT geometry.margin.left: 10
vAlign: BOTTOM geometry.margin.bottom: 10
leftMargin: 10 geometry.vAlign: bottom
bottomMargin: 10 geometry.hAlign: left
contentSize: true
skin: skin:
- $type: haxework.gui.skin.ButtonBitmapSkin - $type: haxework.gui.skin.ButtonBitmapSkin
image: $asset:image:resources/image/ui/settings.png image: $asset:image:resources/image/ui/settings.png

View File

@@ -70,6 +70,7 @@ import ru.m.tankz.Type;
this.players.data = []; this.players.data = [];
} }
} }
toUpdate();
return presetId; return presetId;
} }

View File

@@ -1,37 +1,35 @@
--- ---
pWidth: 100 geometry.size.stretch: true
pHeight: 100
views: views:
- id: presets - id: presets
$type: ru.m.tankz.frame.start.PresetsView $type: ru.m.tankz.frame.start.PresetsView
contentSize: true geometry.size.width: 100%
topMargin: 10 geometry.margin.top: 10
layout.hAlign: center
- $type: haxework.gui.HGroupView - $type: haxework.gui.HGroupView
pWidth: 100 skin: $r:skin:border
pHeight: 100 geometry.size.stretch: true
views: views:
- id: players - id: players
$type: haxework.gui.list.VListView<PlayerId> $type: haxework.gui.list.VListView<PlayerId>
factory: { $class: ru.m.tankz.frame.start.PlayerView } factory: { $class: ru.m.tankz.frame.start.PlayerView }
pWidth: 50 geometry.size.percent: [50, 100]
pHeight: 100 geometry.padding: 10
paddings: 10
scroll: scroll:
$type: haxework.gui.list.VScrollBarView $type: haxework.gui.list.VScrollBarView
width: 10 geometry.size.width: 10
pHeight: 100 geometry.size.height: 100%
skin: skin:
- $type: [haxework.gui.list.ScrollBarSkin.vertical] - $type: [haxework.gui.list.ScrollBarSkin.vertical]
- id: levels - id: levels
$type: haxework.gui.list.VListView<Int> $type: haxework.gui.list.VListView<Int>
factory: { $class: ru.m.tankz.frame.start.LevelView } factory: { $class: ru.m.tankz.frame.start.LevelView }
+onItemSelect: $this:onListItemClick +onItemSelect: $this:onListItemClick
pWidth: 50 geometry.size.percent: [50, 100]
pHeight: 100 geometry.padding: 10
paddings: 10
scroll: scroll:
$type: haxework.gui.list.VScrollBarView $type: haxework.gui.list.VScrollBarView
width: 10 geometry.size.width: 10
pHeight: 100 geometry.size.height: 100%
skin: skin:
- $type: [haxework.gui.list.ScrollBarSkin.vertical] - $type: [haxework.gui.list.ScrollBarSkin.vertical]

View File

@@ -1,16 +1,18 @@
---
layout.vAlign: middle
views: views:
- id: botstate - id: botstate
$type: haxework.gui.LabelView $type: haxework.gui.LabelView
$style: label skin: $r:skin:text
pWidth: 100 geometry.size.width: 100%
height: 20 geometry.size.height: 20
- id: player1state - id: player1state
$type: haxework.gui.LabelView $type: haxework.gui.LabelView
$style: label skin: $r:skin:text
pWidth: 100 geometry.size.width: 100%
height: 20 geometry.size.height: 20
- id: player2state - id: player2state
$type: haxework.gui.LabelView $type: haxework.gui.LabelView
$style: label skin: $r:skin:text
pWidth: 100 geometry.size.width: 100%
height: 20 geometry.size.height: 20

View File

@@ -1,6 +1,7 @@
---
views: views:
- id: state - id: state
$type: haxework.gui.LabelView $type: haxework.gui.LabelView
$style: label skin: $r:skin:text
pWidth: 100 geometry.size.width: 100%
height: 20 geometry.size.height: 20

View File

@@ -64,7 +64,7 @@ class KeyboardMap {
public function edit():Promise<Int> { public function edit():Promise<Int> {
cast(this.skin[0], ColorSkin).color = 0x00ff00; cast(this.skin[0], ColorSkin).color = 0x00ff00;
invalidate(); toRedraw();
editDeferred = new Deferred(); editDeferred = new Deferred();
content.stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown); content.stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
return editDeferred.promise(); return editDeferred.promise();
@@ -73,7 +73,7 @@ class KeyboardMap {
private function onKeyDown(event: KeyboardEvent):Void { private function onKeyDown(event: KeyboardEvent):Void {
content.stage.removeEventListener(KeyboardEvent.KEY_DOWN, onKeyDown); content.stage.removeEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
cast(this.skin[0], ColorSkin).color = 0x000000; cast(this.skin[0], ColorSkin).color = 0x000000;
invalidate(); toRedraw();
data.key = event.keyCode; data.key = event.keyCode;
key.text = keyLabel(data.key); key.text = keyLabel(data.key);

View File

@@ -1,19 +1,19 @@
--- ---
pWidth: 100 geometry.size.width: 100%
height: 44 geometry.size.height: 44
margins: 5 geometry.margin: 5
views: views:
- id: action - id: action
$type: haxework.gui.LabelView $type: haxework.gui.LabelView
skin: $r:skin:text skin: $r:skin:text
pWidth: 50 geometry.size.width: 50%
pHeight: 100 geometry.size.height: 100%
text: "" text: ""
- id: key - id: key
$type: haxework.gui.LabelView $type: haxework.gui.LabelView
skin: $r:skin:text skin: $r:skin:text
pWidth: 50 geometry.size.width: 50%
pHeight: 100 geometry.size.height: 100%
text: "" text: ""
skin: skin:
- $type: haxework.gui.skin.ColorSkin - $type: haxework.gui.skin.ColorSkin

View File

@@ -51,13 +51,13 @@ import ru.m.tankz.storage.SettingsStorage;
for (item in list.data) { for (item in list.data) {
item.key = -1; item.key = -1;
} }
list.invalidate(); list.toUpdate();
_save(); _save();
} }
private function _reset():Void { private function _reset():Void {
list.data = SettingsStorage.getDefault(controlIndex).data; list.data = SettingsStorage.getDefault(controlIndex).data;
list.invalidate(); list.toUpdate();
_save(); _save();
} }

View File

@@ -1,11 +1,11 @@
layoutMargin: 10 layout.margin: 10
layout.hAlign: center
views: views:
- id: label - id: label
$type: haxework.gui.LabelView $type: haxework.gui.LabelView
skin: $r:skin:text skin: $r:skin:text
- $type: haxework.gui.HGroupView - $type: haxework.gui.HGroupView
contentSize: true layout.margin: 10
layoutMargin: 10
views: views:
- id: change - id: change
$type: haxework.gui.ButtonView $type: haxework.gui.ButtonView
@@ -25,9 +25,8 @@ views:
- id: list - id: list
$type: haxework.gui.list.VListView<ru.m.tankz.control.ActionItem> $type: haxework.gui.list.VListView<ru.m.tankz.control.ActionItem>
factory: { $class: ru.m.tankz.frame.settings.ActionView } factory: { $class: ru.m.tankz.frame.settings.ActionView }
pWidth: 100 geometry.size.stretch: true
pHeight: 100
scroll: scroll:
$type: haxework.gui.list.VScrollBarView $type: haxework.gui.list.VScrollBarView
width: 1 geometry.position: absolute
pHeight: 100 visible: false

View File

@@ -1,13 +1,12 @@
--- ---
pWidth: 100 geometry.size.width: 100%
height: 44 geometry.size.height: 44
margins: 5 geometry.margin: 5
views: views:
- id: label - id: label
$type: haxework.gui.LabelView $type: haxework.gui.LabelView
$style: label skin: $r:skin:text
pWidth: 100 geometry.size.stretch: true
pHeight: 100
text: "" text: ""
skin: skin:
- $type: haxework.gui.skin.ColorSkin - $type: haxework.gui.skin.ColorSkin

View File

@@ -1,14 +1,13 @@
--- ---
pWidth: 50 geometry.size.width: 50%
height: 44 geometry.size.height: 44
margins: 5 geometry.margin: 5
layoutMargin: 10 layout.margin: 10
views: views:
- id: index - id: index
$type: haxework.gui.LabelView $type: haxework.gui.LabelView
$style: label $style: label
pHeight: 100 geometry.size.stretch: true
pWidth: 100
skin: skin:
- $type: haxework.gui.skin.ColorSkin - $type: haxework.gui.skin.ColorSkin
color: 0x000000 color: 0x000000
@@ -17,4 +16,3 @@ views:
shadowColor: 0x000000 shadowColor: 0x000000
- id: control - id: control
$type: haxework.gui.ButtonView $type: haxework.gui.ButtonView
contentSize: true

View File

@@ -1,27 +1,26 @@
package ru.m.tankz.frame.start; package ru.m.tankz.frame.start;
import haxework.resources.IResources; import haxework.resources.IResources;
import haxework.provider.Provider;
import ru.m.skin.SimpleButtonSkin;
import ru.m.signal.Signal.Signal1;
import haxework.gui.ToggleButtonView;
import ru.m.tankz.Type;
import haxework.gui.ButtonView; import haxework.gui.ButtonView;
import ru.m.tankz.config.Config.GamePreset;
import haxework.gui.HGroupView; import haxework.gui.HGroupView;
import haxework.gui.ToggleButtonView;
import ru.m.signal.Signal;
import ru.m.tankz.config.Config.GamePreset;
import ru.m.tankz.Type;
class PresetsView extends HGroupView { class PresetsView extends HGroupView {
public var data(default, set):Array<GamePreset>; public var data(default, set):Array<GamePreset>;
public var selected(default, set):PresetId; public var selected(default, set):PresetId;
public var change(default, null):Signal1<PresetId>; public var change(default, null):Signal<PresetId>;
@:provide private static var resources:IResources;
public function new() { public function new() {
super(); super();
layoutMargin = 10; layout.margin = 10;
change = new Signal1(); change = new Signal();
} }
private function set_data(value:Array<GamePreset>):Array<GamePreset> { private function set_data(value:Array<GamePreset>):Array<GamePreset> {
@@ -29,16 +28,15 @@ class PresetsView extends HGroupView {
removeAllViews(); removeAllViews();
for (item in data) { for (item in data) {
var view = new ToggleButtonView(); var view = new ToggleButtonView();
view.skin = [new SimpleButtonSkin()]; view.skin = resources.skin.get("button.toggle");
view.onSkin = [new SimpleButtonSkin(0x00ff00)];
view.text = item.id; view.text = item.id;
view.width = 250;
view.height = 36;
view.fontFamily = "Courirer New"; view.fontFamily = "Courirer New";
view.fontColor = 0xffffff; view.fontColor = 0xffffff;
view.fontSize = 18; view.fontSize = 18;
view.shadowColor = 0x000000; view.shadowColor = 0x000000;
view.onPress.connect(onPress); view.onPress.connect(onPress);
//ToDo: update text and size
view.redraw();
view.update(); view.update();
addView(view); addView(view);
} }

View File

@@ -53,10 +53,8 @@ class Render extends SpriteView {
g.beginFill(0x000000); g.beginFill(0x000000);
g.drawRect(0, 0, mapWidth, mapHeight); g.drawRect(0, 0, mapWidth, mapHeight);
g.endFill(); g.endFill();
if (contentSize) { geometry.size.content.width = mapWidth;
width = mapWidth; geometry.size.content.height = mapHeight;
height = mapHeight;
}
} }
public function draw(game:Engine):Void { public function draw(game:Engine):Void {