骑行界面调整,底层逻辑细化
This commit is contained in:
1 parent
d5133ee7b0
commit
9a7830f46a
168 files changed
+19164
-393
No files matched your search
@@ -0,0 +1,536 @@
|
||||
using GeoJSON.Net.Geometry;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Assets.Scenes.Ride.Scripts.Model
|
||||
{
|
||||
/// <summary>
|
||||
/// 排名
|
||||
/// </summary>
|
||||
public class CompetitionRankingSortModel
|
||||
{
|
||||
public int Index { get; set; }
|
||||
public string Name { get; set; }
|
||||
|
||||
public string Headimage { get; set; }
|
||||
|
||||
public double Near { get; set; }
|
||||
|
||||
public string KGWeight { get; set; }
|
||||
|
||||
public double Speed { get; set; }
|
||||
|
||||
public string CountryImg { get; set; }
|
||||
|
||||
public int UserId { get; set; }
|
||||
|
||||
public bool IsSelf { get; set; }
|
||||
}
|
||||
/// <summary>
|
||||
/// 结果页模型
|
||||
/// </summary>
|
||||
public class CompetitionResultModel
|
||||
{
|
||||
public int Index { get; set; }
|
||||
|
||||
public string Name { get; set; }
|
||||
|
||||
//public string Time { get; set; }
|
||||
|
||||
public double Power { get; set; }
|
||||
public double WeightKg { get; set; }
|
||||
public double Weight { get; set; }
|
||||
public double BicycleWeight { get; set; }
|
||||
|
||||
public double HeartRate { get; set; }
|
||||
|
||||
public string DeviceType { get; set; }
|
||||
|
||||
public string CreateTime { get; set; }
|
||||
/// <summary>
|
||||
/// 骑行时长
|
||||
/// </summary>
|
||||
public string TripTime { get; set; }
|
||||
|
||||
public string CompleteTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 与冲线时间的差距
|
||||
/// </summary>
|
||||
public string Gap { get; set; }
|
||||
}
|
||||
public class RankingDataModel
|
||||
{
|
||||
public int UserId { get; set; }
|
||||
|
||||
public TargetData data { get; set; }
|
||||
}
|
||||
|
||||
public class RankingSortData
|
||||
{
|
||||
public int Index { get; set; }
|
||||
public int UserId { get; set; }
|
||||
|
||||
public string WxHeadImg { get; set; }
|
||||
|
||||
public string NickName { get; set; }
|
||||
/// <summary>
|
||||
/// 注意这里TotalTime不是时间是距离,为了重用前端组件,没改名称
|
||||
/// </summary>
|
||||
public double TotalTime { get; set; }
|
||||
|
||||
public int Ticks { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 其他人和我的距离(m)
|
||||
/// </summary>
|
||||
public double Near { get; set; }
|
||||
}
|
||||
public class CyclingFrameRankingModel
|
||||
{
|
||||
public List<RankingDataModel> data { get; set; }
|
||||
|
||||
public List<RankingSortData> sort { get; set; }
|
||||
|
||||
public int myranking { get; set; }
|
||||
}
|
||||
/// <summary>
|
||||
/// 比赛的排名
|
||||
/// </summary>
|
||||
public class CompetitionRankingModel
|
||||
{
|
||||
public List<CompetitionRankingSortModel> Sorts { get; set; }
|
||||
|
||||
public int Total { get; set; }
|
||||
|
||||
public int MyRanking { get; set; }
|
||||
|
||||
public List<CompetitionResultModel> Results { get; set; }
|
||||
}
|
||||
/// <summary>
|
||||
/// 骑行中 输出的数据模型
|
||||
/// </summary>
|
||||
public class OutModel
|
||||
{
|
||||
public double progress { get; set; }
|
||||
|
||||
public double? Elevation { get; set; }
|
||||
|
||||
public string Seconds { get; set; }
|
||||
|
||||
public int? EleIndex { get; set; }
|
||||
|
||||
//public long ExcuteTime { get; set; }
|
||||
|
||||
//public double? Bearing { get; set; }
|
||||
/// <summary>
|
||||
/// 坡度
|
||||
/// </summary>
|
||||
public double SlopeGrade { get; set; }
|
||||
|
||||
public TargetData targetData { get; set; }
|
||||
|
||||
public List<OutUser> baseRiders { get; set; }
|
||||
|
||||
public CyclingFrameRankingModel Ranking { get; set; }
|
||||
|
||||
public CompetitionRankingModel CompetitionRanking { get; set; }
|
||||
|
||||
public bool CanStart { get; set; } = true;
|
||||
/// <summary>
|
||||
/// 开始倒计时
|
||||
/// </summary>
|
||||
public int StartCountDown { get; set; }
|
||||
/// <summary>
|
||||
/// 结束倒计时
|
||||
/// </summary>
|
||||
public int EndCountDown { get; set; }
|
||||
/// <summary>
|
||||
/// 标识比赛的倒计时是关门时间
|
||||
/// </summary>
|
||||
public bool IsClosed { get; set; }
|
||||
///// <summary>
|
||||
///// 是否已保存
|
||||
///// </summary>
|
||||
//public bool Saved { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 比赛模式下,第一名的坐标
|
||||
/// </summary>
|
||||
public GeographicPosition FirstPoint { get; set; }
|
||||
|
||||
|
||||
public ChartSymbol ChartSymbol { get; set; }
|
||||
}
|
||||
|
||||
public class OutUser
|
||||
{
|
||||
public int UserId { get; set; }
|
||||
|
||||
public string InMapId { get; set; }
|
||||
|
||||
public double NextDistance { get; set; }
|
||||
|
||||
public double PreDistance { get; set; }
|
||||
|
||||
//public TargetData targetData { get; set; }//暂时不需要此字段
|
||||
public List<double[]> NextFrameArray { get; set; }
|
||||
//private List<object> _nextFrameArray { get; set; }
|
||||
//public List<object> NextFrameArray
|
||||
//{
|
||||
// get
|
||||
// {
|
||||
// if (_nextFrameArray != null)
|
||||
// {
|
||||
// return _nextFrameArray;
|
||||
// }
|
||||
// _nextFrameArray = (List<object>)CefBrowserPool.GetFrame(BrowserWindow.Main).EvaluateScriptAsync($"getFrameArray({PreDistance},{NextDistance})").ConfigureAwait(false).GetAwaiter().GetResult().Result;
|
||||
// return _nextFrameArray;
|
||||
// }
|
||||
//}
|
||||
|
||||
public string NickName { get; set; }
|
||||
public string WxHeadImg { get; set; }
|
||||
|
||||
public bool IsSelf
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.UserId == PubCommData.CurrentUser.Id;
|
||||
}
|
||||
}
|
||||
|
||||
public GeographicPosition Point { get; set; }
|
||||
|
||||
public double Bearing { get; set; }
|
||||
}
|
||||
|
||||
public class ChartSymbol
|
||||
{
|
||||
private double _grade = 0;
|
||||
private double _nextGrade = 0;
|
||||
public string GradeSymbol
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_grade > 0)
|
||||
{
|
||||
return "+";
|
||||
}
|
||||
if (_grade < 0)
|
||||
{
|
||||
return "-";
|
||||
}
|
||||
return "";
|
||||
}
|
||||
}
|
||||
public string GradeDisplay
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_grade < 0)
|
||||
{
|
||||
return (_grade * -1).ToString("0.#");
|
||||
}
|
||||
if (_grade > 0)
|
||||
{
|
||||
return _grade.ToString("0.#");
|
||||
}
|
||||
return "0";
|
||||
}
|
||||
}
|
||||
|
||||
public string NextGrade
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_nextGrade > 0)
|
||||
{
|
||||
return "+" + _nextGrade.ToString("0.#");
|
||||
}
|
||||
return _nextGrade.ToString("0.#");
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 单位m
|
||||
/// </summary>
|
||||
public double Distance { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="grade"></param>
|
||||
/// <param name="nextGrade"></param>
|
||||
/// <param name="distance">单位m</param>
|
||||
public ChartSymbol(double grade, double nextGrade, double distance)
|
||||
{
|
||||
this._grade = grade;
|
||||
this._nextGrade = nextGrade;
|
||||
this.Distance = Math.Round(distance, 1);
|
||||
}
|
||||
}
|
||||
|
||||
public class NearRiderModel
|
||||
{
|
||||
public string Name { get; set; }
|
||||
|
||||
public string Headimage { get; set; }
|
||||
|
||||
public double Near { get; set; }
|
||||
|
||||
public string KGWeight { get; set; }
|
||||
|
||||
public double Speed { get; set; }
|
||||
|
||||
public string CountryImg { get; set; }
|
||||
|
||||
public bool IsSelf { get; set; }
|
||||
}
|
||||
|
||||
public class MsgModel
|
||||
{
|
||||
public int RouteId { get; set; }
|
||||
|
||||
public int MemberId { get; set; }
|
||||
|
||||
public double[] Point { get; set; }
|
||||
|
||||
public bool exit { get; set; }
|
||||
|
||||
public double Speed { get; set; }
|
||||
|
||||
public bool IsCompleted { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 需要展示的属性
|
||||
/// </summary>
|
||||
//public string Prop { get; set; }
|
||||
|
||||
public double EndDistance { get; set; }
|
||||
///// <summary>
|
||||
///// 是否展示在线的人
|
||||
///// </summary>
|
||||
//public bool ShowVirtual { get; set; }
|
||||
/// <summary>
|
||||
/// 命令类型,0命令,1消息
|
||||
/// </summary>
|
||||
public byte CommandType { get; set; }
|
||||
|
||||
//public bool IsVirtual { get; set; }
|
||||
/// <summary>
|
||||
/// 功率体重比
|
||||
/// </summary>
|
||||
public double WeightKg { get; set; }
|
||||
|
||||
public double PreDistance { get; set; }
|
||||
|
||||
public int Competitionid { get; set; }
|
||||
/// <summary>
|
||||
/// 客户端通过是否有用户保存了数据,来拉取相应的已经被保存的数据。(主要用在比赛)
|
||||
/// </summary>
|
||||
public bool Saved { get; set; }
|
||||
|
||||
public int V { get; set; }
|
||||
}
|
||||
|
||||
public class ReceiveMsgModel
|
||||
{
|
||||
public int RouteId { get; set; }
|
||||
|
||||
public int MemberId { get; set; }
|
||||
|
||||
public double[] Point { get; set; }
|
||||
|
||||
//public bool exit { get; set; }
|
||||
|
||||
public double Speed { get; set; }
|
||||
|
||||
public bool IsCompleted { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 需要展示的属性
|
||||
/// </summary>
|
||||
//public string Prop { get; set; }
|
||||
|
||||
public double EndDistance { get; set; }
|
||||
/// <summary>
|
||||
/// 是否展示在线的人
|
||||
/// </summary>
|
||||
//public bool ShowVirtual { get; set; }
|
||||
/// <summary>
|
||||
/// 命令类型,0命令,1消息
|
||||
/// </summary>
|
||||
//public byte CommandType { get; set; }
|
||||
|
||||
//public bool IsVirtual { get; set; }
|
||||
|
||||
|
||||
public double PreDistance { get; set; }
|
||||
/// <summary>
|
||||
/// 功率体重比
|
||||
/// </summary>
|
||||
public double WeightKg { get; set; }
|
||||
public int Competitionid { get; set; }
|
||||
|
||||
public bool Saved { get; set; }
|
||||
|
||||
|
||||
public static ReceiveMsgModel Parse(string str)
|
||||
{
|
||||
var list = str.Split(',');
|
||||
if (list.Length != 10)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
return new ReceiveMsgModel
|
||||
{
|
||||
RouteId = Convert.ToInt32(list[0]),
|
||||
MemberId = Convert.ToInt32(list[1]),
|
||||
Point = new double[] { double.Parse(list[2].Split(':')[0]), double.Parse(list[2].Split(':')[1]) },
|
||||
IsCompleted = ToBoolean(list[3]),
|
||||
//exit = ToBoolean(list[4]),
|
||||
Speed = Convert.ToDouble(list[4]),
|
||||
PreDistance = Convert.ToDouble(list[5]),
|
||||
EndDistance = Convert.ToDouble(list[6]),
|
||||
WeightKg = Convert.ToDouble(list[7]),
|
||||
Competitionid = Convert.ToInt32(list[8]),
|
||||
Saved = ToBoolean(list[9])
|
||||
};
|
||||
}
|
||||
catch
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private static bool ToBoolean(string str)
|
||||
{
|
||||
return Convert.ToBoolean(int.Parse(str));
|
||||
}
|
||||
}
|
||||
|
||||
public class OnlineUser
|
||||
{
|
||||
/// <summary>
|
||||
/// 用户Id
|
||||
/// </summary>
|
||||
public int Id { get; set; }
|
||||
/// <summary>
|
||||
/// 在地图中的ID
|
||||
/// </summary>
|
||||
public string InMapId
|
||||
{
|
||||
get
|
||||
{
|
||||
//if (IsVirtual)
|
||||
//{
|
||||
// return "Online-Virtual-" + this.Id;
|
||||
//}
|
||||
return "Online-" + this.Id;
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsVirtual { get; set; }
|
||||
/// <summary>
|
||||
/// 虚拟人物名称
|
||||
/// </summary>
|
||||
public string Name { get; set; }
|
||||
|
||||
public double Weight { get; set; }
|
||||
/// <summary>
|
||||
/// 头像地址
|
||||
/// </summary>
|
||||
public string HeadImage { get; set; }
|
||||
/// <summary>
|
||||
/// 路线Id
|
||||
/// </summary>
|
||||
public int RouteId { get; set; }
|
||||
/// <summary>
|
||||
/// FTP
|
||||
/// </summary>
|
||||
public int FTP { get; set; }
|
||||
/// <summary>
|
||||
/// 点位
|
||||
/// </summary>
|
||||
public double[] Point { get; set; }
|
||||
/// <summary>
|
||||
/// 需要展示的属性
|
||||
/// </summary>
|
||||
//public List<KeyPaire> Show { get; set; }
|
||||
/// <summary>
|
||||
/// 需要隐藏的属性
|
||||
/// </summary>
|
||||
public List<KeyPaire> Hide { get; set; }
|
||||
/// <summary>
|
||||
/// 是否骑行完毕
|
||||
/// </summary>
|
||||
public bool IsCompleted { get; set; }
|
||||
|
||||
public double PreDistance { get; set; }
|
||||
/// <summary>
|
||||
/// 最后距离
|
||||
/// </summary>
|
||||
public double EndDistance { get; set; }
|
||||
///// <summary>
|
||||
///// 是否退出
|
||||
///// </summary>
|
||||
//public bool exit { get; set; }
|
||||
/// <summary>
|
||||
/// 速度(km/h)
|
||||
/// </summary>
|
||||
public double Speed { get; set; }
|
||||
|
||||
///// <summary>
|
||||
///// 圆形头像
|
||||
///// </summary>
|
||||
//public string CircHeadImg
|
||||
//{
|
||||
// get; set;
|
||||
//}
|
||||
|
||||
public bool IsSelf
|
||||
{
|
||||
get
|
||||
{
|
||||
return Id == PubCommData.CurrentUser.Id;
|
||||
}
|
||||
}
|
||||
|
||||
public double WeightKg { get; set; }
|
||||
|
||||
public int CompetitionId { get; set; }
|
||||
/// <summary>
|
||||
/// 已保存的
|
||||
/// </summary>
|
||||
public bool Saved { get; set; }
|
||||
|
||||
public DateTime LastActiveTime { get; set; }
|
||||
|
||||
public bool IsLost
|
||||
{
|
||||
get
|
||||
{
|
||||
return (DateTime.Now - LastActiveTime).TotalSeconds > 3;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class KeyPaire
|
||||
{
|
||||
public object Key { get; set; }
|
||||
|
||||
public object Value { get; set; }
|
||||
public KeyPaire(object key, object value)
|
||||
{
|
||||
this.Key = key;
|
||||
this.Value = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user