[client] update haxework. ep7

This commit is contained in:
2019-03-12 17:21:50 +03:00
parent b62956cc95
commit c9ec4395ee
25 changed files with 166 additions and 296 deletions

View File

@@ -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",

View File

@@ -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;
}
}

View File

@@ -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

View File

@@ -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),

View File

@@ -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

View File

@@ -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

View File

@@ -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%

View File

@@ -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 = "";
} }
} }

View File

@@ -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

View File

@@ -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

View 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;
}

View 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]

View File

@@ -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

View File

@@ -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);
} }
} }

View File

@@ -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

View File

@@ -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 {

View File

@@ -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

View File

@@ -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

View File

@@ -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);

View File

@@ -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

View File

@@ -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();
} }

View File

@@ -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

View File

@@ -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 {

View File

@@ -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;

View File

@@ -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> {