From 3643be4cd87666a9048d2ba320381f4a64c76fe0 Mon Sep 17 00:00:00 2001 From: shmyga Date: Fri, 14 Aug 2015 16:24:42 +0300 Subject: [PATCH] update --- src/client/haxe/layout/frames/auth.json | 33 +++- src/client/haxe/layout/frames/game.json | 3 +- src/client/haxe/layout/frames/game_list.json | 5 +- src/client/haxe/layout/frames/game_ready.json | 7 +- .../haxe/layout/frames/person_list.json | 5 + src/client/haxe/layout/main.json | 22 ++- src/client/haxe/layout/other.json | 18 ++ src/client/haxe/layout/styles.json | 20 ++- src/client/haxe/ru/m/tankz/Client.hx | 25 +-- src/client/haxe/ru/m/tankz/render/Render.hx | 35 ++-- .../haxe/ru/m/tankz/view/frames/AuthFrame.hx | 2 + .../ru/m/tankz/view/frames/PersonListFrame.hx | 4 +- .../ru/m/tankz/view/frames/list/PersonView.hx | 18 +- src/client/resources/fonts/8-BIT WONDER.TTF | Bin 0 -> 14328 bytes src/client/resources/fonts/8-BIT WONDER.eot | Bin 0 -> 14536 bytes src/client/resources/fonts/8-BIT WONDER.svg | 161 ++++++++++++++++++ src/client/resources/fonts/8-BIT WONDER.woff | Bin 0 -> 4892 bytes .../ru/m/core/connect/neko/NekoConnection.hx | 1 + .../haxe/ru/m/tankz/config/TankzConfig.hx | 4 +- src/common/haxe/ru/m/tankz/core/Bullet.hx | 4 +- src/common/haxe/ru/m/tankz/core/Direction.hx | 6 +- src/common/haxe/ru/m/tankz/core/Tank.hx | 4 +- src/common/haxe/ru/m/tankz/engine/Engine.hx | 6 +- .../ru/m/tankz/server/game/GameManager.hx | 2 +- 24 files changed, 314 insertions(+), 71 deletions(-) create mode 100644 src/client/haxe/layout/other.json create mode 100644 src/client/resources/fonts/8-BIT WONDER.TTF create mode 100644 src/client/resources/fonts/8-BIT WONDER.eot create mode 100644 src/client/resources/fonts/8-BIT WONDER.svg create mode 100644 src/client/resources/fonts/8-BIT WONDER.woff diff --git a/src/client/haxe/layout/frames/auth.json b/src/client/haxe/layout/frames/auth.json index 6e5308d..da6f75b 100644 --- a/src/client/haxe/layout/frames/auth.json +++ b/src/client/haxe/layout/frames/auth.json @@ -1,18 +1,29 @@ { "pWidth": 100, "pHeight": 100, "layoutMargin": 3, "views": [ + { + "@type": "haxework.gui.LabelView", + "pWidth": 100, "height": 44, "text": "Authorization", + "@style": "label" + }, { "@type": "haxework.gui.HGroupView", "contentSize": true, "views": [ { "@type": "haxework.gui.LabelView", - "width": 150, "height": 25, "text": "Login" + "width": 150, "height": 44, "text": "Login", + "@style": "label" }, { "id": "loginInput", "@type": "haxework.gui.InputView", - "skin": {"@type": "haxework.gui.skin.ColorSkin", "color": "0xffffff"}, - "width": 200, "height": 25, "text": "" + "skin": { + "@type": "haxework.gui.skin.BitmapSkin", + "image": "@asset:image:resources/images/map/map_3-0.png", + "fillType": "REPEAT" + }, + "width": 220, "height": 44, "text": "", + "@style": "label" } ] }, @@ -22,12 +33,18 @@ "views": [ { "@type": "haxework.gui.LabelView", - "width": 150, "height": 25, "text": "Password" + "width": 150, "height": 44, "text": "Password", + "@style": "label" }, { "id": "passwordInput", "@type": "haxework.gui.InputView", - "skin": {"@type": "haxework.gui.skin.ColorSkin", "color": "0xffffff"}, - "width": 200, "height": 25, "text": "" + "skin": { + "@type": "haxework.gui.skin.BitmapSkin", + "image": "@asset:image:resources/images/map/map_3-0.png", + "fillType": "REPEAT" + }, + "width": 220, "height": 44, "text": "", + "@style": "label" } ] }, @@ -35,8 +52,8 @@ { "id": "authButton", "@type": "haxework.gui.ButtonView", - "width": 100, "height": 45, - "text": "Auth", + "width": 132, "height": 44, + "text": "Submit", "@style": "button_skin" } ] diff --git a/src/client/haxe/layout/frames/game.json b/src/client/haxe/layout/frames/game.json index d6f7546..54ba073 100644 --- a/src/client/haxe/layout/frames/game.json +++ b/src/client/haxe/layout/frames/game.json @@ -3,7 +3,8 @@ "views": [ { "id": "name", "@type": "haxework.gui.LabelView", - "pWidth": 100, "height": 25, "text": "" + "pWidth": 100, "height": 44, "text": "", + "@style": "label" }, { "id": "render", "@type": "ru.m.tankz.render.Render", diff --git a/src/client/haxe/layout/frames/game_list.json b/src/client/haxe/layout/frames/game_list.json index c466a82..ffe1e4a 100644 --- a/src/client/haxe/layout/frames/game_list.json +++ b/src/client/haxe/layout/frames/game_list.json @@ -3,11 +3,12 @@ "views": [ { "id": "name", "@type": "haxework.gui.LabelView", - "pWidth": 100, "height": 25, "text": "" + "pWidth": 100, "height": 44, "text": "", + "@style": "label" }, { "id": "create", "@type": "haxework.gui.ButtonView", - "width": 100, "height": 45, + "width": 132, "height": 44, "text": "Create", "@style": "button_skin" }, diff --git a/src/client/haxe/layout/frames/game_ready.json b/src/client/haxe/layout/frames/game_ready.json index 5804b37..e5a8d7e 100644 --- a/src/client/haxe/layout/frames/game_ready.json +++ b/src/client/haxe/layout/frames/game_ready.json @@ -3,17 +3,18 @@ "views": [ { "id": "name", "@type": "haxework.gui.LabelView", - "pWidth": 100, "height": 25, "text": "" + "pWidth": 100, "height": 44, "text": "", + "@style": "label" }, { "id": "start", "@type": "haxework.gui.ButtonView", - "width": 100, "height": 45, + "width": 132, "height": 44, "text": "Start", "@style": "button_skin" }, { "id": "exit", "@type": "haxework.gui.ButtonView", - "width": 100, "height": 45, + "width": 132, "height": 44, "text": "Exit", "@style": "button_skin" }, diff --git a/src/client/haxe/layout/frames/person_list.json b/src/client/haxe/layout/frames/person_list.json index a2b0e05..97e5f0f 100644 --- a/src/client/haxe/layout/frames/person_list.json +++ b/src/client/haxe/layout/frames/person_list.json @@ -1,6 +1,11 @@ { "pWidth": 100, "pHeight": 100, "layoutMargin": 3, "paddings": 10, "views": [ + { + "@type": "haxework.gui.LabelView", + "pWidth": 100, "height": 44, "text": "Person select", + "@style": "label" + }, { "id": "list", "@type": "haxework.gui.list.VListView", "factory": "@class:ru.m.tankz.view.frames.list.PersonView", diff --git a/src/client/haxe/layout/main.json b/src/client/haxe/layout/main.json index 306c63a..6438736 100755 --- a/src/client/haxe/layout/main.json +++ b/src/client/haxe/layout/main.json @@ -4,12 +4,22 @@ "views": [ { "id":"top", "@type": "haxework.gui.HGroupView", - "pWidth": 100, "height": 30, - "skin": {"@type": "haxework.gui.skin.ColorSkin", "color": "0x105000"}, + "pWidth": 100, "height": 44, + "skin": { + "@type": "haxework.gui.skin.BitmapSkin", + "image": "@asset:image:resources/images/map/map_5.png", + "fillType": "REPEAT" + }, "views": [ + { + "id": "name", "@type": "haxework.gui.LabelView", + "pWidth": 100, "height": 44, + "text": "@res:text:userName", + "@style": "label" + }, { "id": "logout", "@type": "haxework.gui.ButtonView", - "width": 100, "height": 30, + "width": 132, "height": 44, "text": "Logout", "@style": "button_skin" } @@ -18,7 +28,11 @@ { "id": "switcher", "@type": "haxework.gui.frame.FrameSwitcher", "pWidth": 100, "pHeight": 100, - "skin": {"@type": "haxework.gui.skin.BitmapSkin", "image": "@asset:image:resources/images/background.png", "fillType": "REPEAT"}, + "skin": { + "@type": "haxework.gui.skin.BitmapSkin", + "image": "@asset:image:resources/images/map/map_1.png", + "fillType": "REPEAT" + }, "views": [ { "id": "auth", diff --git a/src/client/haxe/layout/other.json b/src/client/haxe/layout/other.json new file mode 100644 index 0000000..1290909 --- /dev/null +++ b/src/client/haxe/layout/other.json @@ -0,0 +1,18 @@ +{ + "person": { + "width": 440, "height": 44, + "skin": { + "@type": "haxework.gui.skin.BitmapSkin", + "image": "@asset:image:resources/images/map/map_3-0.png", + "fillType": "REPEAT" + }, + "views": [ + { + "id": "nameLabel", + "@type": "haxework.gui.LabelView", + "pWidth": 100, "height": 44, "text": "Выбор персонажа", + "@style": "label" + } + ] + } +} \ No newline at end of file diff --git a/src/client/haxe/layout/styles.json b/src/client/haxe/layout/styles.json index c5ff294..715f02e 100644 --- a/src/client/haxe/layout/styles.json +++ b/src/client/haxe/layout/styles.json @@ -2,11 +2,21 @@ "button_skin": { "skin": { "@type": "haxework.gui.skin.ButtonBitmapSkin", - "upImage": "@asset:image:resources/images/control/button_normal.png", - "downImage": "@asset:image:resources/images/control/button_down.png", - "overImage": "@asset:image:resources/images/control/button_over.png", - "fillType": "NINEPATH" + "image": "@asset:image:resources/images/map/map_4.png", + "fillType": "REPEAT" }, - "fontColor": "0xffffff" + "fontColor": "0xffffff", + "fontEmbed": true, + "fontFamily": "@res:text:fontName", + "fontSize": 16, + "shadowColor": "0x000000" + }, + + "label": { + "fontColor": "0xffffff", + "fontEmbed": true, + "fontFamily": "@res:text:fontName", + "fontSize": 16, + "shadowColor": "0x000000" } } \ No newline at end of file diff --git a/src/client/haxe/ru/m/tankz/Client.hx b/src/client/haxe/ru/m/tankz/Client.hx index 2ab4edf..c552ac6 100755 --- a/src/client/haxe/ru/m/tankz/Client.hx +++ b/src/client/haxe/ru/m/tankz/Client.hx @@ -1,5 +1,7 @@ package ru.m.tankz; +import haxework.resources.Resources; +import haxework.resources.IResources; import haxework.gui.VGroupView; import haxework.gui.ViewBuilder; import haxework.gui.ButtonView; @@ -35,16 +37,14 @@ class Client implements IConnectionHandler { private var view:MainView; - private var switcher:FrameSwitcher; public function new() { - view = new MainView(); - Root.bind(view); - switcher = view.switcher; - view.logout.onPress = this; - + Provider.setFactory(IResources, Resources); Provider.setFactory(GameData, GameData); - Provider.set(IFrameSwitcher, switcher); + + var font = Assets.getFont("resources/fonts/8-BIT WONDER.TTF"); + Provider.get(IResources).text.put("fontName", font.fontName); + Provider.set(IPacketBuilder, new PacketBuilder()); #if flash Provider.set(IConnection, new ru.m.core.connect.flash.FlashConnection("localhost", 5001)); @@ -53,7 +53,12 @@ class Client implements IConnectionHandler { #end Provider.get(IConnection).handler.addListener(this); - switcher.change(AuthFrame.ID); + + view = new MainView(); + Provider.set(IFrameSwitcher, view.switcher); + Root.bind(view); + view.logout.onPress = this; + view.switcher.change(AuthFrame.ID); } public function onPress(view:ButtonView):Void { @@ -66,11 +71,11 @@ class Client implements IConnectionHandler { public function onConnected():Void {} public function onDisconnected():Void { - switcher.change(AuthFrame.ID); + view.switcher.change(AuthFrame.ID); } public function onError(error:Dynamic):Void { L.e(TAG, "", error); - switcher.change(AuthFrame.ID); + view.switcher.change(AuthFrame.ID); } } diff --git a/src/client/haxe/ru/m/tankz/render/Render.hx b/src/client/haxe/ru/m/tankz/render/Render.hx index 58ac37d..20979b4 100755 --- a/src/client/haxe/ru/m/tankz/render/Render.hx +++ b/src/client/haxe/ru/m/tankz/render/Render.hx @@ -1,5 +1,8 @@ package ru.m.tankz.render; +import ru.m.tankz.core.Direction; +import flash.geom.Matrix; +import openfl.Assets; import ru.m.tankz.core.Bullet; import ru.m.tankz.core.Tank; import flash.display.Sprite; @@ -51,22 +54,34 @@ class Render extends SpriteView implements IRender { for (e in game.mobileEntities) { if (Std.is(e, Tank)) { - g.beginFill(0xff0000); + var m = new Matrix(); + m.rotate(calcRotate(e.direction)); + m.translate(e.x, e.y); + g.beginBitmapFill(Assets.getBitmapData("resources/images/tank/player/tank_p0_0-0.png"), m); g.drawRect(e.x, e.y, e.width, e.height); g.endFill(); - g.beginFill(0x990000); - g.drawRect( - e.x + e.width / 2 - e.width / 8 + e.direction.x * e.width / 4, - e.y + e.height / 2 - e.height / 8 + e.direction.y * e.height / 4, - e.width / 4, - e.height / 4 - ); - g.endFill(); } else if (Std.is(e, Bullet)) { - g.beginFill(0xff0000); + var m = new Matrix(); + m.rotate(calcRotate(e.direction)); + m.translate(e.x, e.y); + g.beginBitmapFill(Assets.getBitmapData("resources/images/bullet/bullet_0.png"), m); g.drawRect(e.x, e.y, e.width, e.height); g.endFill(); } } } + + private function calcRotate(direction:Direction):Float { + return (if (direction == Direction.RIGHT) { + 0; + } else if (direction == Direction.LEFT) { + 180; + } else if (direction == Direction.TOP) { + 270; + } else if (direction == Direction.BOTTOM) { + 90; + } else { + 0; + }) / (Math.PI * 2); + } } diff --git a/src/client/haxe/ru/m/tankz/view/frames/AuthFrame.hx b/src/client/haxe/ru/m/tankz/view/frames/AuthFrame.hx index 5d1264f..c0ebcf0 100755 --- a/src/client/haxe/ru/m/tankz/view/frames/AuthFrame.hx +++ b/src/client/haxe/ru/m/tankz/view/frames/AuthFrame.hx @@ -1,5 +1,6 @@ package ru.m.tankz.view.frames; +import haxework.resources.IResources; import haxework.gui.ViewBuilder; import ru.m.core.connect.IConnection; import ru.m.tankz.data.GameData; @@ -63,6 +64,7 @@ class AuthFrame extends VGroupView implements ViewBuilder implements IPacketHand so.setProperty("login", loginInput.text); so.setProperty("password", passwordInput.text); so.flush(); + Provider.get(IResources).text.put("userName", packet.account.login); Provider.get(GameData).account = packet.account; Provider.get(IFrameSwitcher).change(PersonListFrame.ID); } diff --git a/src/client/haxe/ru/m/tankz/view/frames/PersonListFrame.hx b/src/client/haxe/ru/m/tankz/view/frames/PersonListFrame.hx index db961c4..bf16293 100755 --- a/src/client/haxe/ru/m/tankz/view/frames/PersonListFrame.hx +++ b/src/client/haxe/ru/m/tankz/view/frames/PersonListFrame.hx @@ -11,10 +11,10 @@ import ru.m.core.connect.IConnection; import ru.m.tankz.data.GameData; import haxework.provider.Provider; import ru.m.tankz.proto.Person; -import haxework.gui.HGroupView; +import haxework.gui.VGroupView; @:template("layout/frames/person_list.json", "layout/styles.json") -class PersonListFrame extends HGroupView implements ViewBuilder implements IPacketHandler implements ListViewListener { +class PersonListFrame extends VGroupView implements ViewBuilder implements IPacketHandler implements ListViewListener { private static inline var TAG = "PersonListFrame"; diff --git a/src/client/haxe/ru/m/tankz/view/frames/list/PersonView.hx b/src/client/haxe/ru/m/tankz/view/frames/list/PersonView.hx index ecf686b..4d2dbe0 100755 --- a/src/client/haxe/ru/m/tankz/view/frames/list/PersonView.hx +++ b/src/client/haxe/ru/m/tankz/view/frames/list/PersonView.hx @@ -1,28 +1,16 @@ package ru.m.tankz.view.frames.list; +import haxework.gui.ViewBuilder; import haxework.gui.list.ListView.IListItemView; -import haxework.gui.LabelView; import ru.m.tankz.proto.Person; -import haxework.gui.skin.ColorSkin; import haxework.gui.HGroupView; -class PersonView extends HGroupView implements IListItemView { +@:template("layout/other.json@person", "layout/styles.json") +class PersonView extends HGroupView implements ViewBuilder implements IListItemView { public var item_index(default, default):Int; public var data(default, set):Person; - private var nameLabel:LabelView; - - public function new() { - super(); - pWidth = 100; - height = 50; - skin = new ColorSkin(0xffffff); - - nameLabel = new LabelView(); - addView(nameLabel); - } - private function set_data(value:Person):Person { this.data = value; nameLabel.text = this.data.name; diff --git a/src/client/resources/fonts/8-BIT WONDER.TTF b/src/client/resources/fonts/8-BIT WONDER.TTF new file mode 100644 index 0000000000000000000000000000000000000000..6d9b3972e185bb15dfa5555eb8e3accd796b50b0 GIT binary patch literal 14328 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 + +!"#$%&'()*+,-./0123456789:;å<>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_` abcdefghijklmnopqrstuvwxyz|{}~ \ No newline at end of file diff --git a/src/client/resources/fonts/8-BIT WONDER.woff b/src/client/resources/fonts/8-BIT WONDER.woff new file mode 100644 index 0000000000000000000000000000000000000000..5902288477f0bc4664db24fd823d3875c42282e9 GIT binary patch literal 4892 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 literal 0 HcmV?d00001 diff --git a/src/common/haxe/ru/m/core/connect/neko/NekoConnection.hx b/src/common/haxe/ru/m/core/connect/neko/NekoConnection.hx index 6ea0e44..a8899cf 100755 --- a/src/common/haxe/ru/m/core/connect/neko/NekoConnection.hx +++ b/src/common/haxe/ru/m/core/connect/neko/NekoConnection.hx @@ -31,6 +31,7 @@ class NekoConnection extends BaseConnection { socket.output.write(bytes); socket.output.flush(); } catch (e:Dynamic) { + trace("Error send packet: " + packet); trace(e); } } diff --git a/src/common/haxe/ru/m/tankz/config/TankzConfig.hx b/src/common/haxe/ru/m/tankz/config/TankzConfig.hx index c5339d8..0dcbd11 100644 --- a/src/common/haxe/ru/m/tankz/config/TankzConfig.hx +++ b/src/common/haxe/ru/m/tankz/config/TankzConfig.hx @@ -14,8 +14,8 @@ typedef TankzConfig = { class DEFAULT { public static var CONFIG:TankzConfig = { map: { - cellWidth: 20, - cellHeight: 20, + cellWidth: 22, + cellHeight: 22, gridWidth: 26, gridHeight: 26 } diff --git a/src/common/haxe/ru/m/tankz/core/Bullet.hx b/src/common/haxe/ru/m/tankz/core/Bullet.hx index 32f0780..45f95be 100644 --- a/src/common/haxe/ru/m/tankz/core/Bullet.hx +++ b/src/common/haxe/ru/m/tankz/core/Bullet.hx @@ -7,7 +7,7 @@ class Bullet extends MobileEntity { public function new(personId:Int, id:Int, x:Float, y:Float, speed:Float, direction:Direction) { super(id, x, y, speed, direction); this.personId = personId; - this.width = 10; - this.height = 10; + this.width = 12; + this.height = 12; } } diff --git a/src/common/haxe/ru/m/tankz/core/Direction.hx b/src/common/haxe/ru/m/tankz/core/Direction.hx index a1bf855..1c8de77 100644 --- a/src/common/haxe/ru/m/tankz/core/Direction.hx +++ b/src/common/haxe/ru/m/tankz/core/Direction.hx @@ -13,7 +13,7 @@ class Direction { public var x(default, null):Int; public var y(default, null):Int; - public function new(x, y) { + private function new(x, y) { this.x = x; this.y = y; directions.set(x + y * 10, this); @@ -22,4 +22,8 @@ class Direction { public function reverse():Direction { return directions.get(-x + (-y) * 10); } + + public static function from(x:Int, y:Int):Direction { + return directions.get(x + y * 10); + } } diff --git a/src/common/haxe/ru/m/tankz/core/Tank.hx b/src/common/haxe/ru/m/tankz/core/Tank.hx index f000253..32d9d32 100755 --- a/src/common/haxe/ru/m/tankz/core/Tank.hx +++ b/src/common/haxe/ru/m/tankz/core/Tank.hx @@ -14,8 +14,8 @@ class Tank extends MobileEntity { public function new(personId:Int, id:Int, x:Float, y:Float, direction:Direction) { super(id, x, y, 4, direction); this.personId = personId; - width = 34; - height = 34; + width = 36; + height = 36; } public function shot():Null { diff --git a/src/common/haxe/ru/m/tankz/engine/Engine.hx b/src/common/haxe/ru/m/tankz/engine/Engine.hx index b2b4ac8..9b30ef6 100755 --- a/src/common/haxe/ru/m/tankz/engine/Engine.hx +++ b/src/common/haxe/ru/m/tankz/engine/Engine.hx @@ -71,18 +71,18 @@ class Engine implements IEngine { case GameChangeType.APPEND: switch (change.objectType) { case GameObjectType.TANK: - var tank:Tank = buildTank(change.personId, change.objectId, change.x, change.y, new Direction(change.directionY, change.directionY)); + var tank:Tank = buildTank(change.personId, change.objectId, change.x, change.y, Direction.from(change.directionY, change.directionY)); mobileEntities.set(tank.id, tank); tanks.set(tank.personId, tank); case GameObjectType.BULLET: - var bullet:Bullet = new Bullet(change.personId, change.objectId, change.x, change.y, 0, new Direction(change.directionY, change.directionY)); + var bullet:Bullet = new Bullet(change.personId, change.objectId, change.x, change.y, 0, Direction.from(change.directionY, change.directionY)); mobileEntities.set(bullet.id, bullet); } case GameChangeType.DESTROED: mobileEntities.remove(change.objectId); case GameChangeType.DIRECTION: var target = mobileEntities.get(change.objectId); - target.direction = new Direction(change.directionX, change.directionY); + target.direction = Direction.from(change.directionX, change.directionY); case GameChangeType.MOVED: var target = mobileEntities.get(change.objectId); target.x = change.x; diff --git a/src/server/haxe/ru/m/tankz/server/game/GameManager.hx b/src/server/haxe/ru/m/tankz/server/game/GameManager.hx index 36b21a8..ba56d65 100644 --- a/src/server/haxe/ru/m/tankz/server/game/GameManager.hx +++ b/src/server/haxe/ru/m/tankz/server/game/GameManager.hx @@ -163,7 +163,7 @@ class GameManager { ); } case GameActionType.MOVE: - tank.move(new Direction(action.directionX, action.directionY)); + tank.move(Direction.from(action.directionX, action.directionY)); changes.push(new GameChange() .setType(GameChangeType.DIRECTION) .setObjectType(GameObjectType.TANK)