修复设备选择界面多设备选择bug

This commit is contained in:
suntao committed 2021-06-04 18:28:11 +08:00
1 parent 7729332f41
commit 5671b35dce
21 files changed
+111 -56

No files matched your search

@@ -41,7 +41,7 @@ public class ConnectDeviceModal : PFUIPanel
private UnityEngine.Object deviceItem;
private VerticalLayoutGroup content;
private PfUIButton connectBtn;
private Dictionary<ushort, DeviceItem> deviceList;
private Dictionary<string, DeviceItem> deviceList;
private Text noDevice,Title;
private RectTransform searchIconRect;
@@ -49,7 +49,7 @@ public class ConnectDeviceModal : PFUIPanel
{
base.Awake();
deviceList = new Dictionary<ushort, DeviceItem>();
deviceList = new Dictionary<string, DeviceItem>();
var container = this.transform.Find("GameObject");
var closeBtn = container.Find("CloseBtn");
@@ -64,7 +64,7 @@ public class ConnectDeviceModal : PFUIPanel
_x = searchIconRect.localPosition.x;
_y = searchIconRect.localPosition.y;
base.SetRounded(panel.GetComponent<Image>().transform, 20f);
base.SetRounded(panel.GetComponent<Image>().transform, 20f);
UIManager.AddEvent(closeBtn.gameObject, EventTriggerType.PointerClick, new UnityEngine.Events.UnityAction<BaseEventData>(e =>
{
@@ -82,7 +82,16 @@ public class ConnectDeviceModal : PFUIPanel
{
if (item.Value.GetStatus() == false)
{
if (item.Value.DeviceInfo.Sensor == SensorType)
if (SensorType == SensorType.SpeedCadence)
{
if (item.Value.DeviceInfo.Sensor == SensorType.SpeedCadence || item.Value.DeviceInfo.Sensor == SensorType.Cadence)
{
//Debug.Log("断开设备" + item.Value.DeviceInfo.Name);
item.Value.DeviceInfo.Disconnect();
DeviceCache.Remove(item.Value.DeviceInfo);
}
}
else if (item.Value.DeviceInfo.Sensor == SensorType)
{
item.Value.DeviceInfo.Disconnect();
DeviceCache.Remove(item.Value.DeviceInfo);
@@ -90,7 +99,7 @@ public class ConnectDeviceModal : PFUIPanel
}
}
var dd = deviceList.Select(d => d.Value).Where(d => d.GetStatus()).FirstOrDefault();
if(dd != null)
if (dd != null)
{
dd.DeviceInfo.Connect();
DeviceCache.Add(dd.DeviceInfo);
@@ -98,7 +107,7 @@ public class ConnectDeviceModal : PFUIPanel
this.Close();
}));
}
// Start is called before the first frame update
@@ -131,6 +140,7 @@ public class ConnectDeviceModal : PFUIPanel
//var a = AntConnector.Instance().discoveredDevices;
switch (SensorType)
{
case SensorType.SpeedCadence:
case SensorType.Cadence:
devices = App.MainDeviceAdapter.GetDevices().Where(d => d.Sensor == SensorType || (d is ICadenceDevice && d.State == DeviceState.Connected)).OrderBy(d=>d.Priority).ToList();
break;
@@ -140,9 +150,7 @@ public class ConnectDeviceModal : PFUIPanel
case SensorType.Power:
devices = App.MainDeviceAdapter.GetDevices().Where(d => d.Sensor == SensorType || (d is IPowerDevice && d.State == DeviceState.Connected)).OrderBy(d=>d.Priority).ToList();
break;
case SensorType.Speed:
break;
case SensorType.SpeedCadence:
case SensorType.Speed:
devices = App.MainDeviceAdapter.GetDevices().Where(d => d.Sensor == SensorType || (d is ISpeedDevice && d.State == DeviceState.Connected)).OrderBy(d => d.Priority).ToList();
break;
case SensorType.Trainer:
@@ -154,7 +162,7 @@ public class ConnectDeviceModal : PFUIPanel
foreach (var device in devices)
{
if (deviceList.ContainsKey(device.DeviceNumber))
if (deviceList.ContainsKey(device.Id))
{
continue;
}
@@ -170,7 +178,7 @@ public class ConnectDeviceModal : PFUIPanel
deviceItemObj.Set(true);
foreach (var item in deviceList)
{
if (item.Key != deviceItemObj.DeviceInfo.DeviceNumber)
if (item.Key != deviceItemObj.DeviceInfo.Id)
{
item.Value.Set(false);
}
@@ -186,7 +194,7 @@ public class ConnectDeviceModal : PFUIPanel
// }
//}));
deviceList.Add(device.DeviceNumber, deviceItemObj);
deviceList.Add(device.Id, deviceItemObj);
}
if(deviceList.All(d=>d.Value.GetStatus() == false))
@@ -199,6 +207,12 @@ public class ConnectDeviceModal : PFUIPanel
//connectBtn.text.text = "DISCOUNECT";
noDevice.text = firstDevice.DeviceInfo.Name;
}
//DeviceItem firstDevice;
//var devicesTemp = deviceList.Select(d => d.Value).Where(d => d.DeviceInfo.State == DeviceState.Connected);
//if(SensorType == SensorType.Cadence || SensorType == SensorType.SpeedCadence)
//{
// firstDevice = devicesTemp.FirstOrDefault(d=>d)
//}
}
}
}
@@ -73,7 +73,7 @@ public class DeviceItem : Selectable, IEventSystemHandler, IPointerClickHandler
public override void OnDeselect(BaseEventData eventData)
{
//base.OnDeselect(eventData);
Debug.Log("deselect");
//Debug.Log("deselect");
//DeviceInfo.Disconnect();
@@ -158,7 +158,7 @@ public class DeviceView : MonoBehaviour
powerUnit.text = "W";
}
else if (SensorType == SensorType.SpeedCadence)
else if (SensorType == SensorType.Speed)
{
sprite0 = Resources.Load<Sprite>("Images/Devices/Speed_0");
sprite1 = Resources.Load<Sprite>("Images/Devices/Speed_1");
@@ -166,7 +166,7 @@ public class DeviceView : MonoBehaviour
powerUnit.text = "KPH";
}
else if (SensorType == SensorType.Cadence)
else if (SensorType == SensorType.Cadence || SensorType == SensorType.SpeedCadence)
{
sprite0 = Resources.Load<Sprite>("Images/Devices/Cadence_0");
sprite1 = Resources.Load<Sprite>("Images/Devices/Cadence_1");
@@ -289,15 +289,14 @@ public class DeviceView : MonoBehaviour
{
case SensorType.None:
break;
case SensorType.SpeedCadence:
case SensorType.Cadence:
return "Cadence Sensor";
case SensorType.HeartRate:
return "Heart Rate Monitor";
case SensorType.Power:
return "Power Meter";
case SensorType.Speed:
break;
case SensorType.SpeedCadence:
case SensorType.Speed:
return "Speed Meter";
case SensorType.Trainer:
return "Smart Trainer";
@@ -316,6 +315,7 @@ public class DeviceView : MonoBehaviour
{
case SensorType.None:
break;
case SensorType.SpeedCadence:
case SensorType.Cadence:
//cadenceValue.text = (connectedDevice as ICadenceDevice).Cadence.ToString();
return (connectedDevice as ICadenceDevice).Cadence.ToString();
@@ -324,8 +324,6 @@ public class DeviceView : MonoBehaviour
case SensorType.Power:
return (connectedDevice as IPowerDevice).Power.ToString();
case SensorType.Speed:
break;
case SensorType.SpeedCadence:
return (connectedDevice as ISpeedDevice).Speed.ToString();
case SensorType.Trainer:
//powerValue.text = (connectedDevice as IPowerDevice).Power.ToString();
@@ -357,6 +355,7 @@ public class DeviceView : MonoBehaviour
{
case SensorType.None:
break;
case SensorType.SpeedCadence:
case SensorType.Cadence:
return devices.FirstOrDefault(d => d is ICadenceDevice);
case SensorType.HeartRate:
@@ -369,7 +368,6 @@ public class DeviceView : MonoBehaviour
//}
return item;
case SensorType.Speed:
case SensorType.SpeedCadence:
return devices.FirstOrDefault(d => d is ISpeedDevice);
case SensorType.Trainer:
var item3 = devices.FirstOrDefault(d => d.Sensor == SensorType.Trainer);