[common] update control binding

This commit is contained in:
2018-01-25 14:20:30 +03:00
parent bcdefce2c9
commit 36c5f161fe
4 changed files with 15 additions and 12 deletions

View File

@@ -24,7 +24,8 @@ class Bot extends Control {
}
override public function start():Void {
action(TankAction.MOVE(Direction.BOTTOM));
var tank = handler.entities.get(tankId);
action(TankAction.MOVE(tank.rect.direction));
if (shotTimer == null) {
shotTimer = new Timer(1000);
shotTimer.run = shot;

View File

@@ -1,5 +1,6 @@
package ru.m.tankz.control;
import ru.m.tankz.core.Entity;
import ru.m.tankz.core.EntityType;
import ru.m.geom.Direction;
@@ -14,17 +15,17 @@ enum TankAction {
class Control {
public var tankId(default, default):Int;
private var listener:ControlListener;
private var handler:ControlHandler;
public function new() {}
public function bind(listener:ControlListener):Void {
this.listener = listener;
public function bind(handler:ControlHandler):Void {
this.handler = handler;
}
public function action(action:TankAction):Void {
if (tankId != 0 && listener != null) {
listener.onAction(tankId, action);
if (tankId != 0 && handler != null) {
handler.action(tankId, action);
}
}
@@ -38,10 +39,11 @@ class Control {
public function dispose():Void {
stop();
listener = null;
handler = null;
}
}
interface ControlListener {
public function onAction(tankId:Int, action:TankAction):Void;
interface ControlHandler {
public var entities(default, null):Map<Int, Entity>;
public function action(tankId:Int, action:TankAction):Void;
}

View File

@@ -73,7 +73,7 @@ class CollisionProcessor implements EngineListener {
}
class Engine {
class Engine implements ControlHandler {
public var config(default, default):Config;
public var map(default, null):LevelMap;

View File

@@ -22,7 +22,7 @@ typedef PlayerId = {
}
class Game implements EngineListener implements ControlListener {
class Game implements EngineListener {
public var type(default, null):GameType;
public var teams(default, null):Map<TeamId, Team>;
@@ -94,7 +94,7 @@ class Game implements EngineListener implements ControlListener {
player.control.dispose();
}
player.control = control;
player.control.bind(this);
player.control.bind(engine);
break;
}
}