From 36c5f161fe3565a3d3ee022e575865a6e3fe2ed1 Mon Sep 17 00:00:00 2001 From: shmyga Date: Thu, 25 Jan 2018 14:20:30 +0300 Subject: [PATCH] [common] update control binding --- src/common/haxe/ru/m/tankz/bot/Bot.hx | 3 ++- src/common/haxe/ru/m/tankz/control/Control.hx | 18 ++++++++++-------- src/common/haxe/ru/m/tankz/engine/Engine.hx | 2 +- src/common/haxe/ru/m/tankz/game/Game.hx | 4 ++-- 4 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/common/haxe/ru/m/tankz/bot/Bot.hx b/src/common/haxe/ru/m/tankz/bot/Bot.hx index 0eeaa98..03b4bbf 100644 --- a/src/common/haxe/ru/m/tankz/bot/Bot.hx +++ b/src/common/haxe/ru/m/tankz/bot/Bot.hx @@ -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; diff --git a/src/common/haxe/ru/m/tankz/control/Control.hx b/src/common/haxe/ru/m/tankz/control/Control.hx index c7d7ce8..482ca90 100644 --- a/src/common/haxe/ru/m/tankz/control/Control.hx +++ b/src/common/haxe/ru/m/tankz/control/Control.hx @@ -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; + public function action(tankId:Int, action:TankAction):Void; } diff --git a/src/common/haxe/ru/m/tankz/engine/Engine.hx b/src/common/haxe/ru/m/tankz/engine/Engine.hx index db46851..1a49ac8 100755 --- a/src/common/haxe/ru/m/tankz/engine/Engine.hx +++ b/src/common/haxe/ru/m/tankz/engine/Engine.hx @@ -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; diff --git a/src/common/haxe/ru/m/tankz/game/Game.hx b/src/common/haxe/ru/m/tankz/game/Game.hx index 63ee8e0..a7d0fb6 100644 --- a/src/common/haxe/ru/m/tankz/game/Game.hx +++ b/src/common/haxe/ru/m/tankz/game/Game.hx @@ -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; @@ -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; } }