[client] add JoystickDevice
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user