[render] use only GameEvent for redraw

This commit is contained in:
2019-05-16 23:27:27 +03:00
parent efe826110c
commit 3c116db135
14 changed files with 128 additions and 136 deletions

View File

@@ -1,6 +1,5 @@
package ru.m.tankz.render;
import ru.m.geom.Rectangle;
import flash.display.DisplayObjectContainer;
import flash.display.Graphics;
import flash.display.Sprite;
@@ -55,7 +54,6 @@ class Render extends SpriteView implements IRender implements GameListener {
private function set_game(value:IGame):IGame {
game = value;
game.connect(this);
game.engine.spawnSignal.connect(onSpawn);
return game;
}
@@ -101,33 +99,6 @@ class Render extends SpriteView implements IRender implements GameListener {
clearLayer(upperLayer);
}
public function onSpawn(entity:EntityType):Void {
switch entity {
/*case EAGLE(eagle):
var item = new EagleRenderItem(eagle);
items.set(eagle.id, item);
entryLayer.addChild(item.view);
item.update();*/
case TANK(tank):
var item = new TankRenderItem(tank);
items.set(tank.id, item);
entryLayer.addChild(item.view);
item.update();
playAnimate(item.rect.center, AnimateBundle.tankSpawn());
case BULLET(bullet):
var item = new BulletRenderItem(bullet);
items.set(bullet.id, item);
entryLayer.addChild(item.view);
item.update();
case BONUS(bonus):
var item = new BonusRenderItem(bonus);
items.set(bonus.id, item);
upperLayer.addChild(item.view);
item.update();
case _:
}
}
public function onGameEvent(event:GameEvent):Void {
switch event {
case START(_):
@@ -148,6 +119,27 @@ class Render extends SpriteView implements IRender implements GameListener {
items.set(id, item);
entryLayer.addChild(item.view);
item.update();
case SPAWN(TANK(id, rect, playerId, info)):
var item = new TankRenderItem(rect);
var config = game.config.getTank(info.type);
item.color = game.config.getColor(playerId);
item.skin = config.skin;
item.hits = info.hits;
item.bonus = info.bonus;
items.set(id, item);
entryLayer.addChild(item.view);
item.update();
playAnimate(item.rect.center, AnimateBundle.tankSpawn());
case SPAWN(BULLET(id, rect, playerId, piercing)):
var item = new BulletRenderItem(rect, piercing);
items.set(id, item);
entryLayer.addChild(item.view);
item.update();
case SPAWN(BONUS(id, rect, type)):
var item = new BonusRenderItem(rect, type);
items.set(id, item);
upperLayer.addChild(item.view);
item.update();
case MOVE(BULLET(id, position)):
if (items.exists(id)) {
var item = items[id];

View File

@@ -1,15 +1,15 @@
package ru.m.tankz.render.item;
import ru.m.tankz.core.Bonus;
import ru.m.tankz.Type.BonusType;
import ru.m.geom.Rectangle;
import ru.m.tankz.Type;
class BonusRenderItem extends BitmapRenderItem {
public var type(default, set):BonusType;
public function new(bonus:Bonus) {
super(bonus.rect);
type = bonus.config.type;
public function new(rect:Rectangle, type:BonusType) {
super(rect);
this.type = type;
}
private function set_type(value:BonusType):BonusType {

View File

@@ -1,13 +1,13 @@
package ru.m.tankz.render.item;
import ru.m.tankz.core.Bullet;
import ru.m.geom.Rectangle;
class BulletRenderItem extends BitmapRenderItem {
public var piercing(default, set):Int = -1;
public function new(bullet:Bullet) {
super(bullet.rect);
piercing = bullet.config.piercing;
public function new(rect:Rectangle, piercing:Int) {
super(rect);
this.piercing = piercing;
}
private function set_piercing(value:Int):Int {

View File

@@ -4,7 +4,7 @@ import flash.display.BitmapData;
import haxework.color.Color;
import haxework.view.utils.BitmapUtil;
import openfl.Assets;
import ru.m.tankz.core.Tank;
import ru.m.geom.Rectangle;
class TankRenderItem extends BitmapRenderItem {
public var color(default, default):Color;
@@ -16,12 +16,8 @@ class TankRenderItem extends BitmapRenderItem {
private var images:Array<BitmapData>;
private var frame:Int;
public function new(tank:Tank) {
super(tank.rect);
color = tank.color;
skin = tank.config.skin;
hits = tank.hits;
bonus = tank.bonus;
public function new(rect:Rectangle) {
super(rect);
move(rect.position);
}