[common] add GameEvent

This commit is contained in:
2019-04-22 17:40:36 +03:00
parent 7ddba8f69b
commit 5ff7b19475
9 changed files with 97 additions and 72 deletions

View File

@@ -5,11 +5,12 @@ import flash.media.Sound;
import flash.media.SoundChannel;
import flash.media.SoundTransform;
import openfl.utils.Assets;
import ru.m.tankz.core.EntityType;
import ru.m.tankz.engine.Engine;
import ru.m.tankz.Type;
import ru.m.tankz.control.HumanControl;
import ru.m.tankz.game.Game;
import ru.m.tankz.game.GameEvent;
import ru.m.tankz.game.GameState;
class SoundManager implements EngineListener {
class SoundManager implements GameListener {
private static var TAG(default, never):String = 'SoundManager';
#if flash
@@ -75,32 +76,42 @@ class SoundManager implements EngineListener {
channels.remove(event.currentTarget);
}
public function onSpawn(entity:EntityType):Void {
switch entity {
case BULLET(_.tank.playerId.team => 'human'):
play('shot');
case BONUS(_):
play('bonus_add');
case _:
}
public function onGameStart(state:GameState):Void {
play('start');
}
public function onCollision(entity:EntityType, with:EntityType):Void {
switch [entity, with] {
case [BULLET(_), CELL(cell)]:
//play('bullet_wall');
case [BULLET(_), EAGLE(_)]:
public function onGameChange(state:GameState):Void {
}
public function onGameComplete(state:GameState):Void {
}
public function onGameEvent(event:GameEvent):Void {
switch event {
case SPAWN_BULLET(player):
// ToDo:
if (Std.is(player.control, HumanControl)) {
play('shot');
}
case HIT_TANK(player, target):
play('bullet_hit');
case DESTROY_TANK(player, target):
// ToDo:
if (Std.is(target.control, HumanControl)) {
play('boom_player');
} else {
play('boom_bot');
}
case DESTROY_EAGLE(player, eagleTeamId):
play('boom_player');
case _:
}
}
public function onDestroy(entity:EntityType, ?playerId:PlayerId):Void {
switch entity {
case TANK(_):
play('boom_bot');
case BONUS(_):
play('bonus_get');
case SPAWN_BONUS(bonus):
play('bonus');
case TAKE_BONUS(player, bonus):
if (bonus.type == 'life') {
play('live');
} else {
play('bonus_get');
}
case _:
}
}

View File

@@ -1,5 +1,6 @@
package ru.m.tankz.view.classic;
import ru.m.tankz.game.GameEvent;
import haxework.view.LabelView;
import haxework.view.VGroupView;
import ru.m.tankz.game.GameState;
@@ -38,4 +39,8 @@ import ru.m.tankz.view.common.LifeView;
public function onGameComplete(state:GameState):Void {
}
public function onGameEvent(event:GameEvent):Void {
}
}

View File

@@ -6,6 +6,7 @@ import haxe.Timer;
import haxework.view.frame.FrameSwitcher;
import haxework.view.GroupView;
import ru.m.tankz.game.Game;
import ru.m.tankz.game.GameEvent;
import ru.m.tankz.game.GameState;
import ru.m.tankz.network.NetworkManager;
import ru.m.tankz.render.Render;
@@ -45,7 +46,7 @@ class GameFrame extends GroupView implements GameListener {
private function start(state:GameState):Void {
game = new Game(state.type);
game.engine.connect(render);
game.engine.connect(soundManager);
game.connect(soundManager);
game.connect(this);
if (panel != null) {
game.connect(panel);
@@ -55,7 +56,6 @@ class GameFrame extends GroupView implements GameListener {
timer.run = updateEngine;
content.addEventListener(Event.ENTER_FRAME, _redraw);
render.draw(game.engine);
soundManager.play('start');
}
private function stop():Void {
@@ -90,6 +90,9 @@ class GameFrame extends GroupView implements GameListener {
switcher.change(ResultFrame.ID);
}
public function onGameEvent(event:GameEvent):Void {
}
public function onHide():Void {
stop();
}

View File

@@ -1,10 +1,11 @@
package ru.m.tankz.view.death;
import ru.m.tankz.game.GameState;
import haxework.view.DataView;
import haxework.view.LabelView;
import haxework.view.VGroupView;
import ru.m.tankz.game.GameEvent;
import ru.m.tankz.game.GameState.PlayerState;
import ru.m.tankz.game.GameState;
import ru.m.tankz.view.common.IGamePanel;
import ru.m.tankz.view.common.LifeView;
@@ -27,4 +28,8 @@ import ru.m.tankz.view.common.LifeView;
public function onGameComplete(state:GameState):Void {
}
public function onGameEvent(event:GameEvent):Void {
}
}

View File

@@ -1,9 +1,10 @@
package ru.m.tankz.view.dota;
import ru.m.tankz.preset.DotaGame;
import haxework.view.HGroupView;
import haxework.view.LabelView;
import ru.m.tankz.game.GameEvent;
import ru.m.tankz.game.GameState;
import ru.m.tankz.preset.DotaGame;
import ru.m.tankz.view.common.IGamePanel;
import ru.m.tankz.view.common.LifeView;
@@ -27,4 +28,8 @@ import ru.m.tankz.view.common.LifeView;
public function onGameComplete(state:GameState):Void {
}
public function onGameEvent(event:GameEvent):Void {
}
}