[client] use LabelView for score in render

This commit is contained in:
2019-03-26 22:20:07 +03:00
parent d2f23e7777
commit 404dd77806
3 changed files with 46 additions and 49 deletions

View File

@@ -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);
}
}