From b2ba4362fef671633c401bec29016ff59c160318 Mon Sep 17 00:00:00 2001 From: shmyga Date: Mon, 11 Mar 2019 17:51:13 +0300 Subject: [PATCH] [client] update haxework. ep6 --- package.json | 3 +- src/client/haxe/ru/m/draw/BitmapUtil.hx | 2 +- src/client/haxe/ru/m/skin/ButtonSVGSkin.hx | 44 +++++++++++++++ src/client/haxe/ru/m/tankz/Style.hx | 33 ++++++----- .../haxe/ru/m/tankz/frame/StartFrame.yaml | 8 ++- .../ru/m/tankz/frame/common/PlayerView.hx | 23 +++----- .../ru/m/tankz/frame/common/PlayerView.yaml | 2 +- .../haxe/ru/m/tankz/network/NetworkManager.hx | 2 +- .../haxe/ru/m/tankz/render/AnimateBundle.hx | 2 +- src/client/resources/image/icon/cog-solid.svg | 1 + .../image/icon/times-circle-solid.svg | 1 + src/client/resources/image/ui/button/down.png | Bin 1493 -> 0 bytes .../resources/image/ui/button/normal.png | Bin 1280 -> 0 bytes src/client/resources/image/ui/button/over.png | Bin 1319 -> 0 bytes src/client/resources/image/ui/close.png | Bin 2677 -> 0 bytes src/client/resources/image/ui/settings.png | Bin 6069 -> 0 bytes .../haxe/ru/m/connect/BaseConnection.hx | 4 +- src/common/haxe/ru/m/connect/IConnection.hx | 2 +- src/common/haxe/ru/m/draw/Color.hx | 47 ---------------- src/common/haxe/ru/m/signal/Signal.hx | 53 ------------------ src/common/haxe/ru/m/tankz/config/Config.hx | 3 +- src/common/haxe/ru/m/tankz/core/Tank.hx | 3 +- src/common/haxe/ru/m/tankz/engine/Engine.hx | 2 +- 23 files changed, 87 insertions(+), 148 deletions(-) create mode 100644 src/client/haxe/ru/m/skin/ButtonSVGSkin.hx create mode 100644 src/client/resources/image/icon/cog-solid.svg create mode 100644 src/client/resources/image/icon/times-circle-solid.svg delete mode 100644 src/client/resources/image/ui/button/down.png delete mode 100644 src/client/resources/image/ui/button/normal.png delete mode 100644 src/client/resources/image/ui/button/over.png delete mode 100644 src/client/resources/image/ui/close.png delete mode 100644 src/client/resources/image/ui/settings.png delete mode 100644 src/common/haxe/ru/m/draw/Color.hx delete mode 100644 src/common/haxe/ru/m/signal/Signal.hx diff --git a/package.json b/package.json index 7136012..4d725ec 100755 --- a/package.json +++ b/package.json @@ -18,7 +18,8 @@ "yaml": "1.3.0", "orm": "2.1.0", "yield": "2.0.0", - "haxe-crypto": "0.0.7" + "haxe-crypto": "0.0.7", + "svg": "1.1.2" }, "dependencies": { "gulp-add": "0.0.2" diff --git a/src/client/haxe/ru/m/draw/BitmapUtil.hx b/src/client/haxe/ru/m/draw/BitmapUtil.hx index a29ae45..3dec2ef 100644 --- a/src/client/haxe/ru/m/draw/BitmapUtil.hx +++ b/src/client/haxe/ru/m/draw/BitmapUtil.hx @@ -1,10 +1,10 @@ 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 { diff --git a/src/client/haxe/ru/m/skin/ButtonSVGSkin.hx b/src/client/haxe/ru/m/skin/ButtonSVGSkin.hx new file mode 100644 index 0000000..bfcbb63 --- /dev/null +++ b/src/client/haxe/ru/m/skin/ButtonSVGSkin.hx @@ -0,0 +1,44 @@ +package ru.m.skin; + +import haxework.color.ColorUtil; +import haxework.color.Color; +import haxework.gui.ButtonView; +import format.SVG; +import haxework.gui.skin.ISkin; + +class ButtonSVGSkin implements ISkin { + + private var svg:String; + private var color:Color; + + private var svgs:Map; + + public function new(svg:String, color:Color) { + this.svg = svg; + this.color = color; + init(); + } + + private inline function buildSVG(color:Color):SVG { + return new SVG(StringTools.replace(svg, "currentColor", '#${StringTools.hex(color)}')); + } + + private function init():Void { + svgs = new Map(); + svgs.set(ButtonState.UP, buildSVG(color)); + svgs.set(ButtonState.DOWN, buildSVG(ColorUtil.diff(color, -24))); + svgs.set(ButtonState.OVER, buildSVG(ColorUtil.diff(color, 24))); + } + + public function draw(view:ButtonView):Void { + var svg = svgs.get(view.state); + var graphics = view.content.graphics; + graphics.beginFill(0, 0); + graphics.drawRect(0, 0, view.width, view.height); + graphics.beginFill(color); + graphics.lineStyle(2, ColorUtil.multiply(color, 1.5)); + svg.render(graphics, 0, 0, Std.int(view.width * 0.8), Std.int(view.height * 0.8)); + graphics.lineStyle(); + graphics.endFill(); + } +} diff --git a/src/client/haxe/ru/m/tankz/Style.hx b/src/client/haxe/ru/m/tankz/Style.hx index 9357a60..dd0125c 100644 --- a/src/client/haxe/ru/m/tankz/Style.hx +++ b/src/client/haxe/ru/m/tankz/Style.hx @@ -1,11 +1,10 @@ package ru.m.tankz; -import haxework.gui.utils.ColorUtils; +import haxework.color.ColorUtil; import haxework.gui.skin.Skin; -import haxework.gui.skin.ButtonBitmapSkin; -import haxework.gui.utils.DrawUtil; import haxework.resources.IResources; import openfl.Assets; +import ru.m.skin.ButtonSVGSkin; class Style { @@ -17,40 +16,40 @@ class Style { private static var fontFamily = "Courirer New"; public static function register() { - var button = new ButtonBitmapSkin(); - button.fillType = FillType.NINEPATH; - button.upImage = Assets.getBitmapData("resources/image/ui/button/normal.png"); - button.downImage = Assets.getBitmapData("resources/image/ui/button/down.png"); - button.overImage = Assets.getBitmapData("resources/image/ui/button/over.png"); - resources.skin.put("light", [Skin.color(lightColor)]); resources.skin.put("dark", [Skin.color(darkColor)]); resources.skin.put("text", [Skin.text(textColor, 16, fontFamily)]); resources.skin.put("button", [ - button, + Skin.buttonColor(lightColor), Skin.text(textColor, 18, fontFamily), - Skin.size(250, 60) + Skin.size(250, 50) ]); resources.skin.put("button.simple", [ Skin.buttonColor(lightColor), Skin.text(textColor, 16, fontFamily), - Skin.size(100, 36), + Skin.size(100, 38), ]); resources.skin.put("button.tab", [ Skin.tabColor(lightColor), Skin.text(textColor, 16, fontFamily), - Skin.size(200, 36), - ]); - resources.skin.put("button.close", [ - new ButtonBitmapSkin(Assets.getBitmapData("resources/image/ui/close.png")) + Skin.size(200, 38), ]); resources.skin.put("border", [ - Skin.border(ColorUtils.multiply(lightColor, 1.5), 1, 2), + Skin.border(ColorUtil.multiply(lightColor, 1.5), 1, 2), ]); resources.skin.put("button.level", [ Skin.buttonColor(lightColor), Skin.text(textColor, 24, fontFamily), Skin.size(64, 64), ]); + + resources.skin.put("button.settings", [ + Skin.size(64, 64), + new ButtonSVGSkin(Assets.getText("resources/image/icon/cog-solid.svg"), lightColor) + ]); + resources.skin.put("button.close", [ + Skin.size(64, 64), + new ButtonSVGSkin(Assets.getText("resources/image/icon/times-circle-solid.svg"), lightColor) + ]); } } diff --git a/src/client/haxe/ru/m/tankz/frame/StartFrame.yaml b/src/client/haxe/ru/m/tankz/frame/StartFrame.yaml index 88b772f..6d8ed89 100644 --- a/src/client/haxe/ru/m/tankz/frame/StartFrame.yaml +++ b/src/client/haxe/ru/m/tankz/frame/StartFrame.yaml @@ -7,6 +7,7 @@ views: image: $asset:image:resources/image/ui/logo.png geometry.margin.bottom: 15 - $type: haxework.gui.VGroupView + layout.margin: 3 views: - id: classic $type: haxework.gui.ButtonView @@ -40,7 +41,8 @@ views: geometry.margin.bottom: 10 geometry.vAlign: bottom geometry.hAlign: left - skin: - - $type: haxework.gui.skin.ButtonBitmapSkin - image: $asset:image:resources/image/ui/settings.png + skinId: button.settings + # skin: + # - $type: haxework.gui.skin.ButtonBitmapSkin + # image: $asset:image:resources/image/ui/settings.png +onPress: $this:onPress diff --git a/src/client/haxe/ru/m/tankz/frame/common/PlayerView.hx b/src/client/haxe/ru/m/tankz/frame/common/PlayerView.hx index 19ed981..990080d 100644 --- a/src/client/haxe/ru/m/tankz/frame/common/PlayerView.hx +++ b/src/client/haxe/ru/m/tankz/frame/common/PlayerView.hx @@ -1,19 +1,17 @@ package ru.m.tankz.frame.common; -import ru.m.draw.Color; -import ru.m.tankz.bundle.IConfigBundle; -import haxework.gui.skin.ColorSkin; +import haxework.color.Color; import haxework.gui.ButtonView; import haxework.gui.HGroupView; import haxework.gui.LabelView; import haxework.gui.list.ListView; -import haxework.gui.skin.ButtonBitmapSkin; +import haxework.gui.skin.Skin; import openfl.Assets; +import ru.m.tankz.bundle.IConfigBundle; import ru.m.tankz.control.Control; import ru.m.tankz.game.GameState; import ru.m.tankz.Type; - @:template class PlayerView extends HGroupView implements IListItemView { public var item_index(default, default):Int; @@ -25,14 +23,10 @@ import ru.m.tankz.Type; @:provide var state:GameState; @:provide var configBundle:IConfigBundle; - private function init():Void { - control.onPress.connect(onPress); - } - private function set_data(value:PlayerId):PlayerId { data = value; indexLabel.text = '${value.team} ${Std.string(data.index + 1)}'; - var color:Color = 0xffffff; + var color = 0xffffff; var config = configBundle.get(state.type); var preset = config.getPreset(state.presetId); for (team in preset.teams) { @@ -49,16 +43,15 @@ import ru.m.tankz.Type; preset.teams; } } - indexLabel.fontColor = cast color; + indexLabel.fontColor = color; var controlType = state.control.get(value); var image = Assets.getBitmapData('resources/image/ui/control/${controlType}.png'); - control.skin = [new ButtonBitmapSkin(image)]; - // ToDo: - //control.geometry.size.fixed = [image.width, image.height]; + control.skin = [Skin.buttonBitmap(image)]; + indexLabel.update(); return data; } - public function onPress(view:ButtonView):Void { + public function toggleControl():Void { if (data != null && data.index > -1) { var controlType = switch state.control.get(data) { case Control.BOT: Control.HUMAN; diff --git a/src/client/haxe/ru/m/tankz/frame/common/PlayerView.yaml b/src/client/haxe/ru/m/tankz/frame/common/PlayerView.yaml index 20438e6..f4f200c 100644 --- a/src/client/haxe/ru/m/tankz/frame/common/PlayerView.yaml +++ b/src/client/haxe/ru/m/tankz/frame/common/PlayerView.yaml @@ -6,7 +6,6 @@ layout.margin: 10 views: - id: index $type: haxework.gui.LabelView - skinId: text geometry.size.stretch: true skin: - $type: haxework.gui.skin.ColorSkin @@ -16,3 +15,4 @@ views: shadowColor: 0x000000 - id: control $type: haxework.gui.ButtonView + +onPress: $code:toggleControl() diff --git a/src/client/haxe/ru/m/tankz/network/NetworkManager.hx b/src/client/haxe/ru/m/tankz/network/NetworkManager.hx index b603de7..85ff38c 100644 --- a/src/client/haxe/ru/m/tankz/network/NetworkManager.hx +++ b/src/client/haxe/ru/m/tankz/network/NetworkManager.hx @@ -1,5 +1,6 @@ package ru.m.tankz.network; +import haxework.signal.Signal; import ru.m.tankz.proto.pack.GameRequest; import ru.m.tankz.proto.core.GameProto; import ru.m.tankz.proto.pack.StartGameRequest; @@ -11,7 +12,6 @@ import ru.m.tankz.proto.pack.JoinGameRequest; import ru.m.tankz.proto.pack.LeaveGameRequest; import ru.m.tankz.proto.pack.CreateGameRequest; import ru.m.connect.IConnection; -import ru.m.signal.Signal; import ru.m.tankz.proto.core.GameInfoProto; import ru.m.tankz.proto.pack.ListGameRequest; import ru.m.tankz.proto.pack.LoginRequest; diff --git a/src/client/haxe/ru/m/tankz/render/AnimateBundle.hx b/src/client/haxe/ru/m/tankz/render/AnimateBundle.hx index bdc9475..d162514 100644 --- a/src/client/haxe/ru/m/tankz/render/AnimateBundle.hx +++ b/src/client/haxe/ru/m/tankz/render/AnimateBundle.hx @@ -1,7 +1,7 @@ package ru.m.tankz.render; +import haxework.color.Color; import ru.m.draw.BitmapUtil; -import ru.m.draw.Color; import flash.display.BitmapData; import openfl.Assets; import ru.m.animate.Animate; diff --git a/src/client/resources/image/icon/cog-solid.svg b/src/client/resources/image/icon/cog-solid.svg new file mode 100644 index 0000000..0bc8d22 --- /dev/null +++ b/src/client/resources/image/icon/cog-solid.svg @@ -0,0 +1 @@ + diff --git a/src/client/resources/image/icon/times-circle-solid.svg b/src/client/resources/image/icon/times-circle-solid.svg new file mode 100644 index 0000000..9046b0f --- /dev/null +++ b/src/client/resources/image/icon/times-circle-solid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/client/resources/image/ui/button/down.png b/src/client/resources/image/ui/button/down.png deleted file mode 100644 index 7e8a4bfc2f2f8d11bce6773b75e4166227222c76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1493 zcmV;`1uFW9P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m?d01m?e$8V@)00007bV*G`2ige} z4l_G{Gp_dl00mV^L_t(Y$L*I*Y#r4V$A9v0)s&6ChD@v21IskRaNb#Qo5*A3T;6NU~C8>B(YwINn*#u&og&s z?gxvRc{Ae|JB4lgq@#Jd^JdO(&i{YT+z0>v{I7q+W+%M&9DH*>rxq7kS-HU4S|1?< zLWs(x9`Cc?PE3r^>1?Ch-O0>j&sTo;JpjUQdOZ8wGlXHpTL=H#Jox7RU!7W9+_SQB z;RkDL{qAKzRy&<-pLe@EkIX#w{I7u%z@|V$tH&1JVfMAx0l|Ua9=QA2=brgp7)D(w zB|=D~6kApTJkEK%ceL9rec!#mc=`T^9zOuYKq7>&n*w<6dGwJ7iQ|Mo_x7+7|Pzd2v72wueuA|=% zIlA!v%e~&22g)Q_2q88|u$j>^pyHUOMg)Po{m6$$kIm1|+itg;OioTFv$L~lP`zw* z^&-w$&MYnMan6y+?DGIA1>TFi)KJ)kWtXlTM2gO>N8nGVg=JN7t)bID#d%fPpy?ghr z)c|gsz82>k#@PMNx%>v%O)`iwX}0ESk*&K5ObKF)AxTWI^!0L-rs+kk^|DgxLQMi= zOua`dT1zSM-l3EmGGZo0wKe?)hzu&$@tD^7YUkV(aP^@>hsJ6E*4iO}Du{CmDQyj) z47p)G3|B$NaS%n(6~>rx=iK<*+}!Av74W`vb=CnzD`p7+fi#KPx78fy?D@5=0p=HubI;HAu)1>Yogk1mYi)*{TvWkYG4y^YN?(|; zXwOEV7#UHeqbnh+0KKzdUBdjr@%OIZJvkUG);gTCSnIIXVvHe8Q{p&5YfThIgkeY+ zt`mk4Q52$egw`=hl5ow`ILE$NERs9G=1#Z4#*+NuPlo~CvMzag`nt*6PA;A!w)JUO zc89;@7DEUSLegj`c1(4U!t(BaPLL;0i@gDms!d*JZsD^tAKiKT?uREP+Ch=nn5-I^ z6xA_ZUH3Es$>?an_Q_G&t$@G$b-tjDfvAwEJ=4GGOkA-mO;e09 zgRs`tsE2T({<==x;k= z@F{Qv_%N5?T(AXz1J-lR8u<-F;A>zzFa|U)17Ls%SOI##(HvqC_y$OW%WT^dU^V}q z<`NGBDT` v7dPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m?d01m?e$8V@)00007bV*G`2ige} z4l*R`Ad*7>00e+ZL_t(Y$L*KTYh6VY$3Jst?z^u|Q&Zc4*t^_x3{SQ>Sud6HsDU^Z|5JCKzSZhPmYNbEY*Vx9SHZRG$zvj-k@XmE!a`O`0 zxaq)fAH4g{`OG=rbIv??x}L88d5N7~u+}PAoP2QS)|r*Zk59+lxD^BeK@j|7KnSe0 zSZguH5H`a0(9qEA=*Z|#(ct(6Aw>H>16XTMe*NVqQ##LEN-3n2NGa(DV6CMn3W}n@ zSkoCFKlR?>(U(32QXmsT6uSbj)}Fk4@uL|f)jp*Z{&oOD2={J1fH7#T$&5Vz>T7R) z97WMzz#5PUA?&sQ)>?Jxvkzymw&gnx!w?sV?Es81Jpe^fkY!q5om+hWz@cN`O-@ce zXf~V6KvxK1R2{&z*^85Lx7%to8VDh(Ev3X-yK8|tFd?jZZn*Kzu^;?@Vi5h2P)C7=#eP%#|CBm6a#)`uh4tyWQ?gOiZlRMqp!o zz2#0A1OZY?lu{K;7>1P&Hm}V>^dTB580mC6CyX(R^Yiofr>3SJ)&e9+f)5~sKq*C0 z6y$lnMTl6&Y1n@!fJSR=l9soZ|et)QoLXxH` zj^lk=>p^48;N0BY-dcbx%PJ%883aL9icX9GQ4|66^a)p(=`A%PO!i4AEK>1VI%6Cro1uS(cHeX<)6D)>_r=c4aLsOGqmLy3q#)z^33az!M1xVAh2fzn$f>cToMNtLeG~hR@q9}TL zL>$LkeANOxSzW!lch8=dQ?K6-Tq?paB+IfM0H+JTPq@!Q2$q)Db_cM$^k{bU=&@E^ zV{yh@HTd(vh2DwKFV8f~D>i@E&w{yIKO7kueanf+2l0jJjQfMhck1*arR2BY+s?TG z3P1xzEkJvT3!U|~ccZW|?l%)ZC4Pu|=DRnz{w>RZZ-2Z)={$FL10a{%3^Fr+^N(Mi z9~*hYTBGXvyAP$cCeQONW#>RIeSY1YJ_Qzm+rTa0p6oMCSFhh(yf%EO`AW0d*zeEx z?FNo>=$>(s^3^vB&RzjL0qz1ffnR}kzbjb;90gjy+rvYg8a^^~SV|!aU5L$2t8`e) z!zIl|iZ41{-h}P~v%vSj72tM1fB<*~I03u>yjVVu14BTwtfHXiX5~~~l)3Hz4}lxN z&%o6(1%IkO00!77a~75cyTBvhFfaf#b^y>o3_J$fW!P^33&1Lns~v7tS(!IV^{xUB zfJ4Aw2_UxtFeN}2SSb&(Q2u_o1l#$4LAe^`i4OqJmMIu0BP07nAP15XdPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m?d01m?e$8V@)00007bV*G`2ige} z4mAr8usPiT00gH=L_t(Y$L*KTZxm%1$3O2oyE9vAE9F=Du_(n51mi)31d<+2`~&<4 zhzG77JW66hqK1QsN7I8wFC?BkkQmd0CLC-G0nCzxqAiF^i=~xzE4wp0@4SzPd1rUl z&bHvi3vcpdW;Z+YeBS5#eBbw7cs`zw|9Pmbejp+~te$_oymUHjcaB++s!|H2RPGgm z2#5%ftOh}FXLNMrx<7Q_qEhPae+CedGk1Tx`i)Y$s$ zvbqSMaqrrB5mmJ|olO?m44;0aV5PFJUps#Iz3J)cH!fVb@XGA$>~3HPpj7nO>e||A z5sy^nUQ(?UBFce4)&}WEaS8t&sT5;l+xIjYjg#$m+Y7_coI7_e5|K_}1v(vb%-RHF z5{xm#vB8)aV+_V5BuPS&*lt*xM*hARDai2fsIFA>sl~;`s?g6UC zm~OKvrAZQvNG3<>h@KPr`lqiEv#U}Hzohpyo6QMp?Lxg?|Krl7OAiYHj4`gny=K!| zBVzG9yP*+Nj=VLc3!6fuGDKlC9ERaeYwaFj=k)aS@Rk615NkcOPWk}yRq9_KHdY~w zqEfrve!&MQfE?p8MC2FbuKQWRV}1X%xjy|Ha*TQ%$6EYcUIQh1*3CilGFMwPR27eoYXVpv*Ue>#BGm6h9- z{grA@KbzZN(kdj0+OR)lrO%o$Z_h_di@lD{MIpfa-TOa}@7w=Yy69v+wgvk^-iGA9 zqbo-ScjK2@mfQjfV1T3$VB*M$k6P{ayMEc=glAzI-_@`y=zO9zFC9g3dOS{OXpsShf%3SG~N0KDqcgjYdOU;sszH_!aow z8?=$$ym@mWjCgS9;NHm~@GHIjz5l?`zxVfd{gWpxKK<-V>h(IV?5n^%;5IM|G&Vbu z1;Byv@$plWlaueiynpP-OA`l2gCNji1)Hl10^;O|J00fc7MQ!&U}k29X0s_y?{$~_ zDlh|F1Lija(7=np1n@d=!d(vn+kuL6kuEq{Wu2Nht((9@;1+NlxZxytRN4f<0#BS~ zW%t4s@F%bv7zX?;01VIu{sJ1V?6-jXz#0&jwm4IDoNl=8T>~BfyMPe~;0*w<4xk0B zxQX0%&o4W$t^XIe;ky}+0Xv)o!>%&kCKZT*(1EW2-BWSqVf73rOzkueoc{hZ^gxvJ de&7Fse*pZ3Ia() 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 diff --git a/src/client/resources/image/ui/settings.png b/src/client/resources/image/ui/settings.png deleted file mode 100644 index 498edadee1849548b740c303788d3ad028010625..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6069 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 v-;n)h+Dy+Ywt7odF6O?=y?f1HmT> implements IConnection { @@ -51,4 +51,4 @@ class BaseConnection implements IConnection { #if proto_debug L.d('Proto', 'receive: ${packet}'); #end receiveHandler.emit(packet); } -} \ No newline at end of file +} diff --git a/src/common/haxe/ru/m/connect/IConnection.hx b/src/common/haxe/ru/m/connect/IConnection.hx index a2dbdd7..596394f 100755 --- a/src/common/haxe/ru/m/connect/IConnection.hx +++ b/src/common/haxe/ru/m/connect/IConnection.hx @@ -1,9 +1,9 @@ package ru.m.connect; +import haxework.signal.Signal; import haxe.io.Bytes; import promhx.Promise; import protohx.Message; -import ru.m.signal.Signal; enum ConnectionEvent { diff --git a/src/common/haxe/ru/m/draw/Color.hx b/src/common/haxe/ru/m/draw/Color.hx deleted file mode 100644 index 5b67b1f..0000000 --- a/src/common/haxe/ru/m/draw/Color.hx +++ /dev/null @@ -1,47 +0,0 @@ -package ru.m.draw; - -abstract Color(Int) { - public var alpha(get, never):Int; - public var red(get, never):Int; - public var green(get, never):Int; - public var blue(get, never):Int; - public var zero(get, never):Bool; - - public inline function new(value:Int) { - this = value; - } - - private inline function get_alpha():Int { - return (this >> 24) & 255; - } - - private inline function get_red():Int { - return (this >> 16) & 255; - } - - private inline function get_green():Int { - return (this >> 8) & 255; - } - - private inline function get_blue():Int { - return this & 255; - } - - private inline function get_zero():Bool { - return green == 0 && red == 0 && blue == 0; - } - - @:from - static public inline function fromInt(value:Int):Color { - return new Color(value); - } - - @:from - static public inline function fromString(value:String):Color { - return new Color(Std.parseInt('0x${value.split('#').pop()}')); - } - - public function toString():String { - return 'Color(${red},${green},${blue})'; - } -} diff --git a/src/common/haxe/ru/m/signal/Signal.hx b/src/common/haxe/ru/m/signal/Signal.hx deleted file mode 100644 index 31a0cbe..0000000 --- a/src/common/haxe/ru/m/signal/Signal.hx +++ /dev/null @@ -1,53 +0,0 @@ -package ru.m.signal; - -typedef Signal = Signal1; - -typedef Receiver1 = A -> Void; - -class Signal1 { - - private var receivers:Array>; - - public function new() { - receivers = []; - } - - public function connect(receiver:Receiver1):Void { - receivers.push(receiver); - } - - public function disconnect(receiver:Receiver1):Void { - receivers.remove(receiver); - } - - public function emit(a:A):Void { - for (receiver in receivers) { - receiver(a); - } - } -} - -typedef Receiver2 = A -> B -> Void; - -class Signal2 { - - private var receivers:Array>; - - public function new() { - receivers = []; - } - - public function connect(receiver:Receiver2):Void { - receivers.push(receiver); - } - - public function disconnect(receiver:Receiver2):Void { - receivers.remove(receiver); - } - - public function emit(a:A, b:B):Void { - for (receiver in receivers) { - receiver(a, b); - } - } -} diff --git a/src/common/haxe/ru/m/tankz/config/Config.hx b/src/common/haxe/ru/m/tankz/config/Config.hx index 4d29dc8..927d7b9 100644 --- a/src/common/haxe/ru/m/tankz/config/Config.hx +++ b/src/common/haxe/ru/m/tankz/config/Config.hx @@ -1,9 +1,8 @@ package ru.m.tankz.config; -import ru.m.draw.Color; +import haxework.color.Color; import ru.m.tankz.Type; - typedef CompleteRule = { @:optional var team:TeamId; } diff --git a/src/common/haxe/ru/m/tankz/core/Tank.hx b/src/common/haxe/ru/m/tankz/core/Tank.hx index a357596..c055080 100755 --- a/src/common/haxe/ru/m/tankz/core/Tank.hx +++ b/src/common/haxe/ru/m/tankz/core/Tank.hx @@ -1,6 +1,6 @@ package ru.m.tankz.core; -import ru.m.draw.Color; +import haxework.color.Color; import ru.m.geom.Direction; import ru.m.geom.Point; import ru.m.geom.Rectangle; @@ -8,7 +8,6 @@ import ru.m.tankz.config.Config; import ru.m.tankz.core.Bullet; import ru.m.tankz.Type; - class Tank extends MobileEntity { public var playerId(default, null):PlayerId; public var config(default, set):TankConfig; diff --git a/src/common/haxe/ru/m/tankz/engine/Engine.hx b/src/common/haxe/ru/m/tankz/engine/Engine.hx index d97ff12..26bb4ec 100755 --- a/src/common/haxe/ru/m/tankz/engine/Engine.hx +++ b/src/common/haxe/ru/m/tankz/engine/Engine.hx @@ -1,8 +1,8 @@ package ru.m.tankz.engine; +import haxework.signal.Signal; import ru.m.geom.Line; import ru.m.geom.Point; -import ru.m.signal.Signal; import ru.m.tankz.config.Config; import ru.m.tankz.control.Control; import ru.m.tankz.core.Bullet;