2021-09-23 18:14:53 +08:00
|
|
|
|
using Assets.Scenes.Ride.Scripts;
|
|
|
|
|
|
using Assets.Scripts;
|
|
|
|
|
|
using Assets.Scripts.Apis.Models;
|
2021-09-30 09:06:35 +08:00
|
|
|
|
using Assets.Scripts.Ble.Service;
|
|
|
|
|
|
using Assets.Scripts.Devices;
|
2021-09-23 18:14:53 +08:00
|
|
|
|
using Assets.Scripts.Devices.Ant;
|
|
|
|
|
|
using Assets.Scripts.Devices.Ant.Interfaces;
|
|
|
|
|
|
using Assets.Scripts.Devices.Ble;
|
|
|
|
|
|
using Assets.Scripts.Devices.Ble.Characteristic;
|
|
|
|
|
|
using Assets.Scripts.Devices.Ble.Devices;
|
2022-03-10 18:10:34 +08:00
|
|
|
|
using Assets.Scripts.Devices.Ble.Interfaces;
|
2021-09-23 18:14:53 +08:00
|
|
|
|
using ChartAndGraph;
|
|
|
|
|
|
using System;
|
|
|
|
|
|
using System.Collections;
|
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
using System.IO;
|
|
|
|
|
|
using System.Linq;
|
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
|
using UnityEngine;
|
|
|
|
|
|
using UnityEngine.UI;
|
2022-03-10 18:10:34 +08:00
|
|
|
|
using static RowerTaskPanel;
|
2021-09-23 18:14:53 +08:00
|
|
|
|
|
|
|
|
|
|
public class RowerHomeScript : PFUIPanel
|
|
|
|
|
|
{
|
|
|
|
|
|
private class TempRowerCalc
|
|
|
|
|
|
{
|
|
|
|
|
|
public int power { get; set; }
|
|
|
|
|
|
public ushort pace { get; set; }
|
|
|
|
|
|
public uint rate { get; set; }
|
|
|
|
|
|
public int heartRate { get; set; }
|
2022-03-10 18:10:34 +08:00
|
|
|
|
public int energy { get; set; }
|
|
|
|
|
|
public int distance { get; set; }
|
|
|
|
|
|
public int strokeCount { get; set; }
|
2021-09-23 18:14:53 +08:00
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 划船机数据
|
|
|
|
|
|
/// </summary>
|
2022-05-11 17:11:48 +08:00
|
|
|
|
private IRowerCommonData RowerData
|
2021-09-23 18:14:53 +08:00
|
|
|
|
{
|
|
|
|
|
|
get
|
|
|
|
|
|
{
|
2022-06-01 09:54:20 +08:00
|
|
|
|
return Rower != null ? (C2RowerData.IsEnabled == true ? (IRowerCommonData)(Rower.c2RowerData) : (IRowerCommonData)(Rower.rowerData)) : null;
|
2022-05-11 17:11:48 +08:00
|
|
|
|
//var device = App.MainDeviceAdapter.GetDevices().FirstOrDefault(d => (d.State == DeviceState.Connected) && d.Sensor == SensorType.Rower);
|
|
|
|
|
|
//if (device != null)
|
|
|
|
|
|
//{
|
|
|
|
|
|
// return ((IRowerDevice)device).rowerData;
|
|
|
|
|
|
//}
|
|
|
|
|
|
//return null;
|
2021-09-23 18:14:53 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
2022-03-10 18:10:34 +08:00
|
|
|
|
|
2021-09-30 09:06:35 +08:00
|
|
|
|
protected override void OnDestroy()
|
|
|
|
|
|
{
|
|
|
|
|
|
Debug.Log("銷毀");
|
2022-05-11 17:11:48 +08:00
|
|
|
|
if (RowerData != null)
|
2022-03-31 18:30:07 +08:00
|
|
|
|
{
|
2022-05-11 17:11:48 +08:00
|
|
|
|
RowerData.PullChanged -= PaintPullCurve;
|
|
|
|
|
|
RowerData.StartEvent -= StartFunc;
|
|
|
|
|
|
RowerData.RowerResChanged -= ResChanged;
|
2022-03-31 18:30:07 +08:00
|
|
|
|
}
|
|
|
|
|
|
C2RowerData.EnableChanged -= ModeChanged;
|
2021-09-30 09:06:35 +08:00
|
|
|
|
}
|
2021-09-29 11:06:05 +08:00
|
|
|
|
private IRowerDevice Rower
|
|
|
|
|
|
{
|
|
|
|
|
|
get
|
|
|
|
|
|
{
|
|
|
|
|
|
var device = App.MainDeviceAdapter.GetDevices().FirstOrDefault(d => (d.State == DeviceState.Connected || d.State == DeviceState.Connecting) && d.Sensor == SensorType.Rower);
|
|
|
|
|
|
if (device != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
return (IRowerDevice)device;
|
|
|
|
|
|
}
|
|
|
|
|
|
return null;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2021-09-23 18:14:53 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 心率数据
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
private int? HeartRate
|
|
|
|
|
|
{
|
|
|
|
|
|
get
|
|
|
|
|
|
{
|
|
|
|
|
|
var device = App.MainDeviceAdapter.GetDevices().FirstOrDefault(d => (d.State == DeviceState.Connected || d.State == DeviceState.Connecting) && d.Sensor == SensorType.HeartRate);
|
|
|
|
|
|
if (device != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
return ((IHeartRateDevice)device).HeartRate;
|
|
|
|
|
|
}
|
|
|
|
|
|
return null;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
GameObject btnStart;
|
2022-05-09 13:18:14 +08:00
|
|
|
|
Transform left, bottom, mid,rmydata;
|
2022-06-06 18:54:04 +08:00
|
|
|
|
Image leftImage;
|
|
|
|
|
|
Image rightImage;
|
2021-09-23 18:14:53 +08:00
|
|
|
|
float timer = 1.0f;
|
2022-05-11 17:11:48 +08:00
|
|
|
|
List<DoubleVector2> pullList, historyPullList;
|
2022-04-19 18:09:29 +08:00
|
|
|
|
public Dictionary<object, Sprite> spriteDict,spriteDict2;
|
2021-09-23 18:14:53 +08:00
|
|
|
|
List<string> records;
|
|
|
|
|
|
List<TempRowerCalc> values;
|
2022-04-29 18:32:04 +08:00
|
|
|
|
DateTime startTime;
|
|
|
|
|
|
DateTime? createTime;
|
2021-09-23 18:14:53 +08:00
|
|
|
|
double Kj = 0;
|
2021-09-28 17:51:58 +08:00
|
|
|
|
int seconds = 0;
|
|
|
|
|
|
bool isPause = false;
|
2022-03-10 18:10:34 +08:00
|
|
|
|
public RowerType rowerType = null;
|
2021-10-21 18:04:01 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 计算停止的秒数,如果超过5秒,除了累加值都变成--,这些值记录为0,提示用户如果超过90秒,将直接保存数据
|
|
|
|
|
|
/// 如果5-90秒有拉力,则继续滑行
|
|
|
|
|
|
/// 如果超过90秒都没有拉力,则直接保存
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
int stopSeconds = 0;
|
|
|
|
|
|
uint totalDistance = 0;
|
2022-03-10 18:10:34 +08:00
|
|
|
|
|
|
|
|
|
|
Transform slider;
|
2022-06-01 16:10:42 +08:00
|
|
|
|
RowerGraphChartFeed rowerGraphChartFeed { get; set; }
|
|
|
|
|
|
RowerGraphChartFeed graphChartFeed { get; set; }
|
2022-02-10 12:57:43 +08:00
|
|
|
|
protected override void Start()
|
|
|
|
|
|
{
|
2022-03-10 18:10:34 +08:00
|
|
|
|
var rect = transform.GetComponent<RectTransform>();
|
|
|
|
|
|
rect.offsetMax = Vector2.zero;
|
|
|
|
|
|
rect.offsetMin = Vector2.zero;
|
2022-06-01 16:10:42 +08:00
|
|
|
|
|
|
|
|
|
|
rowerGraphChartFeed = mid.Find("GraphChart").GetComponent<RowerGraphChartFeed>();
|
|
|
|
|
|
graphChartFeed = transform.Find("Rower/Modes/Scroll/M2/MyData/GraphChart").GetComponent<RowerGraphChartFeed>();
|
2022-02-10 12:57:43 +08:00
|
|
|
|
}
|
2022-06-01 16:10:42 +08:00
|
|
|
|
Transform M1 { get; set; }
|
2021-09-23 18:14:53 +08:00
|
|
|
|
protected override void Awake()
|
|
|
|
|
|
{
|
2022-05-31 16:47:21 +08:00
|
|
|
|
Id = Guid.NewGuid().ToString();
|
2022-06-01 09:54:20 +08:00
|
|
|
|
rowerType = new RowerType() { type = 1, value = 500 };
|
|
|
|
|
|
|
2021-09-23 18:14:53 +08:00
|
|
|
|
spriteDict = new Dictionary<object, Sprite>()
|
|
|
|
|
|
{
|
2022-03-10 18:10:34 +08:00
|
|
|
|
{"Start",Resources.Load<Sprite>("Images/RowerNew/ICON_continue_44") },
|
|
|
|
|
|
{"Untagged",Resources.Load<Sprite>("Images/RowerNew/ICON_pause_44")},
|
2021-09-23 18:14:53 +08:00
|
|
|
|
{0,Resources.Load<Sprite>("Images/Rower/序列帧/划船机0001") },
|
|
|
|
|
|
{1,Resources.Load<Sprite>("Images/Rower/序列帧/划船机0002") },
|
|
|
|
|
|
{2,Resources.Load<Sprite>("Images/Rower/序列帧/划船机0003") },
|
|
|
|
|
|
{3,Resources.Load<Sprite>("Images/Rower/序列帧/划船机0004") },
|
|
|
|
|
|
{4,Resources.Load<Sprite>("Images/Rower/序列帧/划船机0005") },
|
|
|
|
|
|
{5,Resources.Load<Sprite>("Images/Rower/序列帧/划船机0006") },
|
|
|
|
|
|
{6,Resources.Load<Sprite>("Images/Rower/序列帧/划船机0007") },
|
|
|
|
|
|
{7,Resources.Load<Sprite>("Images/Rower/序列帧/划船机0008") },
|
|
|
|
|
|
{8,Resources.Load<Sprite>("Images/Rower/序列帧/划船机0009") },
|
|
|
|
|
|
{9,Resources.Load<Sprite>("Images/Rower/序列帧/划船机0010") },
|
|
|
|
|
|
{10,Resources.Load<Sprite>("Images/Rower/序列帧/划船机0011") },
|
|
|
|
|
|
{11,Resources.Load<Sprite>("Images/Rower/序列帧/划船机0012") },
|
|
|
|
|
|
{12,Resources.Load<Sprite>("Images/Rower/序列帧/划船机0013") },
|
|
|
|
|
|
{13,Resources.Load<Sprite>("Images/Rower/序列帧/划船机0014") },
|
|
|
|
|
|
{14,Resources.Load<Sprite>("Images/Rower/序列帧/划船机0015") },
|
|
|
|
|
|
};
|
2022-04-19 18:09:29 +08:00
|
|
|
|
spriteDict2 = new Dictionary<object, Sprite>()
|
|
|
|
|
|
{
|
|
|
|
|
|
{0,Resources.Load<Sprite>("Images/RowerNew/序列帧/划船机0001") },
|
|
|
|
|
|
{1,Resources.Load<Sprite>("Images/RowerNew/序列帧/划船机0002") },
|
|
|
|
|
|
{2,Resources.Load<Sprite>("Images/RowerNew/序列帧/划船机0003") },
|
|
|
|
|
|
{3,Resources.Load<Sprite>("Images/RowerNew/序列帧/划船机0004") },
|
|
|
|
|
|
{4,Resources.Load<Sprite>("Images/RowerNew/序列帧/划船机0005") },
|
|
|
|
|
|
{5,Resources.Load<Sprite>("Images/RowerNew/序列帧/划船机0006") },
|
|
|
|
|
|
{6,Resources.Load<Sprite>("Images/RowerNew/序列帧/划船机0007") },
|
|
|
|
|
|
{7,Resources.Load<Sprite>("Images/RowerNew/序列帧/划船机0008") },
|
|
|
|
|
|
{8,Resources.Load<Sprite>("Images/RowerNew/序列帧/划船机0009") },
|
|
|
|
|
|
{9,Resources.Load<Sprite>("Images/RowerNew/序列帧/划船机0010") },
|
|
|
|
|
|
{10,Resources.Load<Sprite>("Images/RowerNew/序列帧/划船机0011") },
|
|
|
|
|
|
{11,Resources.Load<Sprite>("Images/RowerNew/序列帧/划船机0012") },
|
|
|
|
|
|
{12,Resources.Load<Sprite>("Images/RowerNew/序列帧/划船机0013") },
|
|
|
|
|
|
{13,Resources.Load<Sprite>("Images/RowerNew/序列帧/划船机0014") },
|
|
|
|
|
|
{14,Resources.Load<Sprite>("Images/RowerNew/序列帧/划船机0015") },
|
|
|
|
|
|
};
|
2022-06-01 16:10:42 +08:00
|
|
|
|
rowerMultiModeScript = GetComponent<RowerMultiModeScript>();
|
2021-09-23 18:14:53 +08:00
|
|
|
|
GetComponent<RectTransform>().localScale = Vector3.one;
|
|
|
|
|
|
GetComponent<RectTransform>().localPosition = Vector3.zero;
|
2022-05-11 17:11:48 +08:00
|
|
|
|
records = new List<string>();
|
|
|
|
|
|
values = new List<TempRowerCalc>();
|
|
|
|
|
|
pullList = new List<DoubleVector2>();
|
|
|
|
|
|
historyPullList = new List<DoubleVector2>();
|
2021-09-28 15:25:52 +08:00
|
|
|
|
//mainNav.ShowExit();
|
|
|
|
|
|
|
2022-06-01 16:10:42 +08:00
|
|
|
|
M1 = transform.Find("Rower/Modes/Scroll/M1");
|
2022-03-10 18:10:34 +08:00
|
|
|
|
left = transform.Find("Rower/Modes/Scroll/M1/Left");
|
|
|
|
|
|
bottom = transform.Find("Rower/Bottom");
|
2022-06-01 16:10:42 +08:00
|
|
|
|
KMText = bottom.Find("KM/Value").GetComponent<Text>();
|
|
|
|
|
|
TimeText = bottom.Find("Time/Value").GetComponent<Text>();
|
|
|
|
|
|
BPMText = bottom.Find("BPM/Value").GetComponent<Text>();
|
2022-03-10 18:10:34 +08:00
|
|
|
|
mid = transform.Find("Rower/Modes/Scroll/M1/Mid");
|
2022-05-09 13:18:14 +08:00
|
|
|
|
rmydata = transform.Find("Rower/Modes/Scroll/M2/MyData");
|
2022-03-10 18:10:34 +08:00
|
|
|
|
slider = transform.Find("ResBar/PFUISlider");
|
2022-06-01 16:10:42 +08:00
|
|
|
|
|
|
|
|
|
|
WText = mid.Find("W/Value").GetComponent<Text>();
|
|
|
|
|
|
rmyWText = rmydata.Find("W/Value").GetComponent<Text>();
|
|
|
|
|
|
FiveText = bottom.Find("500/Value").GetComponent<Text>();
|
|
|
|
|
|
MSText = bottom.Find("MS/Value").GetComponent<Text>();
|
|
|
|
|
|
ExpectedText = bottom.Find("Expected/Value").GetComponent<Text>();
|
|
|
|
|
|
|
|
|
|
|
|
TimesText = left.Find("Times/Value").GetComponent<Text>();
|
|
|
|
|
|
Caloriestext = left.Find("Calories/Value").GetComponent<Text>();
|
|
|
|
|
|
rmyCaloriestext = rmydata.Find("Calories/Value").GetComponent<Text>();
|
|
|
|
|
|
AvgForceText = mid.Find("AvgForce/Value").GetComponent<Text>();
|
|
|
|
|
|
rmyAvgForceText = rmydata.Find("AvgForce/Value").GetComponent<Text>();
|
|
|
|
|
|
PeakForceText = mid.Find("PeakForce/Value").GetComponent<Text>();
|
|
|
|
|
|
rmyPeakForceText = rmydata.Find("PeakForce/Value").GetComponent<Text>();
|
|
|
|
|
|
|
2022-03-10 18:10:34 +08:00
|
|
|
|
UIManager.AddEvent(transform.Find("ResBar/BtnAdd").gameObject, UnityEngine.EventSystems.EventTriggerType.PointerClick, b =>
|
|
|
|
|
|
{
|
|
|
|
|
|
if (RowerData != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
slider.GetComponent<PFUISlider>().SetValue((RowerData.ResistanceLevel + 1 - 50) / 300f);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
UIManager.AddEvent(transform.Find("ResBar/BtnSub").gameObject, UnityEngine.EventSystems.EventTriggerType.PointerClick, b =>
|
|
|
|
|
|
{
|
|
|
|
|
|
if (RowerData != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
slider.GetComponent<PFUISlider>().SetValue((RowerData.ResistanceLevel - 1 - 50) / 300f);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
slider.GetComponent<PFUISlider>().valueHandler = (a) => 50 + a * 300;
|
|
|
|
|
|
slider.GetComponent<PFUISlider>().SetValueChanged(r =>
|
|
|
|
|
|
{
|
|
|
|
|
|
var v = (ushort)Math.Round((r * 300));
|
|
|
|
|
|
print("设置阻力" + v);
|
2022-02-10 12:57:43 +08:00
|
|
|
|
if (Rower != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
Rower.SetResistanceLevel(v);
|
|
|
|
|
|
//RowerData.
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
2022-03-10 18:10:34 +08:00
|
|
|
|
//transform.Find("Ready/DeviceStatus").gameObject.SetActive(!flag);
|
|
|
|
|
|
//transform.Find("Ready/DeviceStatusConnect").gameObject.SetActive(flag);
|
|
|
|
|
|
UIManager.AddEvent(transform.Find("Ready/DeviceStatus").gameObject, UnityEngine.EventSystems.EventTriggerType.PointerClick, b =>
|
|
|
|
|
|
{
|
|
|
|
|
|
if (checkRowing()) return;
|
|
|
|
|
|
UIManager.ShowRowerDevicePanel();
|
|
|
|
|
|
});
|
|
|
|
|
|
UIManager.AddEvent(transform.Find("Ready/DeviceStatusConnect").gameObject, UnityEngine.EventSystems.EventTriggerType.PointerClick, b =>
|
|
|
|
|
|
{
|
|
|
|
|
|
if (checkRowing()) return;
|
|
|
|
|
|
UIManager.ShowRowerDevicePanel();
|
|
|
|
|
|
});
|
|
|
|
|
|
//手机版tab
|
|
|
|
|
|
#if UNITY_ANDROID || UNITY_IOS
|
|
|
|
|
|
var nav = transform.Find("MainNav-mobile").GetComponent<NewMainNav>();
|
|
|
|
|
|
var c1 = new NewMainNav.CustomButton(Resources.Load<Sprite>("Images/RowerNew/ICON_create_44"), () =>
|
|
|
|
|
|
{
|
2022-04-19 18:09:29 +08:00
|
|
|
|
//UIManager.ShowRowerWelldone("33171855-66FC-4121-935C-0F4DA98E5BB2", Init);
|
|
|
|
|
|
//return;
|
2022-05-31 16:51:07 +08:00
|
|
|
|
|
|
|
|
|
|
//UIManager.ShowRowerWelldone("C0F81E83-120B-4A2C-AD0E-8BC1B8EB3E74", Init);
|
2022-03-10 18:10:34 +08:00
|
|
|
|
//return;
|
|
|
|
|
|
if (checkRowing()) return;
|
2022-03-30 18:25:51 +08:00
|
|
|
|
if (C2RowerData.IsEnabled == true && C2RowerData.rowerType != null) return;
|
2022-03-10 18:10:34 +08:00
|
|
|
|
UIManager.ShowRowerTaskPanel(type=>
|
|
|
|
|
|
{
|
|
|
|
|
|
rowerType = type;
|
|
|
|
|
|
HandleSelectType();
|
2022-03-31 18:30:07 +08:00
|
|
|
|
},rowerType);
|
2022-03-10 18:10:34 +08:00
|
|
|
|
}, false);
|
2022-05-31 16:51:07 +08:00
|
|
|
|
var c2 = new NewMainNav.CustomButton(Resources.Load<Sprite>("Images/RowerNew/记录"), () =>
|
2022-03-10 18:10:34 +08:00
|
|
|
|
{
|
2022-05-31 16:51:07 +08:00
|
|
|
|
UIManager.ShowResultListPanel();
|
2022-03-10 18:10:34 +08:00
|
|
|
|
}, false);
|
2022-05-31 16:51:07 +08:00
|
|
|
|
btnStart = transform.Find("MainNav-mobile/Custom2").gameObject;
|
|
|
|
|
|
//var c3 = new NewMainNav.CustomButton(Resources.Load<Sprite>("Images/RowerNew/ICON_mode_44"), () =>
|
|
|
|
|
|
//{
|
|
|
|
|
|
// ReturnHome();
|
|
|
|
|
|
//}, false);
|
2022-05-09 13:18:14 +08:00
|
|
|
|
//隐藏骑行
|
2022-05-31 16:51:07 +08:00
|
|
|
|
nav.SetButtonActive(new List<int> { 3, 7 }, null, c1, null, c2, false);
|
2022-03-10 18:10:34 +08:00
|
|
|
|
newNav = nav;
|
|
|
|
|
|
#endif
|
|
|
|
|
|
UIManager.AddEvent(transform.Find("Stopped/Confirm/BtnSave").gameObject, UnityEngine.EventSystems.EventTriggerType.PointerClick, b =>
|
|
|
|
|
|
{
|
|
|
|
|
|
transform.Find("Stopped").gameObject.SetActive(false);
|
|
|
|
|
|
HandleSaveDirect();
|
|
|
|
|
|
});
|
|
|
|
|
|
UIManager.AddEvent(transform.Find("Stopped/Confirm/BtnDrop").gameObject, UnityEngine.EventSystems.EventTriggerType.PointerClick, b =>
|
|
|
|
|
|
{
|
2022-03-31 18:30:07 +08:00
|
|
|
|
Discard();
|
2022-03-10 18:10:34 +08:00
|
|
|
|
});
|
2022-05-11 17:11:48 +08:00
|
|
|
|
if (RowerData != null)
|
2022-03-31 18:30:07 +08:00
|
|
|
|
{
|
2022-05-11 17:11:48 +08:00
|
|
|
|
RowerData.PullChanged -= PaintPullCurve;
|
|
|
|
|
|
RowerData.PullChanged += PaintPullCurve;
|
|
|
|
|
|
RowerData.StartEvent -= StartFunc;
|
|
|
|
|
|
RowerData.StartEvent += StartFunc;
|
2022-03-31 18:30:07 +08:00
|
|
|
|
}
|
2022-05-31 16:51:07 +08:00
|
|
|
|
rowerType = new RowerType { type = 1, value = 500 };
|
|
|
|
|
|
HandleSelectType();
|
2022-03-10 18:10:34 +08:00
|
|
|
|
Init();
|
|
|
|
|
|
}
|
2022-04-14 19:18:44 +08:00
|
|
|
|
|
|
|
|
|
|
RowerResultModel reRowData = null;
|
|
|
|
|
|
public void ReRow(RowerResultModel r)
|
|
|
|
|
|
{
|
|
|
|
|
|
this.reRowData = r;
|
|
|
|
|
|
if (r!= null && r.Type.HasValue)
|
|
|
|
|
|
{
|
|
|
|
|
|
rowerType = new RowerType { type = r.Type.Value,value = (float)r.TypeValue.Value };
|
|
|
|
|
|
if (Rower != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
Rower.Reset();
|
|
|
|
|
|
}
|
|
|
|
|
|
//RowerPanel/Rower/Bottom/Expected/Title
|
|
|
|
|
|
//var dw = rowerType.type == 1 ? $"{rowerType.value}M" : $"{(rowerType.value / 60).ToString("#0.00")}Min";
|
|
|
|
|
|
//bottom.Find("Expected/Title").GetComponent<Text>().text = $"EST\n/ {dw}";
|
2022-04-19 18:09:29 +08:00
|
|
|
|
var dw = "";
|
|
|
|
|
|
if (rowerType.type == 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
dw = $"\nM/ 30Min";
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (rowerType.type == 2)
|
|
|
|
|
|
{
|
|
|
|
|
|
dw = $"\nM";
|
|
|
|
|
|
}
|
2022-04-14 19:18:44 +08:00
|
|
|
|
bottom.Find("Expected/Title").GetComponent<Text>().text = $"{App.GetLocalString("EST")}{dw}";
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2022-03-31 18:30:07 +08:00
|
|
|
|
private void Discard()
|
|
|
|
|
|
{
|
2022-04-19 18:09:29 +08:00
|
|
|
|
if (Application.internetReachability == NetworkReachability.NotReachable)
|
|
|
|
|
|
{
|
|
|
|
|
|
transform.Find("Stopped").gameObject.SetActive(true);
|
|
|
|
|
|
Utils.showToast(null, App.GetLocalString("Please check the network status!"));
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
2022-03-31 18:30:07 +08:00
|
|
|
|
transform.Find("Stopped").gameObject.SetActive(false);
|
|
|
|
|
|
openTimer = false;
|
|
|
|
|
|
isPause = true;
|
|
|
|
|
|
if (C2RowerData.IsEnabled == true)
|
|
|
|
|
|
{
|
2022-04-06 10:21:30 +08:00
|
|
|
|
Utils.showToast(null, "Press \"Menu\" to save.", int.MaxValue, stopFunc: () => C2RowerData.isReadyStatus, endCallback: Init);
|
2022-03-31 18:30:07 +08:00
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
Init();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2022-03-10 18:10:34 +08:00
|
|
|
|
|
|
|
|
|
|
private void HandleSelectType()
|
|
|
|
|
|
{
|
|
|
|
|
|
if (Rower != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
Rower.Reset();
|
|
|
|
|
|
}
|
2022-04-19 18:09:29 +08:00
|
|
|
|
reRowData = null;
|
2022-03-10 18:10:34 +08:00
|
|
|
|
//RowerPanel/Rower/Bottom/Expected/Title
|
2022-03-28 17:42:23 +08:00
|
|
|
|
//var dw = rowerType.type == 1 ? $"{rowerType.value}M" : $"{(rowerType.value / 60).ToString("#0.00")}Min";
|
|
|
|
|
|
//bottom.Find("Expected/Title").GetComponent<Text>().text = $"EST\n/ {dw}";
|
2022-04-19 18:09:29 +08:00
|
|
|
|
var dw = "";
|
|
|
|
|
|
if (rowerType.type == 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
dw = $"\nM/ 30Min";
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (rowerType.type == 2)
|
|
|
|
|
|
{
|
|
|
|
|
|
dw = $"\nM";
|
|
|
|
|
|
}
|
2022-04-06 10:21:30 +08:00
|
|
|
|
bottom.Find("Expected/Title").GetComponent<Text>().text = $"{App.GetLocalString("EST")}{dw}";
|
2021-09-23 18:14:53 +08:00
|
|
|
|
Init();
|
2022-03-10 18:10:34 +08:00
|
|
|
|
//Utils.showToast(null, "请滑动划船机并开始", isLowest: true, type: 1);
|
2021-09-23 18:14:53 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public override void Show()
|
|
|
|
|
|
{
|
|
|
|
|
|
base.Show();
|
2022-03-10 18:10:34 +08:00
|
|
|
|
//var mainNav = this.transform.Find("MainNav").GetComponent<MainNav>();
|
|
|
|
|
|
//mainNav.ShowRowerTab();
|
|
|
|
|
|
|
2021-09-28 15:25:52 +08:00
|
|
|
|
transform.MyDOFade();
|
2022-04-14 19:18:44 +08:00
|
|
|
|
//Debug.Log("140,开始扫描");
|
|
|
|
|
|
//App.MainDeviceAdapter.StartScan();
|
2021-09-23 18:14:53 +08:00
|
|
|
|
Init();
|
2022-05-31 16:47:21 +08:00
|
|
|
|
CheckLocalData();
|
2021-09-23 18:14:53 +08:00
|
|
|
|
//transform.Find("Left/Rower").GetComponent<RowerAnimation>().StartAnimation();
|
|
|
|
|
|
}
|
2021-09-30 09:06:35 +08:00
|
|
|
|
void Disconnect()
|
|
|
|
|
|
{
|
|
|
|
|
|
foreach(var d in App.MainDeviceAdapter.GetDevices())
|
|
|
|
|
|
{
|
|
|
|
|
|
if ((d.State == DeviceState.Connected || d.State == DeviceState.Connecting) && (d.Sensor == SensorType.Rower || d.Sensor == SensorType.HeartRate))
|
|
|
|
|
|
{
|
|
|
|
|
|
d.Disconnect();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
App.MainDeviceAdapter.StopScan();
|
|
|
|
|
|
}
|
2021-10-22 16:21:00 +08:00
|
|
|
|
void HandleDiscardDirect()
|
|
|
|
|
|
{
|
|
|
|
|
|
openTimer = false;
|
|
|
|
|
|
isPause = true;
|
|
|
|
|
|
Debug.Log(RowerData);
|
|
|
|
|
|
btnStart.GetComponent<Image>().sprite = spriteDict["Start"];
|
|
|
|
|
|
btnStart.tag = "Start";
|
|
|
|
|
|
Init();
|
|
|
|
|
|
}
|
2021-10-21 18:04:01 +08:00
|
|
|
|
void HandleSaveDirect()
|
|
|
|
|
|
{
|
|
|
|
|
|
openTimer = false;
|
|
|
|
|
|
isPause = true;
|
|
|
|
|
|
btnStart.GetComponent<Image>().sprite = spriteDict["Start"];
|
|
|
|
|
|
btnStart.tag = "Start";
|
2022-03-28 17:42:23 +08:00
|
|
|
|
transform.Find("Stopped").gameObject.SetActive(false);
|
2022-03-30 18:25:51 +08:00
|
|
|
|
//Utils.showToast()
|
|
|
|
|
|
Action f = () =>
|
|
|
|
|
|
{
|
2022-04-19 18:09:29 +08:00
|
|
|
|
reRowData = null;
|
|
|
|
|
|
if (tempRecordData == null)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (Save()) Init();
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
if (SaveFunc(tempRecordData.model, tempRecordData.files)) Init();
|
|
|
|
|
|
}
|
2022-03-30 18:25:51 +08:00
|
|
|
|
};
|
2022-04-29 18:32:04 +08:00
|
|
|
|
createTime = UIManager.Now.GetDateTime();
|
2022-03-30 18:25:51 +08:00
|
|
|
|
if (C2RowerData.IsEnabled == true)
|
|
|
|
|
|
{
|
2022-04-06 10:21:30 +08:00
|
|
|
|
Utils.showToast(null, "Press \"Menu\" to save.", int.MaxValue, stopFunc: () => C2RowerData.isReadyStatus, endCallback: f);
|
2022-03-30 18:25:51 +08:00
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
f.Invoke();
|
|
|
|
|
|
}
|
2021-10-21 18:04:01 +08:00
|
|
|
|
}
|
2022-05-31 16:47:21 +08:00
|
|
|
|
private string Id { get; set; }
|
2022-04-29 18:32:04 +08:00
|
|
|
|
int truelyTime = 0;
|
2022-05-11 17:11:48 +08:00
|
|
|
|
private void StartFunc(object sender, EventArgs e)
|
2022-03-10 18:10:34 +08:00
|
|
|
|
{
|
2022-05-11 17:11:48 +08:00
|
|
|
|
if (openTimer) return;
|
2022-05-31 16:47:21 +08:00
|
|
|
|
Id = Guid.NewGuid().ToString();
|
2022-04-19 18:09:29 +08:00
|
|
|
|
if (transform.parent.parent.Find("ModalPanel/RowerWelldone(Clone)") && transform.parent.parent.Find("ModalPanel/RowerWelldone(Clone)").gameObject.activeInHierarchy)
|
|
|
|
|
|
{
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
2022-03-31 18:30:07 +08:00
|
|
|
|
//设定一个标准 如果满足条件不让他开始
|
|
|
|
|
|
if (C2RowerData.IsEnabled && RowerData != null && RowerData.ElapsedTime >= 5)
|
|
|
|
|
|
{
|
2022-04-06 10:21:30 +08:00
|
|
|
|
Utils.showToast(null, "Press \"Menu\" to save.", stopFunc: () => RowerData.ElapsedTime < 5);
|
2022-03-31 18:30:07 +08:00
|
|
|
|
return;
|
|
|
|
|
|
}
|
2022-03-10 18:10:34 +08:00
|
|
|
|
if (!isPause)
|
|
|
|
|
|
{
|
2022-04-29 18:32:04 +08:00
|
|
|
|
|
2022-03-10 18:10:34 +08:00
|
|
|
|
}
|
|
|
|
|
|
if (!openTimer)
|
|
|
|
|
|
{
|
2022-04-29 18:32:04 +08:00
|
|
|
|
startTime = UIManager.Now.GetDateTime();
|
|
|
|
|
|
createTime = null;
|
2022-05-31 18:40:32 +08:00
|
|
|
|
truelyTime = historyTime;
|
2022-05-09 13:18:14 +08:00
|
|
|
|
//TimerTicks();
|
2022-03-10 18:10:34 +08:00
|
|
|
|
openTimer = true;
|
|
|
|
|
|
timer = 1.0f;
|
|
|
|
|
|
}
|
|
|
|
|
|
transform.Find("Ready").gameObject.SetActive(false);
|
2022-04-19 18:09:29 +08:00
|
|
|
|
//if (UIManager.Instance.RowerWelldone)
|
|
|
|
|
|
//{
|
|
|
|
|
|
// UIManager.Instance.RowerWelldone.CloseModal();
|
|
|
|
|
|
//}
|
2022-03-10 18:10:34 +08:00
|
|
|
|
btnStart.GetComponent<Image>().sprite = spriteDict["Untagged"];
|
|
|
|
|
|
btnStart.tag = "Untagged";
|
|
|
|
|
|
}
|
2022-04-19 18:09:29 +08:00
|
|
|
|
private bool SaveFunc(RowerRecordModel model, List<string> files)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (Application.internetReachability == NetworkReachability.NotReachable)
|
|
|
|
|
|
{
|
|
|
|
|
|
transform.Find("Stopped").gameObject.SetActive(true);
|
|
|
|
|
|
Utils.showToast(null, App.GetLocalString("Please check the network status!"));
|
|
|
|
|
|
tempRecordData = new TempRecordData(model, files);
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
var res = ConfigHelper.rowerApi.Add(model, files);
|
|
|
|
|
|
if (res.result)
|
|
|
|
|
|
{
|
|
|
|
|
|
UIManager.ShowRowerWelldone(model.Id, Init);
|
2022-05-31 16:47:21 +08:00
|
|
|
|
try
|
|
|
|
|
|
{
|
|
|
|
|
|
if (File.Exists(files[0]))
|
|
|
|
|
|
{
|
|
|
|
|
|
File.Delete(files[0]);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
|
{
|
|
|
|
|
|
Debug.LogError(ex);
|
|
|
|
|
|
}
|
2022-04-19 18:09:29 +08:00
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
Utils.showToast(null, res.errMsg);
|
|
|
|
|
|
}
|
|
|
|
|
|
tempRecordData = null;
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
public class TempRecordData
|
|
|
|
|
|
{
|
|
|
|
|
|
public RowerRecordModel model;
|
|
|
|
|
|
public List<string> files;
|
|
|
|
|
|
public TempRecordData(RowerRecordModel model, List<string> files)
|
|
|
|
|
|
{
|
|
|
|
|
|
this.model = model;
|
|
|
|
|
|
this.files = files;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
TempRecordData tempRecordData;
|
|
|
|
|
|
private bool Save()
|
2021-09-23 18:14:53 +08:00
|
|
|
|
{
|
|
|
|
|
|
var bleDevice = App.MainDeviceAdapter.GetDevices().FirstOrDefault(d => (d.State == DeviceState.Connected || d.State == DeviceState.Connecting) && d.Sensor == SensorType.Rower) as BleDevice;
|
|
|
|
|
|
RowerRecordModel model = new RowerRecordModel();
|
|
|
|
|
|
model.Ticks = records.Count;
|
|
|
|
|
|
if (bleDevice != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
model.ManufacturerName = bleDevice.Name + " " + bleDevice.Network + " " + bleDevice.Sensor;
|
|
|
|
|
|
model.DeviceNumber = $"{ bleDevice.Address },{ bleDevice.Sensor }";
|
|
|
|
|
|
}
|
2022-05-31 16:47:21 +08:00
|
|
|
|
model.Id = Id;//Guid.NewGuid().ToString();
|
2021-09-23 18:14:53 +08:00
|
|
|
|
model.Weight = App.CurrentUser.Weight;
|
|
|
|
|
|
model.Kj = RowerData.TotalEnergy;
|
|
|
|
|
|
model.StartTime = startTime;
|
2022-04-29 18:32:04 +08:00
|
|
|
|
model.CreateTime = createTime.Value;
|
2021-09-23 18:14:53 +08:00
|
|
|
|
Debug.Log(values.Count);
|
|
|
|
|
|
if (values.Count > 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
model.MaxPower = values.Max(x => x.power);
|
2021-09-28 20:35:05 +08:00
|
|
|
|
if (values.Count(x => x.pace > 0) > 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
model.MaxPace = values.Where(x => x.pace > 0).Min(x => x.pace);
|
|
|
|
|
|
model.AvgPace = values.Where(x => x.pace > 0).Average(x => x.pace);
|
|
|
|
|
|
}
|
2021-09-23 18:14:53 +08:00
|
|
|
|
model.MaxRate = values.Max(x => x.rate);
|
|
|
|
|
|
model.MaxHeartRate = values.Max(x => x.heartRate);
|
|
|
|
|
|
model.AvgPower = values.Average(x => x.power);
|
|
|
|
|
|
model.AvgRate = values.Average(x => x.rate);
|
|
|
|
|
|
model.AvgHeartRate = (int)values.Average(x => x.heartRate);
|
2022-03-31 18:30:07 +08:00
|
|
|
|
model.StrokeCount = (ushort)values.Max(x=>x.strokeCount);
|
|
|
|
|
|
model.TotalDistance = (ushort)values.Max(x => x.distance);
|
2021-09-23 18:14:53 +08:00
|
|
|
|
}
|
|
|
|
|
|
model.TotalTime = RowerData.ElapsedTime;
|
2022-03-10 18:10:34 +08:00
|
|
|
|
model.Type = rowerType.type == 0 ? (int?)null : rowerType.type;
|
|
|
|
|
|
model.TypeValue = rowerType.value == 0 ? (float?)null : rowerType.value;
|
2022-03-28 17:42:23 +08:00
|
|
|
|
model.ShadowIds = string.Join(",",GetComponent<RowerMultiModeScript>().shadowList.Select(x=>x.Nid));
|
2021-09-23 18:14:53 +08:00
|
|
|
|
var path = PFConstants.RowerRecordFolder + "/" + model.Id;
|
|
|
|
|
|
Helper.CreateDirectoryIfNotExsit(path);
|
|
|
|
|
|
var files = new List<string>();
|
|
|
|
|
|
try
|
|
|
|
|
|
{
|
|
|
|
|
|
var fname = path + "/" + model.Id + ".txt";
|
|
|
|
|
|
using (var fs = new FileInfo(fname).OpenWrite())
|
|
|
|
|
|
{
|
|
|
|
|
|
var stream = new StreamWriter(fs);
|
|
|
|
|
|
stream.BaseStream.Seek(0, SeekOrigin.End);
|
2022-03-10 18:10:34 +08:00
|
|
|
|
print("结果数" + records.Count);
|
|
|
|
|
|
stream.Write(string.Join("\r\n", records));
|
|
|
|
|
|
//foreach (var item in records)
|
|
|
|
|
|
//{
|
|
|
|
|
|
// stream.Write(item + "\r\n");
|
|
|
|
|
|
//}
|
2021-09-23 18:14:53 +08:00
|
|
|
|
stream.Flush();
|
|
|
|
|
|
stream.Close();
|
|
|
|
|
|
files.Add(fname);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
|
{
|
|
|
|
|
|
Helper.DelectDir(path);
|
|
|
|
|
|
Debug.Log(ex.Message);
|
|
|
|
|
|
}
|
2022-04-19 18:09:29 +08:00
|
|
|
|
return SaveFunc(model, files);
|
2022-03-10 18:10:34 +08:00
|
|
|
|
//Disconnect();
|
2021-09-23 18:14:53 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void Init()
|
|
|
|
|
|
{
|
2022-04-19 18:09:29 +08:00
|
|
|
|
print("初始化");
|
2021-09-23 18:14:53 +08:00
|
|
|
|
if (RowerData != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
RowerData.Reset();
|
|
|
|
|
|
}
|
2021-09-29 11:06:05 +08:00
|
|
|
|
if (Rower != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
Rower.Reset();
|
|
|
|
|
|
}
|
2022-04-14 19:18:44 +08:00
|
|
|
|
GetComponent<RowerMultiModeScript>().GetShadowList(rowerType, reRowData);
|
2021-09-23 18:14:53 +08:00
|
|
|
|
btnStart.tag = "Start";
|
|
|
|
|
|
btnStart.GetComponent<Image>().sprite = spriteDict["Start"];
|
|
|
|
|
|
left.Find("Rower").GetComponent<Image>().sprite = spriteDict[0];
|
2022-06-06 18:54:04 +08:00
|
|
|
|
leftImage = left.Find("LeftImage/Value").GetComponent<Image>();
|
|
|
|
|
|
rightImage = left.Find("RightImage/Value").GetComponent<Image>();
|
|
|
|
|
|
leftImage.fillAmount = 0;
|
|
|
|
|
|
rightImage.fillAmount = 0;
|
2022-06-01 16:10:42 +08:00
|
|
|
|
TimesText.text = "---";
|
|
|
|
|
|
Caloriestext.text = "---";
|
|
|
|
|
|
rmyCaloriestext.text = "---";
|
2022-05-11 17:11:48 +08:00
|
|
|
|
pullList.Clear();
|
|
|
|
|
|
historyPullList.Clear();
|
2022-06-01 16:10:42 +08:00
|
|
|
|
//SetChartData(pullList, historyPullList);
|
2022-05-09 13:18:14 +08:00
|
|
|
|
//mid.Find("GraphChart").GetComponent<RowerGraphChartFeed>().SetData(pullList);
|
2021-09-23 18:14:53 +08:00
|
|
|
|
openTimer = false;
|
2022-03-28 17:42:23 +08:00
|
|
|
|
if (rowerType.type == 0)
|
|
|
|
|
|
{
|
2022-06-01 16:10:42 +08:00
|
|
|
|
TimeText.text = "---";
|
|
|
|
|
|
KMText.text = "---";
|
2022-03-28 17:42:23 +08:00
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
if (rowerType.type == 1)
|
|
|
|
|
|
{
|
2022-06-01 16:10:42 +08:00
|
|
|
|
TimeText.text = "---";
|
|
|
|
|
|
KMText.text = $"{rowerType.value}";
|
2022-03-28 17:42:23 +08:00
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
2022-06-01 16:10:42 +08:00
|
|
|
|
TimeText.text = TimeSpan.FromSeconds(rowerType.value).ToPFString();
|
|
|
|
|
|
KMText.text = "---";
|
2022-03-28 17:42:23 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2022-06-01 16:10:42 +08:00
|
|
|
|
WText.text = "---";
|
|
|
|
|
|
rmyWText.text = "---";
|
|
|
|
|
|
FiveText.text = "---";
|
|
|
|
|
|
MSText.text = "---";
|
2022-03-10 18:10:34 +08:00
|
|
|
|
//bottom.Find("MS/AvgValue").GetComponent<Text>().text = "---";
|
2021-09-23 18:14:53 +08:00
|
|
|
|
bottom.Find("BPM/Value").GetComponent<Text>().text = "---";
|
2022-06-01 16:10:42 +08:00
|
|
|
|
ExpectedText.text = "---";
|
2022-04-06 10:21:30 +08:00
|
|
|
|
bottom.Find("Expected/Title").GetComponent<Text>().text = bottom.Find("Expected/Title").GetComponent<Text>().text.Replace("EST",App.GetLocalString("EST"));
|
2022-06-01 16:10:42 +08:00
|
|
|
|
AvgForceText.text = "---";
|
|
|
|
|
|
rmyAvgForceText.text = "---";
|
|
|
|
|
|
PeakForceText.text = "---";
|
|
|
|
|
|
rmyPeakForceText.text = "---";
|
2022-05-11 17:11:48 +08:00
|
|
|
|
|
|
|
|
|
|
records.Clear();// = new List<string>();
|
|
|
|
|
|
values.Clear(); //= new List<TempRowerCalc>();
|
2021-09-23 18:14:53 +08:00
|
|
|
|
Kj = 0;
|
|
|
|
|
|
x = 0;
|
2021-09-28 17:51:58 +08:00
|
|
|
|
seconds = 0;
|
2021-10-21 18:04:01 +08:00
|
|
|
|
totalDistance = 0;
|
|
|
|
|
|
stopSeconds = 0;
|
2021-09-28 17:51:58 +08:00
|
|
|
|
isPause = false;
|
2022-03-10 18:10:34 +08:00
|
|
|
|
#if !UNITY_EDITOR
|
|
|
|
|
|
transform.Find("Ready").gameObject.SetActive(true);
|
|
|
|
|
|
#endif
|
|
|
|
|
|
C2RowerData.EnableChanged -= ModeChanged;
|
|
|
|
|
|
C2RowerData.EnableChanged += ModeChanged;
|
2022-05-11 17:11:48 +08:00
|
|
|
|
if (RowerData != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
RowerData.RowerResChanged -= ResChanged;
|
|
|
|
|
|
RowerData.RowerResChanged += ResChanged;
|
|
|
|
|
|
}
|
|
|
|
|
|
//FtmsRowerData.RowerResChanged -= ResChanged;
|
|
|
|
|
|
//FtmsRowerData.RowerResChanged += ResChanged;
|
2022-04-27 14:48:06 +08:00
|
|
|
|
//标志线复位
|
|
|
|
|
|
Transform leftLine = transform.Find("Rower/Modes/Scroll/M2/Track/TraceContainer/LineMeterLeft"),
|
|
|
|
|
|
rightLine = transform.Find("Rower/Modes/Scroll/M2/Track/TraceContainer/LineMeterRight"),
|
|
|
|
|
|
finishLine = transform.Find("Rower/Modes/Scroll/M2/Track/TraceContainer/LineFinish");
|
|
|
|
|
|
leftLine.localPosition = new Vector3(-207.5f+43, leftLine.localPosition.y, leftLine.localPosition.z);
|
|
|
|
|
|
rightLine.localPosition = new Vector3(164.5f+43, rightLine.localPosition.y, rightLine.localPosition.z);
|
|
|
|
|
|
finishLine.localPosition = new Vector3(-237.5f+43, finishLine.localPosition.y, finishLine.localPosition.z);
|
2022-05-31 18:40:32 +08:00
|
|
|
|
historyStrokeCount = 0;
|
|
|
|
|
|
historyDistance = 0;
|
|
|
|
|
|
historyTime = 0;
|
|
|
|
|
|
historyEnergy = 0;
|
2022-05-11 17:11:48 +08:00
|
|
|
|
|
|
|
|
|
|
Resources.UnloadUnusedAssets();
|
|
|
|
|
|
GC.Collect();
|
2021-09-23 18:14:53 +08:00
|
|
|
|
}
|
2022-03-10 18:10:34 +08:00
|
|
|
|
|
|
|
|
|
|
private void ModeChanged(object sender, EventArgs e)
|
2021-09-23 18:14:53 +08:00
|
|
|
|
{
|
2022-05-11 17:11:48 +08:00
|
|
|
|
if (RowerData != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
RowerData.PullChanged -= PaintPullCurve;
|
|
|
|
|
|
RowerData.PullChanged += PaintPullCurve;
|
|
|
|
|
|
RowerData.StartEvent -= StartFunc;
|
|
|
|
|
|
RowerData.StartEvent += StartFunc;
|
|
|
|
|
|
RowerData.RowerResChanged -= ResChanged;
|
|
|
|
|
|
RowerData.RowerResChanged += ResChanged;
|
2022-03-31 18:30:07 +08:00
|
|
|
|
}
|
2022-03-10 18:10:34 +08:00
|
|
|
|
slider.GetComponent<Slider>().interactable = !(bool)sender;
|
|
|
|
|
|
transform.Find("ResBar/BtnSub").GetComponent<Button>().interactable = !(bool)sender;
|
|
|
|
|
|
transform.Find("ResBar/BtnAdd").GetComponent<Button>().interactable = !(bool)sender;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void ResChanged(object sender, EventArgs e)
|
|
|
|
|
|
{
|
2022-04-14 19:18:44 +08:00
|
|
|
|
if ((Convert.ToSingle(sender) >= 50) && slider)
|
2022-03-30 18:25:51 +08:00
|
|
|
|
{
|
|
|
|
|
|
slider.GetComponent<PFUISlider>().SetValue((Convert.ToSingle(sender) - 50) / 300f);
|
|
|
|
|
|
}
|
2022-03-10 18:10:34 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2022-03-31 18:30:07 +08:00
|
|
|
|
|
2022-03-10 18:10:34 +08:00
|
|
|
|
public bool checkRowing()
|
|
|
|
|
|
{
|
|
|
|
|
|
if (seconds > 0)
|
2021-09-29 11:06:05 +08:00
|
|
|
|
{
|
2022-03-30 18:25:51 +08:00
|
|
|
|
Utils.showToast(null, "Please end this training.", isLowest: true, isOnly: true);
|
2022-03-10 18:10:34 +08:00
|
|
|
|
return true;
|
2021-09-29 11:06:05 +08:00
|
|
|
|
}
|
2022-03-10 18:10:34 +08:00
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
private void ReturnHome()
|
|
|
|
|
|
{
|
|
|
|
|
|
if (checkRowing()) return;
|
2022-04-14 19:18:44 +08:00
|
|
|
|
//Disconnect();
|
2021-09-23 18:14:53 +08:00
|
|
|
|
UIManager.ShowHomePanel();
|
2022-03-10 18:10:34 +08:00
|
|
|
|
UIManager.ShowRowerSelector();
|
2021-09-23 18:14:53 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Update is called once per frame
|
2022-05-09 13:18:14 +08:00
|
|
|
|
public bool openTimer { get; private set; } = false;
|
2021-09-23 18:14:53 +08:00
|
|
|
|
double x = 0f;
|
2021-10-21 18:04:01 +08:00
|
|
|
|
|
2022-03-10 18:10:34 +08:00
|
|
|
|
#if UNITY_EDITOR
|
|
|
|
|
|
List<ushort> tempList = new List<ushort>()
|
2021-09-23 18:14:53 +08:00
|
|
|
|
{
|
2022-04-27 20:03:56 +08:00
|
|
|
|
0,300,200,1100,400,500,120,130,160,0,0,0,200,300,400,500,600,500
|
2022-03-10 18:10:34 +08:00
|
|
|
|
};
|
|
|
|
|
|
int tempx = 0;
|
|
|
|
|
|
#endif
|
2022-06-01 16:10:42 +08:00
|
|
|
|
private Text WText { get; set; }
|
|
|
|
|
|
private Text rmyWText { get; set; }
|
|
|
|
|
|
private Text FiveText { get; set; }
|
|
|
|
|
|
private Text MSText { get; set; }
|
|
|
|
|
|
private Text ExpectedText { get; set; }
|
|
|
|
|
|
private Text KMText { get; set; }
|
|
|
|
|
|
private Text BPMText { get; set; }
|
|
|
|
|
|
private Text TimeText { get; set; }
|
|
|
|
|
|
|
|
|
|
|
|
private Text TimesText { get; set; }
|
|
|
|
|
|
private Text Caloriestext { get; set; }
|
|
|
|
|
|
private Text rmyCaloriestext { get; set; }
|
|
|
|
|
|
private Text AvgForceText { get; set; }
|
|
|
|
|
|
private Text rmyAvgForceText { get; set; }
|
|
|
|
|
|
private Text PeakForceText { get; set; }
|
|
|
|
|
|
private Text rmyPeakForceText { get; set; }
|
|
|
|
|
|
|
2022-03-10 18:10:34 +08:00
|
|
|
|
void TimerTicks()
|
2022-04-27 20:03:56 +08:00
|
|
|
|
{
|
2022-03-10 18:10:34 +08:00
|
|
|
|
#if UNITY_EDITOR
|
2022-04-27 20:03:56 +08:00
|
|
|
|
var a = tempList[(tempx++) % tempList.Count];
|
|
|
|
|
|
PaintPullCurve((ushort)(a / 10));
|
|
|
|
|
|
if (RowerData == null) return;
|
2022-03-10 18:10:34 +08:00
|
|
|
|
#endif
|
2021-10-25 16:13:04 +08:00
|
|
|
|
#if !UNITY_EDITOR
|
|
|
|
|
|
if (Rower == null)
|
2021-10-22 16:21:00 +08:00
|
|
|
|
{
|
|
|
|
|
|
HandleDiscardDirect();
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
2021-09-23 18:14:53 +08:00
|
|
|
|
if (RowerData == null) return;
|
2022-03-10 18:10:34 +08:00
|
|
|
|
#endif
|
2021-10-21 18:04:01 +08:00
|
|
|
|
var heartRate = HeartRate ?? 0;
|
2022-06-01 16:10:42 +08:00
|
|
|
|
BPMText.text = heartRate.ToString();
|
2022-05-31 18:40:32 +08:00
|
|
|
|
//断线重连继续
|
|
|
|
|
|
var distance = (int)RowerData.TotalDistance + historyDistance;
|
|
|
|
|
|
var energy = RowerData.TotalEnergy + historyEnergy;
|
|
|
|
|
|
var strokeCount = RowerData.StrokeCount + historyStrokeCount;
|
|
|
|
|
|
|
2022-03-28 17:42:23 +08:00
|
|
|
|
var power = RowerData.InstantaneousPower;
|
|
|
|
|
|
var rate = RowerData.StrokeRate;
|
2022-04-29 18:32:04 +08:00
|
|
|
|
truelyTime++;
|
2022-03-10 18:10:34 +08:00
|
|
|
|
TempRowerCalc tmpdata = null;
|
2022-03-31 18:30:07 +08:00
|
|
|
|
|
|
|
|
|
|
//里程停止逻辑
|
2022-06-01 09:54:20 +08:00
|
|
|
|
if (totalDistance == RowerData.TotalDistance + historyDistance)
|
2021-10-21 18:04:01 +08:00
|
|
|
|
{
|
|
|
|
|
|
//判定一次停止
|
|
|
|
|
|
stopSeconds++;
|
|
|
|
|
|
}
|
2022-03-31 18:30:07 +08:00
|
|
|
|
else
|
2021-10-21 18:04:01 +08:00
|
|
|
|
{
|
|
|
|
|
|
stopSeconds = 0;
|
2022-03-10 18:10:34 +08:00
|
|
|
|
transform.Find("Stopped").gameObject.SetActive(false);
|
2021-10-21 18:04:01 +08:00
|
|
|
|
}
|
2022-03-10 18:10:34 +08:00
|
|
|
|
if (stopSeconds >= 2)
|
2021-10-21 18:04:01 +08:00
|
|
|
|
{
|
2022-03-10 18:10:34 +08:00
|
|
|
|
transform.Find("Stopped").gameObject.SetActive(true);
|
|
|
|
|
|
//if (stopSeconds == 6)
|
|
|
|
|
|
//{
|
|
|
|
|
|
// Utils.showToast(null, "Please keep rowing...", duration: 60, stopFunc: () => stopSeconds < 6, isLowest: true);
|
|
|
|
|
|
//}
|
|
|
|
|
|
if (rowerType.type == 2)
|
|
|
|
|
|
{
|
2022-03-31 18:30:07 +08:00
|
|
|
|
var remainTime = rowerType.value - (++seconds);
|
|
|
|
|
|
if (remainTime == 0)
|
2022-03-10 18:10:34 +08:00
|
|
|
|
{
|
2022-04-29 18:32:04 +08:00
|
|
|
|
records.Add($"{strokeCount},{RowerData.ElapsedTime},{distance},0,0,0,{RowerData.ResistanceLevel},{heartRate},{energy},{RowerData.AveragePower},{truelyTime}");
|
2022-03-28 17:42:23 +08:00
|
|
|
|
tmpdata = new TempRowerCalc() { strokeCount = strokeCount, pace = 0, power = 0, rate = 0, heartRate = heartRate, distance = distance, energy = energy };
|
|
|
|
|
|
values.Add(tmpdata);
|
|
|
|
|
|
SendDataToRace(tmpdata);
|
2022-03-10 18:10:34 +08:00
|
|
|
|
HandleSaveDirect();
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
2022-03-28 17:42:23 +08:00
|
|
|
|
TimeSpan.FromSeconds(remainTime).ToPFString();
|
2022-06-01 16:10:42 +08:00
|
|
|
|
TimeText.text = TimeSpan.FromSeconds(remainTime).ToPFString();
|
2022-03-10 18:10:34 +08:00
|
|
|
|
}
|
2022-03-31 18:30:07 +08:00
|
|
|
|
else
|
2022-03-10 18:10:34 +08:00
|
|
|
|
{
|
2022-06-01 16:10:42 +08:00
|
|
|
|
TimeText.text = TimeSpan.FromSeconds(++seconds).ToPFString();
|
2022-03-10 18:10:34 +08:00
|
|
|
|
}
|
2022-06-01 16:10:42 +08:00
|
|
|
|
WText.text = "---";
|
|
|
|
|
|
rmyWText.text = "---";
|
|
|
|
|
|
FiveText.text = "---";
|
|
|
|
|
|
MSText.text = "---";
|
|
|
|
|
|
ExpectedText.text = "---";
|
2022-04-29 18:32:04 +08:00
|
|
|
|
records.Add($"{strokeCount},{RowerData.ElapsedTime},{distance},0,0,0,{RowerData.ResistanceLevel},{heartRate},{energy},{RowerData.AveragePower},{truelyTime}");
|
2022-03-10 18:10:34 +08:00
|
|
|
|
tmpdata = new TempRowerCalc() { strokeCount = strokeCount, pace = 0, power = 0, rate = 0, heartRate = heartRate, distance = distance, energy = energy };
|
|
|
|
|
|
values.Add(tmpdata);
|
|
|
|
|
|
SendDataToRace(tmpdata);
|
2021-10-21 18:04:01 +08:00
|
|
|
|
return;
|
2021-10-22 16:21:00 +08:00
|
|
|
|
}
|
2022-03-31 18:30:07 +08:00
|
|
|
|
|
2022-03-10 18:10:34 +08:00
|
|
|
|
totalDistance = (uint)distance;
|
|
|
|
|
|
|
|
|
|
|
|
var pace = RowerData.InstantaneousPace;
|
2022-03-30 18:25:51 +08:00
|
|
|
|
|
|
|
|
|
|
|
2022-06-01 16:10:42 +08:00
|
|
|
|
WText.text = power.ToString();
|
|
|
|
|
|
rmyWText.text = power.ToString();
|
|
|
|
|
|
FiveText.text = TimeSpan.FromSeconds(pace).ToPFString();
|
|
|
|
|
|
MSText.text = rate.ToString();
|
|
|
|
|
|
TimesText.text = strokeCount.ToString();
|
|
|
|
|
|
Caloriestext.text = energy.ToString();
|
|
|
|
|
|
rmyCaloriestext.text = energy.ToString();
|
|
|
|
|
|
AvgForceText.text = RowerData.AverageDriveForce.ToString("#0");
|
|
|
|
|
|
rmyAvgForceText.text = RowerData.AverageDriveForce.ToString("#0");
|
|
|
|
|
|
PeakForceText.text = RowerData.PeakDriveForce.ToString("#0");
|
|
|
|
|
|
rmyPeakForceText.text = RowerData.PeakDriveForce.ToString("#0");
|
2022-03-30 18:25:51 +08:00
|
|
|
|
if (pace != 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (rowerType.type == 1)
|
|
|
|
|
|
{
|
|
|
|
|
|
//设置里程时 显示预估时间 当前时间+剩余里程/配速(转换)
|
|
|
|
|
|
var remainDistance = rowerType.value - totalDistance;
|
|
|
|
|
|
var time = values.Count + (remainDistance / (500f / pace));
|
2022-06-01 16:10:42 +08:00
|
|
|
|
ExpectedText.text = TimeSpan.FromSeconds(time).ToPFString();
|
2022-03-30 18:25:51 +08:00
|
|
|
|
}
|
|
|
|
|
|
else if (rowerType.type == 2)
|
|
|
|
|
|
{
|
|
|
|
|
|
var remainTime = rowerType.value - values.Count;
|
|
|
|
|
|
var dis = totalDistance + (remainTime * (500f / pace));
|
|
|
|
|
|
//设置时间时 显示预估里程 当前里程+剩余时间*配速
|
2022-06-01 16:10:42 +08:00
|
|
|
|
ExpectedText.text = $"{dis:#0}";
|
2022-03-30 18:25:51 +08:00
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
//自由滑 显示30min里程 当前里程+剩余时间*配速
|
|
|
|
|
|
var count30 = ((int)Math.Ceiling(values.Count / 1800f));
|
|
|
|
|
|
var remainTime = count30 * 1800 - values.Count;
|
|
|
|
|
|
var dif = 0;
|
|
|
|
|
|
if (count30 > 1 && (count30 - 1) * 1800 - 1 < values.Count)
|
|
|
|
|
|
{
|
|
|
|
|
|
dif = values[(count30 - 1) * 1800 - 1].distance;
|
|
|
|
|
|
}
|
|
|
|
|
|
var dis = totalDistance - dif + (remainTime * (500f / pace));
|
|
|
|
|
|
//设置时间时 显示预估里程 当前里程+剩余时间*配速
|
2022-06-01 16:10:42 +08:00
|
|
|
|
ExpectedText.text = $"{dis:#0}";
|
2022-03-30 18:25:51 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
2022-03-10 18:10:34 +08:00
|
|
|
|
if (rowerType.type == 2)
|
2021-10-22 16:21:00 +08:00
|
|
|
|
{
|
2022-03-31 18:30:07 +08:00
|
|
|
|
var remainTime = rowerType.value - (++seconds);
|
2022-06-01 16:10:42 +08:00
|
|
|
|
TimeText.text = TimeSpan.FromSeconds(remainTime).ToPFString();
|
2022-03-10 18:10:34 +08:00
|
|
|
|
if (remainTime == 0)
|
|
|
|
|
|
{
|
2022-04-29 18:32:04 +08:00
|
|
|
|
records.Add($"{strokeCount},{RowerData.ElapsedTime},{distance},{RowerData.InstantaneousPower},{RowerData.InstantaneousPace},{RowerData.StrokeRate},{RowerData.ResistanceLevel},{heartRate},{energy},{RowerData.AveragePower},{truelyTime}");
|
2022-03-28 17:42:23 +08:00
|
|
|
|
tmpdata = new TempRowerCalc() { strokeCount = strokeCount, pace = pace, power = power, rate = rate, heartRate = heartRate, distance = distance, energy = energy };
|
|
|
|
|
|
values.Add(tmpdata);
|
|
|
|
|
|
SendDataToRace(tmpdata);
|
2022-03-10 18:10:34 +08:00
|
|
|
|
HandleSaveDirect();
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
2022-06-01 16:10:42 +08:00
|
|
|
|
TimeText.text = TimeSpan.FromSeconds(++seconds).ToPFString();
|
2021-10-22 16:21:00 +08:00
|
|
|
|
}
|
2022-03-10 18:10:34 +08:00
|
|
|
|
if (rowerType.type == 1)
|
2021-10-21 18:04:01 +08:00
|
|
|
|
{
|
2022-03-10 18:10:34 +08:00
|
|
|
|
var remainDistance = rowerType.value - totalDistance;
|
2022-03-31 18:30:07 +08:00
|
|
|
|
if (remainDistance <= 0)
|
2021-10-21 18:04:01 +08:00
|
|
|
|
{
|
2022-06-01 16:10:42 +08:00
|
|
|
|
KMText.text = "0";
|
2022-04-29 18:32:04 +08:00
|
|
|
|
records.Add($"{strokeCount},{RowerData.ElapsedTime},{distance},{RowerData.InstantaneousPower},{RowerData.InstantaneousPace},{RowerData.StrokeRate},{RowerData.ResistanceLevel},{heartRate},{energy},{RowerData.AveragePower},{truelyTime}");
|
2022-03-28 17:42:23 +08:00
|
|
|
|
tmpdata = new TempRowerCalc() { strokeCount = strokeCount, pace = pace, power = power, rate = rate, heartRate = heartRate, distance = distance, energy = energy };
|
|
|
|
|
|
values.Add(tmpdata);
|
|
|
|
|
|
SendDataToRace(tmpdata);
|
2022-03-10 18:10:34 +08:00
|
|
|
|
HandleSaveDirect();
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
2022-06-01 16:10:42 +08:00
|
|
|
|
KMText.text = remainDistance.ToString();
|
2022-03-10 18:10:34 +08:00
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
2022-06-01 16:10:42 +08:00
|
|
|
|
KMText.text = totalDistance.ToString();
|
2022-03-10 18:10:34 +08:00
|
|
|
|
}
|
2022-03-31 18:30:07 +08:00
|
|
|
|
|
2022-04-29 18:32:04 +08:00
|
|
|
|
records.Add($"{strokeCount},{RowerData.ElapsedTime},{distance},{RowerData.InstantaneousPower},{RowerData.InstantaneousPace},{RowerData.StrokeRate},{RowerData.ResistanceLevel},{heartRate},{energy},{RowerData.AveragePower},{truelyTime}");
|
2022-03-10 18:10:34 +08:00
|
|
|
|
tmpdata = new TempRowerCalc() { strokeCount = strokeCount, pace = pace, power = power, rate = rate, heartRate = heartRate, distance = distance, energy = energy };
|
|
|
|
|
|
values.Add(tmpdata);
|
|
|
|
|
|
SendDataToRace(tmpdata);
|
2022-03-31 18:30:07 +08:00
|
|
|
|
if (C2RowerData.IsEnabled == true && C2RowerData.isReadyStatus && values.Count()>10)
|
|
|
|
|
|
{
|
|
|
|
|
|
HandleSaveDirect();
|
|
|
|
|
|
}
|
2022-05-31 16:47:21 +08:00
|
|
|
|
if (ticks % 5 == 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
SaveRealTimes();//实时保存数据
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
//检查本地数据
|
2022-05-31 18:40:32 +08:00
|
|
|
|
int historyDistance = 0,historyStrokeCount = 0,historyEnergy = 0;
|
|
|
|
|
|
public int historyTime = 0;
|
2022-05-31 16:47:21 +08:00
|
|
|
|
private void CheckLocalData()
|
|
|
|
|
|
{
|
|
|
|
|
|
try
|
|
|
|
|
|
{
|
2022-06-01 10:24:23 +08:00
|
|
|
|
var dir = $"{PFConstants.RowerRecordCacheFolder}/{App.CurrentUser.Id}/";
|
|
|
|
|
|
var hasLocalData = Directory.Exists(dir);
|
|
|
|
|
|
if (hasLocalData)
|
2022-05-31 16:47:21 +08:00
|
|
|
|
{
|
2022-06-01 10:24:23 +08:00
|
|
|
|
var files = Directory.GetFiles(dir);
|
|
|
|
|
|
if (files.Length == 0)
|
|
|
|
|
|
return;
|
|
|
|
|
|
UIManager.ShowConfirm(App.GetLocalString("Warning"), App.GetLocalString("Continue the game?"), () =>
|
2022-05-31 16:47:21 +08:00
|
|
|
|
{
|
|
|
|
|
|
var str = File.ReadAllText(files[0]);
|
|
|
|
|
|
var list = str.Replace("\r\n", " ").Split(' ');
|
|
|
|
|
|
records.Clear();
|
|
|
|
|
|
foreach (var item in list)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (!string.IsNullOrEmpty(item))
|
|
|
|
|
|
{
|
|
|
|
|
|
records.Add(item);
|
|
|
|
|
|
}
|
2022-05-31 18:40:32 +08:00
|
|
|
|
//records.Add($"{strokeCount},{RowerData.ElapsedTime},{distance},{power},{pace},{rate},{RowerData.ResistanceLevel},{heartRate},{energy},{RowerData.AveragePower},{truelyTime}");
|
|
|
|
|
|
var _re = records.LastOrDefault();
|
|
|
|
|
|
if (!string.IsNullOrEmpty(_re))
|
|
|
|
|
|
{
|
|
|
|
|
|
var datas = _re.Split(',');
|
|
|
|
|
|
historyStrokeCount = int.Parse(datas[0]);
|
|
|
|
|
|
historyDistance = int.Parse(datas[2]);
|
|
|
|
|
|
historyTime = int.Parse(datas[10]);
|
2022-06-01 09:54:20 +08:00
|
|
|
|
seconds = historyTime;
|
2022-05-31 18:40:32 +08:00
|
|
|
|
historyEnergy = int.Parse(datas[8]);
|
2022-06-01 09:54:20 +08:00
|
|
|
|
var historyRowerType = PlayerPrefs.GetString("historyRowerType");
|
|
|
|
|
|
if (!string.IsNullOrEmpty(historyRowerType))
|
|
|
|
|
|
{
|
|
|
|
|
|
var typeObject = historyRowerType.Split(',');
|
|
|
|
|
|
rowerType = new RowerType() { type = int.Parse(typeObject[0]), value = float.Parse(typeObject[1]) };
|
|
|
|
|
|
HandleSelectType();
|
|
|
|
|
|
}
|
2022-05-31 18:40:32 +08:00
|
|
|
|
}
|
2022-05-31 16:47:21 +08:00
|
|
|
|
}
|
2022-06-01 16:10:42 +08:00
|
|
|
|
Helper.DelectDir(dir);
|
2022-05-31 16:47:21 +08:00
|
|
|
|
UIManager.CloseConfirm();
|
|
|
|
|
|
}, 2,
|
|
|
|
|
|
() =>
|
|
|
|
|
|
{
|
2022-06-01 16:10:42 +08:00
|
|
|
|
Helper.DelectDir(dir);
|
2022-05-31 16:47:21 +08:00
|
|
|
|
UIManager.CloseConfirm();
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
|
{
|
|
|
|
|
|
Debug.LogError(e);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
//5s钟保存
|
|
|
|
|
|
private void SaveRealTimes()
|
|
|
|
|
|
{
|
|
|
|
|
|
try
|
|
|
|
|
|
{
|
2022-06-01 10:24:23 +08:00
|
|
|
|
var dir = $"{PFConstants.RowerRecordCacheFolder}/{App.CurrentUser.Id}/";
|
|
|
|
|
|
var path = $"{dir}/{Id}.txt";
|
|
|
|
|
|
if (!Directory.Exists(dir))
|
|
|
|
|
|
{
|
|
|
|
|
|
Directory.CreateDirectory(dir);
|
|
|
|
|
|
}
|
2022-05-31 16:47:21 +08:00
|
|
|
|
File.WriteAllText(path, string.Join("\r\n", records));
|
2022-06-01 09:54:20 +08:00
|
|
|
|
PlayerPrefs.SetString("historyRowerType", $"{rowerType.type},{rowerType.value}");
|
2022-05-31 16:47:21 +08:00
|
|
|
|
}
|
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
|
{
|
|
|
|
|
|
Debug.LogError(e);
|
|
|
|
|
|
}
|
2021-09-23 18:14:53 +08:00
|
|
|
|
}
|
2022-06-01 16:10:42 +08:00
|
|
|
|
|
|
|
|
|
|
private RowerMultiModeScript rowerMultiModeScript { get; set; }
|
2022-03-10 18:10:34 +08:00
|
|
|
|
void SendDataToRace(TempRowerCalc tmpdata)
|
|
|
|
|
|
{
|
2022-06-01 16:10:42 +08:00
|
|
|
|
rowerMultiModeScript.HandleTimeTick(new RowerChartModel
|
2022-03-10 18:10:34 +08:00
|
|
|
|
{
|
|
|
|
|
|
Pace = tmpdata.pace,
|
|
|
|
|
|
Power = tmpdata.power,
|
|
|
|
|
|
HeartRate = tmpdata.heartRate,
|
|
|
|
|
|
Rate = tmpdata.rate,
|
|
|
|
|
|
Distance = tmpdata.distance,
|
|
|
|
|
|
StrokeCount = tmpdata.strokeCount
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
2021-09-23 18:14:53 +08:00
|
|
|
|
|
|
|
|
|
|
void PaintPullCurve(object sender, EventArgs e)
|
|
|
|
|
|
{
|
2022-03-10 18:10:34 +08:00
|
|
|
|
var ftms = (IRowerCommonData)sender;
|
2021-10-21 18:04:01 +08:00
|
|
|
|
//Debug.Log(ftms.PullValue);
|
2021-09-23 18:14:53 +08:00
|
|
|
|
PaintPullCurve(ftms.PullValue);
|
|
|
|
|
|
}
|
2021-09-29 11:06:05 +08:00
|
|
|
|
bool isPlay = false;
|
2022-06-06 18:54:04 +08:00
|
|
|
|
int pointCount = 0;
|
2021-09-23 18:14:53 +08:00
|
|
|
|
void PaintPullCurve(ushort y)
|
|
|
|
|
|
{
|
2022-06-06 18:54:04 +08:00
|
|
|
|
|
2022-03-10 18:10:34 +08:00
|
|
|
|
Debug.Log("收到拉力" + y + ","+ DateTime.Now.Ticks);
|
2022-05-11 17:11:48 +08:00
|
|
|
|
//#if !UNITY_EDITOR
|
|
|
|
|
|
// if (!openTimer)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// if (y > 0 && !isPause)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// StartFunc();
|
|
|
|
|
|
// }
|
|
|
|
|
|
// else
|
|
|
|
|
|
// {
|
|
|
|
|
|
// return;
|
|
|
|
|
|
// }
|
|
|
|
|
|
// }
|
|
|
|
|
|
//#endif
|
2021-10-25 16:13:04 +08:00
|
|
|
|
//if (y > 1200) y = 1200;
|
2021-09-23 18:14:53 +08:00
|
|
|
|
//拉力条
|
2022-06-06 18:54:04 +08:00
|
|
|
|
|
2022-04-27 14:48:06 +08:00
|
|
|
|
var rate = ((float)y) * 2 / 120;
|
2021-09-29 11:06:05 +08:00
|
|
|
|
if (rate > 1) rate = 1f;
|
2022-06-06 18:54:04 +08:00
|
|
|
|
leftImage.fillAmount = rate;
|
|
|
|
|
|
rightImage.fillAmount = rate;
|
|
|
|
|
|
|
2021-09-23 18:14:53 +08:00
|
|
|
|
//动画
|
2021-09-28 20:35:05 +08:00
|
|
|
|
//left.Find("Rower").GetComponent<Image>().sprite = spriteDict[y / 67];
|
2021-09-23 18:14:53 +08:00
|
|
|
|
//曲线
|
|
|
|
|
|
if (y == 0)
|
|
|
|
|
|
{
|
2022-06-06 18:54:04 +08:00
|
|
|
|
//if (pullList.Count == 0)
|
|
|
|
|
|
if(pointCount == 0)
|
2021-09-23 18:14:53 +08:00
|
|
|
|
{
|
2021-09-29 11:06:05 +08:00
|
|
|
|
isPlay = true;
|
2022-04-27 20:03:56 +08:00
|
|
|
|
x = 0.1;
|
2022-06-06 18:54:04 +08:00
|
|
|
|
pointCount++;
|
2021-09-23 18:14:53 +08:00
|
|
|
|
pullList.Add(new DoubleVector2(x, y));
|
2022-06-06 18:54:04 +08:00
|
|
|
|
//SetChartData(pullList, historyPullList);
|
|
|
|
|
|
SetChartData(x, y);
|
2021-09-23 18:14:53 +08:00
|
|
|
|
}
|
2022-06-06 18:54:04 +08:00
|
|
|
|
//else if (pullList.Count > 1)
|
|
|
|
|
|
else if(pointCount > 1)
|
2021-09-23 18:14:53 +08:00
|
|
|
|
{
|
|
|
|
|
|
x += 0.1;
|
2022-06-06 18:54:04 +08:00
|
|
|
|
pointCount++;
|
2021-09-23 18:14:53 +08:00
|
|
|
|
pullList.Add(new DoubleVector2(x, y));
|
2022-06-06 18:54:04 +08:00
|
|
|
|
SetChartData(x, y);
|
|
|
|
|
|
//SetChartData(pullList, historyPullList);
|
|
|
|
|
|
//historyPullList = pullList.Select(x => x).ToList();
|
2021-09-23 18:14:53 +08:00
|
|
|
|
pullList.Clear();
|
2022-06-06 18:54:04 +08:00
|
|
|
|
pointCount = 0;
|
|
|
|
|
|
ClearChart();
|
2022-04-27 20:03:56 +08:00
|
|
|
|
x = 0.1;
|
2021-09-29 11:06:05 +08:00
|
|
|
|
isPlay = true;
|
2021-09-23 18:14:53 +08:00
|
|
|
|
pullList.Add(new DoubleVector2(x, y));
|
|
|
|
|
|
}
|
2021-10-22 16:21:00 +08:00
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
//只有0并且两秒没拉,曲线消失
|
|
|
|
|
|
if (stopSeconds == 1)
|
|
|
|
|
|
{
|
2022-06-06 18:54:04 +08:00
|
|
|
|
ClearChart();
|
|
|
|
|
|
//SetChartData(new List<DoubleVector2>(), new List<DoubleVector2>());
|
2021-10-22 16:21:00 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
2021-09-23 18:14:53 +08:00
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
x += 0.1;
|
2022-06-06 18:54:04 +08:00
|
|
|
|
pointCount++;
|
2021-09-23 18:14:53 +08:00
|
|
|
|
pullList.Add(new DoubleVector2(x, y));
|
2022-06-06 18:54:04 +08:00
|
|
|
|
//if (pullList.Count > 5 && isPlay)
|
|
|
|
|
|
if (pointCount > 5 && isPlay)
|
2021-09-29 11:06:05 +08:00
|
|
|
|
{
|
|
|
|
|
|
Debug.Log("开始动画");
|
|
|
|
|
|
isPlay = false;
|
2022-05-11 17:11:48 +08:00
|
|
|
|
//left.Find("Rower").GetComponent<RowerAnimation>().StartAnimation();
|
2021-09-29 11:06:05 +08:00
|
|
|
|
}
|
2022-06-06 18:54:04 +08:00
|
|
|
|
//SetChartData(pullList, historyPullList);
|
|
|
|
|
|
SetChartData(x, y);
|
2021-09-23 18:14:53 +08:00
|
|
|
|
}
|
2021-10-21 18:04:01 +08:00
|
|
|
|
//Debug.Log($"{x},{y}");
|
2021-09-23 18:14:53 +08:00
|
|
|
|
//transform.Find("Mid/GraphChart").GetComponent<RowerGraphChartFeed>().SetData(pullList);
|
|
|
|
|
|
//pullList.Add(new DoubleVector2(x, y));
|
|
|
|
|
|
//if (pullList.Count >= 75)
|
|
|
|
|
|
//{
|
|
|
|
|
|
// pullList.RemoveAt(0);
|
|
|
|
|
|
// pullList = pullList.Select(val => new DoubleVector2(val.x - 0.1, val.y)).ToList();
|
|
|
|
|
|
//}
|
|
|
|
|
|
//else
|
|
|
|
|
|
//{
|
|
|
|
|
|
// x += 0.1f;
|
|
|
|
|
|
//}
|
|
|
|
|
|
}
|
2022-06-06 18:54:04 +08:00
|
|
|
|
void ClearChart()
|
|
|
|
|
|
{
|
|
|
|
|
|
rowerGraphChartFeed.ClearChart();
|
|
|
|
|
|
graphChartFeed.ClearChart();
|
|
|
|
|
|
}
|
|
|
|
|
|
double preX, preY;
|
|
|
|
|
|
void SetChartData(double x, double y)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (M1.localPosition.x == 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
rowerGraphChartFeed.SetCurrentPoint(x, y);
|
|
|
|
|
|
var index = pullList.Count - 1 < 0 ? 0 : pullList.Count - 1;
|
|
|
|
|
|
var pre = pullList[index];
|
|
|
|
|
|
rowerGraphChartFeed.SetPrePoint(pre.x, pre.y);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
graphChartFeed.SetCurrentPoint(x, y);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
2022-05-09 13:18:14 +08:00
|
|
|
|
void SetChartData(List<DoubleVector2> v1, List<DoubleVector2> v2)
|
|
|
|
|
|
{
|
2022-06-06 18:54:04 +08:00
|
|
|
|
//graph.DataSource.AddPointToCategoryRealtime("Player 2", item.x, item.y);
|
2022-06-01 16:10:42 +08:00
|
|
|
|
if (M1.localPosition.x == 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
rowerGraphChartFeed.SetData(v1, v2);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
graphChartFeed.SetData(v1);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2022-05-09 13:18:14 +08:00
|
|
|
|
}
|
|
|
|
|
|
float staticTimer = 1f,shortTimer = 0.25f;
|
2022-05-31 16:47:21 +08:00
|
|
|
|
int ticks { get; set; } = 0;
|
2021-09-23 18:14:53 +08:00
|
|
|
|
void Update()
|
|
|
|
|
|
{
|
2022-04-27 20:03:56 +08:00
|
|
|
|
#if UNITY_EDITOR
|
|
|
|
|
|
if (openTimer || true)
|
|
|
|
|
|
#else
|
|
|
|
|
|
if (openTimer)
|
|
|
|
|
|
#endif
|
2021-09-23 18:14:53 +08:00
|
|
|
|
{
|
|
|
|
|
|
timer -= Time.deltaTime;
|
2022-05-09 13:18:14 +08:00
|
|
|
|
shortTimer -= Time.deltaTime;
|
|
|
|
|
|
if (shortTimer <= 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
ShortUpdateData();
|
|
|
|
|
|
shortTimer += 0.25f;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (openTimer && timer <= 0)
|
2021-09-23 18:14:53 +08:00
|
|
|
|
{
|
|
|
|
|
|
TimerTicks();
|
2022-05-31 16:47:21 +08:00
|
|
|
|
ticks++;
|
2021-09-23 18:14:53 +08:00
|
|
|
|
timer = 1f + timer;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2022-03-10 18:10:34 +08:00
|
|
|
|
|
|
|
|
|
|
staticTimer -= Time.deltaTime;
|
|
|
|
|
|
if (staticTimer <= 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
HandleStatic();
|
|
|
|
|
|
staticTimer += 1f;
|
|
|
|
|
|
}
|
2022-04-19 18:09:29 +08:00
|
|
|
|
|
2022-05-09 13:18:14 +08:00
|
|
|
|
//shortTimer -= Time.deltaTime;
|
|
|
|
|
|
//if (shortTimer <= 0)
|
|
|
|
|
|
//{
|
|
|
|
|
|
// if (openTimer)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// ShortUpdateData();
|
|
|
|
|
|
// }
|
|
|
|
|
|
// shortTimer += 0.5f;
|
|
|
|
|
|
//}
|
2022-04-19 18:09:29 +08:00
|
|
|
|
}
|
|
|
|
|
|
void ShortUpdateData()
|
|
|
|
|
|
{
|
|
|
|
|
|
if (RowerData == null) return;
|
|
|
|
|
|
var power = RowerData.InstantaneousPower;
|
|
|
|
|
|
var rate = RowerData.StrokeRate;
|
|
|
|
|
|
var pace = RowerData.InstantaneousPace;
|
2022-04-29 18:32:04 +08:00
|
|
|
|
var strokeCount = RowerData.StrokeCount;
|
|
|
|
|
|
var distance = (int)RowerData.TotalDistance;
|
|
|
|
|
|
var energy = RowerData.TotalEnergy;
|
|
|
|
|
|
var heartRate = HeartRate ?? 0;
|
|
|
|
|
|
if (rowerType.type == 1 && totalDistance >=rowerType.value && !createTime.HasValue)
|
|
|
|
|
|
{
|
|
|
|
|
|
openTimer = false;
|
2022-06-01 16:10:42 +08:00
|
|
|
|
KMText.text = "0";
|
2022-04-29 18:32:04 +08:00
|
|
|
|
records.Add($"{strokeCount},{RowerData.ElapsedTime},{distance},{power},{pace},{rate},{RowerData.ResistanceLevel},{heartRate},{energy},{RowerData.AveragePower},{truelyTime}");
|
|
|
|
|
|
var tmpdata = new TempRowerCalc() { strokeCount = strokeCount, pace = pace, power = power, rate = rate, heartRate = heartRate, distance = distance, energy = energy };
|
|
|
|
|
|
values.Add(tmpdata);
|
|
|
|
|
|
SendDataToRace(tmpdata);
|
|
|
|
|
|
HandleSaveDirect();
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
2022-04-19 18:09:29 +08:00
|
|
|
|
if (stopSeconds >= 2)
|
|
|
|
|
|
{
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
2022-06-01 16:10:42 +08:00
|
|
|
|
WText.text = power.ToString();
|
|
|
|
|
|
rmyWText.text = power.ToString();
|
|
|
|
|
|
FiveText.text = TimeSpan.FromSeconds(pace).ToPFString();
|
|
|
|
|
|
MSText.text = rate.ToString();
|
2022-05-11 17:11:48 +08:00
|
|
|
|
|
2022-03-10 18:10:34 +08:00
|
|
|
|
}
|
|
|
|
|
|
void HandleStatic()
|
|
|
|
|
|
{
|
|
|
|
|
|
if (transform.Find("Ready").gameObject.activeInHierarchy)
|
|
|
|
|
|
{
|
|
|
|
|
|
var flag = Rower != null && RowerData != null;
|
|
|
|
|
|
transform.Find("Ready/DeviceStatus").gameObject.SetActive(!flag);
|
2022-03-28 17:42:23 +08:00
|
|
|
|
transform.Find("Ready/Img").gameObject.SetActive(flag);
|
|
|
|
|
|
transform.Find("Ready/Text").gameObject.SetActive(flag);
|
2022-03-10 18:10:34 +08:00
|
|
|
|
transform.Find("Ready/DeviceStatusConnect").gameObject.SetActive(flag);
|
|
|
|
|
|
}
|
2022-03-30 18:25:51 +08:00
|
|
|
|
if (Rower != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (C2RowerData.IsEnabled == true && !openTimer && !isPause && C2RowerData.rowerType!=null)
|
|
|
|
|
|
{
|
|
|
|
|
|
rowerType = C2RowerData.rowerType;
|
|
|
|
|
|
HandleSelectType();
|
|
|
|
|
|
}
|
2022-05-11 17:11:48 +08:00
|
|
|
|
//if (C2RowerData.IsEnabled)
|
|
|
|
|
|
//{
|
|
|
|
|
|
// Rower.C2GetStatus(new byte[] { 0xc1 });
|
|
|
|
|
|
//}
|
2022-03-30 18:25:51 +08:00
|
|
|
|
}
|
2021-09-23 18:14:53 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|