From 592e59e01f2cb5722ca0ebbb0ab9e66591698e02 Mon Sep 17 00:00:00 2001 From: shmyga Date: Tue, 13 Feb 2018 16:59:01 +0300 Subject: [PATCH] [common] added Eagle death flag --- src/client/haxe/ru/m/tankz/render/Render.hx | 14 ++--- .../haxe/ru/m/tankz/render/RenderItem.hx | 13 +++- .../eagle/eagle-death.png} | Bin .../eagle-0.png => image/eagle/eagle.png} | Bin src/client/resources/images/map/map_0.png | Bin 93 -> 0 bytes src/client/resources/images/map/map_1.png | Bin 307 -> 0 bytes src/client/resources/images/map/map_2.png | Bin 969 -> 0 bytes src/client/resources/images/map/map_3-0.png | Bin 598 -> 0 bytes src/client/resources/images/map/map_3-1.png | Bin 531 -> 0 bytes src/client/resources/images/map/map_3.png | Bin 598 -> 0 bytes src/client/resources/images/map/map_4.png | Bin 304 -> 0 bytes src/client/resources/images/map/map_5.png | Bin 279 -> 0 bytes src/common/haxe/ru/m/tankz/core/Eagle.hx | 2 + src/common/haxe/ru/m/tankz/engine/Engine.hx | 56 +++++++----------- src/common/haxe/ru/m/tankz/game/Game.hx | 23 ++++--- 15 files changed, 49 insertions(+), 59 deletions(-) rename src/client/resources/{images/eagle/eagle-1.png => image/eagle/eagle-death.png} (100%) rename src/client/resources/{images/eagle/eagle-0.png => image/eagle/eagle.png} (100%) delete mode 100644 src/client/resources/images/map/map_0.png delete mode 100644 src/client/resources/images/map/map_1.png delete mode 100644 src/client/resources/images/map/map_2.png delete mode 100644 src/client/resources/images/map/map_3-0.png delete mode 100644 src/client/resources/images/map/map_3-1.png delete mode 100644 src/client/resources/images/map/map_3.png delete mode 100644 src/client/resources/images/map/map_4.png delete mode 100644 src/client/resources/images/map/map_5.png diff --git a/src/client/haxe/ru/m/tankz/render/Render.hx b/src/client/haxe/ru/m/tankz/render/Render.hx index a85eb21..ac719ca 100755 --- a/src/client/haxe/ru/m/tankz/render/Render.hx +++ b/src/client/haxe/ru/m/tankz/render/Render.hx @@ -126,11 +126,15 @@ class Render extends SpriteView implements EngineListener { } public function onCollision(entity:EntityType, with:EntityType):Void { - + switch [entity, with] { + case [EntityType.BULLET(_), EntityType.EAGLE(eagle)]: + playTankBoom(eagle.rect.center); + case _: + } } public function onDestroy(entity:EntityType):Void { - switch(entity) { + switch entity { case EntityType.TANK(tank): if (items.exists(tank.key)) { entryLayer.removeChild(items.get(tank.key).view); @@ -143,12 +147,6 @@ class Render extends SpriteView implements EngineListener { items.remove(bullet.key); playBulletBoom(bullet.rect.center.add(new Point(bullet.rect.width * bullet.rect.direction.x, bullet.rect.height * bullet.rect.direction.y))); } - case EntityType.EAGLE(eagle): - if (items.exists(eagle.key)) { - cast(items.get(eagle.key), EagleItem).destoyed = true; - items.get(eagle.key).redraw(); - playTankBoom(eagle.rect.center); - } case EntityType.BONUS(bonus): if (items.exists(bonus.key)) { entryLayer.removeChild(items.get(bonus.key).view); diff --git a/src/client/haxe/ru/m/tankz/render/RenderItem.hx b/src/client/haxe/ru/m/tankz/render/RenderItem.hx index 7813868..70c577a 100644 --- a/src/client/haxe/ru/m/tankz/render/RenderItem.hx +++ b/src/client/haxe/ru/m/tankz/render/RenderItem.hx @@ -227,10 +227,19 @@ class BulletItem extends BitmapItem { class EagleItem extends BitmapItem { - public var destoyed(default, default):Bool; + private var death:Bool; + + override public function update():Void { + super.update(); + var d = value.death; + if (d != death) { + death = d; + redraw(); + } + } override private function getImage():String { - return 'resources/images/eagle/eagle-${destoyed ? 1 : 0}.png'; + return 'resources/image/eagle/eagle${value.death ? '-death' : ''}.png'; } } diff --git a/src/client/resources/images/eagle/eagle-1.png b/src/client/resources/image/eagle/eagle-death.png similarity index 100% rename from src/client/resources/images/eagle/eagle-1.png rename to src/client/resources/image/eagle/eagle-death.png diff --git a/src/client/resources/images/eagle/eagle-0.png b/src/client/resources/image/eagle/eagle.png similarity index 100% rename from src/client/resources/images/eagle/eagle-0.png rename to src/client/resources/image/eagle/eagle.png diff --git a/src/client/resources/images/map/map_0.png b/src/client/resources/images/map/map_0.png deleted file mode 100644 index f13346853ee3bcedeedd8da7b555336cc4497f53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 93 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fDxNNmAr`&KDG3Qb&O0z4aN%}# l=an<9xbh&d8O%_T1pw7{&3w6=CB*CWTHN1O-nyM<(4ix`4M{!975|*i$mZhN2D)#=&kP5$SD$$8Qkd z%batrX&UOf20*D2V=9V5@)reY0EXd=wI}-i^0X^bpk3D?QlQpaVCVpq*ZG^giV(3Xol|pY9&@O$k(hT%byoh!m(X6(R*%6fzX{ zLxB+39|h$LhoPW-;BXY+$w?^SJs2H^^CNhDQ9h`(r~kgSoS47Xvk>V!z)`U6BF>%`cemJq6rAYO(+T002ovPDHLk FV1n>CfjIyG diff --git a/src/client/resources/images/map/map_2.png b/src/client/resources/images/map/map_2.png deleted file mode 100644 index 7f1615e378b4cfd7e3b053980bce6f0a446f12f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 969 zcmV;)12+7LP)*BJ zQMDbgEHEul3bY2DKpcZI;GOru_0-U=R%xg-j`1Y0=Tq?u;E#b{l)X?C8R)hHH@?o= zeR3~YO6z7?nYvv3*vqTeJs-Th$nq<&P=WF+Y_3Zdh5@?`*x7=gzK32HrjDv`<%{sU zL%S`MF*c>b@De}IeP*gaMye%FP@W*x7-GSfkfoX8=?N7a60Iuw6>AGK} z;ui?=1<3b--8{@KKzVjV-S(y??~l0s@uud%ZD{SoOXuOts|uh2tQw9()v*a22b>(_ zTmkj+u-AmBqldtqcJ{-{$Hm5W;Pjc{bpTW?(*~mnjM?!w|kq3rtf!$FfJ!42gkei_^ILE|h$67k;cG2IzZrA_ zNdnzSq8-$8+!OuoE%^Bs)Ymk;fF@ft4iUIf(@%jz`f&5twZ`7lZ7_ZEa{; zdlLD29VVvx%`_&Ctt3u?bw#=nM4`}<#KOCmmox_}>hv?|i5x#6dwoqZw$fnTNDNF< zI8PFoJprCCk#<5&&Xx1TG}yM-6axWHXJmDwKG_}lEW;cPokDR03eebs`?oc54CgPx zh0ECzOE2TS55V)F6GGUAum!CH>87}secWyd9j{#k+j%-DfceIUUhVl8rRN*l5O@1E zo5)?xl|Sf4(uqrF6{h*$pa8128Vq|jY-|2_00;ZRvtdY$k56W2#xHj?D_=qB2%N0I z3ojpbl&NFaQ!Fn3Z!p~WMp}917&NzGzo{vd4!3j_Akkbxb7dHPOS4{=uA7|68o8c~ z&e@Z&_E55t{Q2BaT$5vJ)mDQqfp-CZSkbIKgsG!4N|(+tEVbY7Yks{8)6YU_9G*L+ z0It<4jW_?DiZOL1+|!qUp#CR3Q-)K^u=yC8J1{jP@8%a3^NU$}42xPuPb*jFcACH{ rNPBid8I7IRXxKb$eRR5UC$0YjZ&g!@nb!F<00000NkvXXu0mjffJ4iC diff --git a/src/client/resources/images/map/map_3-0.png b/src/client/resources/images/map/map_3-0.png deleted file mode 100644 index 2151ef8a73c5c384558957ae2a5369a828e096c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 598 zcmV-c0;&CpP)?E_n1xk}C=> zz6N|b2#{tnnT7{@lBXXWs;=0IxataWMZKohlw=FBiXZMtYEAj40*CAK8%Ew{#M8;* zcSvkV4N_?sZCLS-qkvSJP>R_EglS&Y6+C|JEG#wihLQeMZuG|(FW78 z;+^YnO>CWi(1THbvAR-SP^vF)=&EtC%*U%_X}5f?&-L%gG`#rakShv?eZ|LTKC@U8 z<-%&<@>KEW{tYMlwgipm(eJgG#d1YKZO)==12S(Tud7zh8A&cqmFm zHwn;P9rSFEf^L=}1(;3X>@c9}MsZJN^d=+EKIvMat~!cg>{2>A46G+;>E`7NrC3L9 kDxbHQ(bnrK>+&)94b;8i&`iJaP5=M^07*qoM6N<$g4VPmkN^Mx diff --git a/src/client/resources/images/map/map_3-1.png b/src/client/resources/images/map/map_3-1.png deleted file mode 100644 index e8b3726716231f3fba2cf0e23bb7a4d7276cc1ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 531 zcmV+u0_^>XP)UMI1)g^9{>#q6hT5}aLhq65@bpyhoXK!BOGlK;pI(P zR<3F=Es`v3S_F9`opASEPH)g>p|gMv0DJWeX6E>^`{Qppn(y-G2;}Dos=FFWc64sP0Vz~EY<8Z1Lf!xt*W|}sY>(i( z(V}b)FpB(Qugx(0h;noQ@Lj-nDV8?EU78kw??%T`wh7h`x!vBLS?pLsc56L^MZTT| zs=Knxv`DPoLILS{!0E~eMv=rmQ595Cvbp%~%I5=ewraP{2F2|$Phslh zsh?t?*}q2*9?J>Gd7Cm4lk5p>^KY>EU*Hi1zjXgM^nVK&Ei z$Dq&fRF{{KLZ!og8|gIA;v)SQ&_$%Drn#VqwAW^MP4KY_)yL{WnkdpLw$3wwu-9g| z+~H2q03KVVQlGQu V)XI1Nu3`WH002ovPDHLkV1nsH?7sj2 diff --git a/src/client/resources/images/map/map_3.png b/src/client/resources/images/map/map_3.png deleted file mode 100644 index 2151ef8a73c5c384558957ae2a5369a828e096c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 598 zcmV-c0;&CpP)?E_n1xk}C=> zz6N|b2#{tnnT7{@lBXXWs;=0IxataWMZKohlw=FBiXZMtYEAj40*CAK8%Ew{#M8;* zcSvkV4N_?sZCLS-qkvSJP>R_EglS&Y6+C|JEG#wihLQeMZuG|(FW78 z;+^YnO>CWi(1THbvAR-SP^vF)=&EtC%*U%_X}5f?&-L%gG`#rakShv?eZ|LTKC@U8 z<-%&<@>KEW{tYMlwgipm(eJgG#d1YKZO)==12S(Tud7zh8A&cqmFm zHwn;P9rSFEf^L=}1(;3X>@c9}MsZJN^d=+EKIvMat~!cg>{2>A46G+;>E`7NrC3L9 kDxbHQ(bnrK>+&)94b;8i&`iJaP5=M^07*qoM6N<$g4VPmkN^Mx diff --git a/src/client/resources/images/map/map_4.png b/src/client/resources/images/map/map_4.png deleted file mode 100644 index 16ecf699be2f644549f54c2298ad427f7ca8cbfb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 304 zcmV-00nh%4P)9Yl5!a`2H`UF7#OfuHq(fAqK(t(@m9@>uoP3t8xzv92odGGcfbE@B8k( z$9vDREd1nu>mR=BI&K7(F@~Zjcn=BHT2q!K^E`)3Y>c61|c<*t};hbX}N2HVpAxM&hEXz@I)-6j+cuIU zAN&8rma;5y&OPk zZ>zZaQh(K%SZhsHRY9Qenb=xO(=@@L0Jo6if7J(a^y(P;juy}W0000(67hQ zA|SlbP)Ik&rsbnVOpEf(2d+7`4ZR25l3ja_H6 diff --git a/src/common/haxe/ru/m/tankz/core/Eagle.hx b/src/common/haxe/ru/m/tankz/core/Eagle.hx index 4a5701d..52666ab 100644 --- a/src/common/haxe/ru/m/tankz/core/Eagle.hx +++ b/src/common/haxe/ru/m/tankz/core/Eagle.hx @@ -7,9 +7,11 @@ import ru.m.tankz.Type; class Eagle extends Entity { public var team(default, null):TeamId; + public var death(default, default):Bool; public function new(team:TeamId) { super(new Rectangle(0, 0, 44, 44)); this.team = team; + this.death = false; } } diff --git a/src/common/haxe/ru/m/tankz/engine/Engine.hx b/src/common/haxe/ru/m/tankz/engine/Engine.hx index 5de01f1..1c6355f 100755 --- a/src/common/haxe/ru/m/tankz/engine/Engine.hx +++ b/src/common/haxe/ru/m/tankz/engine/Engine.hx @@ -12,14 +12,12 @@ import ru.m.tankz.core.Tank; import ru.m.tankz.map.LevelMap; - interface EngineListener { public function onSpawn(entity:EntityType):Void; public function onCollision(entity:EntityType, with:EntityType):Void; public function onDestroy(entity:EntityType):Void; } - class CollisionProcessor implements EngineListener { private var engine:Engine; @@ -44,40 +42,27 @@ class CollisionProcessor implements EngineListener { } public function onCollision(entity:EntityType, with:EntityType):Void { - switch (entity) { - case EntityType.TANK(tank1): - switch (with) { - case EntityType.TANK(tank2): - tank1.rect.lean(tank2.rect); - case EntityType.BULLET(bullet2): - if (checkTankBullet(tank1, bullet2)) { - hitTank(tank1); - engine.destroy(bullet2); - } - case EntityType.EAGLE(eagle): - tank1.rect.lean(eagle.rect); - case EntityType.CELL(cell): - tank1.rect.lean(cell.rect); - case EntityType.BONUS(bonus): - engine.destroy(bonus); - } - case EntityType.BULLET(bullet1): - switch (with) { - case EntityType.TANK(tank2): - if (checkTankBullet(tank2, bullet1)) { - engine.destroy(bullet1); - hitTank(tank2); - } - case EntityType.BULLET(bullet2): - engine.destroy(bullet1); - engine.destroy(bullet2); - case EntityType.EAGLE(eagle): - engine.destroy(bullet1); - engine.destroy(eagle); - case EntityType.CELL(cell): - engine.destroy(bullet1); - case EntityType.BONUS(bonus): + switch [entity, with] { + case [EntityType.TANK(tank), EntityType.TANK(other_tank)]: + tank.rect.lean(other_tank.rect); + case [EntityType.TANK(tank), EntityType.EAGLE(eagle)]: + tank.rect.lean(eagle.rect); + case [EntityType.TANK(tank), EntityType.BONUS(bonus)]: + engine.destroy(bonus); + case [EntityType.TANK(tank), EntityType.BULLET(bullet)] | + [EntityType.BULLET(bullet), EntityType.TANK(tank)]: + if (checkTankBullet(tank, bullet)) { + hitTank(tank); + engine.destroy(bullet); } + case [EntityType.BULLET(bullet), EntityType.BULLET(other_bullet)]: + engine.destroy(bullet); + engine.destroy(other_bullet); + case [EntityType.BULLET(bullet), EntityType.CELL(cell)]: + engine.destroy(bullet); + case [EntityType.BULLET(bullet), EntityType.EAGLE(eagle)]: + engine.destroy(bullet); + eagle.death = true; case _: } } @@ -85,7 +70,6 @@ class CollisionProcessor implements EngineListener { public function onDestroy(entity:EntityType):Void { } } - class Engine implements ControlHandler { public var config(default, default):Config; diff --git a/src/common/haxe/ru/m/tankz/game/Game.hx b/src/common/haxe/ru/m/tankz/game/Game.hx index c52a32d..82e4694 100644 --- a/src/common/haxe/ru/m/tankz/game/Game.hx +++ b/src/common/haxe/ru/m/tankz/game/Game.hx @@ -150,21 +150,21 @@ class Game implements EngineListener { switch (entity) { case EntityType.TANK(tank): getPlayer(tank.playerId).control.start(); - case x: + case _: } } public function onCollision(entity:EntityType, with:EntityType):Void { - switch (entity) { - case EntityType.TANK(tank): + switch [entity, with] { + case [EntityType.TANK(tank), _]: var control = getPlayer(tank.playerId).control; if (control != null) control.onCollision(with); - switch (with) { - case EntityType.BONUS(bonus): - applyBonus(tank, bonus); - case x: - } - case x: + case [EntityType.TANK(tank), EntityType.BONUS(bonus)]: + applyBonus(tank, bonus); + case [EntityType.BULLET(_), EntityType.EAGLE(eagle)]: + lose(eagle.team); + deferred.resolve(state); + case _: } } @@ -184,10 +184,7 @@ class Game implements EngineListener { } if (tank.bonus) spawnBonus(); deferred.resolve(state); - case EntityType.EAGLE(eagle): - lose(eagle.team); - deferred.resolve(state); - case x: + case _: } }