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 f133468..0000000 Binary files a/src/client/resources/images/map/map_0.png and /dev/null differ diff --git a/src/client/resources/images/map/map_1.png b/src/client/resources/images/map/map_1.png deleted file mode 100644 index df394b5..0000000 Binary files a/src/client/resources/images/map/map_1.png and /dev/null differ 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 7f1615e..0000000 Binary files a/src/client/resources/images/map/map_2.png and /dev/null differ 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 2151ef8..0000000 Binary files a/src/client/resources/images/map/map_3-0.png and /dev/null differ 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 e8b3726..0000000 Binary files a/src/client/resources/images/map/map_3-1.png and /dev/null differ 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 2151ef8..0000000 Binary files a/src/client/resources/images/map/map_3.png and /dev/null differ 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 16ecf69..0000000 Binary files a/src/client/resources/images/map/map_4.png and /dev/null differ diff --git a/src/client/resources/images/map/map_5.png b/src/client/resources/images/map/map_5.png deleted file mode 100644 index cc14732..0000000 Binary files a/src/client/resources/images/map/map_5.png and /dev/null differ 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 _: } }