diff --git a/src/client/haxe/ru/m/tankz/render/Render.hx b/src/client/haxe/ru/m/tankz/render/Render.hx index ca98159..b3bcb29 100755 --- a/src/client/haxe/ru/m/tankz/render/Render.hx +++ b/src/client/haxe/ru/m/tankz/render/Render.hx @@ -1,15 +1,12 @@ package ru.m.tankz.render; -import promhx.Promise; import flash.display.DisplayObjectContainer; import flash.display.Graphics; import flash.display.Sprite; -import flash.text.TextField; -import flash.text.TextFormat; import haxe.Timer; +import haxework.view.LabelView; import haxework.view.SpriteView; -import haxework.provider.Provider; -import haxework.resources.IResources; +import promhx.Promise; import ru.m.animate.Animate; import ru.m.animate.OnceAnimate; import ru.m.geom.Point; @@ -103,24 +100,24 @@ class Render extends SpriteView { } public function onSpawn(entity:EntityType):Void { - switch(entity) { - case EntityType.TANK(tank): + switch entity { + case TANK(tank): var item = new TankItem(tank); items.set(tank.key, item); entryLayer.addChild(item.view); item.update(); playAnimate(tank.rect.center, AnimateBundle.tankSpawn()); - case EntityType.BULLET(bullet): + case BULLET(bullet): var item = new BulletItem(bullet); items.set(bullet.key, item); entryLayer.addChild(item.view); item.update(); - case EntityType.EAGLE(eagle): + case EAGLE(eagle): var item = new EagleItem(eagle); items.set(eagle.key, item); entryLayer.addChild(item.view); item.update(); - case EntityType.BONUS(bonus): + case BONUS(bonus): var item = new BonusItem(bonus); items.set(bonus.key, item); upperLayer.addChild(item.view); @@ -133,7 +130,7 @@ class Render extends SpriteView { public function onCollision(entity:EntityType, with:EntityType):Void { switch [entity, with] { - case [EntityType.BULLET(_), EntityType.EAGLE(eagle)]: + case [BULLET(_), EAGLE(eagle)]: if (eagle.death) { playAnimate(eagle.rect.center, AnimateBundle.tankBoom()); } @@ -143,7 +140,7 @@ class Render extends SpriteView { public function onDestroy(entity:EntityType, ?playerId:PlayerId):Void { switch entity { - case EntityType.TANK(tank): + case TANK(tank): if (items.exists(tank.key)) { entryLayer.removeChild(items.get(tank.key).view); items.remove(tank.key); @@ -152,14 +149,14 @@ class Render extends SpriteView { showScore(tank.rect.center, tank.config.score); } } - case EntityType.BULLET(bullet): + case BULLET(bullet): if (items.exists(bullet.key)) { entryLayer.removeChild(items.get(bullet.key).view); items.remove(bullet.key); var point = bullet.rect.center.add(new Point(bullet.rect.width * bullet.rect.direction.x, bullet.rect.height * bullet.rect.direction.y)); playAnimate(point, AnimateBundle.bulletBoom()); } - case EntityType.BONUS(bonus): + case BONUS(bonus): if (items.exists(bonus.key)) { upperLayer.removeChild(items.get(bonus.key).view); items.remove(bonus.key); @@ -186,14 +183,14 @@ class Render extends SpriteView { } private function showScore(point:Point, score:Int):Void { - var view:TextField = new TextField(); - view.embedFonts = true; - var font:String = Provider.get(IResources).text.get('font'); - view.defaultTextFormat = new TextFormat(font, 28, 0xffffff); + var view:LabelView = new LabelView(); + view.skinId = "text"; view.text = Std.string(score); - view.x = point.x - view.textWidth / 2; - view.y = point.y - view.textHeight / 2; - upperLayer.addChild(view); - Timer.delay(function() upperLayer.removeChild(view), 1000); + view.update(); + view.redraw(); + view.x = point.x - view.width / 2; + view.y = point.y - view.height / 2; + upperLayer.addChild(view.content); + Timer.delay(function() upperLayer.removeChild(view.content), 1000); } } diff --git a/src/common/haxe/ru/m/tankz/engine/Engine.hx b/src/common/haxe/ru/m/tankz/engine/Engine.hx index 54f9066..a7d4df2 100755 --- a/src/common/haxe/ru/m/tankz/engine/Engine.hx +++ b/src/common/haxe/ru/m/tankz/engine/Engine.hx @@ -40,41 +40,41 @@ class CollisionProcessor { public function onCollision(entity:EntityType, with:EntityType):Void { switch [entity, with] { - case [EntityType.TANK(tank), EntityType.TANK(other_tank)]: + case [TANK(tank), TANK(other_tank)]: tank.rect.lean(other_tank.rect); - case [EntityType.TANK(tank), EntityType.EAGLE(eagle)]: + case [TANK(tank), EAGLE(eagle)]: tank.rect.lean(eagle.rect); - case [EntityType.TANK(tank), EntityType.BONUS(bonus)]: + case [TANK(tank), BONUS(bonus)]: engine.destroy(bonus, tank.playerId); - case [EntityType.TANK(tank), EntityType.BULLET(bullet)] | - [EntityType.BULLET(bullet), EntityType.TANK(tank)]: + case [TANK(tank), BULLET(bullet)] | + [BULLET(bullet), TANK(tank)]: if (bullet.tankId == tank.id || (!engine.config.game.friendlyFire && tank.playerId.team == bullet.playerId.team)) { // Nothing } else { if (!tank.protect.active) { if (tank.config.downgrade != null) { tank.config = engine.config.getTank(tank.config.downgrade); - engine.change(tank, EntityChange.TYPE); + engine.change(tank, TYPE); } else if (tank.hits > 0) { tank.hits--; - engine.change(tank, EntityChange.HIT); + engine.change(tank, HIT); } else { engine.destroy(tank, bullet.tank.playerId); } } engine.destroy(bullet); } - case [EntityType.BULLET(bullet), EntityType.BULLET(other_bullet)]: + case [BULLET(bullet), BULLET(other_bullet)]: engine.destroy(bullet); engine.destroy(other_bullet); - case [EntityType.BULLET(bullet), EntityType.CELL(cell)]: + case [BULLET(bullet), CELL(cell)]: engine.destroy(bullet); - case [EntityType.BULLET(bullet), EntityType.EAGLE(eagle)]: + case [BULLET(bullet), EAGLE(eagle)]: engine.destroy(bullet); if (!eagle.protect.active) { eagle.death = true; // ToDo: change - engine.change(eagle, EntityChange.DEATH(bullet.playerId)); + engine.change(eagle, DEATH(bullet.playerId)); } case _: } @@ -148,7 +148,7 @@ class Engine extends EngineDispatcher implements ControlHandler { if (entities.exists(entity.id)) { var type = EntityTypeResolver.of(entity); switch (type) { - case EntityType.BULLET(bullet): + case BULLET(bullet): var tank:Tank = cast entities.get(bullet.tankId); if (tank != null) tank.onDestroyBullet(); case _: @@ -162,16 +162,16 @@ class Engine extends EngineDispatcher implements ControlHandler { if (!entities.exists(tankId)) return; var tank:Tank = cast entities.get(tankId); switch (action) { - case TankAction.MOVE(direction): + case MOVE(direction): tank.move(direction); - case TankAction.UPGRADE: + case UPGRADE: if (tank.config.upgrade != null) { tank.config = config.getTank(tank.config.upgrade); - change(tank, EntityChange.TYPE); + change(tank, TYPE); } - case TankAction.STOP: + case STOP: tank.stop(); - case TankAction.SHOT: + case SHOT: var bullet = tank.shot(); if (bullet != null) { spawn(bullet); diff --git a/src/common/haxe/ru/m/tankz/game/Game.hx b/src/common/haxe/ru/m/tankz/game/Game.hx index 64f1c88..4c3c924 100644 --- a/src/common/haxe/ru/m/tankz/game/Game.hx +++ b/src/common/haxe/ru/m/tankz/game/Game.hx @@ -185,10 +185,10 @@ class Game extends GameDispatcher { } public function onSpawn(entity:EntityType):Void { - switch (entity) { - case EntityType.TANK(tank): + switch entity { + case TANK(tank): getPlayer(tank.playerId).control.start(); - case EntityType.BULLET(bullet): + case BULLET(bullet): getPlayer(bullet.playerId).state.shots++; case _: } @@ -196,18 +196,18 @@ class Game extends GameDispatcher { public function onChange(entity:EntityType, change:EntityChange):Void { switch [entity, change] { - case [EntityType.EAGLE(eagle), EntityChange.DEATH(playerId)]: + case [EAGLE(eagle), DEATH(playerId)]: if (eagle.death) { getPlayer(playerId).state.score += eagle.score * (eagle.team == playerId.team ? 0 : 1); lose(eagle.team); onGameChange.emit(state); } - case [EntityType.TANK(tank), EntityChange.HIT]: + case [TANK(tank), HIT]: if (tank.bonus) { tank.bonus = false; spawnBonus(); } - case [EntityType.TANK(tank), EntityChange.TYPE]: + case [TANK(tank), TYPE]: getPlayer(tank.playerId).state.tank = tank.config.type; case _: } @@ -221,9 +221,9 @@ class Game extends GameDispatcher { case _: } switch [entity, with] { - case [EntityType.TANK(tank), EntityType.BONUS(bonus)]: + case [TANK(tank), BONUS(bonus)]: applyBonus(tank, bonus); - case [EntityType.BULLET(bullet), EntityType.TANK(tank)]: + case [BULLET(bullet), TANK(tank)]: getPlayer(bullet.playerId).state.hits++; case _: } @@ -231,7 +231,7 @@ class Game extends GameDispatcher { public function onDestroy(entity:EntityType, ?playerId:PlayerId):Void { switch (entity) { - case EntityType.TANK(tank): + case TANK(tank): var team = getTeam(tank.playerId.team); var player = getPlayer(tank.playerId); player.control.stop(); @@ -252,7 +252,7 @@ class Game extends GameDispatcher { getPlayer(playerId).state.score += tank.config.score * (tank.playerId.team == playerId.team ? 0 : 1); } onGameChange.emit(state); - case EntityType.BONUS(bonus): + case BONUS(bonus): if (bonus.config.score > 0 && playerId != null) { getPlayer(playerId).state.score += bonus.config.score; }