[render] use only GameEvent for redraw
This commit is contained in:
@@ -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];
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user