赛事功能完善

创建比赛按钮;loading页面more按钮等
This commit is contained in:
lishuo committed 2021-07-23 09:04:56 +08:00
1 parent eed2d13624
commit e76b5c443f
55 files changed
+7805 -3376

No files matched your search

@@ -1,6 +1,7 @@
using Assets.Scripts;
using Assets.Scripts.Apis;
using Assets.Scripts.Apis.Models;
using DG.Tweening;
using System;
using System.Collections.Generic;
using UnityEngine;
@@ -15,12 +16,16 @@ namespace Assets.Scenes.Ride.Scripts
private bool _canJoin = false;
private bool _canStart = false;
private RawImage CompetitionDesc;
private RawImage CompetitionDesc { get; set; }
private RawImage SponsorLogoImage { get; set; }
private Text StartTime { get; set; }
private Text Contestant { get; set; }
private Text CompetitionStatus { get; set; }
private Transform PlayersPanel {get;set;}
private GameObject LeftBack { get; set; }
private GameObject MiddleBack { get; set; }
private GameObject CancelJoin { get; set; }
private GameObject ReadMore { get; set; }
public override void InjectController(CyclingController controller)
{
@@ -29,6 +34,8 @@ namespace Assets.Scenes.Ride.Scripts
panel = Instantiate(Resources.Load<GameObject>("UI/Prefab/Match/CompetitonPanel"), transform);
PFUIPanel mainPanel = panel.GetComponent<PFUIPanel>();
PFUIPanel modelPanel = transform.Find("ModalPanel").GetComponent<PFUIPanel>();
CompetitionDesc = panel.transform.Find("CompetitionDesc").GetComponent<RawImage>();
SponsorLogoImage = panel.transform.Find("SponsorTitle/Sponsor").GetComponent<RawImage>();
cyclingController.SetUIManager(mainPanel, modelPanel);
}
protected override void Start()
@@ -54,9 +61,19 @@ namespace Assets.Scenes.Ride.Scripts
StartTime = panel.transform.Find("Time").GetComponent<Text>();
Contestant = panel.transform.Find("Contestant").GetComponent<Text>();
Watch = panel.transform.Find("Watch").gameObject;
CancelJoin = panel.transform.Find("CancelJoin").gameObject;
PlayersPanel = panel.transform.Find("PlayersPanel/List/Viewport/Content");
LeftBack = panel.transform.Find("LeftBack").gameObject;
MiddleBack = panel.transform.Find("MiddleBack").gameObject;
CompetitionStatus = panel.transform.Find("CompetitionStatus").GetComponent<Text>();
ReadMore = panel.transform.Find("ReadMore").gameObject;
UIManager.AddEvent(ReadMore, EventTriggerType.PointerClick, ReadCompetitionPreview);
UIManager.AddEvent(Watch, EventTriggerType.PointerClick, StartWatch);
UIManager.AddEvent(CancelJoin, EventTriggerType.PointerClick, CancelReserve);
}
private bool _canCancelApply = false;
//查询赛事相关数据
protected override void InitGameObjectData()
{
@@ -65,11 +82,22 @@ namespace Assets.Scenes.Ride.Scripts
//赛事状态按钮控制
_canJoin = competition.CanJoin;
_canStart = competition.CanStart;
var showWatch = !_canJoin && !_canStart && !competition.HasRecord;
_canCancelApply = competition.applyed;//可以取消预约
//报名或者开始比赛
rideNowText.text = _canJoin ? "Apply" : "RideNow";
//观战
var showWatch = !_canJoin && !_canStart && !_canCancelApply;
Watch.SetActive(showWatch);
rideNow.gameObject.SetActive(!showWatch);
rideNowText.text = _canJoin ? "Apply" : "RideNow";
//取消预约
CancelJoin.SetActive(_canCancelApply);
//比赛结束
if (competition.Status == 4)
{
rideNow.gameObject.SetActive(false);
Watch.SetActive(false);
CancelJoin.SetActive(false);
}
#region 赛事基本信息
//赛事名称
@@ -82,22 +110,35 @@ namespace Assets.Scenes.Ride.Scripts
slope.text = Math.Round(route.AverageGrade, 2).ToString() + "%";
//比赛开始时间
StartTime.text = competition.StartTime.ToLongTimeString();
//比赛状态
CompetitionStatus.text = GetENStatus(competition.StatusVlaue.ToString());
//参赛选手
Contestant.text = competition.UserList.Count.ToString() + "Players";
ShowPlayers(competition.UserList);
//路书描述
mapDescText.text = route.Dec;
//主办方logo
Utils.DisplayImage(SponsorLogoImage, competition.SponsorCoverage, true);
//赛事详情
//异步请求mapbox画出当前路书路线图
DrawMapRouteAsync(route.Id,1);
AddProcess(20);
if (!string.IsNullOrEmpty(competition.ShortPreview))
{
LeftBack.SetActive(false);
MiddleBack.SetActive(false);
Utils.DisplayImage(CompetitionDesc, competition.ShortPreview, true);
var canvasGroup = CompetitionDesc.GetComponent<CanvasGroup>();
canvasGroup.DOFade(1, 1);
}
else
{
//异步请求mapbox画出当前路书路线图
DrawMapRouteAsync(route.Id, 1);
}
AddProcess(30);
#endregion
StartCoroutine(HiddenLoading());
}
private int maxShowCout = 15;
private int maxShowCout = 9;
private void ShowPlayers(List<CompetitionPlayer> list)
{
var watcher = Resources.Load<GameObject>("UI/Prefab/Match/Watcher");
@@ -106,7 +147,8 @@ namespace Assets.Scenes.Ride.Scripts
foreach (var item in list)
{
index++;
if (index >= maxShowCout) {
if (index >= maxShowCout)
{
Instantiate(moreHead, PlayersPanel);
break;
}
@@ -123,26 +165,58 @@ namespace Assets.Scenes.Ride.Scripts
{
}
private string GetENStatus(string status)
{
switch (status)
{
case "已结束": return "DONE";
case "未开始": return "APPLIED";
case "报名中": return "APPLLYING";
case "比赛中": return "RACING";
}
return "";
}
#region 事件
//先报名后开始
protected override void StartRide(BaseEventData baseEvent)
{
//先报名
if (_canJoin)
try
{
MapCompetitionApi s = new MapCompetitionApi();
var rrr = s.ApplyMapCompetition(cyclingController.competitionId);
if (rrr.Result.result)
//先报名
if (_canJoin)
{
var competition = s.GetById(cyclingController.competitionId).data;
_canStart = competition.CanStart;
MapCompetitionApi s = new MapCompetitionApi();
var rrr = s.ApplyMapCompetition(cyclingController.competitionId);
if (rrr.result)
{
//var competition = s.GetById(cyclingController.competitionId).data;
//_canStart = competition.CanStart;
_canJoin = false;
//取消预约
CancelJoin.SetActive(true);
}
//if (_canStart)
{
rideNowText.text = "RideNow";
}
}
else
{
base.StartRide(baseEvent);
}
rideNowText.text = "RideNow";
}
else
catch (Exception e)
{
base.StartRide(baseEvent);
Debug.LogError(e);
}
}
//查看赛事详情
protected void ReadCompetitionPreview(BaseEventData baseEvent)
{
Application.OpenURL(App.CurrentUser.WebHost + $"#/Mine/MatchPreview?id={cyclingController.competitionId}&Token={App.CurrentUser.cookie}");
}
//观察
protected void StartWatch(BaseEventData baseEvent)
@@ -152,6 +226,32 @@ namespace Assets.Scenes.Ride.Scripts
cyclingController.player.SetActive(false);
base.StartRide(baseEvent);
}
//取消预约
protected void CancelReserve(BaseEventData baseEvent)
{
try
{
MapCompetitionApi api = new MapCompetitionApi();
var result = api.CancelMapCompetition(cyclingController.competition.Id);
if (result.result)
{
rideNowText.text = "Apply";
CancelJoin.SetActive(false);
_canJoin = true;
Debug.Log(result);
//SHOW Alert
}
else
{
Debug.Log(result);
//SHOW Alert
}
}
catch (Exception ex)
{
Debug.Log(ex);
}
}
#endregion
}
}
@@ -72,7 +72,7 @@ namespace Assets.Scenes.Ride.Scripts
if (!isInit)
{
//当前用户在第几页
pageIndex = (pageSize > 0 ? currentIndex / pageSize : 0) + (totalCount % pageSize > 0 ? 1 : 0);
pageIndex = (pageSize > 0 ? currentIndex / pageSize : 1) + (currentIndex % pageSize > 0 ? 1 : 0);
}
Rank.text = $"{pageIndex}/{totalPages}";
var pagedList = rankingList.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
@@ -43,7 +43,10 @@ namespace Assets.Scenes.Ride.Scripts
Rank = transform.Find("Rank").GetComponent<Text>();
Timer = transform.Find("Timer")?.GetComponent<Text>();
countryTexture = Resources.Load<Sprite>("Images/flag_China_Person").texture;
UIManager.AddEvent(this.gameObject, UnityEngine.EventSystems.EventTriggerType.PointerClick, Watch);
if (cyclingController.isWatch)
{
UIManager.AddEvent(this.gameObject, UnityEngine.EventSystems.EventTriggerType.PointerClick, Watch);
}
}
private void Update()
{
@@ -1,5 +1,6 @@
using Assets.Scenes.Ride.Scripts.Model.CyclingModels;
using Assets.Scripts;
using Assets.Scripts.UI.UIEffect;
using System.Linq;
using UnityEngine;
using UnityEngine.EventSystems;
@@ -8,19 +9,48 @@ using UnityEngine.UI;
namespace Assets.Scenes.Ride.Scripts
{
public class CompetitionResultFactory: MonoBehaviour
public class CompetitionResultFactory : MonoBehaviour
{
CyclingController cyclingController;
RawImage Head;
Text Ranking;
Text Timer;
GameObject Mine { get; set; }
GameObject TitleImage { get; set; }
GameObject WatchTitle { get; set; }
GameObject RankingPanel { get; set; }
RawImage TopHead { get; set; }
RawImage SecondHead { get; set; }
RawImage ThirdHead { get; set; }
Image Top { get; set; }
Sprite SpriteTop { get; set; }
Sprite SpriteSecond { get; set; }
Sprite SpriteThrid { get; set; }
Text RankingTitle { get; set; }
Text TimerTitle { get; set; }
private void Awake()
{
cyclingController = FindObjectOfType<CyclingController>();
var closeBtn = transform.Find("Close").gameObject;
Head = transform.Find("Mine/Head").GetComponent<RawImage>();
Ranking = transform.Find("Mine/Ranking").GetComponent<Text>();
RankingTitle = transform.Find("Mine/RankingTitle").GetComponent<Text>();
TimerTitle = transform.Find("Mine/TimerTitle").GetComponent<Text>();
Timer = transform.Find("Mine/Timer").GetComponent<Text>();
Top = transform.Find("Mine/TOP").GetComponent<Image>();
Mine = transform.Find("Mine").gameObject;
RankingPanel = transform.Find("Ranking").gameObject;
TopHead = transform.Find("Ranking/TopHead").GetComponent<RawImage>();
SecondHead = transform.Find("Ranking/SecondHead").GetComponent<RawImage>();
ThirdHead = transform.Find("Ranking/ThirdHead").GetComponent<RawImage>();
TitleImage = transform.Find("TitleImage").gameObject;
WatchTitle = transform.Find("WatchTitle").gameObject;
SpriteTop = Resources.Load<Sprite>("Images/Ride/Match/top-1");
SpriteSecond = Resources.Load<Sprite>("Images/Ride/Match/top-2");
SpriteThrid = Resources.Load<Sprite>("Images/Ride/Match/top-3");
UIManager.AddEvent(closeBtn, UnityEngine.EventSystems.EventTriggerType.PointerClick, Close);
}
@@ -36,6 +66,18 @@ namespace Assets.Scenes.Ride.Scripts
}
}
private Color RED = new Color(0.9764706f, 0.1882353f, 0.5254902f);
private Color SHALLOW_RED = new Color(1f, 0.454902f, 0.5215687f);
private Color PURPLE = new Color(0.1568628f, 0.4431373f, 0.8745098f);
private Color SHALLOW_PURPLE = new Color(0.3843137f, 0.7764706f, 1f);
private Color BLUE = new Color(0.4352941f, 0.3333333f, 0.9372549f);
private Color SHALLOW_BLUE = new Color(0.772549f, 0.5529412f, 1f);
private Color WHITE = new Color(1f, 1f, 1f);
public void Refresh()
{
if (cyclingController.cyclingController is CompetitionModel model)
@@ -44,14 +86,81 @@ namespace Assets.Scenes.Ride.Scripts
if (list == null) return;
var parent = transform.Find("ScrollView/Viewport/Content");
//当前用户排名
var currentRanking = list.Where(c => c.UserId == cyclingController.currentPlayer.UserId).FirstOrDefault();
if (currentRanking != null)
Mine.SetActive(!cyclingController.isWatch);
RankingPanel.SetActive(cyclingController.isWatch);
TitleImage.SetActive(!cyclingController.isWatch);
WatchTitle.SetActive(cyclingController.isWatch);
if (!cyclingController.isWatch)
{
Utils.DisplayImage(Head, App.CurrentUser.WxHeadImg, true);//TODO:改造数据结构结果增加头像字段
Ranking.text = currentRanking.Index.ToString().PadLeft(3,'0');
Timer.text = currentRanking.TripTime;
//当前用户排名
var currentRanking = list.Where(c => c.UserId == cyclingController.currentPlayer.UserId).FirstOrDefault();
if (currentRanking != null)
{
Utils.DisplayImage(Head, currentRanking.WxHeadImg, true);
Ranking.text = currentRanking.Index.ToString().PadLeft(3, '0');
Timer.text = currentRanking.TripTime;
var uigradient = Mine.transform.GetComponent<UIGradient>();
if (currentRanking.Index <=3)
{
TimerTitle.color = WHITE;
RankingTitle.color = WHITE;
}
if (currentRanking.Index == 1)
{
uigradient.color1 = RED;
uigradient.color2 = SHALLOW_RED;
Top.sprite = SpriteTop;
Top.gameObject.SetActive(true);
}
if (currentRanking.Index == 2)
{
uigradient.color1 = PURPLE;
uigradient.color2 = SHALLOW_PURPLE;
Top.sprite = SpriteSecond;
Top.gameObject.SetActive(true);
}
if (currentRanking.Index == 3)
{
uigradient.color1 = BLUE;
uigradient.color2 = SHALLOW_BLUE;
Top.sprite = SpriteThrid;
Top.gameObject.SetActive(true);
}
}
}
else
{
//观察者模式左边显示前三名
var topList = list.OrderBy(c=>c.Index).Take(3);
foreach (var item in topList)
{
if (item.Index == 1)
{
Utils.DisplayImage(TopHead, item.WxHeadImg, true);
var name = TopHead.transform.Find("Name").GetComponent<Text>();
name.text = item.Name;
TopHead.gameObject.SetActive(true);
}
if (item.Index == 2)
{
Utils.DisplayImage(SecondHead, item.WxHeadImg, true);
var name = SecondHead.transform.Find("Name").GetComponent<Text>();
name.text = item.Name;
SecondHead.gameObject.SetActive(true);
}
if (item.Index == 3)
{
Utils.DisplayImage(ThirdHead, item.WxHeadImg, true);
var name = ThirdHead.transform.Find("Name").GetComponent<Text>();
name.text = item.Name;
ThirdHead.gameObject.SetActive(true);
}
}
}
//排名列表
var rankingList = FindObjectsOfType<FinalRankingItemScript>();
foreach (var item in list)
@@ -67,7 +176,7 @@ namespace Assets.Scenes.Ride.Scripts
//有就更新
finalRankingItemScript.setGap(item.Gap);
finalRankingItemScript.setSource(item.DeviceType);
finalRankingItemScript.setUserId(item.UserId);
finalRankingItemScript.setUserId(item.UserId,item.WxHeadImg);
finalRankingItemScript.setRanking(item.Index);
finalRankingItemScript.setHeartRate(item.HeartRate.ToString("f0"));
finalRankingItemScript.setName(item.Name);
@@ -83,7 +192,7 @@ namespace Assets.Scenes.Ride.Scripts
{
this.gameObject.SetActive(false);
this.Destroy();
//SceneManager.LoadScene("MainScene");
SceneManager.LoadScene("MainScene");
}
}
}
@@ -4,8 +4,7 @@ using Assets.Scenes.Ride.Scripts.Model;
using UnityEngine.EventSystems;
using Assets.Scenes.Ride.Scripts.Model.CyclingModels;
using UnityEngine.UI;
using Assets.Scripts;
using Assets.Scripts.Apis;
using UnityEngine.SceneManagement;
namespace Assets.Scenes.Ride.Scripts
{
@@ -15,26 +14,35 @@ namespace Assets.Scenes.Ride.Scripts
{
base.Awake();
}
GameObject countDownPanel;
Text title;
Text timer;
GameObject countDownPanel { get; set; }
Text title { get; set; }
Text timer { get; set; }
protected override void Start()
{
base.Start();
//创建倒计时面板
countDownPanel = Instantiate(Resources.Load<GameObject>("UI/Prefab/Match/CountDownPanel"), transform.Find("Panel"));
title = countDownPanel.transform.Find("Title").GetComponent<Text>();
timer = countDownPanel.transform.Find("Timer").GetComponent<Text>();
reviewPanel.SetActive(false);
countDownPanel.SetActive(false);
ShowCurrentRanking();
//隐藏单人骑行时间
var spilitLineH2 = transform.Find("Panel/ComputerPanel/SpilitLineH2").gameObject;
spilitLineH2.SetActive(false);
timerTxt.gameObject.SetActive(false);
timerTxtTitle.gameObject.SetActive(false);
//countDownPanel.SetActive(false);
//观察者模式隐藏坡度
if (mainController.isWatch)
{
nextSlopePanel.SetActive(false);
currentSlopePanel.SetActive(false);
}
altitudeGraph.gameObject.SetActive(false);
//暂停按钮禁用
pauseButton.interactable = false;
}
protected override void Update()
{
base.Update();
CountDown();
}
//开始游戏触发事件
public void StartRide(BaseEventData baseEventData)
{
@@ -42,90 +50,64 @@ namespace Assets.Scenes.Ride.Scripts
}
CompetitionModel competitionModel;
bool canStart = false;
GameObject watchPanel { get; set; }
//开始骑行-加个5秒钟倒计时
public override void StartRide()
{
competitionModel = mainController.cyclingController as CompetitionModel;
countDownPanel = Instantiate(Resources.Load<GameObject>("UI/Prefab/Match/CountDownPanel"), transform.Find("Panel"));
title = countDownPanel.transform.Find("Title").GetComponent<Text>();
timer = countDownPanel.transform.Find("Timer").GetComponent<Text>();
competitionRankingList = Instantiate(Resources.Load<GameObject>("UI/Prefab/Match/CompetitionRankingPanel"), transform.Find("Panel"));
topRankPanel = Instantiate(Resources.Load<GameObject>("UI/Prefab/Match/TopRankPanel"), transform.Find("Panel"));
watchPanel = Instantiate(Resources.Load<GameObject>("UI/Prefab/Match/WatcherPanel"), transform.Find("Panel"));
}
private void CountDown()
{
miniMap.SetActive(false); //隐藏小地图
viewButton.gameObject.SetActive(false);//隐藏切换视角
//viewButton.gameObject.SetActive(false);//隐藏切换视角
headPanel.SetActive(!mainController.isWatch); //隐藏海拔图观察者的头像
if (competitionModel == null)
return;
//比赛进行中
if (competitionModel != null)
#region 赛事状态改变时间
canStart = competitionModel.CanStart();
//比赛开始
if (count <= 0 && canStart)
{
count = competitionModel.StartCountdown();
canStart = competitionModel.CanStart();
//比赛开始前倒计时
if (count >= 0 && !canStart && !competitionModel.recorderData.Saved)
{
//显示倒计时面板信息
showCountDown(count, "Get ready!");
//隐藏坡度
currentSlopePanel.SetActive(false);
nextSlopePanel.SetActive(false);
}
//比赛开始
if (count <= 0 && canStart)
{
mainController.SetStart();
countDownPanel.SetActive(false);
}
//显示结果(非观战到达终点弹窗)
var ishowResult = !mainController.isWatch && (competitionModel.mapCompetition?.HasRecord ?? false) || competitionModel.recorderData.Saved;
if (ishowResult)
{
ShowResultList();
}
var s = competitionModel?.EndCountDown();
//显示关门时间
if (s.Value.Item2)
{
if (s.Value.Item1 <= 0 && !mainController.cyclingController.recorderData.Saved)
{
//自动保存,游戏设置结束
SaveRide(null);
}
else
{
//显示倒计时面板信息
showCountDown(s.Value.Item1, "get the winner,end tance remains");
}
}
else if (s.Value.Item1 > 0)
{
//显示倒计时面板信息
showCountDown(s.Value.Item1, "remaining");
}
////显示关门时间
//if (s.Value.Item2 && s.Value.Item1 <= 0 && !mainController.cyclingController.recorderData.Saved)
//{
// //自动保存,游戏设置结束
// SaveRide(null);
//}
//var title = s.Value.Item2 && s.Value.Item1 <= 0 ? "finish" : "remaining";
////显示倒计时面板信息
//showCountDown(s.Value.Item1, title);
//显示当前比赛进行多长时间了
timerTxt.text = competitionModel.ShowTime;
mainController.SetStart();
}
}
//赛事结束,自动保存
var s = competitionModel.EndCountDown();
if (s.Item1 <= 0 && !mainController.cyclingController.recorderData.Saved && !mainController.isWatch)
{
SaveRide(null);
}
//显示结果(观察者要等到赛事结束才弹出)
var ishowResult = ((competitionModel.mapCompetition?.HasRecord ?? false) || competitionModel.recorderData.Saved) || (mainController.isWatch && competitionModel.CanQuit());
if (ishowResult)
{
ShowResultList();
}
//显示观众
var watchList = mainController.GetWatcherList();
watchPanel.SetActive(watchList.Count >= 5);
#endregion
private void showCountDown(int count,string text)
{
countDownPanel.SetActive(true);
title.text = text;
if (count >= 0)
{
timer.text = Helper.FormatTicks(count);
}
}
public override void SaveRide(BaseEventData baseEventData)
{
//观察者退出
if (mainController.isWatch)
{
SceneManager.LoadScene("MainScene");
return;
}
//参赛者保存并弹出赛事结果
if (!mainController.isQuit)
{
mainController.SetQuit();
@@ -166,5 +148,36 @@ namespace Assets.Scenes.Ride.Scripts
competitionResultPanel = Instantiate(Resources.Load<GameObject>("UI/Prefab/Match/CompetitionResultPanel"), transform.Find("Panel"));
}
}
//极简模式
protected override void ClearPanel(BaseEventData baseEventData)
{
if (clearLock)
{
base.ClearPanel(baseEventData);
countDownPanel.transform.DOLocalMove(new Vector3(countDownPanel.transform.localPosition.x + isSimple * -430f, countDownPanel.transform.localPosition.y, countDownPanel.transform.localPosition.z), 1);
topRankPanel.transform.DOLocalMove(new Vector3(topRankPanel.transform.localPosition.x + isSimple * -430f, topRankPanel.transform.localPosition.y, topRankPanel.transform.localPosition.z), 1);
competitionRankingList.transform.DOLocalMove(new Vector3(competitionRankingList.transform.localPosition.x + isSimple * 430f, competitionRankingList.transform.localPosition.y, competitionRankingList.transform.localPosition.z), 1);
watchPanel.transform.DOLocalMove(new Vector3(watchPanel.transform.localPosition.x, watchPanel.transform.localPosition.y + isSimple * 260f, watchPanel.transform.localPosition.z), 1);
}
}
protected override void StopRide(BaseEventData baseEventData)
{
//观察者
if (mainController.isWatch)
{
quitPanel.SetActive(true);
var content=quitPanel.transform.Find("Content").GetComponent<Text>();
content.text = "Do you want to quit?";
quitPanel.transform.Find("AbandonButton").gameObject.SetActive(false);
quitPanel.transform.Find("SaveButton/Text").GetComponent<Text>().text = "OK";
}
//参赛者:提醒是否退出并保存赛事结果
else
{
quitPanel.SetActive(true);
}
}
}
}
@@ -0,0 +1,77 @@
using Assets.Scenes.Ride.Scripts.Model;
using Assets.Scenes.Ride.Scripts.Model.CyclingModels;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEngine.UI;
namespace Assets.Scenes.Ride.Scripts
{
public class CountDownFactory : MonoBehaviour
{
Text Title { get; set; }
Text CountTimer { get; set; }
Text TimerTitle { get; set; }
Text Timer { get; set; }
CompetitionModel competitionModel { get; set; }
CyclingController cyclingController { get; set; }
private void Start()
{
cyclingController = FindObjectOfType<CyclingController>();
Title = transform.Find("Title").GetComponent<Text>();
CountTimer = transform.Find("Timer").GetComponent<Text>();
TimerTitle = transform.Find("ConpetitionTimerTitle").GetComponent<Text>();
Timer = transform.Find("ConpetitionTimer").GetComponent<Text>();
competitionModel = cyclingController.cyclingController as CompetitionModel;
}
GameObject competitionResultPanel { get; set; }
private void Update()
{
if (competitionModel != null)
{
var count = competitionModel.StartCountdown();
//比赛开始前倒计时
if (count > 0 && !competitionModel.recorderData.Saved)
{
ShowCountDown(count, "Get ready!");//显示倒计时面板信息
Timer.gameObject.SetActive(false);
TimerTitle.gameObject.SetActive(false);
}
else
{
var s = competitionModel.EndCountDown();
var isAutoSave = s.Item1 <= 0 && !cyclingController.cyclingController.recorderData.Saved && !cyclingController.isWatch;
//显示关门时间
if (s.Item2 && !isAutoSave)
{
//显示倒计时面板信息
ShowCountDown(s.Item1, "get the winner,end tance remains");
}
else if (s.Item1 > 0)
{
//显示倒计时面板信息
//ShowCountDown(s.Item1, "remaining");
ShowCountDown(cyclingController.currentPlayer.TotalTicks, "Riding Time");
}
//显示当前选手骑行时间
Timer.gameObject.SetActive(true);
TimerTitle.gameObject.SetActive(true);
Timer.text = Helper.FormatTicks(cyclingController.currentPlayer.TotalTicks);
}
}
}
private void ShowCountDown(int count, string text)
{
Title.text = text;
if (count >= 0)
{
CountTimer.text = Helper.FormatTicks(count);
}
}
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 40622737bf14f984daaf181918914827
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -164,12 +164,15 @@ namespace Assets.Scenes.Ride.Scripts
}
}
public void setUserId(int userId)
public void setUserId(int userId,string WxHeadImg)
{
_userId = userId;
var isself = userId == cyclingController.currentPlayer.UserId;
//头像根据是否是自己显示
Utils.DisplayImage(Head, App.CurrentUser.WxHeadImg, true);//TODO:改造数据结构结果增加头像字段
if (isself)
{
Utils.DisplayImage(Head, WxHeadImg, true);
}
Head.gameObject.SetActive(isself);
//边框样式
var color = isself ? WHITE : TRANSPARENT;
@@ -8,7 +8,7 @@ namespace Assets.Scenes.Ride.Scripts
{
public class TopRankingFactory : BaseListFactory
{
private List<CompetitionRankingSortModel> rankingList {get;set;}
private List<CompetitionTopModel> rankingList {get;set;}
private AbstractPlayer currentPlayer { get; set; }
private int topSize = 6;//取前6名
protected override void Awake()
@@ -31,18 +31,18 @@ namespace Assets.Scenes.Ride.Scripts
{
CompetitionModel s = cyclingController.cyclingController as CompetitionModel;
var ss = s?.competitionRankingModel;
rankingList = ss?.Sorts;
rankingList = ss?.TopList;
if (rankingList == null) return;
var pagedList = rankingList.Take(topSize).ToList();
for (int i = 0; i < pagedList.Count(); i++)
for (int i = 0; i < rankingList.Count(); i++)
{
Create(pagedList[i]);
Create(rankingList[i]);
}
}
private void Create(CompetitionRankingSortModel item)
private void Create(CompetitionTopModel item)
{
var rankingList = FindObjectsOfType<TopRankingItem>();
var competitionRankingItem = rankingList.Where(c => c.UserId == item.UserId).FirstOrDefault();
var competitionRankingItem = rankingList.Where(c => c.rank == item.Index).FirstOrDefault();
//如果当前有这个用户则更新没有则创建并setslibingindex
if (competitionRankingItem == null)
{
@@ -61,15 +61,11 @@ namespace Assets.Scenes.Ride.Scripts
competitionRankingItem = rankingList.OrderByDescending(c => c.rank).FirstOrDefault();
}
}
competitionRankingItem.setUserId(item.UserId);
competitionRankingItem.setTimer(item.TripTime);
competitionRankingItem.SetRank(item.Index);
competitionRankingItem.setName(item.Name);
competitionRankingItem.setRatio(item.KGWeight + "W/KG");
competitionRankingItem.setSpeed(item.Speed.ToString() + "KM/H");
competitionRankingItem.setHead(item.Headimage);
competitionRankingItem.setCountry(item.CountryImg);
competitionRankingItem.setDistance(item.Near.ToString() + "KM");
competitionRankingItem.setUserId(item.UserId);
competitionRankingItem.setCountry(item.Country);
competitionRankingItem.transform.SetSiblingIndex(item.Index);
}
}
@@ -9,11 +9,7 @@ namespace Assets.Scenes.Ride.Scripts
{
private RawImage Head;
private RawImage Country;
private Image Background;
private Text Name;
private Text Speed;
private Text Distance;
private Text Ratio;//功体比
private Text Rank;//当前排名
private Text Timer;
@@ -22,48 +18,25 @@ namespace Assets.Scenes.Ride.Scripts
private string _headUrl = string.Empty;
private string _countryUrl = string.Empty;
private string _name = string.Empty;
private string _speed = string.Empty;
private string _distance = string.Empty;
private string _ratio = string.Empty;
public int rank { get; set; }
private Texture countryTexture;
CyclingController cyclingController;
private void Awake()
{
cyclingController = FindObjectOfType<CyclingController>();
Background = transform.GetComponent<Image>();
Head = transform.Find("Head").GetComponent<RawImage>();
Country = transform.Find("Country").GetComponent<RawImage>();
Name = transform.Find("Name").GetComponent<Text>();
Speed = transform.Find("Speed").GetComponent<Text>();
Distance = transform.Find("Distance").GetComponent<Text>();
Ratio = transform.Find("Ratio").GetComponent<Text>();
Rank = transform.Find("Rank").GetComponent<Text>();
Timer = transform.Find("Timer")?.GetComponent<Text>();
countryTexture = Resources.Load<Sprite>("Images/flag_China_Person").texture;
var btn = this.gameObject.GetComponent<Button>();
btn.onClick.AddListener(() =>
{
Watch();
});
///UIManager.AddEvent(this.gameObject, UnityEngine.EventSystems.EventTriggerType.PointerClick, Watch);
}
//切换到当前用户视角
public void Watch()
{
cyclingController.ChangeCurrentPlayer(_userId);
Timer = transform.Find("Timer")?.GetComponent<Text>();
}
public void setTimer(string timer)
{
Timer.text = timer;
}
public void setRatio(string ratio)
{
if (!_ratio.Equals(ratio))
{
Ratio.text = ratio;
}
}
//设置当前排名
public void SetRank(int rank)
{
@@ -96,21 +69,9 @@ namespace Assets.Scenes.Ride.Scripts
Name.text = name;
}
public void setSpeed(string speed)
{
if (!_speed.Equals(speed))
Speed.text = speed;
}
public void setDistance(string distance)
{
if (!_distance.Equals(distance))
Distance.text = distance;
}
public void setUserId(int userId)
{
_userId = userId;
_userId = userId;
}
}
}
@@ -103,7 +103,7 @@ namespace Assets.Scenes.Ride.Scripts.Model.CyclingModels
MapUDPService.Send(route.RouteInstance.Id, recorderData.BelongUserId,
new double[] { lastData._Lat, lastData._Lon },
recorderData.IsCompleted, false, recorderData.EndDistance,
true, 1, lastData._Speed, false, preDistance, weightKg, competitionId: recorderData.Competitionid, recorderData.Saved);
true, 1, lastData._Speed, false, preDistance, weightKg, competitionId: recorderData.Competitionid, recorderData.Saved, lastData._HeartRate, lastData._Power, lastData._Cadence, lastData.Ticks);
}
else if (recorderData.EndDistance > 0)//没有骑,但是有初始位置的情况
{
@@ -32,7 +32,7 @@ namespace Assets.Scenes.Ride.Scripts.Model.CyclingModels
{
get
{
if (CanStart())
//if (CanStart())
{
var second = Math.Ceiling((Now - mapCompetition.StartTime.ToLocalTime()).TotalSeconds);
@@ -135,7 +135,11 @@ namespace Assets.Scenes.Ride.Scripts.Model.CyclingModels
WxHeadImg = item.HeadImage,
Point = new GeoJSON.Net.Geometry.GeographicPosition(item.Point[0], item.Point[1]),
EndDistance = item.EndDistance,
PreDistance = item.PreDistance
PreDistance = item.PreDistance,
Power = item.Power,
HeartRate = item.HeartRate,
Cadence = item.Cadence,
TotalTicks = item.TotalTicks,
});
}
@@ -196,18 +200,58 @@ namespace Assets.Scenes.Ride.Scripts.Model.CyclingModels
CreateTime = createTime,
TripTime = ranking?.TripTime ?? "",
CompleteTime = ranking?.CompleteTime,
Gap = ranking?.Gap ?? ""
Gap = ranking?.Gap ?? "",
Country = ranking.Country,
WxHeadImg = ranking.WxHeadImg
});
}
}
#endregion
#region 骑行实时排名&比赛结果列表 取前六名
List<CompetitionTopModel> CompetitionTopList = new List<CompetitionTopModel>();
var resultList =results.Take(6);
var count = 6 - resultList.Count();
//先取比赛结果
foreach (var item in resultList)
{
CompetitionTopList.Add(new CompetitionTopModel
{
Index = item.Index,
TripTime = item.TripTime,
Country = item.Country,
Name = item.Name,
UserId = item.UserId
});
}
if (count > 0)
{
var ss = sort.Where(c => !resultList.Select(p => p.UserId).Contains(c.UserId)).Take(count);
foreach (var item in ss)
{
CompetitionTopList.Add(new CompetitionTopModel
{
Index = item.Index,
TripTime = "———",
Country = item.CountryImg,
Name = item.Name,
UserId = item.UserId
});
}
}
#endregion
competitionRankingModel = new CompetitionRankingModel
{
Sorts = sort,//骑行实时排名
MyRanking = sort.FindIndex(n => n.UserId == currentPlayer.UserId) + 1,//切换人物显示对应人物的排名
Total = sort.Count,//总人数
Results = results//比赛结果列表
Results = results,//比赛结果列表,
TopList = CompetitionTopList,
};
}
@@ -313,7 +357,7 @@ namespace Assets.Scenes.Ride.Scripts.Model.CyclingModels
/// <returns></returns>
public (int, bool) EndCountDown()
{
if (CanStart() == false) return (0, false);
//if (CanStart() == false) return (0, false);
//if (recorderData.IsCompleted) return 0;
var end1 = (int)Math.Floor((mapCompetition.EndTime.ToLocalTime() - Now).TotalSeconds);
if (!FirstEndTime.HasValue)
+36 -3
View File
@@ -41,7 +41,7 @@ namespace Assets.Scenes.Ride.Scripts.Model
public string Name { get; set; }
public string HeadUrl { get; set; }
public string WxHeadImg { get; set; }
//public string Time { get; set; }
@@ -66,7 +66,9 @@ namespace Assets.Scenes.Ride.Scripts.Model
/// 与冲线时间的差距
/// </summary>
public string Gap { get; set; }
public string Country { get; set; }
}
public class RankingDataModel
{
public int UserId { get; set; }
@@ -74,6 +76,18 @@ namespace Assets.Scenes.Ride.Scripts.Model
public TargetData data { get; set; }
}
public class CompetitionTopModel
{
public int UserId { get; set; }
public int Index { get; set; }
public string Name { get; set; }
public string Country { get; set; }
public string TripTime { get; set; }
}
public class RankingSortData
{
public int Index { get; set; }
@@ -114,6 +128,8 @@ namespace Assets.Scenes.Ride.Scripts.Model
public int MyRanking { get; set; }
public List<CompetitionResultModel> Results { get; set; }
public List<CompetitionTopModel> TopList { get; set; }
}
/// <summary>
/// 骑行中 输出的数据模型
@@ -311,6 +327,11 @@ namespace Assets.Scenes.Ride.Scripts.Model
public double Speed { get; set; }
public double Power { get; set; }
public double? Heart { get; set; }
public double? Cadence { get; set; }
public int TotalTicks { get; set; }
public bool IsCompleted { get; set; }
/// <summary>
@@ -367,6 +388,10 @@ namespace Assets.Scenes.Ride.Scripts.Model
//public bool exit { get; set; }
public double Speed { get; set; }
public double Power { get; set; }
public double HeartRate { get; set; }
public double Cadence { get; set; }
public int TotoalTicks { get; set; }
public bool IsCompleted { get; set; }
@@ -403,7 +428,7 @@ namespace Assets.Scenes.Ride.Scripts.Model
public static ReceiveMsgModel Parse(string str)
{
var list = str.Split(',');
if (list.Length != 10)
if (list.Length != 14)
{
return null;
}
@@ -422,7 +447,11 @@ namespace Assets.Scenes.Ride.Scripts.Model
EndDistance = Convert.ToDouble(list[6], CultureInfo.InvariantCulture),
WeightKg = Convert.ToDouble(list[7], CultureInfo.InvariantCulture),
Competitionid = Convert.ToInt32(list[8], CultureInfo.InvariantCulture),
Saved = ToBoolean(list[9])
Saved = ToBoolean(list[9]),
Power = Convert.ToDouble(list[10], CultureInfo.InvariantCulture),
HeartRate = Convert.ToDouble(list[11], CultureInfo.InvariantCulture),
Cadence = Convert.ToDouble(list[12], CultureInfo.InvariantCulture),
TotoalTicks = Convert.ToInt32(list[13], CultureInfo.InvariantCulture),
};
}
catch
@@ -511,6 +540,10 @@ namespace Assets.Scenes.Ride.Scripts.Model
/// 速度(km/h)
/// </summary>
public double Speed { get; set; }
public double Power { get; set; }
public double HeartRate { get; set; }
public double Cadence { get; set; }
public int TotalTicks { get; set; }
///// <summary>
///// 圆形头像
@@ -16,6 +16,18 @@ namespace Assets.Scenes.Ride.Scripts.Model
/// </summary>
public int UserId { get; set; }
public double Power { get; set; }
public double HeartRate { get; set; }
public double Cadence { get; set; }
/// <summary>
/// 骑行秒数
/// </summary>
public int TotalTicks { get; set; }
/// <summary>
/// 骑行毫秒数
/// </summary>
public int TotoalMillisecondTicks { get; set; }
public string InMapId
{
get
@@ -189,7 +189,7 @@ namespace Assets.Scenes.Ride.Scripts
/// <param name="exit">是否退出</param>
public static void Send(int RouteId, int MemberId, double[] Point, bool IsCompleted = false, bool exit = false,
double endDistance = 0, bool showVirtual = false, byte commandType = 1, double speed = 0, bool isVirtual = false, double preDistance = 0,
double weightKg = 0, int competitionId = 0, bool saved = false)
double weightKg = 0, int competitionId = 0, bool saved = false,double? heartRate = 0, double power = 0, double? cadence = 0,int totalTicks = 0)
{
try
{
@@ -206,6 +206,12 @@ namespace Assets.Scenes.Ride.Scripts
//ShowVirtual = showVirtual,
CommandType = commandType,
Speed = speed,
Power = power,
Heart = heartRate,
Cadence = cadence,
TotalTicks = totalTicks,
//IsVirtual = isVirtual,
PreDistance = preDistance,
WeightKg = weightKg,
@@ -393,6 +399,10 @@ namespace Assets.Scenes.Ride.Scripts
user.PreDistance = item.PreDistance;
user.CompetitionId = item.Competitionid;
user.Saved = item.Saved;
user.Power = item.Power;
user.HeartRate = item.HeartRate;
user.Cadence = item.Cadence;
user.TotalTicks = item.TotoalTicks;
user.WatcherList = new List<int>();
foreach (var o in item.WatchIdList.Split('|'))
{
@@ -51,7 +51,7 @@ namespace Assets.Scenes.Ride.Scripts
protected double elevation;
protected double cadance;
protected int heartRate;
protected int ticks;
public int ticks;
protected double totalDistance;
protected double currentSlope;
protected double nextSlope;
@@ -166,7 +166,19 @@ namespace Assets.Scenes.Ride.Scripts
ticks++;
Compute();//接受蓝牙设备数据计算
//计算累计爬升
if (CurrentIndex > 0)
{
totalClimb = 0;
for (int i = 1; i <= CurrentIndex; i++)
{
var diff = mapData.List[i].Elevation - mapData.List[i - 1].Elevation;
if (diff > 0)
{
totalClimb += diff;
}
}
}
if (totalDistance > mapData.TotalDistance)
{
distance = totalDistance - mapData.TotalDistance;
@@ -22,7 +22,7 @@ namespace Assets.Scenes.Ride.Scripts
protected int totalPages = 0;
protected int bufferSize = 0;
protected int pageIndex = 1;
protected int pageSize = 7;
protected int pageSize = 5;
private int preNum = 0;//前面的数量
private int offset = 8;//显示区域的数量
@@ -36,6 +36,7 @@ namespace Assets.Scenes.Ride.Scripts
protected Text speedTxt;//当前速度
protected Text powerTxt;//功率
protected Text timerTxt;//计时器
protected Text timerTxtTitle;//计时器标题
protected Text ditance;//当前骑行距离
protected Text totalDistance;//当前骑行距离
protected Text candance;//踏频
@@ -132,6 +133,7 @@ namespace Assets.Scenes.Ride.Scripts
speedTxt = transform.Find("Panel/ComputerPanel/Speed").GetComponent<Text>();
powerTxt = transform.Find("Panel/PowerPanel/Power").GetComponent<Text>();
timerTxt = transform.Find("Panel/ComputerPanel/Timer").GetComponent<Text>();
timerTxtTitle = transform.Find("Panel/ComputerPanel/TimerTitle").GetComponent<Text>();
countDownTxt = transform.Find("Panel/CountDown").GetComponent<Text>();
mapName = transform.Find("Panel/TitlePanel/MapName").GetComponent<Text>();
totalClimb = transform.Find("Panel/ComputerPanel/TotalClimb").GetComponent<Text>();
@@ -159,10 +161,10 @@ namespace Assets.Scenes.Ride.Scripts
singleArea = transform.Find("Panel/ReviewPanel/SingleArea").gameObject;
addButton = transform.Find("Panel/ReviewPanel/SingleArea/AddButton").GetComponent<Button>();
saveButton = transform.Find("Panel/QuitPanel/QuitPanel/SaveButton").GetComponent<Button>();
cancelQuitButton = transform.Find("Panel/QuitPanel/QuitPanel/CancelButton").GetComponent<Button>();
closeQuitButton = transform.Find("Panel/QuitPanel/QuitPanel/CloseButton").GetComponent<Button>();
abandonButton = transform.Find("Panel/QuitPanel/QuitPanel/AbandonButton").GetComponent<Button>();
saveButton = transform.Find("Panel/QuitPanel/SaveButton").GetComponent<Button>();
cancelQuitButton = transform.Find("Panel/QuitPanel/CancelButton").GetComponent<Button>();
closeQuitButton = transform.Find("Panel/QuitPanel/CloseButton").GetComponent<Button>();
abandonButton = transform.Find("Panel/QuitPanel/AbandonButton").GetComponent<Button>();
viewButton = transform.Find("Panel/ViewButton").GetComponent<Button>();
altitudeGraph = transform.Find("Panel/TitlePanel/AltitudeGraph").GetComponent<RawImage>();
@@ -436,7 +438,7 @@ namespace Assets.Scenes.Ride.Scripts
mainController.ChangeMapImageStyle(arrow.gameObject);
}
//结束游戏
public virtual void StopRide(BaseEventData baseEventData)
protected virtual void StopRide(BaseEventData baseEventData)
{
if (playerController?.TotalTicks > 0)
{
@@ -458,9 +460,9 @@ namespace Assets.Scenes.Ride.Scripts
settingPanel.SetActive(true);
}
//进入简约模式
int isSimple = 1;
private bool clearLock = true;
public void ClearPanel(BaseEventData baseEventData)
protected int isSimple = 1;
protected bool clearLock = true;
protected virtual void ClearPanel(BaseEventData baseEventData)
{
if (clearLock)
{
@@ -486,7 +488,7 @@ namespace Assets.Scenes.Ride.Scripts
}
//初始化海拔图
GraphChartBase graph;
ChartDataSourceScript chartDataSourceScript;
protected ChartDataSourceScript chartDataSourceScript;
public void RenderChart()
{
var mapData = mainController.GetMapData();
@@ -30,6 +30,18 @@ namespace Assets.Scenes.Ride.Scripts
return graph.HorizontalScrolling / mData.Count();
}
public double GetCurrentStart(int currentIndex)
{
int i = currentIndex / targetPoints;
int max = mData.Count() - targetPoints;
var current = i * targetPoints;
if (current >= max)
{
return current - targetPoints > 0? current - targetPoints : 0;
}
return current;
}
public double GetRealTimeEnd()
{
return (graph.HorizontalScrolling+ graph.DataSource.HorizontalViewSize) / mData.Count();
@@ -306,7 +306,6 @@ public class CyclingController : DeviceServiceMonoBase
case CyclingModel.Review:
cyclingController = new ReviewModel(route, selectParamModel);
break;
//TODO:比赛模式
case CyclingModel.Competition:
cyclingController = new CompetitionModel(route, selectParamModel, currentPlayer);
break;
@@ -337,7 +336,8 @@ public class CyclingController : DeviceServiceMonoBase
item.transform.localScale = MIN_SIZE;
}
//重置海拔图进度
graph.HorizontalScrolling = 0;
var currentIndex = currentPlayer.CurrentIndex;
graph.HorizontalScrolling = chartDataSourceScript.GetCurrentStart(currentIndex);
}
public void ChangeRandomPlayer()
{
@@ -398,7 +398,6 @@ public class CyclingController : DeviceServiceMonoBase
cyclingController.Run(null);
//在线人物或比赛人物渲染
ShowOnlineUsers();
ShowWatchers();
}
}
@@ -430,7 +429,7 @@ public class CyclingController : DeviceServiceMonoBase
onlinePlayerController.UserId = onlineRider.UserId;
onlinePlayerController.SetDataSource(onlineTotalDistance, onlineDistance, onlineRider.NickName, onlineRider.WeightKg, new Vector2d(onlineRider.Point.Latitude, onlineRider.Point.Longitude),index);
onlinePlayerController.SetDataSource(onlineTotalDistance, onlineDistance, onlineRider.Power, onlineRider.HeartRate, onlineRider.Cadence, onlineRider.TotalTicks, onlineRider.NickName, onlineRider.WeightKg, new Vector2d(onlineRider.Point.Latitude, onlineRider.Point.Longitude),index);
onlinePlayerController.SetHead(onlineRider.WxHeadImg);
//小地图人物
GameObject miniPlayer = (GameObject)Instantiate(miniMapPlayerPrefab, transform);
@@ -443,7 +442,7 @@ public class CyclingController : DeviceServiceMonoBase
}
else
{
currentUser.SetDataSource(onlineTotalDistance, onlineDistance, onlineRider.NickName, onlineRider.WeightKg, new Vector2d(onlineRider.Point.Latitude, onlineRider.Point.Longitude), index);
currentUser.SetDataSource(onlineTotalDistance, onlineDistance, onlineRider.Power, onlineRider.HeartRate, onlineRider.Cadence, onlineRider.TotalTicks, onlineRider.NickName, onlineRider.WeightKg, new Vector2d(onlineRider.Point.Latitude, onlineRider.Point.Longitude), index);
}
//如果是观察者且当前第一此进入场景(TODO:这样切换会闪一下待解决)
if (isWatch && currentPlayer is PlayerController)
@@ -478,16 +477,7 @@ public class CyclingController : DeviceServiceMonoBase
if (bakePlayer != null)
bakePlayer.IsShowInfo = true;
}
GameObject watcherList { get; set; }
//当前比赛观看者
private void ShowWatchers()
{
if (watcherList == null)
{
watcherList = Resources.Load<GameObject>("UI/Prefab/Match/WatcherPanel");
watcherList = Instantiate(watcherList, uiParent);
}
}
//查询赛事观看者列表(取前5)
public List<OnlineUser> GetWatcherList()
{
@@ -575,6 +565,8 @@ public class CyclingController : DeviceServiceMonoBase
arrowGameObj.SetActive(true);
Is3dView = false;
}
ChangeCurrentPlayer(currentPlayer.UserId);
}
private bool lockView = false;
private void Map_OnTileFinished(Mapbox.Unity.MeshGeneration.Data.UnityTile obj)
@@ -642,11 +634,14 @@ public class CyclingController : DeviceServiceMonoBase
//退出或者完成骑行
public void SetQuit()
{
//耗时巨大的代码
sw.Stop();
TimeSpan ts2 = sw.Elapsed;
UnityEngine.Debug.Log(string.Format("Stopwatch总共花费{0}ms.", ts2.TotalMilliseconds));
//TODO后算接口需要增加累计毫秒字段
//耗时巨大的代码
if (sw != null)
{
sw.Stop();
TimeSpan ts2 = (TimeSpan)(sw.Elapsed);
UnityEngine.Debug.Log(string.Format("Stopwatch总共花费{0}ms.", ts2.TotalMilliseconds));
//TODO后算接口需要增加累计毫秒字段
}
isStart = false;
isQuit = true;
}
@@ -63,7 +63,7 @@ namespace Assets.Scenes.Ride.Scripts
}
}
double diff = 0;
public void SetDataSource(double _totalDistance, double _distance,string Name,double weightKg,Vector2d point,int index=0)
public void SetDataSource(double _totalDistance, double _distance, double _power, double _heartRate, double _cadence,int _totalTicks, string Name,double weightKg,Vector2d point,int index=0)
{
totalDistance = _totalDistance;
distance = _distance;
@@ -73,6 +73,10 @@ namespace Assets.Scenes.Ride.Scripts
CurrentIndex = index;
//Point = point;
currentlatlong = point;
heartRate = Convert.ToInt32( _heartRate);
power = Convert.ToInt32(_power);
cadance = _cadence;
ticks = _totalTicks;
}
public Vector2d Point { get; set; }
@@ -281,7 +285,8 @@ namespace Assets.Scenes.Ride.Scripts
}
}
}
Color transparent = new Color(0.1529412f, 0.8745098f, 0.8901961f, 0);
Color blue = new Color(0.1529412f, 0.8745098f, 0.8901961f, 1);
private void MoveGraghHead4Race()
{
MoveHead();
@@ -289,12 +294,14 @@ namespace Assets.Scenes.Ride.Scripts
//如果切换到当前用户,当前用户头像变大,并且只显示当前用户
if (mainController.currentPlayer.UserId == UserId)
{
headPanel.SetActive(true);
head.gameObject.SetActive(true);
headPanel.GetComponent<Image>().color = blue;
rect.DOScale(new Vector3(1.5f, 1.5f, 1.5f), 0.5f);
}
else
{
headPanel.SetActive(false);
head.gameObject.SetActive(false);
headPanel.GetComponent<Image>().color = transparent;
rect.DOScale(new Vector3(1f, 1f, 1f), 0.5f);
}
}