[client] update haxework. ep7
This commit is contained in:
@@ -10,7 +10,7 @@
|
|||||||
"gulp-haxetool": "^0.0.14"
|
"gulp-haxetool": "^0.0.14"
|
||||||
},
|
},
|
||||||
"haxeDependencies": {
|
"haxeDependencies": {
|
||||||
"haxework": "0.9.0",
|
"haxework": "git@bitbucket.org:shmyga/haxework.git",
|
||||||
"lime": "7.2.1",
|
"lime": "7.2.1",
|
||||||
"openfl": "8.8.0",
|
"openfl": "8.8.0",
|
||||||
"hxcpp": "4.0.8",
|
"hxcpp": "4.0.8",
|
||||||
|
|||||||
@@ -1,17 +0,0 @@
|
|||||||
package ru.m.draw;
|
|
||||||
|
|
||||||
import haxework.color.Color;
|
|
||||||
import flash.geom.ColorTransform;
|
|
||||||
import flash.geom.Rectangle;
|
|
||||||
import flash.display.BitmapData;
|
|
||||||
|
|
||||||
class BitmapUtil {
|
|
||||||
|
|
||||||
public static function colorize(data: BitmapData, color: Color):BitmapData {
|
|
||||||
if (color.zero) return data;
|
|
||||||
var result = data.clone();
|
|
||||||
var transform = new ColorTransform(color.red / 255, color.green / 255, color.blue / 255, 1, 0, 0, 0, 0);
|
|
||||||
result.colorTransform(new Rectangle(0, 0, result.width, result.height), transform);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -7,28 +7,24 @@ skinId: light
|
|||||||
views:
|
views:
|
||||||
- id: switcher
|
- id: switcher
|
||||||
$type: haxework.gui.frame.FrameSwitcher
|
$type: haxework.gui.frame.FrameSwitcher
|
||||||
animateFactory: { $class: haxework.animate.CircleMaskAnimate }
|
skinId: dark
|
||||||
geometry.size.width: 960
|
geometry.size.stretch: true
|
||||||
geometry.size.height: 720
|
layout.hAlign: center
|
||||||
|
layout.vAlign: middle
|
||||||
views:
|
views:
|
||||||
- id: start
|
- id: start
|
||||||
$type: ru.m.tankz.frame.StartFrame
|
$type: ru.m.tankz.frame.StartFrame
|
||||||
skinId: dark
|
|
||||||
# classic
|
# classic
|
||||||
- id: classic.level
|
- id: classic.level
|
||||||
$type: ru.m.tankz.frame.classic.ClassicLevelFrame
|
$type: ru.m.tankz.frame.classic.ClassicLevelFrame
|
||||||
skinId: dark
|
|
||||||
- id: classic.game
|
- id: classic.game
|
||||||
$type: ru.m.tankz.frame.classic.ClassicGameFrame
|
$type: ru.m.tankz.frame.classic.ClassicGameFrame
|
||||||
# dota
|
# dota
|
||||||
- id: dota.level
|
- id: dota.level
|
||||||
$type: ru.m.tankz.frame.dota.DotaLevelFrame
|
$type: ru.m.tankz.frame.dota.DotaLevelFrame
|
||||||
skinId: dark
|
|
||||||
- id: dota.game
|
- id: dota.game
|
||||||
$type: ru.m.tankz.frame.dota.DotaGameFrame
|
$type: ru.m.tankz.frame.dota.DotaGameFrame
|
||||||
# - id: network
|
# - id: network
|
||||||
# $type: ru.m.tankz.frame.NetworkFrame
|
# $type: ru.m.tankz.frame.NetworkFrame
|
||||||
# skinId: dark
|
|
||||||
- id: settings
|
- id: settings
|
||||||
$type: ru.m.tankz.frame.SettingsFrame
|
$type: ru.m.tankz.frame.SettingsFrame
|
||||||
skinId: dark
|
|
||||||
|
|||||||
@@ -24,6 +24,14 @@ class Style {
|
|||||||
Skin.text(textColor, 18, fontFamily),
|
Skin.text(textColor, 18, fontFamily),
|
||||||
Skin.size(250, 50)
|
Skin.size(250, 50)
|
||||||
]);
|
]);
|
||||||
|
resources.skin.put("text.box", [
|
||||||
|
Skin.color(lightColor),
|
||||||
|
Skin.text(textColor, 16, fontFamily),
|
||||||
|
]);
|
||||||
|
resources.skin.put("text.box.active", [
|
||||||
|
Skin.color(0x55aa55),
|
||||||
|
Skin.text(textColor, 16, fontFamily),
|
||||||
|
]);
|
||||||
resources.skin.put("button.simple", [
|
resources.skin.put("button.simple", [
|
||||||
Skin.buttonColor(lightColor),
|
Skin.buttonColor(lightColor),
|
||||||
Skin.text(textColor, 16, fontFamily),
|
Skin.text(textColor, 16, fontFamily),
|
||||||
|
|||||||
@@ -1,23 +1,24 @@
|
|||||||
---
|
---
|
||||||
geometry.size.stretch: true
|
geometry.size.stretch: true
|
||||||
|
layout.hAlign: center
|
||||||
|
layout.vAlign: middle
|
||||||
views:
|
views:
|
||||||
- $type: haxework.gui.LabelView
|
- $type: haxework.gui.LabelView
|
||||||
skinId: text
|
skinId: text
|
||||||
geometry.size.percent.width: 100
|
|
||||||
geometry.size.fixed.height: 20
|
geometry.size.fixed.height: 20
|
||||||
text: Settings
|
text: Settings
|
||||||
- $type: haxework.gui.HGroupView
|
- $type: haxework.gui.HGroupView
|
||||||
geometry.size.stretch: true
|
geometry.size.width: 100%
|
||||||
views:
|
views:
|
||||||
- $type: ru.m.tankz.frame.settings.SettingsEditor
|
- $type: ru.m.tankz.frame.settings.SettingsEditor
|
||||||
geometry.size.percent.width: 50
|
geometry.size.percent.width: 50
|
||||||
geometry.size.percent.height: 100
|
#geometry.size.percent.height: 100
|
||||||
controlIndex: 0
|
controlIndex: 0
|
||||||
- $type: ru.m.tankz.frame.settings.SettingsEditor
|
- $type: ru.m.tankz.frame.settings.SettingsEditor
|
||||||
geometry.size.percent.width: 50
|
geometry.size.percent.width: 50
|
||||||
geometry.size.percent.height: 100
|
#geometry.size.percent.height: 100
|
||||||
controlIndex: 1
|
controlIndex: 1
|
||||||
- id: close
|
- id: close
|
||||||
$type: haxework.gui.ButtonView
|
$type: haxework.gui.ButtonView
|
||||||
skinId: button.close
|
skinId: button.close
|
||||||
+onPress: $this:onPress
|
+onPress: $this:onPress
|
||||||
|
|||||||
@@ -42,7 +42,4 @@ views:
|
|||||||
geometry.vAlign: bottom
|
geometry.vAlign: bottom
|
||||||
geometry.hAlign: left
|
geometry.hAlign: left
|
||||||
skinId: button.settings
|
skinId: button.settings
|
||||||
# skin:
|
|
||||||
# - $type: haxework.gui.skin.ButtonBitmapSkin
|
|
||||||
# image: $asset:image:resources/image/ui/settings.png
|
|
||||||
+onPress: $this:onPress
|
+onPress: $this:onPress
|
||||||
|
|||||||
@@ -1,13 +1,11 @@
|
|||||||
---
|
---
|
||||||
layout:
|
layout:
|
||||||
$type: haxework.gui.layout.HorizontalLayout
|
$type: haxework.gui.layout.HorizontalLayout
|
||||||
|
margin: 5
|
||||||
hAlign: center
|
hAlign: center
|
||||||
vAlign: middle
|
vAlign: middle
|
||||||
geometry.size.stretch: true
|
|
||||||
views:
|
views:
|
||||||
- id: render
|
- id: render
|
||||||
$type: ru.m.tankz.render.Render
|
$type: ru.m.tankz.render.Render
|
||||||
- id: panel
|
- id: panel
|
||||||
$type: ru.m.tankz.frame.classic.ClassicGamePanel
|
$type: ru.m.tankz.frame.classic.ClassicGamePanel
|
||||||
geometry.size.width: 200
|
|
||||||
geometry.size.height: 100%
|
|
||||||
|
|||||||
@@ -1,26 +1,26 @@
|
|||||||
package ru.m.tankz.frame.classic;
|
package ru.m.tankz.frame.classic;
|
||||||
|
|
||||||
import ru.m.tankz.frame.common.IGamePanel;
|
|
||||||
import haxework.gui.LabelView;
|
|
||||||
import haxework.gui.VGroupView;
|
import haxework.gui.VGroupView;
|
||||||
|
import ru.m.tankz.frame.common.IGamePanel;
|
||||||
|
import ru.m.tankz.frame.common.LifeView;
|
||||||
import ru.m.tankz.game.Game;
|
import ru.m.tankz.game.Game;
|
||||||
import ru.m.tankz.preset.ClassicGame;
|
import ru.m.tankz.preset.ClassicGame;
|
||||||
|
|
||||||
@:template class ClassicGamePanel extends VGroupView implements IGamePanel {
|
@:template class ClassicGamePanel extends VGroupView implements IGamePanel {
|
||||||
|
|
||||||
@:view var botstate(default, null):LabelView;
|
@:view var bot:LifeView;
|
||||||
@:view var player1state(default, null):LabelView;
|
@:view var player1:LifeView;
|
||||||
@:view var player2state(default, null):LabelView;
|
@:view var player2:LifeView;
|
||||||
|
|
||||||
public var game:Game;
|
public var game:Game;
|
||||||
|
|
||||||
private function updateViews():Void {
|
private function updateViews():Void {
|
||||||
botstate.text = 'Bot: ${game.teams[ClassicGame.BOT].life} life';
|
bot.count.text = '${game.teams[ClassicGame.BOT].life}';
|
||||||
player1state.text = 'Player1: ${game.teams[ClassicGame.HUMAN].players[0].state.life} life';
|
player1.count.text = '${game.teams[ClassicGame.HUMAN].players[0].state.life}';
|
||||||
if (game.teams[ClassicGame.HUMAN].players[1] != null) {
|
if (game.teams[ClassicGame.HUMAN].players[1] != null) {
|
||||||
player2state.text = 'Player2: ${game.teams[ClassicGame.HUMAN].players[1].state.life} life';
|
player2.count.text = '${game.teams[ClassicGame.HUMAN].players[1].state.life}';
|
||||||
} else {
|
} else {
|
||||||
player2state.text = "";
|
player2.count.text = "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,18 +1,16 @@
|
|||||||
---
|
---
|
||||||
layout.vAlign: middle
|
geometry.padding: 5
|
||||||
|
layout.margin: 5
|
||||||
|
layout.hAlign: right
|
||||||
views:
|
views:
|
||||||
- id: botstate
|
- id: bot
|
||||||
$type: haxework.gui.LabelView
|
$type: ru.m.tankz.frame.common.LifeView
|
||||||
skin: $r:skin:text
|
image.image: $asset:image:resources/image/tank/ba-0.png
|
||||||
geometry.size.width: 100%
|
- id: player1
|
||||||
geometry.size.height: 20
|
$type: ru.m.tankz.frame.common.LifeView
|
||||||
- id: player1state
|
image.image: $asset:image:resources/image/tank/pa-0.png
|
||||||
$type: haxework.gui.LabelView
|
image.color: 0xFFFF00
|
||||||
skinId: text
|
- id: player2
|
||||||
geometry.size.width: 100%
|
$type: ru.m.tankz.frame.common.LifeView
|
||||||
geometry.size.height: 20
|
image.image: $asset:image:resources/image/tank/pa-0.png
|
||||||
- id: player2state
|
image.color: 0x15C040
|
||||||
$type: haxework.gui.LabelView
|
|
||||||
skinId: text
|
|
||||||
geometry.size.width: 100%
|
|
||||||
geometry.size.height: 20
|
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
---
|
---
|
||||||
geometry.size.stretch: true
|
|
||||||
layout:
|
layout:
|
||||||
$type: haxework.gui.layout.VerticalLayout
|
$type: haxework.gui.layout.VerticalLayout
|
||||||
hAlign: center
|
hAlign: center
|
||||||
@@ -12,7 +11,6 @@ views:
|
|||||||
margin: 2
|
margin: 2
|
||||||
factory: $this:presetViewFactory
|
factory: $this:presetViewFactory
|
||||||
+onDataSelect: $code:function(value) preset = value
|
+onDataSelect: $code:function(value) preset = value
|
||||||
geometry.size.width: 100%
|
|
||||||
geometry.padding: 10
|
geometry.padding: 10
|
||||||
- id: levels
|
- id: levels
|
||||||
$type: haxework.gui.DataView<Int>
|
$type: haxework.gui.DataView<Int>
|
||||||
@@ -22,5 +20,4 @@ views:
|
|||||||
margin: 5
|
margin: 5
|
||||||
factory: $this:levelViewFactory
|
factory: $this:levelViewFactory
|
||||||
+onDataSelect: $code:function(value) level = value
|
+onDataSelect: $code:function(value) level = value
|
||||||
geometry.size.stretch: true
|
|
||||||
geometry.padding: 10
|
geometry.padding: 10
|
||||||
|
|||||||
10
src/client/haxe/ru/m/tankz/frame/common/LifeView.hx
Normal file
10
src/client/haxe/ru/m/tankz/frame/common/LifeView.hx
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
package ru.m.tankz.frame.common;
|
||||||
|
|
||||||
|
import haxework.gui.LabelView;
|
||||||
|
import haxework.gui.ImageView;
|
||||||
|
import haxework.gui.HGroupView;
|
||||||
|
|
||||||
|
@:template class LifeView extends HGroupView {
|
||||||
|
@:view public var image:ImageView;
|
||||||
|
@:view public var count:LabelView;
|
||||||
|
}
|
||||||
9
src/client/haxe/ru/m/tankz/frame/common/LifeView.yaml
Normal file
9
src/client/haxe/ru/m/tankz/frame/common/LifeView.yaml
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
---
|
||||||
|
layout.margin: 5
|
||||||
|
views:
|
||||||
|
- id: image
|
||||||
|
$type: haxework.gui.ImageView
|
||||||
|
- id: count
|
||||||
|
$type: haxework.gui.LabelView
|
||||||
|
skinId: text.box
|
||||||
|
geometry.size.fixed: [50, 38]
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
geometry.size.width: 50%
|
geometry.size.width: 200
|
||||||
geometry.size.height: 44
|
geometry.size.height: 44
|
||||||
geometry.margin: 5
|
geometry.margin: 5
|
||||||
layout.margin: 10
|
layout.margin: 10
|
||||||
|
|||||||
@@ -1,130 +1,21 @@
|
|||||||
package ru.m.tankz.frame.dota;
|
package ru.m.tankz.frame.dota;
|
||||||
|
|
||||||
import ru.m.tankz.frame.classic.ClassicGamePanel;
|
import ru.m.tankz.frame.common.GameFrame;
|
||||||
import ru.m.tankz.frame.common.IGamePanel;
|
import ru.m.tankz.frame.common.IGamePanel;
|
||||||
import flash.events.Event;
|
|
||||||
import haxe.ds.Option;
|
|
||||||
import haxe.Timer;
|
|
||||||
import haxework.gui.core.Geometry.Position;
|
|
||||||
import haxework.gui.frame.FrameSwitcher;
|
|
||||||
import haxework.gui.VGroupView;
|
|
||||||
import ru.m.tankz.game.Game;
|
|
||||||
import ru.m.tankz.game.GameState;
|
|
||||||
import ru.m.tankz.network.NetworkGame;
|
|
||||||
import ru.m.tankz.network.NetworkManager;
|
|
||||||
import ru.m.tankz.preset.ClassicGame;
|
|
||||||
import ru.m.tankz.preset.DotaGame;
|
|
||||||
import ru.m.tankz.render.Render;
|
import ru.m.tankz.render.Render;
|
||||||
import ru.m.tankz.sound.SoundManager;
|
|
||||||
import ru.m.tankz.storage.SaveStorage;
|
|
||||||
import ru.m.tankz.Type.GameType;
|
|
||||||
|
|
||||||
@:template class DotaGameFrame extends VGroupView {
|
@:template class DotaGameFrame extends GameFrame {
|
||||||
|
|
||||||
private static inline var TAG = "GameFrame";
|
|
||||||
|
|
||||||
public static inline var ID = "dota.game";
|
public static inline var ID = "dota.game";
|
||||||
|
|
||||||
@:view var render(default, null):Render;
|
@:view("render") private var renderView(default, null):Render;
|
||||||
|
@:view("panel") private var panelView(default, null):IGamePanel;
|
||||||
|
|
||||||
@:view var dotaPanel(default, null):DotaGamePanel;
|
override private function get_render():Render {
|
||||||
@:view var classicPanel(default, null):ClassicGamePanel;
|
return renderView;
|
||||||
|
|
||||||
private var panels:Map<GameType, IGamePanel>;
|
|
||||||
|
|
||||||
@:provide var network:NetworkManager;
|
|
||||||
@:provide var sound:SoundManager;
|
|
||||||
@:provide var state:GameState;
|
|
||||||
@:provide var storage:SaveStorage;
|
|
||||||
@:provide var switcher:FrameSwitcher;
|
|
||||||
|
|
||||||
private var game:Game;
|
|
||||||
private var timer:Timer;
|
|
||||||
|
|
||||||
public function init():Void {
|
|
||||||
panels = new Map();
|
|
||||||
panels.set(ClassicGame.TYPE, classicPanel);
|
|
||||||
panels.set(DotaGame.TYPE, dotaPanel);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onShow():Void {
|
override private function get_panel():IGamePanel {
|
||||||
start(state);
|
return panelView;
|
||||||
}
|
|
||||||
|
|
||||||
private function connectGame(game: Game) {
|
|
||||||
game.engine.connect(render);
|
|
||||||
game.engine.connect(sound);
|
|
||||||
}
|
|
||||||
|
|
||||||
private function start(state:GameState):Void {
|
|
||||||
for (type in panels.keys()) {
|
|
||||||
panels.get(type).visible = type == state.type;
|
|
||||||
panels.get(type).geometry.position = type == state.type ? LAYOUT : ABSOLUTE;
|
|
||||||
}
|
|
||||||
// ToDo: local / network game
|
|
||||||
switch (1) {
|
|
||||||
case 1:
|
|
||||||
game = new Game(state.type);
|
|
||||||
connectGame(game);
|
|
||||||
game.start(state).then(onGameStateChange).endThen(onGameComplete);
|
|
||||||
timer = new Timer(10);
|
|
||||||
timer.run = updateEngine;
|
|
||||||
case 2:
|
|
||||||
game = new NetworkGame(state.type);
|
|
||||||
connectGame(game);
|
|
||||||
network.game = cast game;
|
|
||||||
}
|
|
||||||
panels.get(state.type).game = game;
|
|
||||||
content.addEventListener(Event.ENTER_FRAME, _redraw);
|
|
||||||
render.draw(game.engine);
|
|
||||||
sound.play('start');
|
|
||||||
}
|
|
||||||
|
|
||||||
private function stop():Void {
|
|
||||||
if (timer != null) {
|
|
||||||
timer.stop();
|
|
||||||
timer = null;
|
|
||||||
}
|
|
||||||
content.removeEventListener(Event.ENTER_FRAME, _redraw);
|
|
||||||
if (game != null) {
|
|
||||||
game.dispose();
|
|
||||||
game = null;
|
|
||||||
}
|
|
||||||
render.reset();
|
|
||||||
}
|
|
||||||
|
|
||||||
private function onGameStateChange(s:GameState):GameState {
|
|
||||||
panels.get(s.type).toUpdate();
|
|
||||||
return s;
|
|
||||||
}
|
|
||||||
|
|
||||||
private function onGameComplete(result:Option<GameState>):Void {
|
|
||||||
switch (result) {
|
|
||||||
case Option.Some(s):
|
|
||||||
panels.get(s.type).toUpdate();
|
|
||||||
case Option.None:
|
|
||||||
}
|
|
||||||
switch (game.next()) {
|
|
||||||
case Option.Some(s):
|
|
||||||
var state = game.save();
|
|
||||||
this.state = state;
|
|
||||||
storage.write(state);
|
|
||||||
stop();
|
|
||||||
start(state);
|
|
||||||
case Option.None:
|
|
||||||
switcher.change(StartFrame.ID);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public function onHide():Void {
|
|
||||||
stop();
|
|
||||||
}
|
|
||||||
|
|
||||||
private function updateEngine():Void {
|
|
||||||
game.engine.update();
|
|
||||||
}
|
|
||||||
|
|
||||||
private function _redraw(_):Void {
|
|
||||||
render.draw(game.engine);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,24 +1,9 @@
|
|||||||
---
|
---
|
||||||
geometry.size.stretch: true
|
layout:
|
||||||
layout.hAlign: center
|
$type: haxework.gui.layout.VerticalLayout
|
||||||
layout.vAlign: middle
|
margin: 5
|
||||||
views:
|
views:
|
||||||
- id: dotaPanel
|
- id: panel
|
||||||
$type: ru.m.tankz.frame.dota.DotaGamePanel
|
$type: ru.m.tankz.frame.dota.DotaGamePanel
|
||||||
geometry.size.width: 100%
|
|
||||||
geometry.size.height: 20
|
|
||||||
geometry.position: absolute
|
|
||||||
visible: false
|
|
||||||
- $type: haxework.gui.HGroupView
|
|
||||||
geometry.size.stretch: true
|
|
||||||
layout.hAlign: center
|
|
||||||
layout.vAlign: middle
|
|
||||||
views:
|
|
||||||
- id: render
|
- id: render
|
||||||
$type: ru.m.tankz.render.Render
|
$type: ru.m.tankz.render.Render
|
||||||
- id: classicPanel
|
|
||||||
$type: ru.m.tankz.frame.classic.ClassicGamePanel
|
|
||||||
geometry.size.width: 200
|
|
||||||
geometry.size.height: 100%
|
|
||||||
geometry.position: absolute
|
|
||||||
visible: false
|
|
||||||
|
|||||||
@@ -1,13 +1,15 @@
|
|||||||
package ru.m.tankz.frame.dota;
|
package ru.m.tankz.frame.dota;
|
||||||
|
|
||||||
|
import ru.m.tankz.preset.DotaGame;
|
||||||
|
import ru.m.tankz.frame.common.LifeView;
|
||||||
import ru.m.tankz.frame.common.IGamePanel;
|
import ru.m.tankz.frame.common.IGamePanel;
|
||||||
import haxework.gui.LabelView;
|
|
||||||
import haxework.gui.HGroupView;
|
import haxework.gui.HGroupView;
|
||||||
import ru.m.tankz.game.Game;
|
import ru.m.tankz.game.Game;
|
||||||
|
|
||||||
@:template class DotaGamePanel extends HGroupView implements IGamePanel {
|
@:template class DotaGamePanel extends HGroupView implements IGamePanel {
|
||||||
|
|
||||||
@:view var state(default, null):LabelView;
|
@:view var radiant:LifeView;
|
||||||
|
@:view var dire:LifeView;
|
||||||
|
|
||||||
public var game:Game;
|
public var game:Game;
|
||||||
|
|
||||||
@@ -34,7 +36,8 @@ import ru.m.tankz.game.Game;
|
|||||||
}
|
}
|
||||||
|
|
||||||
private function updateViews():Void {
|
private function updateViews():Void {
|
||||||
state.text = stateString(game);
|
radiant.count.text = '${game.teams[DotaGame.RADIANT].life}';
|
||||||
|
dire.count.text = '${game.teams[DotaGame.DIRE].life}';
|
||||||
}
|
}
|
||||||
|
|
||||||
override public function update():Void {
|
override public function update():Void {
|
||||||
|
|||||||
@@ -1,7 +1,14 @@
|
|||||||
---
|
---
|
||||||
|
geometry.size.width: 100%
|
||||||
|
layout.margin: 20
|
||||||
views:
|
views:
|
||||||
- id: state
|
- id: radiant
|
||||||
$type: haxework.gui.LabelView
|
$type: ru.m.tankz.frame.common.LifeView
|
||||||
skinId: text
|
image.image: $asset:image:resources/image/tank/bc-0.png
|
||||||
|
image.color: 0xff4422
|
||||||
|
- $type: haxework.gui.SpriteView
|
||||||
geometry.size.width: 100%
|
geometry.size.width: 100%
|
||||||
geometry.size.height: 20
|
- id: dire
|
||||||
|
$type: ru.m.tankz.frame.common.LifeView
|
||||||
|
image.image: $asset:image:resources/image/tank/bc-0.png
|
||||||
|
image.color: 0x3284ff
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
---
|
---
|
||||||
geometry.size.stretch: true
|
|
||||||
layout:
|
layout:
|
||||||
$type: haxework.gui.layout.HorizontalLayout
|
$type: haxework.gui.layout.HorizontalLayout
|
||||||
views:
|
views:
|
||||||
@@ -9,7 +8,6 @@ views:
|
|||||||
$type: haxework.gui.layout.VerticalLayout
|
$type: haxework.gui.layout.VerticalLayout
|
||||||
hAlign: center
|
hAlign: center
|
||||||
factory: $this:playerViewFactory
|
factory: $this:playerViewFactory
|
||||||
geometry.size.percent: [50, 100]
|
|
||||||
geometry.padding: 10
|
geometry.padding: 10
|
||||||
- id: levels
|
- id: levels
|
||||||
$type: haxework.gui.DataView<Int>
|
$type: haxework.gui.DataView<Int>
|
||||||
@@ -19,5 +17,4 @@ views:
|
|||||||
margin: 5
|
margin: 5
|
||||||
factory: $this:levelViewFactory
|
factory: $this:levelViewFactory
|
||||||
+onDataSelect: $code:function(value) level = value
|
+onDataSelect: $code:function(value) level = value
|
||||||
geometry.size.percent: [50, 100]
|
|
||||||
geometry.padding: 10
|
geometry.padding: 10
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ package ru.m.tankz.frame.settings;
|
|||||||
import haxework.gui.HGroupView;
|
import haxework.gui.HGroupView;
|
||||||
import haxework.gui.LabelView;
|
import haxework.gui.LabelView;
|
||||||
import haxework.gui.list.ListView.IListItemView;
|
import haxework.gui.list.ListView.IListItemView;
|
||||||
import haxework.gui.skin.ColorSkin;
|
|
||||||
import openfl.Assets;
|
import openfl.Assets;
|
||||||
import openfl.events.KeyboardEvent;
|
import openfl.events.KeyboardEvent;
|
||||||
import promhx.Deferred;
|
import promhx.Deferred;
|
||||||
@@ -11,7 +10,6 @@ import promhx.Promise;
|
|||||||
import ru.m.tankz.control.ActionConfig;
|
import ru.m.tankz.control.ActionConfig;
|
||||||
import ru.m.tankz.control.Control;
|
import ru.m.tankz.control.Control;
|
||||||
|
|
||||||
|
|
||||||
class KeyboardMap {
|
class KeyboardMap {
|
||||||
|
|
||||||
private var data:Map<Int, String>;
|
private var data:Map<Int, String>;
|
||||||
@@ -36,7 +34,6 @@ class KeyboardMap {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@:template class ActionView extends HGroupView implements IListItemView<ActionItem> {
|
@:template class ActionView extends HGroupView implements IListItemView<ActionItem> {
|
||||||
|
|
||||||
public var item_index(default, default):Int;
|
public var item_index(default, default):Int;
|
||||||
@@ -67,7 +64,7 @@ class KeyboardMap {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function edit():Promise<Int> {
|
public function edit():Promise<Int> {
|
||||||
cast(this.skin[0], ColorSkin).color = 0x00ff00;
|
action.skinId = key.skinId = "text.box.active";
|
||||||
toRedraw();
|
toRedraw();
|
||||||
editDeferred = new Deferred();
|
editDeferred = new Deferred();
|
||||||
content.stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
|
content.stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
|
||||||
@@ -76,9 +73,8 @@ 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;
|
action.skinId = key.skinId = "text.box";
|
||||||
toRedraw();
|
toRedraw();
|
||||||
|
|
||||||
data.key = event.keyCode;
|
data.key = event.keyCode;
|
||||||
key.text = keyLabel(data.key);
|
key.text = keyLabel(data.key);
|
||||||
editDeferred.resolve(data.key);
|
editDeferred.resolve(data.key);
|
||||||
|
|||||||
@@ -1,21 +1,12 @@
|
|||||||
---
|
---
|
||||||
geometry.size.width: 100%
|
|
||||||
geometry.size.height: 44
|
|
||||||
geometry.margin: 5
|
geometry.margin: 5
|
||||||
|
layout.margin: 5
|
||||||
views:
|
views:
|
||||||
- id: action
|
- id: action
|
||||||
$type: haxework.gui.LabelView
|
$type: haxework.gui.LabelView
|
||||||
skinId: text
|
geometry.size.fixed: [200, 38]
|
||||||
geometry.size.width: 50%
|
skinId: text.box
|
||||||
geometry.size.height: 100%
|
- id: key
|
||||||
text: ""
|
|
||||||
- id: key
|
|
||||||
$type: haxework.gui.LabelView
|
$type: haxework.gui.LabelView
|
||||||
skinId: text
|
geometry.size.fixed: [200, 38]
|
||||||
geometry.size.width: 50%
|
skinId: text.box
|
||||||
geometry.size.height: 100%
|
|
||||||
text: ""
|
|
||||||
skin:
|
|
||||||
- $type: haxework.gui.skin.ColorSkin
|
|
||||||
color: 0x000000
|
|
||||||
alpha: 0.2
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
package ru.m.tankz.frame.settings;
|
package ru.m.tankz.frame.settings;
|
||||||
|
|
||||||
import haxework.gui.ButtonView;
|
import haxework.gui.ButtonView;
|
||||||
|
import haxework.gui.DataView;
|
||||||
import haxework.gui.LabelView;
|
import haxework.gui.LabelView;
|
||||||
import haxework.gui.list.ListView;
|
|
||||||
import haxework.gui.VGroupView;
|
import haxework.gui.VGroupView;
|
||||||
import promhx.Promise;
|
import promhx.Promise;
|
||||||
import ru.m.tankz.control.ActionConfig.ActionItem;
|
import ru.m.tankz.control.ActionConfig.ActionItem;
|
||||||
@@ -14,7 +14,7 @@ import ru.m.tankz.storage.SettingsStorage;
|
|||||||
public var controlIndex(default, set): Int;
|
public var controlIndex(default, set): Int;
|
||||||
|
|
||||||
@:view var label:LabelView;
|
@:view var label:LabelView;
|
||||||
@:view var list:ListView<ActionItem>;
|
@:view var list:DataView<ActionItem>;
|
||||||
@:view var change:ButtonView;
|
@:view var change:ButtonView;
|
||||||
@:view var clear:ButtonView;
|
@:view var clear:ButtonView;
|
||||||
@:view var reset:ButtonView;
|
@:view var reset:ButtonView;
|
||||||
@@ -28,6 +28,13 @@ import ru.m.tankz.storage.SettingsStorage;
|
|||||||
return this.controlIndex;
|
return this.controlIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function viewFactory(index:Int, value:ActionItem) {
|
||||||
|
var view = new ActionView();
|
||||||
|
view.item_index = index;
|
||||||
|
view.data = value;
|
||||||
|
return view;
|
||||||
|
}
|
||||||
|
|
||||||
public function onPress(view:ButtonView):Void {
|
public function onPress(view:ButtonView):Void {
|
||||||
switch (view.id) {
|
switch (view.id) {
|
||||||
case "change": _change();
|
case "change": _change();
|
||||||
@@ -39,7 +46,7 @@ import ru.m.tankz.storage.SettingsStorage;
|
|||||||
|
|
||||||
private function _change():Void {
|
private function _change():Void {
|
||||||
var p: Promise<Int> = Promise.promise(0);
|
var p: Promise<Int> = Promise.promise(0);
|
||||||
for (view in list.items) {
|
for (view in list.views) {
|
||||||
var v: ActionView = cast view;
|
var v: ActionView = cast view;
|
||||||
if (v.data == null) break;
|
if (v.data == null) break;
|
||||||
p = p.pipe(function(_):Promise<Int> return v.edit());
|
p = p.pipe(function(_):Promise<Int> return v.edit());
|
||||||
@@ -51,6 +58,7 @@ import ru.m.tankz.storage.SettingsStorage;
|
|||||||
for (item in list.data) {
|
for (item in list.data) {
|
||||||
item.key = -1;
|
item.key = -1;
|
||||||
}
|
}
|
||||||
|
list.data = list.data;
|
||||||
list.toUpdate();
|
list.toUpdate();
|
||||||
_save();
|
_save();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
layout.margin: 10
|
layout.margin: 10
|
||||||
layout.hAlign: center
|
layout.hAlign: center
|
||||||
views:
|
views:
|
||||||
- id: label
|
- id: label
|
||||||
$type: haxework.gui.LabelView
|
$type: haxework.gui.LabelView
|
||||||
skinId: text
|
skinId: text
|
||||||
- $type: haxework.gui.HGroupView
|
- $type: haxework.gui.HGroupView
|
||||||
layout.margin: 10
|
layout.margin: 10
|
||||||
views:
|
views:
|
||||||
- id: change
|
- id: change
|
||||||
@@ -22,11 +22,8 @@ views:
|
|||||||
+onPress: $this:onPress
|
+onPress: $this:onPress
|
||||||
skinId: button.simple
|
skinId: button.simple
|
||||||
text: Reset
|
text: Reset
|
||||||
- id: list
|
- id: list
|
||||||
$type: haxework.gui.list.VListView<ru.m.tankz.control.ActionItem>
|
$type: haxework.gui.DataView<ru.m.tankz.control.ActionItem>
|
||||||
factory: $code:function() return new ru.m.tankz.frame.settings.ActionView()
|
layout:
|
||||||
geometry.size.stretch: true
|
$type: haxework.gui.layout.VerticalLayout
|
||||||
scroll:
|
factory: $this:viewFactory
|
||||||
$type: haxework.gui.list.VScrollBarView
|
|
||||||
geometry.position: absolute
|
|
||||||
visible: false
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package ru.m.tankz.render;
|
package ru.m.tankz.render;
|
||||||
|
|
||||||
|
import haxework.gui.utils.BitmapUtil;
|
||||||
import haxework.color.Color;
|
import haxework.color.Color;
|
||||||
import ru.m.draw.BitmapUtil;
|
|
||||||
import flash.display.BitmapData;
|
import flash.display.BitmapData;
|
||||||
import openfl.Assets;
|
import openfl.Assets;
|
||||||
import ru.m.animate.Animate;
|
import ru.m.animate.Animate;
|
||||||
@@ -9,7 +9,6 @@ import ru.m.animate.OnceAnimate;
|
|||||||
import ru.m.tankz.core.Tank;
|
import ru.m.tankz.core.Tank;
|
||||||
import ru.m.tankz.Type;
|
import ru.m.tankz.Type;
|
||||||
|
|
||||||
|
|
||||||
class AnimateBundle {
|
class AnimateBundle {
|
||||||
|
|
||||||
private static function buildAnimate(name:String, sequence:Array<Int>):OnceAnimate {
|
private static function buildAnimate(name:String, sequence:Array<Int>):OnceAnimate {
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
package ru.m.tankz.render;
|
package ru.m.tankz.render;
|
||||||
|
|
||||||
import haxework.resources.IResources;
|
|
||||||
import haxework.provider.Provider;
|
|
||||||
import flash.display.DisplayObjectContainer;
|
import flash.display.DisplayObjectContainer;
|
||||||
import flash.display.Graphics;
|
import flash.display.Graphics;
|
||||||
import flash.display.Sprite;
|
import flash.display.Sprite;
|
||||||
@@ -9,6 +7,8 @@ import flash.text.TextField;
|
|||||||
import flash.text.TextFormat;
|
import flash.text.TextFormat;
|
||||||
import haxe.Timer;
|
import haxe.Timer;
|
||||||
import haxework.gui.SpriteView;
|
import haxework.gui.SpriteView;
|
||||||
|
import haxework.provider.Provider;
|
||||||
|
import haxework.resources.IResources;
|
||||||
import ru.m.animate.Animate;
|
import ru.m.animate.Animate;
|
||||||
import ru.m.animate.OnceAnimate;
|
import ru.m.animate.OnceAnimate;
|
||||||
import ru.m.geom.Point;
|
import ru.m.geom.Point;
|
||||||
@@ -17,7 +17,6 @@ import ru.m.tankz.engine.Engine;
|
|||||||
import ru.m.tankz.render.RenderItem;
|
import ru.m.tankz.render.RenderItem;
|
||||||
import ru.m.tankz.Type;
|
import ru.m.tankz.Type;
|
||||||
|
|
||||||
|
|
||||||
class Render extends SpriteView {
|
class Render extends SpriteView {
|
||||||
|
|
||||||
private var backgroundLayer:Sprite;
|
private var backgroundLayer:Sprite;
|
||||||
|
|||||||
@@ -3,8 +3,8 @@ package ru.m.tankz.editor.tank;
|
|||||||
import flash.display.Bitmap;
|
import flash.display.Bitmap;
|
||||||
import flash.display.BitmapData;
|
import flash.display.BitmapData;
|
||||||
import haxework.color.Color;
|
import haxework.color.Color;
|
||||||
|
import haxework.gui.utils.BitmapUtil;
|
||||||
import haxework.gui.View;
|
import haxework.gui.View;
|
||||||
import ru.m.draw.BitmapUtil;
|
|
||||||
|
|
||||||
class TankView extends View<Bitmap> {
|
class TankView extends View<Bitmap> {
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user