[common] update GameEvent
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
package ru.m.tankz.render;
|
||||
|
||||
import ru.m.geom.Rectangle;
|
||||
import flash.display.DisplayObjectContainer;
|
||||
import flash.display.Graphics;
|
||||
import flash.display.Sprite;
|
||||
@@ -24,7 +25,7 @@ class Render extends SpriteView implements IRender {
|
||||
private var upperLayer:Sprite;
|
||||
|
||||
private var background:Sprite;
|
||||
private var items:Map<String, RenderItem<Dynamic, Dynamic>>;
|
||||
private var items:Map<Int, RenderItem<Dynamic, Dynamic>>;
|
||||
|
||||
public function new() {
|
||||
super();
|
||||
@@ -53,7 +54,7 @@ class Render extends SpriteView implements IRender {
|
||||
|
||||
public function draw(game:IEngine):Void {
|
||||
for (brick in game.map.bricks) if (brick.config.index > 0) {
|
||||
if (!items.exists(brick.key)) {
|
||||
if (!items.exists(brick.id)) {
|
||||
var item:RenderItem<Dynamic, Dynamic> = switch(brick.config.type) {
|
||||
case 'ace' | 'bush': new BrickItem(brick);
|
||||
case 'water': new BrickAnimateItem(brick);
|
||||
@@ -61,7 +62,7 @@ class Render extends SpriteView implements IRender {
|
||||
case x: null;
|
||||
};
|
||||
if (item != null) {
|
||||
items[brick.key] = item;
|
||||
items[brick.id] = item;
|
||||
if (brick.config.layer > 2) {
|
||||
upLayer.addChild(item.view);
|
||||
} else {
|
||||
@@ -101,23 +102,23 @@ class Render extends SpriteView implements IRender {
|
||||
switch entity {
|
||||
case EAGLE(eagle):
|
||||
var item = new EagleItem(eagle);
|
||||
items.set(eagle.key, item);
|
||||
items.set(eagle.id, item);
|
||||
entryLayer.addChild(item.view);
|
||||
item.update();
|
||||
case TANK(tank):
|
||||
var item = new TankItem(tank);
|
||||
items.set(tank.key, item);
|
||||
items.set(tank.id, item);
|
||||
entryLayer.addChild(item.view);
|
||||
item.update();
|
||||
playAnimate(tank.rect.center, AnimateBundle.tankSpawn());
|
||||
case BULLET(bullet):
|
||||
var item = new BulletItem(bullet);
|
||||
items.set(bullet.key, item);
|
||||
items.set(bullet.id, item);
|
||||
entryLayer.addChild(item.view);
|
||||
item.update();
|
||||
case BONUS(bonus):
|
||||
var item = new BonusItem(bonus);
|
||||
items.set(bonus.key, item);
|
||||
items.set(bonus.id, item);
|
||||
upperLayer.addChild(item.view);
|
||||
item.update();
|
||||
case _:
|
||||
@@ -135,34 +136,44 @@ class Render extends SpriteView implements IRender {
|
||||
|
||||
public function onGameEvent(event:GameEvent):Void {
|
||||
switch event {
|
||||
case DESTROY(TANK(tank, who, wherewith, score)):
|
||||
if (items.exists(tank.key)) {
|
||||
entryLayer.removeChild(items.get(tank.key).view);
|
||||
items.remove(tank.key);
|
||||
playAnimate(tank.rect.center, AnimateBundle.tankBoom());
|
||||
if (score != 0) {
|
||||
showScore(tank.rect.center, score);
|
||||
case DESTROY(TANK(id, shot)):
|
||||
if (items.exists(id)) {
|
||||
var item = items[id];
|
||||
entryLayer.removeChild(item.view);
|
||||
var rect:Rectangle = item.value.rect;
|
||||
playAnimate(rect.center, AnimateBundle.tankBoom());
|
||||
if (shot.score != 0) {
|
||||
showScore(rect.center, shot.score);
|
||||
}
|
||||
items.remove(id);
|
||||
}
|
||||
case DESTROY(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));
|
||||
case DESTROY(BULLET(id)):
|
||||
if (items.exists(id)) {
|
||||
var item = items[id];
|
||||
entryLayer.removeChild(item.view);
|
||||
var rect:Rectangle = item.value.rect;
|
||||
var point = rect.center.add(new Point(rect.width * rect.direction.x, rect.height * rect.direction.y));
|
||||
playAnimate(point, AnimateBundle.bulletBoom());
|
||||
items.remove(id);
|
||||
}
|
||||
case DESTROY(BONUS(bonus, who, score)):
|
||||
if (items.exists(bonus.key)) {
|
||||
upperLayer.removeChild(items.get(bonus.key).view);
|
||||
items.remove(bonus.key);
|
||||
if (score != 0) {
|
||||
showScore(bonus.rect.center, score);
|
||||
case DESTROY(BONUS(id, shot)):
|
||||
if (items.exists(id)) {
|
||||
var item = items[id];
|
||||
upperLayer.removeChild(item.view);
|
||||
var rect:Rectangle = item.value.rect;
|
||||
if (shot.score != 0) {
|
||||
showScore(rect.center, shot.score);
|
||||
}
|
||||
items.remove(id);
|
||||
}
|
||||
case DESTROY(EAGLE(eagle, who, wherewith, score)):
|
||||
playAnimate(eagle.rect.center, AnimateBundle.tankBoom());
|
||||
if (score != 0) {
|
||||
showScore(eagle.rect.center, score);
|
||||
case DESTROY(EAGLE(id, shot)):
|
||||
if (items.exists(id)) {
|
||||
var item = items[id];
|
||||
var rect:Rectangle = item.value.rect;
|
||||
playAnimate(rect.center, AnimateBundle.tankBoom());
|
||||
if (shot.score != 0) {
|
||||
showScore(rect.center, shot.score);
|
||||
}
|
||||
}
|
||||
case _:
|
||||
}
|
||||
|
||||
@@ -76,26 +76,28 @@ class SoundManager implements GameListener {
|
||||
|
||||
public function onGameEvent(event:GameEvent):Void {
|
||||
switch event {
|
||||
case START(state):
|
||||
case START(_):
|
||||
play('start');
|
||||
case SPAWN(_, BULLET(_)):
|
||||
if (false /* ToDo: human tank */) {
|
||||
case SPAWN(BULLET(_)):
|
||||
if (false /*ToDo: human tank*/) {
|
||||
play('shot');
|
||||
}
|
||||
case SPAWN(_, BONUS(_, _)):
|
||||
case SPAWN(BONUS(_, _)):
|
||||
play('bonus_add');
|
||||
case HIT(TANK(tank, who, wherewith)):
|
||||
case HIT(TANK(_, _)):
|
||||
play('bullet_hit');
|
||||
case DESTROY(TANK(tank, who, wherewith, score)):
|
||||
if (true /* ToDo: human tank */) {
|
||||
case DESTROY(TANK(_, _)):
|
||||
if (true /*ToDo: human tank*/) {
|
||||
play('boom_player');
|
||||
} else {
|
||||
play('boom_bot');
|
||||
}
|
||||
case DESTROY(EAGLE(eagle, who, wherewith, score)):
|
||||
case DESTROY(EAGLE(_, _)):
|
||||
play('boom_player');
|
||||
case DESTROY(BONUS(bonus, who, score)):
|
||||
if (bonus.type == 'life') {
|
||||
case DESTROY(BONUS(_, _)):
|
||||
// ToDo: bonus type
|
||||
play('bonus_get');
|
||||
if (false /*ToDo: bonus.type == 'life'*/) {
|
||||
play('live');
|
||||
} else {
|
||||
play('bonus_get');
|
||||
|
||||
@@ -13,9 +13,6 @@ import ru.m.tankz.game.record.GameRecord;
|
||||
}
|
||||
|
||||
public function save(record:GameRecord):Void {
|
||||
trace(record.id);
|
||||
trace(record.date);
|
||||
trace(record.events);
|
||||
write(record.id, record);
|
||||
}
|
||||
|
||||
|
||||
@@ -98,7 +98,7 @@ import ru.m.tankz.view.game.GameView;
|
||||
|
||||
public function onGameEvent(event:GameEvent):Void {
|
||||
switch event {
|
||||
case GameEvent.COMPLETE(state, winner):
|
||||
case GameEvent.COMPLETE(state, _):
|
||||
// ToDo:
|
||||
recordStorage.save(recorder.record);
|
||||
result = state;
|
||||
|
||||
Reference in New Issue
Block a user