[client] add JoystickDevice

This commit is contained in:
2019-06-18 20:47:04 +03:00
parent 282bc68734
commit 73822dc95a
7 changed files with 107 additions and 16 deletions

View File

@@ -1,30 +1,43 @@
package ru.m.control;
import ru.m.control.IControlBus;
import haxework.signal.Signal;
import ru.m.control.IControlBus;
class ControlBus implements IControlBus {
private static inline var TAG = "control";
public var devices(default, null):Array<IControlDevice>;
public var signal(default, null):Signal3<DeviceType, DeviceAction, Bool>;
public var devicesSignal(default, null):Signal<Array<IControlDevice>>;
private var connections:Map<DeviceType, DeviceAction->Bool->Void>;
public function new() {
devices = [];
signal = new Signal3();
devicesSignal = new Signal();
connections = new Map();
}
public function connect(device:IControlDevice):Void {
var connector = function(action:DeviceAction, on:Bool):Void {
//L.d("TAG", '${device.type}, ${action}, ${on}');
signal.emit(device.type, action, on);
}
connections.set(device.type, connector);
device.signal.connect(connector);
devices.push(device);
devicesSignal.emit(devices);
}
public function disconnect(device:IControlDevice):Void {
if (connections.exists(device.type)) {
device.signal.disconnect(connections.get(device.type));
connections.remove(device.type);
devices.remove(device);
devicesSignal.emit(devices);
}
}
}