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