Pascal Péridont пре 9 година
родитељ
комит
8079965bb7
1 измењених фајлова са 25 додато и 0 уклоњено
  1. 25 0
      hxd/Pad.hx

+ 25 - 0
hxd/Pad.hx

@@ -33,6 +33,9 @@ class Pad {
 	public var yAxis : Float = 0.;
 	public var yAxis : Float = 0.;
 	public var buttons : Array<Bool> = [];
 	public var buttons : Array<Bool> = [];
 	public var values : Array<Float> = [];
 	public var values : Array<Float> = [];
+	
+	public dynamic function onDisconnect(){
+	}
 
 
 	function new() {
 	function new() {
 	}
 	}
@@ -60,6 +63,7 @@ class Pad {
 	static var waitPad : Pad -> Void;
 	static var waitPad : Pad -> Void;
 	static var initDone = false;
 	static var initDone = false;
 	static var inst : flash.ui.GameInput;
 	static var inst : flash.ui.GameInput;
+	static var pads : Array<hxd.Pad> = [];
 	#end
 	#end
 
 
 	/**
 	/**
@@ -73,6 +77,7 @@ class Pad {
 			inst = new flash.ui.GameInput();
 			inst = new flash.ui.GameInput();
 			inst.addEventListener(flash.events.GameInputEvent.DEVICE_ADDED, function(e:flash.events.GameInputEvent) {
 			inst.addEventListener(flash.events.GameInputEvent.DEVICE_ADDED, function(e:flash.events.GameInputEvent) {
 				var p = new Pad();
 				var p = new Pad();
+				pads.push( p );
 				p.d = e.device;
 				p.d = e.device;
 				//trace(p.d.name, p.d.id);
 				//trace(p.d.name, p.d.id);
 				for( i in 0...flash.ui.GameInput.numDevices )
 				for( i in 0...flash.ui.GameInput.numDevices )
@@ -110,6 +115,26 @@ class Pad {
 
 
 				if( waitPad != null ) waitPad(p);
 				if( waitPad != null ) waitPad(p);
 			});
 			});
+			inst.addEventListener(flash.events.GameInputEvent.DEVICE_REMOVED, function(e:flash.events.GameInputEvent) {
+				for( p in pads )
+					if( p.d.id == e.device.id ){
+						pads.remove( p );
+						p.d.enabled = false;
+						p.connected = false;
+						p.onDisconnect();
+						break;
+					}
+			});
+			inst.addEventListener(flash.events.GameInputEvent.DEVICE_UNUSABLE, function(e:flash.events.GameInputEvent) {
+				for( p in pads )
+					if( p.d.id == e.device.id ){
+						pads.remove( p );
+						p.d.enabled = false;
+						p.connected = false;
+						p.onDisconnect();
+						break;
+					}
+			});
 			var count = flash.ui.GameInput.numDevices; // necessary to trigger added
 			var count = flash.ui.GameInput.numDevices; // necessary to trigger added
 		}
 		}
 		#else
 		#else