[common] add GameEvent
This commit is contained in:
@@ -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 _:
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user