对战与AR骑行相关逻辑修改

This commit is contained in:
lishuo committed 2022-08-24 18:43:43 +08:00
1 parent 3bcb3ee83e
commit 89b5275efd
64 files changed
+50131 -29495

No files matched your search

+2 -2
View File
@@ -64,14 +64,14 @@ namespace Assets.Scripts.Apis
/// <param name="sort">hot, distance</param>
/// <param name="sortDire">asc</param>
/// <returns></returns>
public Task<JsonResult<List<MapRoute>>> GetList(int pageIndex, int pageSize, string name, string distance="", string hands="", bool is3D=false, string sort="", string sortDire = "", bool isFav = false,bool isMine = false,bool isRecent = false,bool isEnableAR = false)
public Task<JsonResult<List<MapRoute>>> GetList(int pageIndex, int pageSize, string name, string distance="", string hands="", bool is3D=false, string sort="", string sortDire = "", bool isFav = false,bool isMine = false,bool isRecent = false,bool isEnableAR = false, bool isEnableBattle = false)
{
string lngLat = "";
if (sort.Equals("Near"))
{
lngLat = $"{App.longitude},{App.latitude}";
}
var url = $"Map/GetRoute?pageIndex={ pageIndex }&pageSize={ pageSize }&name={ name }&distance={ distance }&hands={ hands }&is3D={ is3D }&sort={ sort }&sortDire={ sortDire }&isFav={isFav}&lngLat={lngLat}&isMine={isMine}&isRecent={isRecent}&isEnableAR={isEnableAR}";
var url = $"Map/GetRoute?pageIndex={ pageIndex }&pageSize={ pageSize }&name={ name }&distance={ distance }&hands={ hands }&is3D={ is3D }&sort={ sort }&sortDire={ sortDire }&isFav={isFav}&lngLat={lngLat}&isMine={isMine}&isRecent={isRecent}&isEnableAR={isEnableAR}&isEnableBattle={isEnableBattle}";
return GetAsync<JsonResult<List<MapRoute>>>(url);
}
@@ -58,5 +58,11 @@ namespace Assets.Scripts.Apis.Models
public double TotalTicks { get; set; }
public string Url { get; set; }
public string GlobalDetailUrl { get; set; }
/// <summary>
/// 活动类型0:网页活动 1:App内部骑行活动 2:App内部赛事活动
/// </summary>
public int ActivityType { get; set; }
public int RouteId { get; set; }
public int CompetitionId { get; set; }
}
}
@@ -176,5 +176,7 @@ namespace Assets.Scripts.Apis.Models
public string Source { get; set; }
public bool IsDNF { get; set; }
public double? HeartRate { get; set; }
public string DeviceType { get; set; }
}
}
+1 -1
View File
@@ -64,7 +64,7 @@ namespace Assets.Scripts.Apis
IEnumerator LoadLogin(string msg)
{
//释放资源
MapUDPService.Dispose();
//MapUDPService.Dispose();
//删除本地文件
Helper.DelectDir(PFConstants.MapWorkoutRecordTempFolder);
App.tempRecordData = null;
+2
View File
@@ -597,6 +597,8 @@ public class LoginController : BaseScene
}
async void Init()
{
MapUDPService.Dispose();
Loom.Dispose();
UIManager.Instance.ModalsPanel = this.transform.Find("ModalPanel").GetComponent<PFUIPanel>();
userInfos = UIManager.Instance.userInfos;
App.DefaultRotateTexture = Utils.ReadTextureFromPlayerPrefs("rotateImage");
+8 -1
View File
@@ -331,6 +331,11 @@ public class MainController : BaseScene
{
UIManager.ShowRaceHomePanel();
}
if (App.MainSceneParam["Name"] == "GameRoomList")
{
UIManager.ShowGameRoomListPanel();
}
App.MainSceneParam["Name"] = string.Empty;
}
else
@@ -352,7 +357,9 @@ public class MainController : BaseScene
if (App.adQueue.Count > 0)
{
var ad = App.adQueue.Dequeue();
UIManager.ShowActivityAdPanel(ad.Id, App.GetLocalLanguage() == "zh" ? ad.DetailUrl : ad.GlobalDetailUrl, ad.Url + $"?Token={App.CurrentUser.cookie}");
ad.DetailUrl = App.GetLocalLanguage() == "zh" ? ad.DetailUrl : ad.GlobalDetailUrl;
ad.Url += $"?Token={App.CurrentUser.cookie}";
UIManager.ShowActivityAdPanel(ad);
}
}
}
@@ -0,0 +1,282 @@
using Assets.Scenes.Ride.Scripts.Model.CyclingModels;
using Assets.Scripts;
using Assets.Scripts.UI.UIEffect;
using System.Linq;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
using DG.Tweening;
using System;
using Facebook.Unity;
namespace Assets.Scenes.Ride.Scripts
{
public class GameRoomResultPanelScript : 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; }
GameObject ShareButton { get; set; }
GameObject ToolBarPanel { get; set; }
GameObject WeChatButton { get; set; }
GameObject WeChatGpButton { 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; }
Text CloseTime { get; set; }
Text CloseTitle { 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;
CloseTitle = transform.Find("CloseTitle").GetComponent<Text>();
CloseTime = transform.Find("CloseTime").GetComponent<Text>();
#if UNITY_IOS || UNITY_ANDROID
ShareButton = transform.Find("ShareButton").gameObject;
ToolBarPanel = transform.Find("ToolBarPanel").gameObject;
WeChatButton = transform.Find("ToolBarPanel/WeChatButton").gameObject;
WeChatGpButton = transform.Find("ToolBarPanel/GoogleButton").gameObject;
UIManager.AddEvent(WeChatButton, UnityEngine.EventSystems.EventTriggerType.PointerClick, ShareWechat);
UIManager.AddEvent(WeChatGpButton, UnityEngine.EventSystems.EventTriggerType.PointerClick, ShareWechatGp);
var fbButton = transform.Find("ToolBarPanel/FaceBookButton").gameObject;
UIManager.AddEvent(fbButton, EventTriggerType.PointerClick, shareFb);
#endif
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);
}
float time = 1;
private void Update()
{
//var model = cyclingController.cyclingController as GameModel;
//if (model != null)
//{
///var s = model.EndCountDown();
//显示关门时间
//var isshow = s.Item3 && s.Item1 >= 0 && !cyclingController.isWatch;
//CloseTime.text = Helper.FormatTicks(s.Item1);
//CloseTitle.gameObject.SetActive(isshow);
//CloseTime.gameObject.SetActive(isshow);
//}
time -= Time.deltaTime;
while (time < 0)
{
Refresh();
time += 1;
}
}
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 GameModel model)
{
var list = model?.mapWorkoutRecordRankings;
if (list == null) return;
var parent = transform.Find("ScrollView/Viewport/Content");
Mine.SetActive(!cyclingController.isWatch);
RankingPanel.SetActive(cyclingController.isWatch);
TitleImage.SetActive(!cyclingController.isWatch);
WatchTitle.SetActive(cyclingController.isWatch);
if (model.FirstEndTime.HasValue)
{
var gap = model.FirstEndTime.Value - UIManager.Now.GetDateTime();
var seconds = (int)Math.Floor(gap.TotalSeconds);
CloseTime.text = Helper.FormatTicks(seconds);
CloseTitle.gameObject.SetActive(true);
CloseTime.gameObject.SetActive(true);
}
if (!cyclingController.isWatch)
{
//当前用户排名
var currentRanking = list.Where(c => c.UserId == cyclingController.currentPlayer.UserId).FirstOrDefault();
if (currentRanking != null)
{
Utils.DisplayImage(Head, currentRanking.WxHeadImg, true);
Ranking.text = currentRanking.Rank.ToString().PadLeft(3, '0');
Timer.text = currentRanking.TotalTime;
var uigradient = Mine.transform.GetComponent<UIGradient>();
if (currentRanking.Rank <= 3)
{
TimerTitle.color = WHITE;
RankingTitle.color = WHITE;
}
if (currentRanking.Rank == 1)
{
uigradient.color1 = RED;
uigradient.color2 = SHALLOW_RED;
Top.sprite = SpriteTop;
Top.gameObject.SetActive(true);
}
if (currentRanking.Rank == 2)
{
uigradient.color1 = PURPLE;
uigradient.color2 = SHALLOW_PURPLE;
Top.sprite = SpriteSecond;
Top.gameObject.SetActive(true);
}
if (currentRanking.Rank == 3)
{
uigradient.color1 = BLUE;
uigradient.color2 = SHALLOW_BLUE;
Top.sprite = SpriteThrid;
Top.gameObject.SetActive(true);
}
}
}
else
{
//观察者模式左边显示前三名
var topList = list.OrderBy(c => c.Rank).Take(3);
foreach (var item in topList)
{
if (item.Rank == 1)
{
Utils.DisplayImage(TopHead, item.WxHeadImg, true);
var name = TopHead.transform.Find("Name").GetComponent<Text>();
name.text = item.NickName;
TopHead.gameObject.SetActive(true);
}
if (item.Rank == 2)
{
Utils.DisplayImage(SecondHead, item.WxHeadImg, true);
var name = SecondHead.transform.Find("Name").GetComponent<Text>();
name.text = item.NickName;
SecondHead.gameObject.SetActive(true);
}
if (item.Rank == 3)
{
Utils.DisplayImage(ThirdHead, item.WxHeadImg, true);
var name = ThirdHead.transform.Find("Name").GetComponent<Text>();
name.text = item.NickName;
ThirdHead.gameObject.SetActive(true);
}
}
}
//排名列表
var rankingList = FindObjectsOfType<FinalRankingItemScript>();
foreach (var item in list)
{
var finalRankingItemScript = rankingList.Where(c => c.UserId == item.UserId).FirstOrDefault();
//没有就创建
if (finalRankingItemScript == null)
{
#if UNITY_IOS || UNITY_ANDROID
var finalRankingItem = Instantiate(Resources.Load<GameObject>("UI/Prefab/Match/Mobile/FinalRankingItem"), parent);
#else
var finalRankingItem = Instantiate(Resources.Load<GameObject>("UI/Prefab/Match/FinalRankingItem"), parent);
#endif
finalRankingItemScript = finalRankingItem.GetComponent<FinalRankingItemScript>();
}
//有就更新
finalRankingItemScript.setGap(item.Gap);
finalRankingItemScript.setSource(item.Source);
finalRankingItemScript.setUserId(item.UserId, item.WxHeadImg);
finalRankingItemScript.setRanking(item.Rank);
finalRankingItemScript.setHeartRate(item.HeartRate);
finalRankingItemScript.setName(item.NickName);
finalRankingItemScript.setPower(item.Power.ToString());
finalRankingItemScript.setRatio(item.WeightKG);
finalRankingItemScript.setTimer(item.TotalTime);
finalRankingItemScript.transform.SetSiblingIndex(item.Rank);
}
}
}
private void Close(BaseEventData baseEventData)
{
this.gameObject.SetActive(false);
this.Destroy();
SceneManager.LoadScene("MainScene");
//App.MainSceneParam["Name"] = "RaceHomePanel";
}
private void OpenShare(BaseEventData baseEventData)
{
((RectTransform)ToolBarPanel.transform).pivot = new Vector2(0, ((RectTransform)ToolBarPanel.transform).pivot.y);
ShareButton.SetActive(false);
ToolBarPanel.transform.DOScaleX(1, 1);
}
private void ShareWechat(BaseEventData baseEventData)
{
if (!App.weChatController.IsWeChatAppInstalled())
{
App.weChatController.ShareWebpageToWX(0, $"{App.CurrentUser.WebHost}Mine/MatchPreview?id={cyclingController.competitionId}&Token={App.CurrentUser.cookie}", cyclingController.competition.Title, "By " + App.CurrentUser.Nickname, null);
}
else
{
Utils.showToast(null, "未安装微信");
}
}
private void shareFb(BaseEventData arg0)
{
//cyclingController.competition.Title, "By " + App.CurrentUser.Nickname, null)
FB.ShareLink(contentURL: new Uri($"{App.CurrentUser.WebHost}Mine/MatchPreview?id={cyclingController.competitionId}&Token={App.CurrentUser.cookie}"),
contentTitle: cyclingController.competition.Title,
contentDescription: "By " + App.CurrentUser.Nickname,
photoURL: new Uri(cyclingController.competition.CoverImage));
}
private void ShareWechatGp(BaseEventData baseEventData)
{
if (App.weChatController.IsWeChatAppInstalled())
{
App.weChatController.ShareWebpageToWX(1, $"{App.CurrentUser.WebHost}Mine/MatchPreview?id={cyclingController.competitionId}&Token={App.CurrentUser.cookie}", cyclingController.competition.Title, "By " + App.CurrentUser.Nickname, null);
}
else
{
Utils.showToast(null, "未安装微信");
}
}
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 180198074f4b2344d8fd96e8e068324b
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -6,15 +6,15 @@ using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
using DG.Tweening;
using System;
using Facebook.Unity;
using Assets.Scripts.Scenes.VideoRide;
using Assets.Scenes.Ride.Scripts;
namespace Assets.Scenes.Ride.Scripts
namespace Assets.Scripts.Scenes.Scripts
{
public class GameRoomResultScript : MonoBehaviour
{
CyclingController cyclingController;
VideoGameManager cyclingController;
RawImage Head;
Text Ranking;
Text Timer;
@@ -26,8 +26,6 @@ namespace Assets.Scenes.Ride.Scripts
GameObject ToolBarPanel { get; set; }
GameObject WeChatButton { get; set; }
GameObject WeChatGpButton { get; set; }
RawImage TopHead { get; set; }
RawImage SecondHead { get; set; }
RawImage ThirdHead { get; set; }
@@ -35,14 +33,13 @@ namespace Assets.Scenes.Ride.Scripts
Sprite SpriteTop { get; set; }
Sprite SpriteSecond { get; set; }
Sprite SpriteThrid { get; set; }
Text RankingTitle { get; set; }
Text TimerTitle { get; set; }
Text CloseTime { get; set; }
Text CloseTitle { get; set; }
private void Awake()
{
cyclingController = FindObjectOfType<CyclingController>();
cyclingController = FindObjectOfType<VideoGameManager>();
var closeBtn = transform.Find("Close").gameObject;
Head = transform.Find("Mine/Head").GetComponent<RawImage>();
Ranking = transform.Find("Mine/Ranking").GetComponent<Text>();
@@ -76,20 +73,9 @@ namespace Assets.Scenes.Ride.Scripts
UIManager.AddEvent(closeBtn, UnityEngine.EventSystems.EventTriggerType.PointerClick, Close);
}
float time = 1;
private void Update()
{
//var model = cyclingController.cyclingController as GameModel;
//if (model != null)
//{
///var s = model.EndCountDown();
//显示关门时间
//var isshow = s.Item3 && s.Item1 >= 0 && !cyclingController.isWatch;
//CloseTime.text = Helper.FormatTicks(s.Item1);
//CloseTitle.gameObject.SetActive(isshow);
//CloseTime.gameObject.SetActive(isshow);
//}
time -= Time.deltaTime;
while (time < 0)
{
@@ -118,10 +104,10 @@ namespace Assets.Scenes.Ride.Scripts
if (list == null) return;
var parent = transform.Find("ScrollView/Viewport/Content");
Mine.SetActive(!cyclingController.isWatch);
RankingPanel.SetActive(cyclingController.isWatch);
TitleImage.SetActive(!cyclingController.isWatch);
WatchTitle.SetActive(cyclingController.isWatch);
Mine.SetActive(true);
RankingPanel.SetActive(false);
TitleImage.SetActive(true);
WatchTitle.SetActive(false);
if (model.FirstEndTime.HasValue)
{
@@ -132,74 +118,41 @@ namespace Assets.Scenes.Ride.Scripts
CloseTime.gameObject.SetActive(true);
}
if (!cyclingController.isWatch)
//当前用户排名
var currentRanking = list.Where(c => c.UserId == cyclingController.CurrentPlayer.UserId).FirstOrDefault();
if (currentRanking != null)
{
//当前用户排名
var currentRanking = list.Where(c => c.UserId == cyclingController.currentPlayer.UserId).FirstOrDefault();
if (currentRanking != null)
Utils.DisplayImage(Head, currentRanking.WxHeadImg, true);
Ranking.text = currentRanking.Rank.ToString().PadLeft(3, '0');
Timer.text = currentRanking.TotalTime;
var uigradient = Mine.transform.GetComponent<UIGradient>();
if (currentRanking.Rank <= 3)
{
Utils.DisplayImage(Head, currentRanking.WxHeadImg, true);
Ranking.text = currentRanking.Rank.ToString().PadLeft(3, '0');
Timer.text = currentRanking.TotalTime;
var uigradient = Mine.transform.GetComponent<UIGradient>();
if (currentRanking.Rank <= 3)
{
TimerTitle.color = WHITE;
RankingTitle.color = WHITE;
}
if (currentRanking.Rank == 1)
{
uigradient.color1 = RED;
uigradient.color2 = SHALLOW_RED;
Top.sprite = SpriteTop;
Top.gameObject.SetActive(true);
}
if (currentRanking.Rank == 2)
{
uigradient.color1 = PURPLE;
uigradient.color2 = SHALLOW_PURPLE;
Top.sprite = SpriteSecond;
Top.gameObject.SetActive(true);
}
if (currentRanking.Rank == 3)
{
uigradient.color1 = BLUE;
uigradient.color2 = SHALLOW_BLUE;
Top.sprite = SpriteThrid;
Top.gameObject.SetActive(true);
}
TimerTitle.color = WHITE;
RankingTitle.color = WHITE;
}
if (currentRanking.Rank == 1)
{
uigradient.color1 = RED;
uigradient.color2 = SHALLOW_RED;
Top.sprite = SpriteTop;
Top.gameObject.SetActive(true);
}
if (currentRanking.Rank == 2)
{
uigradient.color1 = PURPLE;
uigradient.color2 = SHALLOW_PURPLE;
Top.sprite = SpriteSecond;
Top.gameObject.SetActive(true);
}
if (currentRanking.Rank == 3)
{
uigradient.color1 = BLUE;
uigradient.color2 = SHALLOW_BLUE;
Top.sprite = SpriteThrid;
Top.gameObject.SetActive(true);
}
}
else
{
//观察者模式左边显示前三名
var topList = list.OrderBy(c => c.Rank).Take(3);
foreach (var item in topList)
{
if (item.Rank == 1)
{
Utils.DisplayImage(TopHead, item.WxHeadImg, true);
var name = TopHead.transform.Find("Name").GetComponent<Text>();
name.text = item.NickName;
TopHead.gameObject.SetActive(true);
}
if (item.Rank == 2)
{
Utils.DisplayImage(SecondHead, item.WxHeadImg, true);
var name = SecondHead.transform.Find("Name").GetComponent<Text>();
name.text = item.NickName;
SecondHead.gameObject.SetActive(true);
}
if (item.Rank == 3)
{
Utils.DisplayImage(ThirdHead, item.WxHeadImg, true);
var name = ThirdHead.transform.Find("Name").GetComponent<Text>();
name.text = item.NickName;
ThirdHead.gameObject.SetActive(true);
}
}
}
//排名列表
var rankingList = FindObjectsOfType<FinalRankingItemScript>();
@@ -219,7 +172,7 @@ namespace Assets.Scenes.Ride.Scripts
//有就更新
finalRankingItemScript.setGap(item.Gap);
//finalRankingItemScript.setSource(item.de);
finalRankingItemScript.setSource(item.Source);
finalRankingItemScript.setUserId(item.UserId, item.WxHeadImg);
finalRankingItemScript.setRanking(item.Rank);
finalRankingItemScript.setHeartRate(item.HeartRate);
@@ -237,46 +190,6 @@ namespace Assets.Scenes.Ride.Scripts
this.gameObject.SetActive(false);
this.Destroy();
SceneManager.LoadScene("MainScene");
//App.MainSceneParam["Name"] = "RaceHomePanel";
}
private void OpenShare(BaseEventData baseEventData)
{
((RectTransform)ToolBarPanel.transform).pivot = new Vector2(0, ((RectTransform)ToolBarPanel.transform).pivot.y);
ShareButton.SetActive(false);
ToolBarPanel.transform.DOScaleX(1, 1);
}
private void ShareWechat(BaseEventData baseEventData)
{
if (!App.weChatController.IsWeChatAppInstalled())
{
App.weChatController.ShareWebpageToWX(0, $"{App.CurrentUser.WebHost}Mine/MatchPreview?id={cyclingController.competitionId}&Token={App.CurrentUser.cookie}", cyclingController.competition.Title, "By " + App.CurrentUser.Nickname, null);
}
else
{
Utils.showToast(null, "未安装微信");
}
}
private void shareFb(BaseEventData arg0)
{
//cyclingController.competition.Title, "By " + App.CurrentUser.Nickname, null)
FB.ShareLink(contentURL: new Uri($"{App.CurrentUser.WebHost}Mine/MatchPreview?id={cyclingController.competitionId}&Token={App.CurrentUser.cookie}"),
contentTitle: cyclingController.competition.Title,
contentDescription: "By " + App.CurrentUser.Nickname,
photoURL: new Uri(cyclingController.competition.CoverImage));
}
private void ShareWechatGp(BaseEventData baseEventData)
{
if (App.weChatController.IsWeChatAppInstalled())
{
App.weChatController.ShareWebpageToWX(1, $"{App.CurrentUser.WebHost}Mine/MatchPreview?id={cyclingController.competitionId}&Token={App.CurrentUser.cookie}", cyclingController.competition.Title, "By " + App.CurrentUser.Nickname, null);
}
else
{
Utils.showToast(null, "未安装微信");
}
}
}
}
@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 180198074f4b2344d8fd96e8e068324b
guid: 1fbc05c763a9da04c9a30c0eb2e41cd6
MonoImporter:
externalObjects: {}
serializedVersion: 2
@@ -115,7 +115,7 @@ namespace Assets.Scenes.Ride.Scripts.Model.CyclingModels
}
else
{
MapUDPService.Send(route.RouteInstance.Id, recorderData.BelongUserId, route.Point.First().Reverse().ToArray(), competitionId: recorderData.Competitionid);
MapUDPService.Send(route.RouteInstance.Id, recorderData.BelongUserId, route.Point.First().Reverse().ToArray(), competitionId: recorderData.Competitionid,roomId: recorderData.RoomId);
}
}
catch (Exception)
@@ -16,7 +16,7 @@ namespace Assets.Scenes.Ride.Scripts.Model.CyclingModels
public int? FirstUserId { get; private set; }
public GameRoomModel GameRoom { get; private set; }
public List<RoomRankItem> mapWorkoutRecordRankings = new List<RoomRankItem>();
public List<CompetitionResultModel> gameRoomResult;//new List<CompetitionResultModel>();
public GameModel(Route route,RouteResultParam param)
: base(route, CyclingModel.Single)
{
@@ -125,7 +125,7 @@ namespace Assets.Scenes.Ride.Scripts.Model.CyclingModels
}
#region 骑行结束,比赛结果展示数据
var results = new List<CompetitionResultModel>();
gameRoomResult = new List<CompetitionResultModel>();
if (recorderData.IsCompleted || recorderData.Saved)
{
var users1 = userList.Where(d => d.IsCompleted || d.Saved);
@@ -63,7 +63,7 @@ namespace Assets.Scenes.Ride.Scripts
protected double totalClimb;
public double TotalClimb { get => totalClimb; }
public int UserId { set; get; }//{ get => userId; }
public int UserId { set; get; }
public double Speed { get => speed; }
public double Power { get => power; }
public double Cadance { get => cadance; }
@@ -90,9 +90,7 @@ namespace Assets.Scenes.Ride.Scripts
#endregion
void Start()
{
Init();
//StartCoroutine("TestExcute");
}
void Update()
@@ -117,10 +115,6 @@ namespace Assets.Scenes.Ride.Scripts
map = transform.parent.Find("Map").GetComponent<AbstractMap>();
mapData = mainController.GetMapData();//获取路书信息
////获取海拔图UI对象
//var graphObject = transform.parent.Find("UI/Panel/GraphChart");
//chartDataSourceScript = graphObject.GetComponent<ChartDataSourceScript>();
//graph = graphObject.GetComponent<GraphChartBase>();
chartDataSourceScript = mainController.chartDataSourceScript;
graph = mainController.graph;
cyclingExcutor = mainController.cyclingController;
@@ -153,32 +147,29 @@ namespace Assets.Scenes.Ride.Scripts
//人物动画控制
if (characterAnimator != null)
{
//characterAnimator.SetFloat("Speed", (float)speed);
//characterAnimator.SetFloat("Slope", (float)currentSlope);
if (characterAnimator != null)
{
//characterAnimator.SetFloat("preSpeed", (float)preSpeed);
characterAnimator.SetFloat("speed", (float)speed);
characterAnimator.SetFloat("grade", (float)currentSlope);
characterAnimator.SetFloat("power", (float)power);
}
//if (currentSlope > 6)
// {
// characterAnimator.speed = 0.45f;
//}
// else
// {
// characterAnimator.speed = 0.65f;
//}
//if (speed > 40)
//{
// characterAnimator.speed = 0.75f;
//}
//if (totalDistance >= mapData.TotalDistance)
//{
// characterAnimator.SetBool("ReachEnd", true);//到达终点
//}
//根据速度和坡度不同分为4个等级的播放速度
if (speed > 20)
{
characterAnimator.speed = 1.15f;
}
else if (speed > 35)
{
characterAnimator.speed = 1.25f;
}
else if (speed > 45)
{
characterAnimator.speed = 1.45f;
}
else if (currentSlope > 4.5)
{
characterAnimator.speed = 0.5f;
}
}
Compute();//接受蓝牙设备数据计算
//开始骑行
@@ -224,6 +224,11 @@ namespace Assets.Scenes.Ride.Scripts
}
protected virtual void Cancel(BaseEventData baseEvent)
{
//如果在对战房间内,发送退出房间的命令
if (cyclingController.roomId > 0)
{
MapUDPService.SendGameRoomKick(cyclingController.roomId, App.CurrentUser.Id, App.CurrentUser.Id);
}
SceneManager.LoadScene("MainScene");
}
protected IEnumerator HiddenLoading()
@@ -234,6 +239,7 @@ namespace Assets.Scenes.Ride.Scripts
private bool tileHeightProcessed = false;
protected void _map_OnInitialized()
{
panel.transform.Find("Multips")?.gameObject.SetActive(true);
var visualizer = _map.MapVisualizer;
visualizer.OnTileHeightProcessingFinished += (s) =>
{
@@ -298,7 +298,7 @@ namespace Assets.Scenes.Ride.Scripts
{
playerController = FindObjectOfType<PlayerController>();
mainController = FindObjectOfType<CyclingController>();
player = transform.parent.Find("Player");
player = playerController.transform;
var route = mainController.GetRoute();
uipanel = mainController.GetUIPanel();
InitGameObject();
@@ -384,7 +384,7 @@ namespace Assets.Scenes.Ride.Scripts
if (target != null && mainController.Is3dView && mainController.RotateLock && mainController.currentPlayer.Speed > 0)
{
Vector3 v = Vector3.zero;
v.y += mainController.currentPlayer.currentRotation.eulerAngles.y + 160f;
v.y += mainController.currentPlayer.currentRotation.eulerAngles.y-20f; //+ 160f;
if (mainController.RotateLock)
{
target.transform.DOLocalRotate(v, 1f, RotateMode.Fast);
@@ -399,7 +399,7 @@ namespace Assets.Scenes.Ride.Scripts
if (!mainController.Is3dView)
{
Vector3 v = Vector3.zero;
v.y += mainController.currentPlayer.currentRotation.eulerAngles.y + 160f; //target.transform.rotation = playerController.transform.rotation;//new Quaternion(playerController.transform.rotation.x, playerController.transform.rotation.y +1f, playerController.transform.rotation.z, playerController.transform.rotation.w);
v.y += mainController.currentPlayer.currentRotation.eulerAngles.y-20f;// + 160f; //target.transform.rotation = playerController.transform.rotation;//new Quaternion(playerController.transform.rotation.x, playerController.transform.rotation.y +1f, playerController.transform.rotation.z, playerController.transform.rotation.w);
target.transform.eulerAngles = v; //.Set(0, playerController.currentRotation.eulerAngles.y + 160f, 0);// = new Vector3(0, playerController.transform.eulerAngles.y + 160f, 0);
//mainController.player.transform.localScale.Set(0.1f, 0.1f, 0.1f);
player.transform.localScale = m;
@@ -519,15 +519,25 @@ namespace Assets.Scenes.Ride.Scripts
}
else
{
SendQuit4GameRoom();
SceneManager.LoadScene("MainScene");
}
}
private void SendQuit4GameRoom()
{
//如果在对战房间内,发送退出房间的命令
if (mainController.roomId > 0)
{
MapUDPService.SendGameRoomKick(mainController.roomId, App.CurrentUser.Id, App.CurrentUser.Id);
}
}
//不保存退出
public virtual void CancelQuit(BaseEventData baseEventData)
{
modalPanel.SetActive(false);
quitPanel.SetActive(false);
mainController.ClearTempFile();
SendQuit4GameRoom();
SceneManager.LoadScene("MainScene");
}
//取消退出
@@ -546,6 +556,8 @@ namespace Assets.Scenes.Ride.Scripts
}
protected virtual void StopShortRide(BaseEventData baseEventData)
{
//发送退出房间的命令
SendQuit4GameRoom();
SceneManager.LoadScene("MainScene");
}
protected virtual void CancelStopShortRide(BaseEventData baseEventData)
@@ -29,7 +29,7 @@ using System.Timers;
public class CyclingController : DeviceServiceMonoBase
{
public AbstractMap map;
public GameObject player;
public GameObject player { get; set; }
public GameObject UIObject;
public RouteResultParam selectParamModel;
public RouteResult routeResult;
@@ -100,6 +100,7 @@ public class CyclingController : DeviceServiceMonoBase
competitionId = App.tempRecordData.CompetitionId;
routeId = App.tempRecordData.RouteId;
}
CreateCurrentPlayer();
Resources.UnloadUnusedAssets();
}
@@ -219,10 +220,7 @@ public class CyclingController : DeviceServiceMonoBase
minicamera = transform.Find("MiniCamera").gameObject;
//进入倒计时
singleUIManager = UIObject.GetComponent<BaseUIManager>();
TrailRenderer trail = player.GetComponent<TrailRenderer>();
trail.Clear();
playerController = player.GetComponent<PlayerController>();
currentPlayer = playerController;//当前选中用户
if (competitionId > 0)
{
@@ -761,6 +759,22 @@ public class CyclingController : DeviceServiceMonoBase
map.SetExtent(MapExtentType.RangeAroundTransform, options);
map.SetExtentOptions(options);
}
//根据性别创建当前骑手
private void CreateCurrentPlayer()
{
if (App.CurrentUser.Sex == 1)
{
player = Instantiate<GameObject>(Resources.Load<GameObject>("UI/Prefab/Ride/Player"),transform);
}
else
{
player = Instantiate<GameObject>(Resources.Load<GameObject>("UI/Prefab/Ride/Player_NV"), transform);
}
TrailRenderer trail = player.GetComponent<TrailRenderer>();
trail.Clear();
playerController = player.GetComponent<PlayerController>();
currentPlayer = playerController;
}
//设置骑行模式
public void SetCyclingModel(CyclingModel mode)
@@ -826,7 +840,7 @@ public class CyclingController : DeviceServiceMonoBase
//设定人物方向
var s = map.GeoToWorldPosition(selectedPlayer.Currentlatlong);
var e = map.GeoToWorldPosition(nextLatLon);
Quaternion neededRotation = Quaternion.LookRotation(s - e);
Quaternion neededRotation = Quaternion.LookRotation(e - s);
selectedPlayer.transform.rotation = Quaternion.Euler(0, neededRotation.eulerAngles.y, 0);
selectedPlayer.currentRotation = neededRotation;
}
@@ -840,7 +854,6 @@ public class CyclingController : DeviceServiceMonoBase
private void InitPlayer()
{
TempFileHandler();//处理中断骑行继续骑的逻辑
lockView = true;
Vector2d lastLatLon = Along(recorderData.EndDistance);
@@ -858,7 +871,7 @@ public class CyclingController : DeviceServiceMonoBase
//设定人物方向
var s = map.GeoToWorldPosition(lastLatLon);
var e = map.GeoToWorldPosition(nextLatLon);
Quaternion neededRotation = Quaternion.LookRotation(s - e);
Quaternion neededRotation = Quaternion.LookRotation(e - s);
player.transform.rotation = Quaternion.Euler(0, neededRotation.eulerAngles.y, 0);
playerController.currentRotation = neededRotation;
//初始化海拔图头像位置
@@ -880,7 +893,7 @@ public class CyclingController : DeviceServiceMonoBase
public BaseUIManager singleUIManager;
public void GameStart()
{
Camera.main.transform.DOLocalMove(neareast, 1f);
Camera.main.transform.DOLocalMove(near, 1f);
//StartCoroutine(MoveCamera(far, near));//初始摄像头
var check = CheckAnt();
#if UNITY_EDITOR
@@ -20,7 +20,7 @@ namespace Assets.Scenes.Ride.Scripts
[SerializeField]
GameObject _player;
CyclingController cyclingCotroller;
public PlayerController playerController;
public PlayerController playerController { get; set; }
GameObject _mipMapRoute;
public RectTransform RectRoot;//rawImage
TrailRenderer trail;
@@ -28,12 +28,9 @@ namespace Assets.Scenes.Ride.Scripts
void Start()
{
cyclingCotroller = FindObjectOfType<CyclingController>();
//playerController = FindObjectOfType<PlayerController>();
if (cyclingCotroller != null)
{
var mapdata = cyclingCotroller.GetMapData();
//初始化map
//var point = cyclingCotroller.GetCenterCoordinate();
if (_map != null && mapdata !=null)
{
_map.OnInitialized += _map_OnInitialized;
@@ -57,10 +54,14 @@ namespace Assets.Scenes.Ride.Scripts
float timer = 0;
private void Update()
{
if (playerController != null)
if (playerController == null)
{
playerController = FindObjectOfType<PlayerController>();
}
else
{
var tr = uitransform.Find("MiniMap/MiniMap/arrow");
tr.SetSiblingIndex(9999);
tr.SetAsLastSibling();
var pos = _map.GeoToWorldPosition(playerController.Currentlatlong);
pos.y += 15f;
_player.transform.localPosition = pos;
@@ -105,10 +106,8 @@ namespace Assets.Scenes.Ride.Scripts
}
}
private bool init = false;
private void _map_OnInitialized()
{
init = true;
var visualizer = _map.MapVisualizer;
visualizer.OnMapVisualizerStateChanged += (s) =>
{
@@ -42,9 +42,9 @@ namespace Assets.Scenes.Ride.Scripts
{
if (App.gameRoomDetail != null)
{
loadingPanel = panel.transform.Find("LoadingPanel").gameObject;
loadingPanel.showLoadingExtension();
ShowGameRoomLoading();
loadingPanel = panel.transform.Find("LoadingPanel").gameObject;
loadingPanel.showLoadingExtension();
}
}
private void ShowGameRoomLoading()
@@ -20,7 +20,6 @@ namespace Assets.Scenes.Ride.Scripts
}
parent = scroll.transform.Find("Viewport/Content");
cyclingController = FindObjectOfType<CyclingController>();
playerController = FindObjectOfType<PlayerController>();
#if UNITY_IOS || UNITY_ANDROID
nearByItem = Resources.Load<GameObject>("UI/Prefab/Ride/Mobile/NearbyItem");
nearByMajorItem = Resources.Load<GameObject>("UI/Prefab/Ride/Mobile/NearbyMajorItem");
@@ -34,6 +33,11 @@ namespace Assets.Scenes.Ride.Scripts
}
protected override void CreateList()
{
if (playerController == null)
{
playerController = FindObjectOfType<PlayerController>();
return;
}
var roomId = cyclingController.cyclingController == null ? 0 : cyclingController.cyclingController.recorderData.RoomId;
OnlineUserNum.text = " "+ MapUDPService.GetNearRiderCount(roomId).ToString();
LayoutRebuilder.ForceRebuildLayoutImmediate(OnlineUserNum.rectTransform);
@@ -56,9 +56,9 @@ namespace Assets.Scenes.Ride.Scripts
cadance = mainController.UpdateCadence();
weight = App.CurrentUser.Weight;
bicycleWeight = App.CurrentUser.BicycleWeight;
#if UNITY_EDITOR
power = 300;
#endif
//#if !UNITY_EDITOR
power = 100;
//#endif
mainController.TrackResistance(currentSlope * App.RideSetting.Sensitivity / 100);
}
catch (Exception ex)
@@ -113,7 +113,7 @@ namespace Assets.Scenes.Ride.Scripts
//实时计算MaxAp
//mainController.ComputeMaxAP(Power, ticks);
//实时保存骑行记录
if (ticks % 60 == 0)
if (ticks % 60 == 0 && !(mainController.cyclingController is GameModel))
{
mainController.SaveRealTime();
}
@@ -67,15 +67,11 @@ namespace Assets.Scenes.Ride.Scripts
}
}
public PlayerController playerController;
public void Start()
{
cyclingCotroller = transform.parent.GetComponent<CyclingController>();
//playerController = FindObjectOfType<PlayerController>();
_map.OnTileFinished += _map_OnTileFinished;
StartCoroutine(QueryTimer());
//CreateRoute();
}
protected virtual void OnDestroy()
@@ -103,32 +99,21 @@ namespace Assets.Scenes.Ride.Scripts
var mapData = cyclingCotroller.GetMapData();
if (mapData != null && cyclingCotroller.currentPlayer != null)
{
//foreach (var mapDataItem in mapData.List)
for (int i = 0; i < mapData.List.Count; i++)
{
var point = mapData.List[i].Point;
Vector3 item = _map.GeoToWorldPosition(new Vector2d(point[0], point[1]));
item.y += 1f;
//if (!posInScreen(item) && i > playerController.CurrentIndex)
//{
// break;
//}
//else if (posInScreen(item))
//{
// dat.Add(item);
//}
//前后取50个点
decimal diff = i - cyclingCotroller.currentPlayer.CurrentIndex;
decimal diffAbs = Math.Abs(diff);
if (diffAbs <= 200)
{
//if (!dat.Contains(item))
dat.Add(item);
}
if (diff <= 0 && diff > -200)
{
item.y += 0.15f;
//if (!dat.Contains(item))
path.Add(item);
}
}
@@ -208,11 +193,11 @@ namespace Assets.Scenes.Ride.Scripts
lineRender.positionCount = dat.Count;
lineRender.SetPositions(feat.Points[0].ToArray());
lineRender.loop = false;
//lineRender.numCapVertices = 10;
//lineRender.numCornerVertices = 30;
lineRender.numCapVertices = 10;
lineRender.numCornerVertices = 30;
}
}
void CreatPathRoute(List<Vector3> feat)
{
@@ -236,10 +221,10 @@ namespace Assets.Scenes.Ride.Scripts
lineRender.positionCount = feat.Count;
lineRender.SetPositions(feat.ToArray());
lineRender.loop = false;
//lineRender.numCapVertices = 10;
//lineRender.numCornerVertices = 10;
//
lineRender.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off;
lineRender.numCapVertices = 10;
lineRender.numCornerVertices = 30;
lineRender.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off;
lineRender.allowOcclusionWhenDynamic = false;
lineRender.textureMode = LineTextureMode.Tile;
lineRender.motionVectorGenerationMode = MotionVectorGenerationMode.ForceNoMotion;
@@ -52,6 +52,10 @@ namespace Assets.Scripts.Scenes.VideoRide
Camera camera { get; set; }
float currenPlayerHeight;
Transform bone_bottle_2 { get; set; }
//切换视角
public double offsetX = 0d;
public double offsetY = 0d;
public double offsetZ = 0d;
protected virtual void Start()
{
@@ -142,15 +146,25 @@ namespace Assets.Scripts.Scenes.VideoRide
{
if (animator != null)
{
animator.SetFloat("preSpeed", (float)preSpeed);
animator.SetFloat("speed", (float)speed);
animator.SetFloat("grade", (float)currentSlope);
animator.SetFloat("power", (float)power);
//播放喝水和回头的动画
var headBack = ticks % 60 == 0 && speed > 0;
var drink = ticks % 125 == 0 && speed > 0;
animator.SetBool("headBack", headBack);
animator.SetBool("drinking", drink);
if (manager._viewMode == VideoGameManager.ViewMode.FIRST &&manager.CurrentPlayer.UserId == App.CurrentUser.Id)
{
animator.SetFloat("preSpeed", (float)preSpeed);
animator.SetFloat("speed", (float)Math.Min(speed,30));
animator.SetFloat("grade", (float)currentSlope);
animator.SetFloat("power", (float)power);
}
else
{
animator.SetFloat("preSpeed", (float)preSpeed);
animator.SetFloat("speed", (float)speed);
animator.SetFloat("grade", (float)currentSlope);
animator.SetFloat("power", (float)power);
//播放喝水和回头的动画
var headBack = ticks % 60 == 0 && speed > 0;
var drink = ticks % 125 == 0 && speed > 0;
animator.SetBool("headBack", headBack);
animator.SetBool("drinking", drink);
}
}
}
protected virtual int GetCurrentFrame()
@@ -59,7 +59,8 @@ namespace Assets.Scripts.Scenes.VideoRide
{
timer -= Time.deltaTime;
while (timer < 0) {
rideNum.text = $"{MapUDPService.GetAllOnlineUserCount()}";
var list = MapUDPService.GetOnlineUsers(App.RouteIdParam);//最新列表
rideNum.text = $"{list.Count}";
btnRideNum.text = rideNum.text;
if (manager._aRMode == VideoGameManager.ARMode.RIDE)
{
@@ -22,11 +22,11 @@ namespace Assets.Scripts.Scenes.VideoRide
protected override void Update()
{
base.Update();
//如果当前用户是被观察则控制视频播放
if (manager.CurrentPlayer.UserId == UserId)
{
manager.Play(manager.CurrentPlayer.totalDistance);
}
////如果当前用户是被观察则控制视频播放
//if (manager.CurrentPlayer.UserId == UserId)
//{
// manager.Play(manager.CurrentPlayer.totalDistance);
//}
}
//计算
@@ -55,6 +55,8 @@ namespace Assets.Scripts.Scenes.VideoRide
protected override void Turn()
{
base.Turn();
if (manager.CurrentPlayer.UserId == UserId)
return;
//计算前后位移
var current = manager.CurrentPlayer;
var interval = this.currentFrame - manager.GetCurrentFrame();
@@ -29,7 +29,7 @@ namespace Assets.Scripts.Scenes.VideoRide
if (videoPlayer != null)
{
nameLabel.text = videoPlayer.UserName;
distanceLabel.text = videoPlayer.totalDistance.ToString("f1");
distanceLabel.text = "0M";///videoPlayer.totalDistance.ToString("f1");
Id = videoPlayer.UserId.ToString();
}
timer += 1f;
@@ -87,6 +87,14 @@ namespace Assets.Scripts.Scenes.VideoRide
RIDE,
INSPECT
}
public enum ViewMode
{
THIRD,
FIRST,
}
//当前是第一人称还是第三人称
public ViewMode _viewMode { get; set; }
//当前是观察者视角还是骑行者视角
public ARMode _aRMode { get; set; }
public int RankingId { get; set; }
@@ -281,17 +289,25 @@ namespace Assets.Scripts.Scenes.VideoRide
SetCyclingModel(CyclingModel.Single);
}
}
GameObject videoPlayer;
//初始化人物模型
public void InitCurrentPlayer()
{
GameObject videoPlayer;
//初始化位置
var firstpoint = mockDirection.FirstOrDefault();
//videoPlayer.transform.DOMove(, 0);
var p = new Vector3(firstpoint.PositionX, firstpoint.PositionY, firstpoint.PositionZ);
if (App.CurrentUser.Sex == 1)
{
videoPlayer = Instantiate(Resources.Load<GameObject>("UI/Prefab/AR/VidePlayer"),transform);
var playerprefab = Resources.Load<GameObject>("UI/Prefab/AR/VidePlayer");
playerprefab.transform.position = p;
videoPlayer = Instantiate(playerprefab, transform);
}
else
{
videoPlayer = Instantiate(Resources.Load<GameObject>("UI/Prefab/AR/VidePlayer_NV"), transform);
var playerprefabNV = Resources.Load<GameObject>("UI/Prefab/AR/VidePlayer_NV");
playerprefabNV.transform.position = p;
videoPlayer = Instantiate(playerprefabNV, transform);
}
CurrentPlayer = videoPlayer.GetComponent<VideoPlayer>();
}
@@ -371,9 +387,9 @@ namespace Assets.Scripts.Scenes.VideoRide
private void MockDirection()
{
//var arr = mapRoute.ARConfig.Replace("\r\n", " ").Split(' ');
var text = Resources.Load<TextAsset>("UI/direction");
var arr = text.text.Replace("\r\n", " ").Split(' ');
var arr = mapRoute.ARConfig.Replace("\r\n", " ").Split(' ');
//var text = Resources.Load<TextAsset>("UI/direction");
//var arr = text.text.Replace("\r\n", " ").Split(' ');
foreach (var item in arr)
{
if (string.IsNullOrEmpty(item))
@@ -433,7 +449,7 @@ namespace Assets.Scripts.Scenes.VideoRide
//设置当前视频播放速度
public void Play(double totalDistance)
{
if (!isStart)
if (!isStart && _aRMode == ARMode.RIDE)
return;
if (mediaPlayer != null)
{
@@ -455,14 +471,6 @@ namespace Assets.Scripts.Scenes.VideoRide
{
isStart = !isStart;
isStop = !isStop;
//if (isStop)
//{
// mediaPlayer?.Pause();
//}
//else
//{
// mediaPlayer?.Play();
//}
}
//退出骑行
public void Quit()
@@ -117,7 +117,7 @@ namespace Assets.Scripts.Scenes.VideoRide
if (File.Exists(filepath))
{
watch.SetActive(true);
//TODO:暂时隐藏watch.SetActive(true);
slider.value = 100;
download.gameObject.SetActive(false);
manager.SetMedia(filepath);
+11 -7
View File
@@ -57,10 +57,13 @@ namespace Assets.Scripts.Scenes.VideoRide
{
base.Turn();
//控制人物的前后左右
var l = new Vector3(pre.PositionX, pre.PositionY, pre.PositionZ);
var s = new Vector3(next.PositionX, next.PositionY, next.PositionZ);
var pos = Vector3.Lerp(l, s, t);
transform.DOMove(pos, 0);
if (manager._viewMode != VideoGameManager.ViewMode.FIRST)
{
var l = new Vector3(pre.PositionX, pre.PositionY, pre.PositionZ);
var s = new Vector3(next.PositionX, next.PositionY, next.PositionZ);
var pos = Vector3.Lerp(l, s, t);
transform.DOMove(pos, 0);
}
//控制光线
var z = new Vector3(50, pre.LightY, 0);
var c = new Vector3(50, next.LightY, 0);
@@ -72,11 +75,11 @@ namespace Assets.Scripts.Scenes.VideoRide
heartRate = manager.UpDateHeart();
power = manager.UpdatePower();
cadance = manager.UpdateCadence();
#if UNITY_EDITOR
//#if !UNITY_EDITOR
power = 280;
cadance = 70;
heartRate = 160;
#endif
//#endif
weight = App.CurrentUser.Weight;
bicycleWeight = App.CurrentUser.BicycleWeight;
wkg = Math.Round(power / weight, 2);
@@ -84,7 +87,7 @@ namespace Assets.Scripts.Scenes.VideoRide
var result = manager.mockDirection.Where(c => c.Start < mainFrame && c.End > mainFrame).FirstOrDefault();
bearing = result?.RotationY ?? 0;
//发送阻力
manager.TrackResistance(currentSlope);
manager.TrackResistance(currentSlope * App.RideSetting.Sensitivity / 100);
base.ComputePlayer();
//比人先完成触发关门时间
HandleForGameRoom();
@@ -116,6 +119,7 @@ namespace Assets.Scripts.Scenes.VideoRide
protected override void ComputeRecord()
{
var mapData = manager.GetMapData();
//Debug.Log($"ticks:{manager.GetCurrentFrame()}:{manager.GetMapData().List[currentIndex].Elevation}");
//Debug.Log($"ticks:{ticks}-{manager.GetCurrentFrame()}-endistance:{totalDistance}-totalDistance:{mapData.TotalDistance}-index:{currentIndex}-speed:{speed}-currentSlope:{currentSlope}-GetCurrentFrame:{manager.GetCurrentFrame()}-currentlatLon:{bearing}");
//记录骑行数据
var recorderData = manager.cyclingController.recorderData;
@@ -6,6 +6,7 @@ using UnityEngine.UI;
using DG.Tweening;
using UnityEngine.SceneManagement;
using Assets.Scenes.Ride.Scripts.Model.CyclingModels;
using static Assets.Scripts.Scenes.VideoRide.VideoGameManager;
namespace Assets.Scripts.Scenes.VideoRide
{
@@ -31,7 +32,7 @@ namespace Assets.Scripts.Scenes.VideoRide
Image left { get; set; }
Image right { get; set; }
//ToolBarPanel
GameObject pauseBtn { get; set; }
GameObject settingBtn { get; set; }
GameObject deviceBtn { get; set; }
GameObject changeViewBtn { get; set; }
GameObject quitBtn { get; set; }
@@ -50,14 +51,7 @@ namespace Assets.Scripts.Scenes.VideoRide
GameObject ftpPanel { get; set; }
Image ftpImage { get; set; }
Text wkg { get; set; }
public enum ViewMode
{
THIRD,
FIRST,
}
//当前是第一人称还是第三人称
public ViewMode _viewMode { get; set; }
// Start is called before the first frame update
void Start()
{
@@ -83,7 +77,7 @@ namespace Assets.Scripts.Scenes.VideoRide
heartRate.text = Math.Round((manager.CurrentPlayer.heartRate ?? 0d)).ToString();
cadance.text = Math.Round(manager.CurrentPlayer.cadance).ToString();
playerTimer.text = Helper.FormatTicks(manager.CurrentPlayer.ticks);
distance.text = $"{Math.Round((manager.CurrentPlayer.totalDistance))}KM";
distance.text = $"{Math.Round((manager.CurrentPlayer.totalDistance),2)}KM";
left.fillAmount = (float)(Math.Round(manager.CurrentPlayer.power) / MAXPOWER_RATE);
right.fillAmount = (float)(Math.Round((manager.CurrentPlayer.heartRate ?? 0f)) / MAXHEARRATE);
SetSlopePanel();
@@ -123,7 +117,7 @@ namespace Assets.Scripts.Scenes.VideoRide
left = transform.Find("Panel/ComputerPanel/Left").GetComponent<Image>();
right = transform.Find("Panel/ComputerPanel/Right").GetComponent<Image>();
//ToolBarPanel
pauseBtn = transform.Find("Panel/ToolBarPanel/StartOrPauseButton").gameObject;
settingBtn = transform.Find("Panel/ToolBarPanel/SettingButton").gameObject;
quitBtn = transform.Find("Panel/ToolBarPanel/ExitButton").gameObject;
changeViewBtn = transform.Find("Panel/ToolBarPanel/ChangeView").gameObject;
deviceBtn = transform.Find("Panel/ToolBarPanel/DeviceButton").gameObject;
@@ -145,7 +139,7 @@ namespace Assets.Scripts.Scenes.VideoRide
//
explosive = transform.Find("Panel/Explosive").gameObject;
//toolbar 事件注册
UIManager.AddEvent(pauseBtn, UnityEngine.EventSystems.EventTriggerType.PointerClick, PauseClick);
UIManager.AddEvent(settingBtn, UnityEngine.EventSystems.EventTriggerType.PointerClick, PauseClick);
UIManager.AddEvent(changeViewBtn, UnityEngine.EventSystems.EventTriggerType.PointerClick, ChangeViewClick);
UIManager.AddEvent(deviceBtn, UnityEngine.EventSystems.EventTriggerType.PointerClick, DeviceClick);
UIManager.AddEvent(quitBtn, UnityEngine.EventSystems.EventTriggerType.PointerClick, QuitClick);
@@ -188,7 +182,8 @@ namespace Assets.Scripts.Scenes.VideoRide
private void PauseClick(BaseEventData e)
{
manager.Pause();
settingPanel.SetActive(true);
settingPanel.transform.SetAsLastSibling();
}
private void DeviceClick(BaseEventData e)
{
@@ -201,26 +196,18 @@ namespace Assets.Scripts.Scenes.VideoRide
var nearByScript = FindObjectOfType<NearByScript>();
var rankingScript = FindObjectOfType<RankingScript>();
var currentPlayer = manager.CurrentPlayer == null ? videoPlayer.transform : manager.CurrentPlayer.transform;
_viewMode = _viewMode == ViewMode.THIRD ? ViewMode.FIRST : ViewMode.THIRD;
manager._viewMode = manager._viewMode == ViewMode.THIRD ? ViewMode.FIRST : ViewMode.THIRD;
var cameraImage = changeViewBtn.transform.Find("Camera").gameObject;
if (_viewMode == ViewMode.FIRST)
if (manager._viewMode == ViewMode.FIRST)
{
currentPlayer.DOMoveZ(-0.09f, 0f);
currentPlayer.DOMoveX(0f, 0f);
currentPlayer.DOMoveZ(-0.1f, 0f);
currentPlayer.DOMoveY(-0.85f, 0f);
ftpPanel.SetActive(true);
nearByScript.Hidehandler(null);
rankingScript.Hidehandler(null);
cameraImage.SetActive(true);
}
else
{
ftpPanel.SetActive(false);
currentPlayer.DOMoveZ(4, 0f);
currentPlayer.DOMoveY(-1f, 0f);
nearByScript.Showhandler(null);
rankingScript.Showhandler(null);
cameraImage.SetActive(false);
}
}
public void ShowResultPanel()
@@ -1,13 +1,18 @@
using Assets.Scripts;
using Assets.Scripts.Apis.Models;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class ActivityAdController : PFUIPanel
{
Dictionary<string, Texture> caches;
private int activityType = 0;//0:内置网页 1:骑行 2:赛事
private int routeId = 0;
private int competitionId = 0;
protected override void Awake()
{
caches = new Dictionary<string, Texture>();
@@ -22,6 +27,23 @@ public class ActivityAdController : PFUIPanel
UIManager.AddEvent(transform.Find("Image").gameObject, UnityEngine.EventSystems.EventTriggerType.PointerClick, async b =>
{
Close();
if (activityType == 1)
{
App.RouteIdParam = routeId;
var routeRes = ConfigHelper.mapApi.GetById(routeId);
if (routeRes.result)
{
if (routeRes.data.EnableAR)
{
SceneManager.LoadScene("VideoPlay");
}
else
{
SceneManager.LoadScene("Ride");
}
}
return;
}
//可以传参
//UIManager.ShowActivityPanel(url);
await ConfigHelper.activityApi.JoinActivity(id);
@@ -44,18 +66,22 @@ public class ActivityAdController : PFUIPanel
private void ShowSelf()
{
var ad = App.adQueue.Dequeue();
UIManager.ShowActivityAdPanel(ad.Id, ad.DetailUrl, ad.Url + $"?Token={App.CurrentUser.cookie}");
ad.Url = ad.Url + $"?Token={App.CurrentUser.cookie}";
UIManager.ShowActivityAdPanel(ad);
}
string image = null, url = null;
int id = 0;
public void Initial(int id, string image, string url)
public void Initial(ActivityModel activity)
{
this.id = id;
this.image = image;
this.id = activity.Id;
this.image = activity.DetailUrl;
var ri = transform.Find("Image").GetComponent<RawImage>();
Utils.DisplayImageTempDict(ri, image, caches);
App.ActivityUrl = url;
this.url = url;
this.url = activity.Url;
this.activityType = activity.ActivityType;
this.routeId = activity.RouteId;
this.competitionId = activity.CompetitionId;
}
// Update is called once per frame
void Update()
@@ -66,6 +92,5 @@ public class ActivityAdController : PFUIPanel
{
caches = null;
Resources.UnloadUnusedAssets();
GC.Collect();
}
}
@@ -77,6 +77,19 @@ public class GameRoomCell : MonoBehaviour, ICell, IBeginDragHandler, IDragHandle
UIManager.AddEvent(gameObject, EventTriggerType.PointerEnter,OnEnter);
UIManager.AddEvent(gameObject, EventTriggerType.PointerExit, OnExit);
UIManager.AddEvent(JoinBtn, EventTriggerType.PointerClick, JoinGameRoom);
//对战正在进行
UIManager.AddEvent(gameObject, EventTriggerType.PointerClick, (e) =>
{
if (gameRoom.Status == 1)
{
manager.ShowCycingPanel(gameRoom);
}
else if (gameRoom.Status == 2)
{
manager.ShowDonePanel(gameRoom.RoomId);
}
});
//对战正在进行
UIManager.AddEvent(CycingBtn, EventTriggerType.PointerClick, (e) =>
{
@@ -39,6 +39,10 @@ public class GameRoomResult : MonoBehaviour
private void Awake()
{
manager = FindObjectOfType<CyclingController>();
//if (manager == null)
//{
// manager = FindObjectOfType<VideoGameManager>();
//}
var closeBtn = transform.Find("Close").gameObject;
Head = transform.Find("Mine/Head").GetComponent<RawImage>();
Ranking = transform.Find("Mine/Ranking").GetComponent<Text>();
@@ -35,6 +35,7 @@ public class MapItem : MonoBehaviour, IPointerExitHandler, IPointerEnterHandler,
//[SerializeField] RawImage rawImage;
void Start()
{
transform.Find("CollectImg").gameObject.SetActive(false);
}
// Update is called once per frame
@@ -237,6 +237,7 @@ public class GameRoomDetailController : PFUIPanel
{
//路线
App.RouteIdParam = GameRoom.MapRouteId;
App.MainSceneParam["Name"] = "GameRoomList";
if (GameRoom.EnableAR)
{
SceneManager.LoadScene("VideoPlay");
@@ -96,6 +96,8 @@ public class GameRoomListController : PFUIPanel
[SerializeField]
GameObject _downLoadTask;
[SerializeField]
GameObject _avatar;
private GameObject RoomCell { get; set; }
@@ -126,12 +128,18 @@ public class GameRoomListController : PFUIPanel
Query();
});
UIManager.AddEvent(_searchBtn, UnityEngine.EventSystems.EventTriggerType.PointerClick, SearchBtn_Click);
UIManager.AddEvent(_avatar, UnityEngine.EventSystems.EventTriggerType.PointerClick, AvatarBtn_Click);
}
private void SearchBtn_Click(BaseEventData data)
{
pageHelper.PageIndex = 0;
Query();
}
private void AvatarBtn_Click(BaseEventData data)
{
UIManager.ShowUserInfoPanel();
}
private void Query()
{
MapUDPService.SendQueryGameRoomList(App.CurrentUser.Id, pageHelper.PageIndex, pageHelper.PageSize, seachName);
@@ -494,7 +502,7 @@ public class GameRoomListController : PFUIPanel
Query();
});
}
InputField hourInputField, minInputField;
private void InitStep2()
{
//关门时间
@@ -510,8 +518,8 @@ public class GameRoomListController : PFUIPanel
btn5 = right2.transform.Find("btn5").gameObject;
btn6 = right2.transform.Find("btn6").gameObject;
//房间名和密码
var hourInputField = right2.transform.Find("HourInputField").GetComponent<InputField>();
var minInputField = right2.transform.Find("MinInputField").GetComponent<InputField>();
hourInputField = right2.transform.Find("HourInputField").GetComponent<InputField>();
minInputField = right2.transform.Find("MinInputField").GetComponent<InputField>();
var roomNameInputField = right2.transform.Find("RoomNameInputField").GetComponent<InputField>();
var passwordInputField = right2.transform.Find("PasswordInputField").GetComponent<InputField>();
btnMore.SetActive(true);
@@ -539,7 +547,7 @@ public class GameRoomListController : PFUIPanel
Roompwd = e;
HandleFormInput();
});
UIManager.AddEvent(minInputField.gameObject, EventTriggerType.Select, (e) => {
hourInputField.GetComponent<Outline>().enabled = true;
HandleFormInput();
@@ -563,6 +571,7 @@ public class GameRoomListController : PFUIPanel
UIManager.AddEvent(btnMore, EventTriggerType.PointerClick, (e) =>
{
btnMore.SetActive(false);
HandleCloseTimeBtnClick(0, hourInputField.name);
hourInputField.gameObject.SetActive(true);
minInputField.gameObject.SetActive(true);
});
@@ -571,13 +580,23 @@ public class GameRoomListController : PFUIPanel
hourInputField.onValueChanged.AddListener((e) => {
hours = Convert.ToInt32(e);
CloseTime = hours * 60 + mins;
ValidateCloseTime(hours, CloseTime);
HandleCloseTimeBtnClick(CloseTime, hourInputField.name);
});
//分钟
minInputField.onValueChanged.RemoveAllListeners();
UIManager.AddEvent(minInputField.gameObject, EventTriggerType.PointerClick, (e) =>
{
HandleCloseTimeBtnClick(CloseTime, minInputField.name);
});
UIManager.AddEvent(hourInputField.gameObject, EventTriggerType.PointerClick, (e) =>
{
HandleCloseTimeBtnClick(CloseTime, hourInputField.name);
});
minInputField.onValueChanged.AddListener((e) => {
mins = Convert.ToInt32(e);
CloseTime = hours * 60 + mins;
ValidateCloseTime(hours, CloseTime);
HandleCloseTimeBtnClick(CloseTime, minInputField.name);
});
@@ -604,6 +623,22 @@ public class GameRoomListController : PFUIPanel
HandleMembersBtnClick(6, btn6.name);
});
}
private bool ValidateCloseTime(int value,int closeTime)
{
bool result = true;
if (value < 0)
{
result = false;
Utils.showToast(gameObject, App.GetLocalString("cannot be negative!"));
}
if (closeTime > 120)
{
result = false;
Utils.showToast(gameObject, App.GetLocalString("closetime cannot over 120 minutes!"));
}
return result;
}
private void HandleStepBtn(string btnName)
{
next.SetActive(btnName == previous.name);
@@ -620,7 +655,7 @@ public class GameRoomListController : PFUIPanel
}
private void HandleFormInput()
{
if (Members >= 2 && !string.IsNullOrEmpty(RoomName) && CloseTime > 0)
if (Members >= 2 && !string.IsNullOrEmpty(RoomName) && CloseTime > 0 && CloseTime < 120)
{
create.GetComponent<Image>().color = PFConstants.Pink;
create.transform.Find("Text").GetComponent<Text>().color = Color.white;
@@ -639,6 +674,14 @@ public class GameRoomListController : PFUIPanel
}
private void HandleCloseTimeBtnClick(int closeTime, string btnName)
{
if (btnName != "MinInputField" && btnName != "HourInputField")
{
hourInputField.text = "0";
minInputField.text = "0";
hourInputField.gameObject.SetActive(false);
minInputField.gameObject.SetActive(false);
btnMore.SetActive(true);
}
ColorUtility.TryParseHtmlString("#3D3E4D", out Color grey);
ColorUtility.TryParseHtmlString("#F93086", out Color pink);
CloseTime = closeTime;
@@ -865,7 +908,7 @@ public class GameRoomListController : PFUIPanel
private async void GetList()
{
if (isEnd) return;
var res = await ConfigHelper.mapApi.GetList(pageIndex, pageSize, ftname, distance, string.Join(",", hands), is3d, sort, sortDire, isEnableAR:false);//isEnableAR TODO:临时禁用AR地图
var res = await ConfigHelper.mapApi.GetList(pageIndex, pageSize, ftname, distance, string.Join(",", hands), is3d, sort, sortDire, isEnableAR:false, isEnableBattle: true);
if (res.result)
{
if (res.data.Count == 0)
@@ -57,10 +57,11 @@ public class NewHomeController : PFUIPanel
mainNav = this.transform.Find("MainNav").GetComponent<MainNav>();
mainNav.ShowExit();
UIManager.AddEvent(transform.Find("TodayData/ChangePlayerBtn").gameObject, EventTriggerType.PointerClick, b =>
{
UIManager.ShowChangePlayerPanel();
});
//TODO:换装功能还未完善先注释功能
//UIManager.AddEvent(transform.Find("TodayData/ChangePlayerBtn").gameObject, EventTriggerType.PointerClick, b =>
//{
// UIManager.ShowChangePlayerPanel();
//});
BtnBattle = BtnContainer.Find("BtnBattle");
UIManager.AddEvent(BtnBattle.gameObject, EventTriggerType.PointerClick, GoGameRoom);
UIManager.AddEvent(BtnBattle.gameObject, EventTriggerType.PointerEnter, OnHover);
+2 -2
View File
@@ -405,9 +405,9 @@ public class UIManager : MonoBehaviour
return this.GetPanelInstance("ActivityAdPanel", ref this.mActivityAdController);
}
}
public static void ShowActivityAdPanel(int id, string image, string url)
public static void ShowActivityAdPanel(ActivityModel activity)
{
UIManager.Instance.ActivityAdController.GetComponent<ActivityAdController>().Initial(id, image, url);
UIManager.Instance.ActivityAdController.GetComponent<ActivityAdController>().Initial(activity);
UIManager.Show(UIManager.Instance.ActivityAdController, null, true);
}
//收货地址
+10
View File
@@ -164,4 +164,14 @@ public class Loom : MonoBehaviour
}
}
public static void Dispose()
{
if (_current != null)
{
initialized = false;
DestroyImmediate(_current.gameObject);
_current = null;
}
}
}