loading页&结果页面&代码结构微调

This commit is contained in:
lishuo committed 2021-07-16 18:37:02 +08:00
1 parent eb1803c9ef
commit eed2d13624
99 files changed
+14567 -7299

No files matched your search

+3 -4
View File
@@ -142,16 +142,15 @@ namespace Assets.Scripts.Apis
public async Task<JsonResult<object>> GetEarthData(double lat, double lon)
{
//CultureInfo.InvariantCulture
var result = await GetAsync<JsonResult<object>>($"Map/GetEarthData?lat={ lat.ToString(CultureInfo.InvariantCulture) }&lon={ lon.ToString(CultureInfo.InvariantCulture) }");
return result;
}
//获取Loading页面路书封面图
public async Task<JsonResult<string>> GetMapLoadingCoverageUrl(int routeId)
public async Task<JsonResult<string>> GetMapLoadingCoverageUrl(int routeId,int type=0)
{
//CultureInfo.InvariantCulture
var result = await GetAsync<JsonResult<string>>($"Map/GetMapLoadingCoverage?id={ routeId }");
var url = $"Map/GetLoadingCoverage?id={ routeId }&type={ type }";
var result = await GetAsync<JsonResult<string>>(url);
return result;
}
@@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
namespace Assets.Scripts.Apis.Models
{
@@ -51,5 +52,17 @@ namespace Assets.Scripts.Apis.Models
public int CloseTime { get; set; }
public bool HasRecord { get; set; }
//最大参赛人数
public int MaxMembers { get; set; }
//报名参赛的选手
public List<CompetitionPlayer> UserList {get;set; }
}
public class CompetitionPlayer
{
public int Id { get; set; }
public string NickName { get; set; }
public string WxHeadImg { get; set; }
public string Sex { get; set; }
}
}
+2 -2
View File
@@ -11,7 +11,7 @@ using Assets.Scripts.Devices;
public static class App
{
public static string Host = "http://192.168.0.97:5082/";
public static string Host = "http://192.168.0.102:5082/";
public static string AppVersion = Application.version;
@@ -40,7 +40,7 @@ public static class App
public static bool isChanged { get; set; }
public static string notifyContent { get; internal set; }
public static RideSetting rideSetting = new RideSetting();
public static RideSetting RideSetting = new RideSetting();
public static string pageName { get; set; }
public static int firstEnter { get; set; }
+1 -1
View File
@@ -1055,7 +1055,7 @@ public class LoginController : MonoBehaviour
UIManager.Instance.userInfoIndex = 0;
}
App.CurrentUser = data;
App.rideSetting.sensitivity = data.Sensitivity;
App.RideSetting.Sensitivity = data.Sensitivity;
SceneManager.LoadScene("MainScene");
}
/// <summary>
@@ -0,0 +1,157 @@
using Assets.Scripts;
using Assets.Scripts.Apis;
using Assets.Scripts.Apis.Models;
using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
namespace Assets.Scenes.Ride.Scripts
{
public class CompetitionLoadingController : AbstratctLoadingController
{
private GameObject Watch { get; set; }
private bool _canJoin = false;
private bool _canStart = false;
private RawImage CompetitionDesc;
private Text StartTime { get; set; }
private Text Contestant { get; set; }
private Transform PlayersPanel {get;set;}
public override void InjectController(CyclingController controller)
{
cyclingController = controller;
//渲染比赛界面
panel = Instantiate(Resources.Load<GameObject>("UI/Prefab/Match/CompetitonPanel"), transform);
PFUIPanel mainPanel = panel.GetComponent<PFUIPanel>();
PFUIPanel modelPanel = transform.Find("ModalPanel").GetComponent<PFUIPanel>();
cyclingController.SetUIManager(mainPanel, modelPanel);
}
protected override void Start()
{
base.Start();
}
protected override void ShowLoading()
{
loadingPanel = panel.transform.Find("LoadingPanel").gameObject;
loadingPanel.showLoadingExtension();
}
//初始化
public override void Init()
{
InitGameObject();
InitGameObjectData();
}
//构建赛事界面
protected override void InitGameObject()
{
base.InitGameObject();
CompetitionDesc = panel.transform.Find("CompetitionDesc").GetComponent<RawImage>();
StartTime = panel.transform.Find("Time").GetComponent<Text>();
Contestant = panel.transform.Find("Contestant").GetComponent<Text>();
Watch = panel.transform.Find("Watch").gameObject;
PlayersPanel = panel.transform.Find("PlayersPanel/List/Viewport/Content");
UIManager.AddEvent(Watch, EventTriggerType.PointerClick, StartWatch);
}
//查询赛事相关数据
protected override void InitGameObjectData()
{
var route = cyclingController.mapRoute;
var competition = cyclingController.competition;
//赛事状态按钮控制
_canJoin = competition.CanJoin;
_canStart = competition.CanStart;
var showWatch = !_canJoin && !_canStart && !competition.HasRecord;
Watch.SetActive(showWatch);
rideNow.gameObject.SetActive(!showWatch);
rideNowText.text = _canJoin ? "Apply" : "RideNow";
#region 赛事基本信息
//赛事名称
mapName.text = competition.Title;
//距离
distance.text = route.Distance.ToString("f1") + "KM";
//海拔
elevaction.text = Math.Round(route.TotalClimb.GetValueOrDefault(0), 2).ToString() + "M";
//平均破度
slope.text = Math.Round(route.AverageGrade, 2).ToString() + "%";
//比赛开始时间
StartTime.text = competition.StartTime.ToLongTimeString();
//参赛选手
Contestant.text = competition.UserList.Count.ToString() + "Players";
ShowPlayers(competition.UserList);
//路书描述
mapDescText.text = route.Dec;
//主办方logo
//赛事详情
//异步请求mapbox画出当前路书路线图
DrawMapRouteAsync(route.Id,1);
AddProcess(20);
#endregion
StartCoroutine(HiddenLoading());
}
private int maxShowCout = 15;
private void ShowPlayers(List<CompetitionPlayer> list)
{
var watcher = Resources.Load<GameObject>("UI/Prefab/Match/Watcher");
var moreHead = Resources.Load<GameObject>("UI/Prefab/Match/MoreHead");
int index = 0;
foreach (var item in list)
{
index++;
if (index >= maxShowCout) {
Instantiate(moreHead, PlayersPanel);
break;
}
var head = Instantiate(watcher, PlayersPanel);
var headiamge = head.GetComponent<RawImage>();
if (!string.IsNullOrEmpty(item.WxHeadImg))
{
Utils.DisplayImage(headiamge, item.WxHeadImg, true);
}
}
}
//显示比赛详情图片:如果没有比赛详情图则显示地图
private void ShowCompetitionDescImage()
{
}
#region 事件
//先报名后开始
protected override void StartRide(BaseEventData baseEvent)
{
//先报名
if (_canJoin)
{
MapCompetitionApi s = new MapCompetitionApi();
var rrr = s.ApplyMapCompetition(cyclingController.competitionId);
if (rrr.Result.result)
{
var competition = s.GetById(cyclingController.competitionId).data;
_canStart = competition.CanStart;
}
rideNowText.text = "RideNow";
}
else
{
base.StartRide(baseEvent);
}
}
//观察
protected void StartWatch(BaseEventData baseEvent)
{
//隐藏当前用户
cyclingController.isWatch = true;
cyclingController.player.SetActive(false);
base.StartRide(baseEvent);
}
#endregion
}
}
@@ -105,7 +105,7 @@ namespace Assets.Scenes.Ride.Scripts
if (bufferSize < pageSize)
{
//情况一:还有足够的buffer,直接创建
GameObject prefabItem = cyclingController.currentPlayer.UserId == item.UserId ? nearByMajorItem : nearByItem;
GameObject prefabItem = item.IsSelf ? nearByMajorItem : nearByItem;
GameObject newObj = (GameObject)Instantiate(prefabItem, parent);
competitionRankingItem = newObj.GetComponent<CompetitionRankingItem>();
bufferSize++;
@@ -4,18 +4,24 @@ using System.Linq;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
namespace Assets.Scenes.Ride.Scripts
{
public class CompetitionResultFactory: MonoBehaviour
{
int pageIndex = 1;
int pageSize = 8;
CyclingController cyclingController;
RawImage Head;
Text Ranking;
Text Timer;
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>();
Timer = transform.Find("Mine/Timer").GetComponent<Text>();
UIManager.AddEvent(closeBtn, UnityEngine.EventSystems.EventTriggerType.PointerClick, Close);
}
@@ -36,20 +42,39 @@ namespace Assets.Scenes.Ride.Scripts
{
var list = model?.competitionRankingModel?.Results;
if (list == null) return;
var parent = transform.Find("ScrollView/Viewport/Content");
Utils.DestroyChildren(parent);
var pagedList = list.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
foreach (var item in pagedList)
//当前用户排名
var currentRanking = list.Where(c => c.UserId == cyclingController.currentPlayer.UserId).FirstOrDefault();
if (currentRanking != null)
{
var finalRankingItem = Instantiate(Resources.Load<GameObject>("UI/Prefab/Match/FinalRankingItem"), parent);
var finalRankingItemScript = finalRankingItem.GetComponent<FinalRankingItemScript>();
finalRankingItemScript.setRanking(item.Index.ToString());
Utils.DisplayImage(Head, App.CurrentUser.WxHeadImg, true);//TODO:改造数据结构结果增加头像字段
Ranking.text = currentRanking.Index.ToString().PadLeft(3,'0');
Timer.text = currentRanking.TripTime;
}
//排名列表
var rankingList = FindObjectsOfType<FinalRankingItemScript>();
foreach (var item in list)
{
var finalRankingItemScript = rankingList.Where(c => c.UserId == item.UserId).FirstOrDefault();
//没有就创建
if (finalRankingItemScript == null)
{
var finalRankingItem = Instantiate(Resources.Load<GameObject>("UI/Prefab/Match/FinalRankingItem"), parent);
finalRankingItemScript = finalRankingItem.GetComponent<FinalRankingItemScript>();
}
//有就更新
finalRankingItemScript.setGap(item.Gap);
finalRankingItemScript.setSource(item.DeviceType);
finalRankingItemScript.setUserId(item.UserId);
finalRankingItemScript.setRanking(item.Index);
finalRankingItemScript.setHeartRate(item.HeartRate.ToString("f0"));
finalRankingItemScript.setName(item.Name);
finalRankingItemScript.setPower(item.Power.ToString());
finalRankingItemScript.setRatio(item.WeightKg.ToString("f2"));
finalRankingItemScript.setTimer(item.TripTime);
finalRankingItemScript.transform.SetSiblingIndex(item.Index);
}
}
}
@@ -42,7 +42,7 @@ namespace Assets.Scenes.Ride.Scripts
{
var finalRankingItem = Instantiate(Resources.Load<GameObject>("UI/Prefab/Match/FinalRankingItem"), parent);
var finalRankingItemScript = finalRankingItem.GetComponent<FinalRankingItemScript>();
finalRankingItemScript.setRanking(item.Index.ToString());
finalRankingItemScript.setRanking(item.Index);
finalRankingItemScript.setHeartRate(item.HeartRate.ToString("f0"));
finalRankingItemScript.setName(item.Name);
finalRankingItemScript.setPower(item.Power.ToString());
@@ -0,0 +1,179 @@
using Assets.Scripts;
using Assets.Scripts.UI.UIEffect;
using UnityEngine;
using UnityEngine.UI;
namespace Assets.Scenes.Ride.Scripts
{
public class FinalRankingItemScript : MonoBehaviour
{
private RawImage Head;
private RawImage Country;
private Image RankHead;
private Text Name;
private Text Power;
private Text Timer;
private Text Gap;
private Text WKG;//功体比
private Text Ranking;
private Text HeartRate;
private Text Source;
private Outline outline;
private Image BackGround;
private UIGradient uIGradient;
private UIGradient RankHeadGradient;
private int _userId = 0;
public int UserId { get { return _userId; } }
private Texture countryTexture;
#region 颜色常量
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 GREY = new Color(0.1333333f, 0.1333333f, 0.1764706f);
private Color SHALLOW_GREY = new Color(0.2784314f, 0.2784314f, 0.3490196f);
private Color WHITE = new Color(1f, 1f, 1f, 1f);
private Color TRANSPARENT = new Color(1f, 1f, 1f, 0f);
private Color BLACK = new Color(0.2078431f, 0.2078431f, 0.2627451f);
private Color SHALLOW_WHITE = new Color(0.8352941f, 0.8352941f, 0.8352941f);
#endregion
CyclingController cyclingController;
private void Awake()
{
cyclingController = FindObjectOfType<CyclingController>();
RankHead = transform.Find("RankHead").GetComponent<Image>();
RankHeadGradient = RankHead.GetComponent<UIGradient>();
Ranking = transform.Find("Ranking").GetComponent<Text>();
Name = transform.Find("Name").GetComponent<Text>();
Timer = transform.Find("Timer").GetComponent<Text>();
Gap = transform.Find("GAP").GetComponent<Text>();
Power = transform.Find("Power").GetComponent<Text>();
WKG = transform.Find("WKG").GetComponent<Text>();
HeartRate = transform.Find("Heart").GetComponent<Text>();
Source = transform.Find("Source").GetComponent<Text>();
Head = transform.Find("Head").GetComponent<RawImage>();
Country = transform.Find("Country").GetComponent<RawImage>();
outline = transform.GetComponent<Outline>();
BackGround = transform.GetComponent<Image>();
uIGradient = transform.GetComponent<UIGradient>();
}
public void setRatio(string ratio)
{
WKG.text = ratio +"W/KG";
}
public void setSource(string device)
{
Source.text = device;
}
public void setGap(string gap)
{
Gap.text = gap;
}
public void setHead(string url)
{
Utils.DisplayImage(Head, url, true);
var rect = ((RectTransform)Head.transform).rect;
Material material = Instantiate(Resources.Load<Material>("UI/Material/RoundedCornersTextureMaterial"));
material.SetVector(Shader.PropertyToID("_WidthHeightRadius"), new Vector4(rect.width, rect.height, rect.height, 0));
Head.material = material;
}
public void setCountry(Texture texture)
{
Country.texture = texture;
}
public void setName(string name)
{
Name.text = name;
}
public void setPower(string power)
{
Power.text = power +"W";
}
public void setTimer(string timer)
{
Timer.text = timer;
}
public void setRanking(int ranking)
{
switch (ranking)
{
//第一名的样式
case 1:
RankHeadGradient.color1 = RED;
RankHeadGradient.color2 = SHALLOW_RED;
Name.color = BLACK;
Timer.color = BLACK;
uIGradient.color1 = WHITE;
uIGradient.color2 = SHALLOW_WHITE;
break;
//第二名的样式
case 2:
RankHeadGradient.color1 = PURPLE;
RankHeadGradient.color2 = SHALLOW_PURPLE;
Name.color = BLACK;
Timer.color = BLACK;
uIGradient.color1 = WHITE;
uIGradient.color2 = SHALLOW_WHITE;
break;
//第三名的样式
case 3:
RankHeadGradient.color1 = BLUE;
RankHeadGradient.color2 = SHALLOW_BLUE;
Name.color = BLACK;
Timer.color = BLACK;
uIGradient.color1 = WHITE;
uIGradient.color2 = SHALLOW_WHITE;
break;
default:
RankHeadGradient.color1 = BLACK;
RankHeadGradient.color2 = BLACK;
Name.color = WHITE;
Timer.color = WHITE;
uIGradient.color1 = GREY;
uIGradient.color2 = SHALLOW_GREY;
break;
}
Ranking.text = ranking.ToString().PadLeft(3,'0');
}
public void setHeartRate(string heartRate)
{
if (!heartRate.Equals("0"))
{
HeartRate.text = heartRate + "bpm";
}
else
{
HeartRate.text = "--bpm";
}
}
public void setUserId(int userId)
{
_userId = userId;
var isself = userId == cyclingController.currentPlayer.UserId;
//头像根据是否是自己显示
Utils.DisplayImage(Head, App.CurrentUser.WxHeadImg, true);//TODO:改造数据结构结果增加头像字段
Head.gameObject.SetActive(isself);
//边框样式
var color = isself ? WHITE : TRANSPARENT;
outline.effectColor = color;
}
}
}
@@ -0,0 +1,55 @@
using Assets.Scenes.Ride.Scripts.Model;
using Assets.Scenes.Ride.Scripts.Model.CyclingModels;
using Assets.Scripts;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEngine.UI;
namespace Assets.Scenes.Ride.Scripts
{
public class WatcherFactory : MonoBehaviour
{
private Transform content { get; set; }
private CyclingController cyclingController { get;set;}
private GameObject watcher { get; set; }
private GameObject head { get; set; }
private Text watchNum { get; set; }
private void Awake()
{
cyclingController = FindObjectOfType<CyclingController>();
content = transform.Find("List/Viewport/Content");
head = transform.Find("Head").gameObject;
watchNum = transform.Find("Head/OnlineUserNum").GetComponent<Text>();
watcher = Resources.Load<GameObject>("UI/Prefab/Match/Watcher");
}
private float t = 1f;
private void Update()
{
t -= Time.deltaTime;
while (t<=0)
{
CreateList();
t = 1;
}
}
private void CreateList()
{
var watchList = cyclingController.GetWatcherList();
var count = watchList.Count();
head.SetActive(count >= 5);
watchNum.text = count.ToString();//绑定观看人数
var list = watchList.Take(5);
Utils.DestroyChildren(content);
foreach (var item in list)
{
var head = Instantiate(watcher, content);
var headiamge = head.GetComponent<RawImage>();
Utils.DisplayImage(headiamge, item.HeadImage, true);
}
}
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 5d3a3fba34cb3db4fa7a25f6f5ca4992
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -185,6 +185,7 @@ namespace Assets.Scenes.Ride.Scripts.Model.CyclingModels
{
Index = ranking.Index,
Name = ranking.NickName,
UserId = ranking.UserId,
Weight = ranking?.Weight ?? 0,
WeightKg = ranking?.WeightKg ?? 0,
//Time = ranking?.TotalTime ?? "",
@@ -37,8 +37,12 @@ namespace Assets.Scenes.Ride.Scripts.Model
{
public int Index { get; set; }
public int UserId { get; set; }
public string Name { get; set; }
public string HeadUrl { get; set; }
//public string Time { get; set; }
public double Power { get; set; }
@@ -8,6 +8,7 @@ namespace Assets.Scenes.Ride.Scripts.Model
{
public class RideSetting
{
public double sensitivity { set; get; }
public double Sensitivity { set; get; }
public bool ShowOtherHead { set; get; }
}
}
@@ -114,7 +114,7 @@ namespace Assets.Scenes.Ride.Scripts
mapData = mainController.GetMapData();//获取路书信息
////获取海拔图UI对象
//var graphObject = transform.parent.Find("SingleUI/Panel/GraphChart");
//var graphObject = transform.parent.Find("UI/Panel/GraphChart");
//chartDataSourceScript = graphObject.GetComponent<ChartDataSourceScript>();
//graph = graphObject.GetComponent<GraphChartBase>();
chartDataSourceScript = mainController.chartDataSourceScript;
@@ -16,67 +16,112 @@ namespace Assets.Scenes.Ride.Scripts
{
public class AbstratctLoadingController : MonoBehaviour
{
#region GameObject
protected Text mapName;
protected AbstractMap _map;
protected Text level;
protected Text mapName;
protected AbstractMap _map { get; set; }
protected MapApi mapApi { get; set; }
protected RawImage mapRouteImage;
protected CanvasGroup canvasGroup;
protected Slider slider;
protected Text processText;
protected Text rideNowText;
protected Button rideNow;
protected Button cancel;
protected Text mapDescText;
protected Text distance;
protected Text elevaction;
protected Text slope;
protected Text rideNum;
protected Text uploadByUserName;
protected Text processText;
protected Text mapDescText;
protected Text rideNowText;
protected RawImage head;
protected RawImage country;
protected RawImage mapCountry;
protected RawImage mapRouteImage;
protected RawImage altitudeGraph;
protected Button rideNow;
protected Button cancel;
protected MapApi mapApi { get; set; }
protected GameObject panel;
protected CanvasGroup canvasGroup;
protected Transform mapRanking;
protected Slider slider;
#endregion
protected GameObject loadingPanel;
protected GameObject loadingPanel { get; set; }
#region 属性
protected float process = 0;//0-100 %
public float targetAlpha = 0f;
public float alphaSpeed = 2.0f;
private bool depressFlag = false;
protected CyclingController cyclingController { get; set; }
#endregion
protected CyclingController cyclingController;
protected virtual void Start()
{
App.TextureCache.Clear();
loadingPanel = transform.Find("Panel/LoadingPanel").gameObject;
loadingPanel.showLoadingExtension();
mapApi = new MapApi();
ShowLoading();
}
public void InjectController(CyclingController controller)
void Update()
{
if (canvasGroup == null)
{
return;
}
if (targetAlpha != canvasGroup.alpha && depressFlag)
{
canvasGroup.alpha = Mathf.Lerp(canvasGroup.alpha, targetAlpha, alphaSpeed * Time.deltaTime);
if (Mathf.Abs(targetAlpha - canvasGroup.alpha) <= 0.01f)
{
canvasGroup.alpha = targetAlpha;
}
if (canvasGroup.alpha == 0)
{
transform.gameObject.SetActive(false);
}
}
}
//显示loading动画
protected virtual void ShowLoading()
{
}
//在awake前触发。注入主控制器并设置UIManager
public virtual void InjectController(CyclingController controller)
{
cyclingController = controller;
PFUIPanel mainPanel = transform.Find("Panel").GetComponent<PFUIPanel>();
PFUIPanel modelPanel = transform.Find("ModalPanel").GetComponent<PFUIPanel>();
cyclingController.SetUIManager(mainPanel, modelPanel);
}
//提供给主控制器初始化用
public void Init(MapRoute route)
//初始化
public virtual void Init()
{
InitGameObject();
InitGameObjectData(route);
InitGameObjectData();
}
//展示当前路书图片
public void SetMapRouteImage(string url)
//加载界面
protected virtual void InitGameObject()
{
Utils.DisplayImage(mapRouteImage, url);
mapName = panel.transform.Find("MapName").GetComponent<Text>();
distance = panel.transform.Find("Distance").GetComponent<Text>();
elevaction = panel.transform.Find("Elevaction").GetComponent<Text>();
slope = panel.transform.Find("Slope").GetComponent<Text>();
mapRouteImage = panel.transform.Find("MapRouteImage").GetComponent<RawImage>();
slider = panel.transform.Find("Process").GetComponent<Slider>();
processText = panel.transform.Find("ProcessText").GetComponent<Text>();
mapDescText = panel.transform.Find("MapDesc").GetComponent<Text>();
rideNow = panel.transform.Find("RideNow").GetComponent<Button>();
rideNowText = rideNow.transform.Find("Text").GetComponent<Text>();
cancel = panel.transform.Find("Cancel").GetComponent<Button>();
var root = transform.parent;
_map = root.Find("Map").GetComponent<AbstractMap>();
_map.OnInitialized += _map_OnInitialized;
canvasGroup = transform.GetComponent<CanvasGroup>();
rideNow.enabled = false;
rideNow.interactable = false;
UIManager.AddEvent(rideNow.gameObject, UnityEngine.EventSystems.EventTriggerType.PointerClick, StartRide);
UIManager.AddEvent(cancel.gameObject, UnityEngine.EventSystems.EventTriggerType.PointerClick, Cancel);
}
public async void DrawMapRouteAsync(int routeId)
//加载数据
protected virtual void InitGameObjectData()
{
}
//绘制地图
public virtual async void DrawMapRouteAsync(int routeId,int type=0)
{
this.AddProcess(10);
//var url = Helper.GetMapboxApiUrl(mapData.List);
mapApi = new MapApi();
var result = await mapApi.GetMapLoadingCoverageUrl(routeId);
var result = await mapApi.GetMapLoadingCoverageUrl(routeId, type);
if (!result.result)
return;
var url = result.data;
@@ -85,38 +130,33 @@ namespace Assets.Scenes.Ride.Scripts
mapRouteImage.texture = App.TextureCache[url];
var canvasGroup = mapRouteImage.GetComponent<CanvasGroup>();
canvasGroup.DOFade(1, 1);
//this.AddProcess(10);
}
else
{
Utils.DisplayImageAysnc(StartCoroutine, mapRouteImage, url, dowloadCallBack);
//this.AddProcess(10);
else
{
Utils.DisplayImageAysnc(StartCoroutine, mapRouteImage, url, DowloadCallBack);
}
}
protected void dowloadCallBack(string url)
protected void DowloadCallBack(string url)
{
if (!App.TextureCache.ContainsKey(url))
{
App.TextureCache.Add(url, mapRouteImage.texture);
}
else
{
}
else
{
App.TextureCache[url] = mapRouteImage.texture;
}
var canvasGroup = mapRouteImage.GetComponent<CanvasGroup>();
var canvasGroup = mapRouteImage.GetComponent<CanvasGroup>();
canvasGroup.DOFade(1, 1);
}
//设定当前loading进度
public void AddProcess(float v)
public virtual void AddProcess(float v)
{
process += v;
slider.value = process;
slider.onValueChanged.AddListener((f) =>
{
processText.text = $"{(f ).ToString("#0")}%";
processText.text = $"{(f).ToString("#0")}%";
});
if (process == 100)
@@ -125,72 +165,18 @@ namespace Assets.Scenes.Ride.Scripts
rideNow.enabled = true;
}
}
//创建排行榜
public void CreateRankingList(List<MapRouteRanking> list)
{
var prefab = Resources.Load<GameObject>("UI/Prefab/Ride/RankingItem");
var parent = transform.Find("Panel/MapRanking");
var title = transform.Find("Panel/RankingTitle").gameObject;
if (list.Count == 0)
{
title.SetActive(false);
}
foreach (var item in list)
{
GameObject newObj = (GameObject)Instantiate(prefab, parent);
var selectPlayerItemScript = newObj.GetComponent<RankingItemScript>();
selectPlayerItemScript.SetRanking(item.RowNumber.ToString());
selectPlayerItemScript.SetName(item.NickName);
selectPlayerItemScript.SetTimer(item.IsDNF?"DNF":item.TotalTime);
selectPlayerItemScript.SetHead(item.WxHeadImg);
var texture = cyclingController.GetCountryImageByCode(item.CountryCode);
selectPlayerItemScript.SetCountry(texture);
}
}
protected virtual void InitGameObject()
{
panel = transform.Find("Panel").gameObject;
mapName = transform.Find("Panel/MapName").GetComponent<Text>();
distance = transform.Find("Panel/Distance").GetComponent<Text>();
level = transform.Find("Panel/level/Text").GetComponent<Text>();
elevaction = transform.Find("Panel/Elevaction").GetComponent<Text>();
slope = transform.Find("Panel/Slope").GetComponent<Text>();
rideNum = transform.Find("Panel/RideNum").GetComponent<Text>();
uploadByUserName = transform.Find("Panel/UploadByUserName").GetComponent<Text>();
country = transform.Find("Panel/UploadByCountry").GetComponent<RawImage>();
mapCountry = transform.Find("Panel/Country").GetComponent<RawImage>();
head = transform.Find("Panel/UploadByHead").GetComponent<RawImage>();
mapRouteImage = transform.Find("Panel/MapRouteImage").GetComponent<RawImage>();
altitudeGraph = transform.Find("Panel/AltitudeGraph").GetComponent<RawImage>();
mapRanking = transform.Find("Panel/MapRanking");
slider = transform.Find("Panel/Process").GetComponent<Slider>();
processText = transform.Find("Panel/ProcessText").GetComponent<Text>();
mapDescText = transform.Find("Panel/MapDesc").GetComponent<Text>();
rideNow = transform.Find("Panel/RideNow").GetComponent<Button>();
rideNowText = rideNow.transform.Find("Text").GetComponent<Text>();
cancel = transform.Find("Panel/Cancel").GetComponent<Button>();
var root = transform.parent;
_map = root.Find("Map").GetComponent<AbstractMap>();
canvasGroup = transform.GetComponent<CanvasGroup>();
rideNow.enabled = false;
rideNow.interactable = false;
UIManager.AddEvent(rideNow.gameObject, UnityEngine.EventSystems.EventTriggerType.PointerClick, StartRide);
UIManager.AddEvent(cancel.gameObject, UnityEngine.EventSystems.EventTriggerType.PointerClick, Cancel);
}
protected virtual void StartRide(BaseEventData baseEvent)
{
var checkAnt = cyclingController.CheckAnt();
#if UNITY_EDITOR
checkAnt = true;
checkAnt = true;
#endif
if (!checkAnt)
{
if (!checkAnt)
{
var alert = (GameObject)Instantiate(Resources.Load("UI/Prefab/Ride/Alert"), panel.transform);
alert.SetActive(true);
}
else
else
{
cyclingController.InitTcp();
MapUDPService.SendGizpModel();
@@ -200,44 +186,11 @@ namespace Assets.Scenes.Ride.Scripts
canvasGroup.blocksRaycasts = false;
depressFlag = true;
}
}
}
protected void Cancel(BaseEventData baseEvent)
{
SceneManager.LoadScene("MainScene");
}
protected void InitGameObjectData(MapRoute route)
{
if (route != null)
{
#region 绑定路书基本信息
mapName.text = route.Name;
level.text = route.Hard;
elevaction.text = Math.Round(route.TotalClimb.GetValueOrDefault(0), 2).ToString() + "M";
slope.text = Math.Round(route.AverageGrade, 2).ToString() + "%";
rideNum.text = route.TheHeat.ToString();
distance.text = route.Distance.ToString("f1") + "KM";
mapDescText.text = route.Dec;
var userList = ConfigHelper.mapApi.GetOnlineUserInfo(new int[] { route.UserId }).data;
if (userList.Count > 0)
{
uploadByUserName.text = userList[0].Name;
var countryUrl = App.Host + $"User/GetCountryImg?userid={userList[0].Id}";
Utils.DisplayImage(head, userList[0].HeadImage);//头像
country.texture = cyclingController.GetCountryImageByCode(route.CountryCode);//上传者国家
mapCountry.texture = cyclingController.GetCountryImageByName(userList[0].Country);//路书国家
Utils.DisplayImage(altitudeGraph, route.AltitudeGraph);//海拔图
}
#endregion
StartCoroutine(HiddenLoading());
#region 地图注册 排行榜等接口
_map.OnInitialized += _map_OnInitialized;
_map.OnEditorPreviewEnabled += OnEditorPreviewEnabled;
_map.OnEditorPreviewDisabled += OnEditorPreviewDisabled;
#endregion
}
}
protected IEnumerator HiddenLoading()
{
yield return new WaitForSeconds(1f);
@@ -254,37 +207,5 @@ namespace Assets.Scenes.Ride.Scripts
}
};
}
protected void OnEditorPreviewEnabled()
{
//transform.gameObject.SetActive(false);
}
protected void OnEditorPreviewDisabled()
{
//transform.gameObject.SetActive(true);
}
public float targetAlpha = 0f;
public float alphaSpeed = 2.0f;
private bool depressFlag = false;
void Update()
{
if (canvasGroup == null)
{
return;
}
if (targetAlpha != canvasGroup.alpha && depressFlag)
{
canvasGroup.alpha = Mathf.Lerp(canvasGroup.alpha, targetAlpha, alphaSpeed * Time.deltaTime);
if (Mathf.Abs(targetAlpha - canvasGroup.alpha) <= 0.01f)
{
canvasGroup.alpha = targetAlpha;
}
if (canvasGroup.alpha == 0)
{
transform.gameObject.SetActive(false);
}
}
}
}
}
@@ -1,51 +0,0 @@
using Assets.Scripts.Apis;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
namespace Assets.Scenes.Ride.Scripts
{
public class CompetitionLoadingController : AbstratctLoadingController
{
private GameObject Watch;
private bool hasJoin = false;
protected override void Start()
{
base.Start();
}
//先报名后开始
protected override void StartRide(BaseEventData baseEvent)
{
//先报名
if (!hasJoin)
{
MapCompetitionApi s = new MapCompetitionApi();
_ = s.ApplyMapCompetition(cyclingController.competitionId);
rideNowText.text = "RideNow";
hasJoin = true;
}
else
{
base.StartRide(baseEvent);
}
}
protected void StartWatch(BaseEventData baseEvent)
{
//隐藏当前用户
cyclingController.isWatch = true;
cyclingController.player.SetActive(false);
base.StartRide(baseEvent);
}
protected override void InitGameObject()
{
base.InitGameObject();
//比赛相关数据绑定
//显示报名按钮 观战按钮 TODO
rideNowText.text = "Apply";
Watch = transform.Find("Panel/Watch").gameObject;
UIManager.AddEvent(Watch, EventTriggerType.PointerClick, StartWatch);
}
}
}
@@ -1,89 +0,0 @@
using Assets.Scripts;
using UnityEngine;
using UnityEngine.UI;
namespace Assets.Scenes.Ride.Scripts
{
public class FinalRankingItemScript : MonoBehaviour
{
private RawImage Head;
private RawImage Country;
private Text Name;
private Text Power;
private Text Timer;
private Text Ratio;//功体比
private Text Ranking;
private Text HeartRate;
private int _userId = 0;
public int UserId { get { return _userId; } }
private Texture countryTexture;
private void Awake()
{
Head = transform.Find("Head").GetComponent<RawImage>();
Country = transform.Find("Country").GetComponent<RawImage>();
Name = transform.Find("Name").GetComponent<Text>();
HeartRate = transform.Find("Heart").GetComponent<Text>();
Power = transform.Find("Power").GetComponent<Text>();
Timer = transform.Find("Timer").GetComponent<Text>();
Ratio = transform.Find("WKG").GetComponent<Text>();
Ranking = transform.Find("Ranking").GetComponent<Text>();
countryTexture = Resources.Load<Sprite>("Images/flag_China_Person").texture;
}
public void setRatio(string ratio)
{
Ratio.text = ratio +"W/KG";
}
public void setHead(string url)
{
Utils.DisplayImage(Head, url, true);
var rect = ((RectTransform)Head.transform).rect;
Material material = Instantiate(Resources.Load<Material>("UI/Material/RoundedCornersTextureMaterial"));
material.SetVector(Shader.PropertyToID("_WidthHeightRadius"), new Vector4(rect.width, rect.height, rect.height, 0));
Head.material = material;
}
public void setCountry(Texture texture)
{
Country.texture = texture;
}
public void setName(string name)
{
Name.text = name;
}
public void setPower(string power)
{
Power.text = power +"W";
}
public void setTimer(string timer)
{
Timer.text = timer;
}
public void setRanking(string ranking)
{
Ranking.text = ranking;
}
public void setHeartRate(string heartRate)
{
if (!heartRate.Equals("0"))
{
HeartRate.text = heartRate + "bpm";
}
else
{
HeartRate.text = "--bpm";
}
}
public void setUserId(int userId)
{
_userId = userId;
}
}
}
@@ -36,8 +36,9 @@ public class CyclingController : DeviceServiceMonoBase
public int preticks;
#region 参数
private MapRoute mapRoute;//当前路书数据
private MapDataModel mapData;//当前路书数据
public MapRoute mapRoute { get; set; }//当前路书数据
public MapCompetition competition { get; set; }//当前赛事数据
private MapDataModel mapData { get; set; }//当前路书数据
private Route route;//当前路书综合数据
public List<MapRouteRanking> mapRouteRankingList { get; set; }
private Vector2d coordiantes;//当前地图中心
@@ -79,10 +80,10 @@ public class CyclingController : DeviceServiceMonoBase
routeId = App.RouteIdParam > 0? App.RouteIdParam : 2633;
//mapRoute = mapApi.GetById(routeId).data;
//miniMap = transform.Find("MiniMap").gameObject;//小地图
resultPanel = transform.Find("SingleUI/Panel/ResultPanel").gameObject;
resultPanel = transform.Find("UI/Panel/ResultPanel").gameObject;
//获取海拔图UI对象
var graphObject = transform.Find("SingleUI/Panel/GraphChart");
var graphObject = transform.Find("UI/Panel/GraphChart");
chartDataSourceScript = graphObject.GetComponent<ChartDataSourceScript>();
graph = graphObject.GetComponent<GraphChartBase>();
@@ -99,14 +100,14 @@ public class CyclingController : DeviceServiceMonoBase
Transform uiParent;
private void Start()
{
UIManager.Instance.MainPanel = this.transform.Find("SingleUI/Panel").GetComponent<PFUIPanel>();
UIManager.Instance.ModalsPanel = this.transform.Find("SingleUI/ModalPanel").GetComponent<PFUIPanel>();
UIManager.Instance.MainPanel = this.transform.Find("UI/Panel").GetComponent<PFUIPanel>();
UIManager.Instance.ModalsPanel = this.transform.Find("UI/ModalPanel").GetComponent<PFUIPanel>();
onlineUserPrefab = Resources.Load<GameObject>("UI/Prefab/Match/OnlinePlayer");
miniMapPlayerPrefab = Resources.Load<GameObject>("UI/Prefab/Ride/MiniMapPlayer");
watcher = Resources.Load<GameObject>("UI/Prefab/Match/Watcher");
target = transform.Find("Target");
miniMap = transform.Find("MiniMap").gameObject;//小地图
uiParent = transform.Find("SingleUI/Panel");
uiParent = transform.Find("UI/Panel");
//进入倒计时
singleUIManager = UIObject.GetComponent<BaseUIManager>();
TrailRenderer trail = player.GetComponent<TrailRenderer>();
@@ -155,7 +156,7 @@ public class CyclingController : DeviceServiceMonoBase
{
yield return new WaitForSeconds(1);
mapRoute = mapApi.GetById(routeId).data;
loadingController.Init(mapRoute);//初始化loading页面
loadingController.Init();//初始化loading页面
loadingController.AddProcess(10);
InitData();//初始化数据
InitGameObject();//初始化场景
@@ -168,7 +169,9 @@ public class CyclingController : DeviceServiceMonoBase
{
yield return new WaitForSeconds(1);
mapRoute = mapApi.GetById(routeId).data;
loadingController.Init(mapRoute);//初始化loading页面
var mapCompetitionApi = new MapCompetitionApi();
competition = mapCompetitionApi.GetById(competitionId).data;
loadingController.Init();//初始化loading页面
loadingController.AddProcess(10);
InitRaceData();//初始化比赛数据
InitRaceGameObject();//初始化比赛场景
@@ -213,19 +216,19 @@ public class CyclingController : DeviceServiceMonoBase
App.routeResult = null;
#endregion
//异步请求mapbox画出当前路书路线图
loadingController.DrawMapRouteAsync(mapRoute.Id);
////异步请求mapbox画出当前路书路线图
//loadingController.DrawMapRouteAsync(mapRoute.Id);
//loadingController.AddProcess(10);
//计算上次骑行距离调整地图中心点
double endDistance = selectParamModel.EndDistance;
coordiantes = Along(endDistance);
loadingController.AddProcess(10);
//查询排行榜
var list = mapApi.GetRouteRanking(App.RouteIdParam, "1", 0, 10, "");
if (list.result)
{
loadingController.CreateRankingList(list.data.list);
loadingController.AddProcess(10);
}
////查询排行榜
//var list = mapApi.GetRouteRanking(App.RouteIdParam, "1", 0, 10, "");
//if (list.result)
//{
// loadingController.CreateRankingList(list.data.list);
// loadingController.AddProcess(10);
//}
var shaowList = mapApi.GetShadowList(App.RouteIdParam, "", 0, 10);
if (shaowList.result)
{
@@ -233,16 +236,12 @@ public class CyclingController : DeviceServiceMonoBase
}
}
private MapCompetition competition;
private void InitRaceData()
{
mapData = mapApi.GetData(routeId);//获取路书地理数据
route = new Route(mapData, mapRoute);
loadingController.AddProcess(10);
#region 其他场景传参处理
MapCompetitionApi mapCompetitionApi = new MapCompetitionApi();
competition = mapCompetitionApi.GetById(competitionId).data;
selectParamModel = new RouteResultParam
{
CompetitionId = competitionId,
@@ -256,25 +255,10 @@ public class CyclingController : DeviceServiceMonoBase
};
#endregion
//异步请求mapbox画出当前路书路线图
loadingController.DrawMapRouteAsync(mapRoute.Id);
//计算上次骑行距离调整地图中心点
double endDistance = selectParamModel.EndDistance;
coordiantes = Along(endDistance);
loadingController.AddProcess(10);
#region 查询排行榜
var list = mapApi.GetRouteRanking(App.RouteIdParam, "1", 0, 10, "");
if (list.result)
{
loadingController.CreateRankingList(list.data.list);
loadingController.AddProcess(10);
}
var shaowList = mapApi.GetShadowList(App.RouteIdParam, "", 0, 10);
if (shaowList.result)
{
mapRouteRankingList = shaowList.data.list;
}
#endregion
}
private Vector3 mapPos = Vector3.zero;
@@ -334,6 +318,9 @@ public class CyclingController : DeviceServiceMonoBase
public AbstractPlayer currentPlayer { get; set; }
private GameObject onlinePlayer { get; set; }
Vector3 MAX_SIZE = new Vector3(3f, 3f, 3f);
Vector3 MIN_SIZE = new Vector3(0.1f, 0.1f, 0.1f);
public void ChangeCurrentPlayer(int userId)
{
var coll = FindObjectsOfType<AbstractPlayer>();
@@ -341,14 +328,16 @@ public class CyclingController : DeviceServiceMonoBase
if (selectedPlayer != null)
{
currentPlayer = selectedPlayer;
selectedPlayer.transform.localScale = new Vector3(3f, 3f, 3f);
selectedPlayer.transform.localScale = Is3dView? MAX_SIZE : MIN_SIZE;
}
var unselectedPlayers = coll.Where(c => c.UserId != userId).ToList();
foreach (var item in unselectedPlayers)
{
item.transform.localScale = new Vector3(0.1f, 0.1f, 0.1f);
item.transform.localScale = MIN_SIZE;
}
//重置海拔图进度
graph.HorizontalScrolling = 0;
}
public void ChangeRandomPlayer()
{
@@ -489,7 +478,7 @@ public class CyclingController : DeviceServiceMonoBase
if (bakePlayer != null)
bakePlayer.IsShowInfo = true;
}
GameObject watcherList;
GameObject watcherList { get; set; }
//当前比赛观看者
private void ShowWatchers()
{
@@ -498,28 +487,24 @@ public class CyclingController : DeviceServiceMonoBase
watcherList = Resources.Load<GameObject>("UI/Prefab/Match/WatcherPanel");
watcherList = Instantiate(watcherList, uiParent);
}
var content = watcherList.transform.Find("List/Viewport/Content");
var watchList = MapUDPService.GetCompetitionWatchers(competitionId);
Utils.DestroyChildren(content);
foreach (var item in watchList)
{
var head = Instantiate(watcher, content);
var headiamge = head.GetComponent<RawImage>();
Utils.DisplayImage(headiamge, item.HeadImage, true);
}
}
//查询赛事观看者列表(取前5)
public List<OnlineUser> GetWatcherList()
{
return MapUDPService.GetCompetitionWatchers(competitionId);
}
#endregion
public void SetUIManager(PFUIPanel mainPanel, PFUIPanel model)
{
UIManager.Instance.MainPanel = mainPanel;//this.transform.Find("SingleUI/Panel").GetComponent<PFUIPanel>();
UIManager.Instance.ModalsPanel = model;// this.transform.Find("SingleUI/ModalPanel").GetComponent<PFUIPanel>();
UIManager.Instance.MainPanel = mainPanel;
UIManager.Instance.ModalsPanel = model;
}
public void ReSetUIManager()
{
UIManager.Instance.MainPanel = this.transform.Find("SingleUI/Panel").GetComponent<PFUIPanel>();
UIManager.Instance.ModalsPanel = this.transform.Find("SingleUI/ModalPanel").GetComponent<PFUIPanel>();
UIManager.Instance.MainPanel = this.transform.Find("UI/Panel").GetComponent<PFUIPanel>();
UIManager.Instance.ModalsPanel = this.transform.Find("UI/ModalPanel").GetComponent<PFUIPanel>();
}
public void AddEvent(GameObject sender, EventTriggerType eventType, UnityAction<BaseEventData> unityAction)
@@ -43,7 +43,7 @@ namespace Assets.Scenes.Ride.Scripts
var screenBounds = GetScreenBounds();
var z = SetZoomToFitBounds(targetbounds, screenBounds);
}
RectRoot = transform.parent.Find("SingleUI/Panel/MiniMap/MiniMap").GetComponent<RectTransform>();
RectRoot = transform.parent.Find("UI/Panel/MiniMap/MiniMap").GetComponent<RectTransform>();
}
trail = transform.parent.Find("Sphere").GetComponent<TrailRenderer>();
@@ -57,7 +57,7 @@ namespace Assets.Scenes.Ride.Scripts
{
if (playerController != null)
{
var tr = transform.parent.Find("SingleUI/Panel/MiniMap/MiniMap/arrow");
var tr = transform.parent.Find("UI/Panel/MiniMap/MiniMap/arrow");
tr.SetSiblingIndex(9999);
var pos = _map.GeoToWorldPosition(playerController.Currentlatlong);
pos.y += 15f;
@@ -1,24 +1,116 @@
using UnityEngine;
using Mapbox.Unity.Map;
using DG.Tweening;
using UnityEngine.UI;
using Assets.Scripts.Apis;
using System;
using Assets.Scripts;
using Assets.Scripts.Apis.Models;
using System.Collections.Generic;
using UnityEngine.EventSystems;
using UnityEngine.SceneManagement;
using System.Collections;
using System.Threading.Tasks;
namespace Assets.Scenes.Ride.Scripts
{
//[ExecuteInEditMode]
public class LoadingController : AbstratctLoadingController
{
#region GameObject
protected Text level;
protected Text rideNum;
protected Text uploadByUserName;
protected RawImage head;
protected RawImage country;
protected RawImage mapCountry;
protected RawImage altitudeGraph;
protected Transform mapRanking;
#endregion
public override void InjectController(CyclingController controller)
{
panel = Instantiate(Resources.Load<GameObject>("UI/Prefab/Match/LoadingPanel"), transform);
cyclingController = controller;
PFUIPanel mainPanel = panel.GetComponent<PFUIPanel>();
PFUIPanel modelPanel = transform.Find("ModalPanel").GetComponent<PFUIPanel>();
cyclingController.SetUIManager(mainPanel, modelPanel);
}
protected override void ShowLoading()
{
loadingPanel = panel.transform.Find("LoadingPanel").gameObject;
loadingPanel.showLoadingExtension();
}
//初始化
public override void Init()
{
InitGameObject();
InitGameObjectData();
}
protected override void InitGameObject()
{
base.InitGameObject();
level = panel.transform.Find("level/Text").GetComponent<Text>();
rideNum = panel.transform.Find("RideNum").GetComponent<Text>();
uploadByUserName = panel.transform.Find("UploadByUserName").GetComponent<Text>();
country = panel.transform.Find("UploadByCountry").GetComponent<RawImage>();
mapCountry = panel.transform.Find("Country").GetComponent<RawImage>();
head = panel.transform.Find("UploadByHead").GetComponent<RawImage>();
altitudeGraph = panel.transform.Find("AltitudeGraph").GetComponent<RawImage>();
mapRanking = panel.transform.Find("MapRanking");
}
protected override void InitGameObjectData()
{
var route = cyclingController.mapRoute;
#region 绑定路书基本信息
mapName.text = route.Name;
level.text = route.Hard;
elevaction.text = Math.Round(route.TotalClimb.GetValueOrDefault(0), 2).ToString() + "M";
slope.text = Math.Round(route.AverageGrade, 2).ToString() + "%";
rideNum.text = route.TheHeat.ToString();
distance.text = route.Distance.ToString("f1") + "KM";
mapDescText.text = route.Dec;
var userList = ConfigHelper.mapApi.GetOnlineUserInfo(new int[] { route.UserId }).data;
if (userList.Count > 0)
{
uploadByUserName.text = userList[0].Name;
var countryUrl = App.Host + $"User/GetCountryImg?userid={userList[0].Id}";
Utils.DisplayImage(head, userList[0].HeadImage);//头像
country.texture = cyclingController.GetCountryImageByCode(route.CountryCode);//上传者国家
mapCountry.texture = cyclingController.GetCountryImageByName(userList[0].Country);//路书国家
Utils.DisplayImage(altitudeGraph, route.AltitudeGraph);//海拔图
}
#endregion
//异步请求mapbox画出当前路书路线图
DrawMapRouteAsync(route.Id);
AddProcess(10);
//查询排行榜
var list = mapApi.GetRouteRanking(App.RouteIdParam, "1", 0, 10, "");
if (list.result)
{
CreateRankingList(list.data.list);
AddProcess(10);
}
StartCoroutine(HiddenLoading());
}
//创建排行榜
public void CreateRankingList(List<MapRouteRanking> list)
{
var prefab = Resources.Load<GameObject>("UI/Prefab/Ride/RankingItem");
var parent = panel.transform.Find("MapRanking");
var title = panel.transform.Find("RankingTitle").gameObject;
if (list.Count == 0)
{
title.SetActive(false);
}
foreach (var item in list)
{
GameObject newObj = (GameObject)Instantiate(prefab, parent);
var selectPlayerItemScript = newObj.GetComponent<RankingItemScript>();
selectPlayerItemScript.SetRanking(item.RowNumber.ToString());
selectPlayerItemScript.SetName(item.NickName);
selectPlayerItemScript.SetTimer(item.IsDNF ? "DNF" : item.TotalTime);
selectPlayerItemScript.SetHead(item.WxHeadImg);
var texture = cyclingController.GetCountryImageByCode(item.CountryCode);
selectPlayerItemScript.SetCountry(texture);
}
}
}
}
@@ -14,8 +14,8 @@ namespace Assets.Scenes.Ride.Scripts
{
_map = transform.parent.Find("MiniMap").GetComponent<AbstractMap>();
_minicamera = transform.parent.Find("MiniCamera").GetComponent<Camera>();
RectRoot = transform.parent.Find("SingleUI/Panel/MiniMap/MiniMap").GetComponent<RectTransform>();
var parent = transform.parent.Find("SingleUI/Panel/MiniMap/MiniMap");
RectRoot = transform.parent.Find("UI/Panel/MiniMap/MiniMap").GetComponent<RectTransform>();
var parent = transform.parent.Find("UI/Panel/MiniMap/MiniMap");
arrow = Instantiate(Resources.Load<GameObject>("UI/Prefab/Ride/MiniArrow"), parent);
}
public void SetController(AbstractPlayer player)
@@ -28,7 +28,7 @@ namespace Assets.Scenes.Ride.Scripts
currentlatlong = mainController.GetCenterCoordinate();
_playerController = FindObjectOfType<PlayerController>();
//创建UI
uiObject = transform.parent.Find("SingleUI/Panel/ArrowList");
uiObject = transform.parent.Find("UI/Panel/ArrowList");
if (mainController.cyclingController.Mode == CyclingModel.Competition)
{
arrowImage = Instantiate(Resources.Load<Image>("UI/Prefab/Match/CompetitionArrow"), uiObject);
@@ -93,6 +93,7 @@ namespace Assets.Scenes.Ride.Scripts
var infoPos = playerScreenPos + new Vector3(150f, 60f, 0f);
((RectTransform)infoPanel.transform).position = infoPos;
CreateInfoLine(playerScreenPos, headPos);
//头像
var infoHead = infoPanel.transform.Find("Head").GetComponent<RawImage>();
if (head != null)
{
@@ -100,15 +101,16 @@ namespace Assets.Scenes.Ride.Scripts
}
var infoName = infoPanel.transform.Find("Name").GetComponent<Text>();
infoName.text = nickName;
//距离
var infoDistance = infoPanel.transform.Find("Distance").GetComponent<Text>();
if (_playerController != null)
{
infoDistance.text = diff > 0? $"+{diff}M" : $"{diff}M";
}
//功体比
var infoWKG = infoPanel.transform.Find("WKG").GetComponent<Text>();
infoWKG.text = weightKgStr;
//速度
var speedText = infoPanel.transform.Find("Speed").GetComponent<Text>();
speedText.text = speed.ToString("f1")+"KM/H";
}
@@ -218,6 +220,7 @@ namespace Assets.Scenes.Ride.Scripts
}
}
private double horizontalScrolling { get; set; }
private void MoveHead()
{
var itemIndex = chartDataSourceScript.GetViewIndex(CurrentIndex);
@@ -236,11 +239,11 @@ namespace Assets.Scenes.Ride.Scripts
}
else
{
if (UserId != mainController.currentPlayer.UserId)
{
headPanel.transform.position = new Vector3(itemPosition.x, itemPosition.y, 0);
}
else
//if (UserId != mainController.currentPlayer.UserId)
//{
// headPanel.transform.position = new Vector3(itemPosition.x, itemPosition.y, 0);
//}
//else
{
int nextIndex = CurrentIndex;
var viewIndex = chartDataSourceScript.GetViewIndex(nextIndex);
@@ -250,7 +253,11 @@ namespace Assets.Scenes.Ride.Scripts
var currentDistance = CurrentDistance;
var distance = Distance;
var offset = currentDistance > 0 ? distance * 1000 / currentDistance : 1;
graph.HorizontalScrolling += offset;
horizontalScrolling += offset;
if (UserId == mainController.currentPlayer.UserId)
{
graph.HorizontalScrolling = horizontalScrolling;
}
headPanel.transform.position = new Vector3(headPanel.transform.position.x, itemPosition.y, 0);
}
else
@@ -284,12 +291,6 @@ namespace Assets.Scenes.Ride.Scripts
{
headPanel.SetActive(true);
rect.DOScale(new Vector3(1.5f, 1.5f, 1.5f), 0.5f);
//移动海拔图
var currentDistance = CurrentDistance;
var distance = Distance;
var offset = currentDistance > 0 ? distance * 1000 / currentDistance : 1;
graph.HorizontalScrolling += offset;
}
else
{
@@ -32,7 +32,7 @@ namespace Assets.Scenes.Ride.Scripts
_playerController = FindObjectOfType<PlayerController>();
tickOffset = mainController.preticks;
//创建UI
uiObject = transform.parent.Find("SingleUI/Panel/ArrowList");
uiObject = transform.parent.Find("UI/Panel/ArrowList");
arrowImage = Instantiate(Resources.Load<Image>("UI/Prefab/Ride/ReviewArrow"), uiObject);
}
@@ -38,7 +38,7 @@ namespace Assets.Scenes.Ride.Scripts
trail.receiveShadows = false;
trail.rayTracingMode = UnityEngine.Experimental.Rendering.RayTracingMode.Off;
headPanel = transform.parent.Find("SingleUI/Panel/GraphChart/HeadPanel").gameObject;
headPanel = transform.parent.Find("UI/Panel/GraphChart/HeadPanel").gameObject;
}
TargetData targetData;
/// <summary>
@@ -59,7 +59,7 @@ namespace Assets.Scenes.Ride.Scripts
System.Random rd = new System.Random();
power = 2000; //rd.Next(150, 300);//测试功率
//#endif
mainController.TrackResistance(currentSlope * App.rideSetting.sensitivity / 100);
mainController.TrackResistance(currentSlope * App.RideSetting.Sensitivity / 100);
}
catch (Exception ex)
{
@@ -21,8 +21,8 @@ namespace Assets.Scenes.Ride.Scripts
saveButton = transform.Find("SaveButton").GetComponent<Button>();
slider = transform.Find("Sensitivity").GetComponent<Slider>();
text = transform.Find("Sensitivity/Text").GetComponent<Text>();
text.text = App.rideSetting.sensitivity.ToString("#0")+ "%";
slider.value =(float)App.rideSetting.sensitivity;
text.text = App.RideSetting.Sensitivity.ToString("#0")+ "%";
slider.value =(float)App.RideSetting.Sensitivity;
slider.onValueChanged.AddListener((f) =>
{
text.text = $"{(f).ToString("#0")}%";
@@ -37,7 +37,7 @@ namespace Assets.Scenes.Ride.Scripts
}
private void Save(BaseEventData baseEventData)
{
App.rideSetting.sensitivity = Math.Round(slider.value,0);
App.RideSetting.Sensitivity = Math.Round(slider.value,0);
transform.parent.gameObject.SetActive(false);
}
}
@@ -50,7 +50,7 @@ public class QuickLoginUser : MonoBehaviour
{
top.GetComponent<LoginController>().SaveInfo(r.data);
App.CurrentUser = r.data;
App.rideSetting.sensitivity = App.CurrentUser.Sensitivity;
App.RideSetting.Sensitivity = App.CurrentUser.Sensitivity;
SceneManager.LoadScene("MainScene");
}
else
@@ -106,7 +106,7 @@ public class HomeController : PFUIPanel
#region 测试比赛
App.CompetionId = 1048;
App.RouteIdParam = 5054;
App.RouteIdParam = 1215;
SceneManager.LoadScene("Ride");
#endregion
}