[client] add ControlBus
This commit is contained in:
30
src/client/haxe/ru/m/control/ControlBus.hx
Normal file
30
src/client/haxe/ru/m/control/ControlBus.hx
Normal file
@@ -0,0 +1,30 @@
|
||||
package ru.m.control;
|
||||
|
||||
import ru.m.control.IControlBus;
|
||||
import haxework.signal.Signal;
|
||||
|
||||
class ControlBus implements IControlBus {
|
||||
|
||||
public var signal(default, null):Signal3<DeviceType, DeviceAction, Bool>;
|
||||
private var connections:Map<DeviceType, DeviceAction->Bool->Void>;
|
||||
|
||||
public function new() {
|
||||
signal = new Signal3();
|
||||
connections = new Map();
|
||||
}
|
||||
|
||||
public function connect(device:IControlDevice):Void {
|
||||
var connector = function(action:DeviceAction, on:Bool):Void {
|
||||
signal.emit(device.type, action, on);
|
||||
}
|
||||
connections.set(device.type, connector);
|
||||
device.signal.connect(connector);
|
||||
}
|
||||
|
||||
public function disconnect(device:IControlDevice):Void {
|
||||
if (connections.exists(device.type)) {
|
||||
device.signal.disconnect(connections.get(device.type));
|
||||
connections.remove(device.type);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user