From df99ff817aa55c52485c20bb942ff05521b5371e Mon Sep 17 00:00:00 2001 From: shmyga Date: Tue, 6 Mar 2018 17:18:18 +0300 Subject: [PATCH] [client] update haxework --- src/client/haxe/ru/m/tankz/Client.hx | 30 +----------- src/client/haxe/ru/m/tankz/Init.hx | 11 +++++ .../m/tankz/control/ClientNetworkControl.hx | 4 +- src/client/haxe/ru/m/tankz/frame/GameFrame.hx | 11 ++--- .../haxe/ru/m/tankz/frame/LevelFrame.hx | 12 ++--- .../haxe/ru/m/tankz/frame/NetworkFrame.hx | 46 ++++++++----------- .../haxe/ru/m/tankz/frame/StartFrame.hx | 24 ++++------ .../haxe/ru/m/tankz/frame/level/LevelView.hx | 9 ++-- .../ru/m/tankz/frame/network/GameItemView.hx | 11 ++--- .../ru/m/tankz/frame/network/UserItemView.hx | 9 ++-- .../haxe/ru/m/tankz/network/NetworkManager.hx | 1 - src/editor/haxe/ru/m/tankz/editor/Editor.hx | 15 +++--- src/editor/haxe/ru/m/tankz/editor/Editor.yaml | 2 - .../ru/m/tankz/editor/frame/LevelFrame.hx | 23 ++++------ .../haxe/ru/m/tankz/editor/frame/TankFrame.hx | 15 +++--- 15 files changed, 85 insertions(+), 138 deletions(-) diff --git a/src/client/haxe/ru/m/tankz/Client.hx b/src/client/haxe/ru/m/tankz/Client.hx index e20fcd3..d90e323 100755 --- a/src/client/haxe/ru/m/tankz/Client.hx +++ b/src/client/haxe/ru/m/tankz/Client.hx @@ -1,28 +1,18 @@ package ru.m.tankz; -import openfl.Assets; import ru.m.tankz.frame.StartFrame; import flash.ui.Keyboard; import flash.events.KeyboardEvent; -import ru.m.tankz.proto.pack.Response; -import ru.m.tankz.proto.pack.Request; import flash.text.Font; import haxework.gui.frame.IFrameSwitcher; import haxework.gui.Root; import haxework.gui.VGroupView; -import haxework.gui.ViewBuilder; import haxework.log.TraceLogger; import haxework.provider.Provider; import haxework.resources.IResources; -import haxework.resources.Resources; -import ru.m.connect.IConnection; #if flash import haxework.log.JSLogger; #end #if debug import haxework.log.SocketLogger; #end - -interface ClientLayout { - var switcher(default, null):IFrameSwitcher; -} class Client { private static inline var TAG = 'Tankz'; @@ -44,11 +34,11 @@ class Client { Root.bind(view); view.launch(); } - } @:template('ru/m/tankz/Client.yaml', 'ru/m/tankz/Style.yaml') -class ClientView extends VGroupView implements ClientLayout implements ViewBuilder { +class ClientView extends VGroupView { + @:view private var switcher(default, null):IFrameSwitcher; private static inline var TAG = 'Tankz'; @@ -56,32 +46,16 @@ class ClientView extends VGroupView implements ClientLayout implements ViewBuild var font:Font = Font.enumerateFonts()[0]; Provider.get(IResources).text.put('font', 'Bookman Old Style'); Provider.get(IResources).text.put('version', 'v${Const.VERSION} b${Const.BUILD}'); - - #if flash - Provider.set(IConnection, new ru.m.connect.flash.FlashConnection('localhost', 5001, Response)); - #elseif html5 - Provider.set(IConnection, new ru.m.connect.js.JsConnection('localhost', 5001)); - #else - Provider.set(IConnection, new ru.m.connect.fake.FakeConnection()); - #end - Provider.set(IFrameSwitcher, switcher); } public function launch():Void { content.stage.stageFocusRect = false; - content.stage.addEventListener(KeyboardEvent.KEY_UP, function(event:KeyboardEvent):Void { if (event.keyCode == Keyboard.ESCAPE) { switcher.change(StartFrame.ID); } }); - - L.d(TAG, 'resources'); - for (resource in Assets.list()) { - L.d(TAG, '\t${resource}'); - } - switcher.change(StartFrame.ID); } } diff --git a/src/client/haxe/ru/m/tankz/Init.hx b/src/client/haxe/ru/m/tankz/Init.hx index cade9b2..6542df7 100644 --- a/src/client/haxe/ru/m/tankz/Init.hx +++ b/src/client/haxe/ru/m/tankz/Init.hx @@ -3,6 +3,7 @@ package ru.m.tankz; import haxework.provider.Provider; import haxework.resources.IResources; import haxework.resources.Resources; +import ru.m.connect.IConnection; import ru.m.tankz.bundle.ConfigBundle; import ru.m.tankz.bundle.IConfigBundle; import ru.m.tankz.bundle.ILevelBundle; @@ -13,6 +14,8 @@ import ru.m.tankz.game.ClassicGame; import ru.m.tankz.game.DotaGame; import ru.m.tankz.game.Game; import ru.m.tankz.network.NetworkManager; +import ru.m.tankz.proto.pack.Request; +import ru.m.tankz.proto.pack.Response; import ru.m.tankz.sound.SoundManager; import ru.m.tankz.storage.SaveStorage; import ru.m.tankz.storage.UserStorage; @@ -31,5 +34,13 @@ class Init { Provider.setFactory(IControlFactory, ClientControlFactory); Provider.setFactory(Game, ClassicGame, ClassicGame.TYPE); Provider.setFactory(Game, DotaGame, DotaGame.TYPE); + + #if flash + Provider.set(IConnection, new ru.m.connect.flash.FlashConnection('localhost', 5001, Response)); + #elseif html5 + Provider.set(IConnection, new ru.m.connect.js.JsConnection('localhost', 5001)); + #else + Provider.set(IConnection, new ru.m.connect.fake.FakeConnection()); + #end } } diff --git a/src/client/haxe/ru/m/tankz/control/ClientNetworkControl.hx b/src/client/haxe/ru/m/tankz/control/ClientNetworkControl.hx index 38e47a2..2f6fb56 100644 --- a/src/client/haxe/ru/m/tankz/control/ClientNetworkControl.hx +++ b/src/client/haxe/ru/m/tankz/control/ClientNetworkControl.hx @@ -4,11 +4,9 @@ import ru.m.tankz.network.NetworkManager; import ru.m.tankz.control.Control; -@:haxework class ClientNetworkControl extends HumanControl { - @:provider - private var network:NetworkManager; + @:provide private var network:NetworkManager; override public function action(action:TankAction):Void { network.action(action); diff --git a/src/client/haxe/ru/m/tankz/frame/GameFrame.hx b/src/client/haxe/ru/m/tankz/frame/GameFrame.hx index 760728d..f4cfe84 100755 --- a/src/client/haxe/ru/m/tankz/frame/GameFrame.hx +++ b/src/client/haxe/ru/m/tankz/frame/GameFrame.hx @@ -6,7 +6,6 @@ import haxe.Timer; import haxework.gui.frame.IFrameSwitcher; import haxework.gui.LabelView; import haxework.gui.VGroupView; -import haxework.gui.ViewBuilder; import haxework.provider.Provider; import ru.m.tankz.game.Game; import ru.m.tankz.game.GameSave; @@ -16,18 +15,16 @@ import ru.m.tankz.sound.SoundManager; import ru.m.tankz.storage.SaveStorage; -interface GameFrameLayout { - var state(default, null):LabelView; - var render(default, null):Render; -} - @:template("ru/m/tankz/frame/GameFrame.yaml", "ru/m/tankz/Style.yaml") -class GameFrame extends VGroupView implements ViewBuilder implements GameFrameLayout { +class GameFrame extends VGroupView { private static inline var TAG = "GameFrame"; public static inline var ID = "game"; + @:view var state(default, null):LabelView; + @:view var render(default, null):Render; + private var game:Game; private var timer:Timer; diff --git a/src/client/haxe/ru/m/tankz/frame/LevelFrame.hx b/src/client/haxe/ru/m/tankz/frame/LevelFrame.hx index 639d59b..5fea55a 100644 --- a/src/client/haxe/ru/m/tankz/frame/LevelFrame.hx +++ b/src/client/haxe/ru/m/tankz/frame/LevelFrame.hx @@ -1,24 +1,20 @@ package ru.m.tankz.frame; -import ru.m.tankz.game.GameSave; import haxework.gui.frame.IFrameSwitcher; import haxework.gui.list.ListView; import haxework.gui.VGroupView; -import haxework.gui.ViewBuilder; import haxework.provider.Provider; import ru.m.tankz.bundle.IConfigBundle; +import ru.m.tankz.game.GameSave; import ru.m.tankz.game.GameState; -interface LevelFrameLayout { - var levels(default, null):ListView; -} - - @:template("ru/m/tankz/frame/LevelFrame.yaml", "ru/m/tankz/Style.yaml") -class LevelFrame extends VGroupView implements ViewBuilder implements LevelFrameLayout { +class LevelFrame extends VGroupView { public static inline var ID = "level"; + @:view var levels(default, null):ListView; + public function init():Void { levels.dispatcher.addListener(this); } diff --git a/src/client/haxe/ru/m/tankz/frame/NetworkFrame.hx b/src/client/haxe/ru/m/tankz/frame/NetworkFrame.hx index 25ed676..30ca5c6 100644 --- a/src/client/haxe/ru/m/tankz/frame/NetworkFrame.hx +++ b/src/client/haxe/ru/m/tankz/frame/NetworkFrame.hx @@ -1,42 +1,34 @@ package ru.m.tankz.frame; -import ru.m.tankz.proto.core.Game; -import ru.m.tankz.proto.core.User; -import haxework.gui.list.ListView; -import haxework.gui.IGroupView; -import haxework.gui.frame.IFrameSwitcher; import haxework.gui.ButtonView; +import haxework.gui.frame.IFrameSwitcher; +import haxework.gui.IGroupView; import haxework.gui.InputView; import haxework.gui.LabelView; +import haxework.gui.list.ListView; import haxework.gui.VGroupView; -import haxework.gui.ViewBuilder; -import haxework.provider.Provider; import ru.m.tankz.network.NetworkManager; +import ru.m.tankz.proto.core.Game; +import ru.m.tankz.proto.core.User; -interface NetworkFrameLayout { - var frameSwitcher(default, null):IFrameSwitcher; - - var loginFrame(default, null):IGroupView; - var stateLabel(default, null):LabelView; - var nameInput(default, null):InputView; - var loginButton(default, null):ButtonView; - - var gameListFrame(default, null):IGroupView; - var createGameButton(default, null):ButtonView; - var gameList(default, null):ListView; - - var gameFrame(default, null):IGroupView; - var leaveGameButton(default, null):ButtonView; - var userList(default, null):ListView; -} - -@:haxework @:template("ru/m/tankz/frame/NetworkFrame.yaml", "ru/m/tankz/Style.yaml") -class NetworkFrame extends VGroupView implements ViewBuilder implements NetworkFrameLayout { +class NetworkFrame extends VGroupView { public static var ID(default, never):String = "network"; - @:provide private var network:NetworkManager; + @:view var frameSwitcher(default, null):IFrameSwitcher; + @:view var loginFrame(default, null):IGroupView; + @:view var stateLabel(default, null):LabelView; + @:view var nameInput(default, null):InputView; + @:view var loginButton(default, null):ButtonView; + @:view var gameListFrame(default, null):IGroupView; + @:view var createGameButton(default, null):ButtonView; + @:view var gameList(default, null):ListView; + @:view var gameFrame(default, null):IGroupView; + @:view var leaveGameButton(default, null):ButtonView; + @:view var userList(default, null):ListView; + + @:provide var network:NetworkManager; public function init():Void { loginButton.onPress = this; diff --git a/src/client/haxe/ru/m/tankz/frame/StartFrame.hx b/src/client/haxe/ru/m/tankz/frame/StartFrame.hx index 0fcbea2..bef4b45 100644 --- a/src/client/haxe/ru/m/tankz/frame/StartFrame.hx +++ b/src/client/haxe/ru/m/tankz/frame/StartFrame.hx @@ -3,7 +3,6 @@ package ru.m.tankz.frame; import haxework.gui.ButtonView; import haxework.gui.frame.IFrameSwitcher; import haxework.gui.VGroupView; -import haxework.gui.ViewBuilder; import haxework.provider.Provider; import ru.m.tankz.game.ClassicGame; import ru.m.tankz.game.DotaGame; @@ -12,23 +11,20 @@ import ru.m.tankz.storage.SaveStorage; import ru.m.tankz.Type; -interface StartFrameLayout { - var classic_1p(default, null):ButtonView; - var classic_2p(default, null):ButtonView; - var classic_load(default, null):ButtonView; - var dota_1p(default, null):ButtonView; - var dota_2p_coop(default, null):ButtonView; - var dota_2p_vs(default, null):ButtonView; - var network(default, null):ButtonView; -} - -@:haxework @:template("ru/m/tankz/frame/StartFrame.yaml", "ru/m/tankz/Style.yaml") -class StartFrame extends VGroupView implements ViewBuilder implements StartFrameLayout { +class StartFrame extends VGroupView { public static var ID(default, never):String = "start"; - @:provide private var frameSwitcher:IFrameSwitcher; + @:view var classic_1p(default, null):ButtonView; + @:view var classic_2p(default, null):ButtonView; + @:view var classic_load(default, null):ButtonView; + @:view var dota_1p(default, null):ButtonView; + @:view var dota_2p_coop(default, null):ButtonView; + @:view var dota_2p_vs(default, null):ButtonView; + @:view var network(default, null):ButtonView; + + @:provide var frameSwitcher:IFrameSwitcher; public function init():Void { classic_1p.onPress = this; diff --git a/src/client/haxe/ru/m/tankz/frame/level/LevelView.hx b/src/client/haxe/ru/m/tankz/frame/level/LevelView.hx index 0924718..4a2fc4d 100755 --- a/src/client/haxe/ru/m/tankz/frame/level/LevelView.hx +++ b/src/client/haxe/ru/m/tankz/frame/level/LevelView.hx @@ -1,21 +1,18 @@ package ru.m.tankz.frame.level; -import haxework.gui.ViewBuilder; import haxework.gui.HGroupView; import haxework.gui.LabelView; import haxework.gui.list.ListView.IListItemView; -interface LevelViewLayout { - var label(default, null):LabelView; -} - @:template("ru/m/tankz/frame/level/LevelView.yaml", "ru/m/tankz/Style.yaml") -class LevelView extends HGroupView implements ViewBuilder implements IListItemView implements LevelViewLayout { +class LevelView extends HGroupView implements IListItemView { public var item_index(default, default):Int; public var data(default, set):Int; + @:view var label(default, null):LabelView; + private function set_data(value:Int):Int { data = value; label.text = 'Level ${data}'; diff --git a/src/client/haxe/ru/m/tankz/frame/network/GameItemView.hx b/src/client/haxe/ru/m/tankz/frame/network/GameItemView.hx index f69185a..0eac70b 100755 --- a/src/client/haxe/ru/m/tankz/frame/network/GameItemView.hx +++ b/src/client/haxe/ru/m/tankz/frame/network/GameItemView.hx @@ -1,22 +1,19 @@ package ru.m.tankz.frame.network; -import ru.m.tankz.proto.core.Game; import haxework.gui.HGroupView; import haxework.gui.LabelView; import haxework.gui.list.ListView; -import haxework.gui.ViewBuilder; +import ru.m.tankz.proto.core.Game; -interface GameItemViewLayout { - var label(default, null):LabelView; -} - @:template("ru/m/tankz/frame/network/GameItemView.yaml", "ru/m/tankz/Style.yaml") -class GameItemView extends HGroupView implements ViewBuilder implements IListItemView implements GameItemViewLayout { +class GameItemView extends HGroupView implements IListItemView { public var item_index(default, default):Int; public var data(default, set):Game; + @:view var label(default, null):LabelView; + private function set_data(value:Game):Game { data = value; label.text = '${data.type}'; diff --git a/src/client/haxe/ru/m/tankz/frame/network/UserItemView.hx b/src/client/haxe/ru/m/tankz/frame/network/UserItemView.hx index 5396665..9588612 100755 --- a/src/client/haxe/ru/m/tankz/frame/network/UserItemView.hx +++ b/src/client/haxe/ru/m/tankz/frame/network/UserItemView.hx @@ -3,20 +3,17 @@ package ru.m.tankz.frame.network; import haxework.gui.HGroupView; import haxework.gui.LabelView; import haxework.gui.list.ListView; -import haxework.gui.ViewBuilder; import ru.m.tankz.proto.core.User; -interface UserItemViewLayout { - var label(default, null):LabelView; -} - @:template("ru/m/tankz/frame/network/UserItemView.yaml", "ru/m/tankz/Style.yaml") -class UserItemView extends HGroupView implements ViewBuilder implements IListItemView implements UserItemViewLayout { +class UserItemView extends HGroupView implements IListItemView { public var item_index(default, default):Int; public var data(default, set):User; + @:view var label(default, null):LabelView; + private function set_data(value:User):User { data = value; label.text = '${data.uuid} -- ${data.name}'; diff --git a/src/client/haxe/ru/m/tankz/network/NetworkManager.hx b/src/client/haxe/ru/m/tankz/network/NetworkManager.hx index 3e293fb..61d3cf1 100644 --- a/src/client/haxe/ru/m/tankz/network/NetworkManager.hx +++ b/src/client/haxe/ru/m/tankz/network/NetworkManager.hx @@ -19,7 +19,6 @@ import ru.m.tankz.storage.UserStorage; typedef ClientConnection = IConnection; -@:haxework class NetworkManager { public var state(default, null):String; diff --git a/src/editor/haxe/ru/m/tankz/editor/Editor.hx b/src/editor/haxe/ru/m/tankz/editor/Editor.hx index 317b203..0f5dcf1 100644 --- a/src/editor/haxe/ru/m/tankz/editor/Editor.hx +++ b/src/editor/haxe/ru/m/tankz/editor/Editor.hx @@ -9,7 +9,6 @@ import haxework.gui.ButtonView; import haxework.gui.frame.FrameSwitcher; import haxework.gui.VGroupView; import haxework.gui.Root; -import haxework.gui.ViewBuilder; import haxework.log.TraceLogger; import haxework.provider.Provider; import haxework.resources.IResources; @@ -19,12 +18,12 @@ import ru.m.tankz.frame.LevelFrame; #if debug import haxework.log.SocketLogger; #end -interface EditorViewLayout { - var switcher(default, null):FrameSwitcher; -} - @:template('ru/m/tankz/editor/Editor.yaml', 'ru/m/tankz/editor/Style.yaml') -class EditorView extends VGroupView implements ViewBuilder implements EditorViewLayout {} +class EditorView extends VGroupView { + @:view public var switcher(default, null):FrameSwitcher; + @:view public var btn_level(default, null):ButtonView; + @:view public var btn_tank(default, null):ButtonView; +} class Editor { @@ -54,13 +53,15 @@ class Editor { Provider.get(IResources).text.put('font', 'Bookman Old Style'); Provider.get(IResources).text.put('version', 'v${Const.VERSION} b${Const.BUILD}'); - view = new EditorView({handler: this}); + view = new EditorView(); Root.bind(view); view.content.stage.stageFocusRect = false; Provider.setFactory(IConfigBundle, ConfigBundle); Provider.setFactory(ILevelBundle, LevelBundle); + view.btn_level.onPress = this; + view.btn_tank.onPress = this; view.switcher.change(LevelFrame.ID); } diff --git a/src/editor/haxe/ru/m/tankz/editor/Editor.yaml b/src/editor/haxe/ru/m/tankz/editor/Editor.yaml index 44f7216..cf16954 100644 --- a/src/editor/haxe/ru/m/tankz/editor/Editor.yaml +++ b/src/editor/haxe/ru/m/tankz/editor/Editor.yaml @@ -15,12 +15,10 @@ views: $type: haxework.gui.ButtonView $style: button text: Level - onPress: "@link:handler" - id: btn_tank $type: haxework.gui.ButtonView $style: button text: Tank - onPress: "@link:handler" - $type: haxework.gui.SpriteView height: 3 pWidth: 100 diff --git a/src/editor/haxe/ru/m/tankz/editor/frame/LevelFrame.hx b/src/editor/haxe/ru/m/tankz/editor/frame/LevelFrame.hx index a2054b8..628645e 100644 --- a/src/editor/haxe/ru/m/tankz/editor/frame/LevelFrame.hx +++ b/src/editor/haxe/ru/m/tankz/editor/frame/LevelFrame.hx @@ -7,7 +7,6 @@ import haxework.gui.LabelView; import haxework.gui.list.ListView; import haxework.gui.list.VListView; import haxework.gui.VGroupView; -import haxework.gui.ViewBuilder; import haxework.provider.Provider; import ru.m.tankz.config.Config; import ru.m.tankz.editor.FileUtil; @@ -19,22 +18,20 @@ import ru.m.tankz.game.DotaGame; import ru.m.tankz.Type; -interface LevelFrameLayout { - var gameClassicButton(default, null):ButtonView; - var gameDotaButton(default, null):ButtonView; - var openButton(default, null):ButtonView; - var saveButton(default, null):ButtonView; - var fileNameLabel(default, null):LabelView; - var mapView(default, null):MapEditView; - var spawnPointList(default, null):VListView; - var brickList(default, null):VListView; -} - @:template('ru/m/tankz/editor/frame/LevelFrame.yaml', 'ru/m/tankz/editor/Style.yaml') -class LevelFrame extends VGroupView implements ViewBuilder implements LevelFrameLayout { +class LevelFrame extends VGroupView { public static inline var ID = 'level'; public static inline var TAG = 'level'; + @:view var gameClassicButton(default, null):ButtonView; + @:view var gameDotaButton(default, null):ButtonView; + @:view var openButton(default, null):ButtonView; + @:view var saveButton(default, null):ButtonView; + @:view var fileNameLabel(default, null):LabelView; + @:view var mapView(default, null):MapEditView; + @:view var spawnPointList(default, null):VListView; + @:view var brickList(default, null):VListView; + private var config:Config; public function init():Void { diff --git a/src/editor/haxe/ru/m/tankz/editor/frame/TankFrame.hx b/src/editor/haxe/ru/m/tankz/editor/frame/TankFrame.hx index 09cb340..f583e3f 100644 --- a/src/editor/haxe/ru/m/tankz/editor/frame/TankFrame.hx +++ b/src/editor/haxe/ru/m/tankz/editor/frame/TankFrame.hx @@ -4,20 +4,17 @@ import ru.m.draw.Color; import ru.m.tankz.editor.tank.TankView; import haxework.gui.InputView; import haxework.gui.HGroupView; -import haxework.gui.ViewBuilder; -interface TankFrameLayout { - var tank(default, null):TankView; - var colorR(default, null):InputView; - var colorG(default, null):InputView; - var colorB(default, null):InputView; -} - @:template('ru/m/tankz/editor/frame/TankFrame.yaml', 'ru/m/tankz/editor/Style.yaml') -class TankFrame extends HGroupView implements ViewBuilder implements TankFrameLayout { +class TankFrame extends HGroupView { public static inline var ID = 'tank'; + @:view var tank(default, null):TankView; + @:view var colorR(default, null):InputView; + @:view var colorG(default, null):InputView; + @:view var colorB(default, null):InputView; + public function init():Void { colorR.onKeyUp = this; colorG.onKeyUp = this;