AR骑行beta
This commit is contained in:
1 parent
4d5bc8f080
commit
9b1bb3d9ba
45 files changed
+35055
-2401
No files matched your search
@@ -25,9 +25,9 @@ namespace Assets.Scripts.Apis
|
||||
/// </summary>
|
||||
/// <param name="url"></param>
|
||||
/// <returns></returns>
|
||||
public MapDataModel GetData(int id)
|
||||
public MapDataModel GetData(int id,int m=20)
|
||||
{
|
||||
return Newtonsoft.Json.JsonConvert.DeserializeObject<MapDataModel>(Get("Map/GetData?routeId="+id));
|
||||
return Newtonsoft.Json.JsonConvert.DeserializeObject<MapDataModel>(Get($"Map/GetData?routeId={id}&m={m}"));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -147,12 +147,15 @@ namespace Assets.Scripts.Apis.Models
|
||||
foreach (var item in list)
|
||||
{
|
||||
var user = userList.Where(c => c.Id == item.UserId).FirstOrDefault();
|
||||
item.WxHeadImage = user?.HeadImage;
|
||||
item.FTP = user.FTP;
|
||||
item.Weight = user.Weight;
|
||||
item.Name = user.Name;
|
||||
item.Sex = user.Sex;
|
||||
item.Country = user.Country;
|
||||
if (user != null)
|
||||
{
|
||||
item.WxHeadImage = user.HeadImage;
|
||||
item.FTP = user.FTP;
|
||||
item.Weight = user.Weight;
|
||||
item.Name = user.Name;
|
||||
item.Sex = user.Sex;
|
||||
item.Country = user.Country;
|
||||
}
|
||||
}
|
||||
}
|
||||
return list;
|
||||
@@ -167,6 +170,11 @@ namespace Assets.Scripts.Apis.Models
|
||||
public int Rank { get; set; }
|
||||
public string Country { get; set; }
|
||||
public string TotalTime { get; set; }
|
||||
public string Power { get; set; }
|
||||
public string WeightKG{ get; set; }
|
||||
public string Gap { get; set; }
|
||||
public string Source { get; set; }
|
||||
public bool IsDNF { get; set; }
|
||||
public double? HeartRate { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -124,5 +124,6 @@ namespace Assets.Scripts.Apis.Models
|
||||
public string Url { get; set; }
|
||||
public string FileName { get; set; }
|
||||
public int FileSize { get; set; }
|
||||
public string ARConfig { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -181,9 +181,7 @@ public class MainController : BaseScene
|
||||
var m = msgs[selectIndex];
|
||||
if (msgIndex >= 5) //
|
||||
{
|
||||
//msgIndex = 0;
|
||||
Sequence se = DOTween.Sequence();
|
||||
//m.transform.DOLocalMoveY(m.transform.localPosition.y - 38, 0.5f);
|
||||
foreach (var item in msgs)
|
||||
{
|
||||
se.Join(item.transform.DOLocalMoveY(item.transform.localPosition.y - moveOffset, 0.5f));
|
||||
@@ -544,6 +542,8 @@ public class MainController : BaseScene
|
||||
var userName = arr[1];
|
||||
var roomName = arr[2];
|
||||
var roomId = Convert.ToInt32(arr[3]);
|
||||
if (userName.Equals(App.CurrentUser.Nickname))
|
||||
return;
|
||||
var content = $"{userName} {App.GetLocalString("invite you to join in")} {roomName} , {App.GetLocalString("are you accept the invitation?")}";
|
||||
UIManager.ShowConfirm(App.GetLocalString("Invitition"), content, () => {
|
||||
UIManager.CloseConfirm();
|
||||
|
||||
@@ -167,16 +167,21 @@ namespace Assets.Scenes.Ride.Scripts
|
||||
public void setUserId(int userId,string WxHeadImg)
|
||||
{
|
||||
_userId = userId;
|
||||
var isself = userId == cyclingController.currentPlayer.UserId && !cyclingController.isWatch;
|
||||
bool isself;
|
||||
if (cyclingController != null)
|
||||
{
|
||||
isself = userId == cyclingController.currentPlayer.UserId && !cyclingController.isWatch;
|
||||
}
|
||||
else
|
||||
{
|
||||
isself = userId == App.CurrentUser.Id;
|
||||
}
|
||||
//头像根据是否是自己显示
|
||||
if (isself)
|
||||
{
|
||||
Utils.DisplayImage(Head, WxHeadImg, true);
|
||||
}
|
||||
Head.gameObject.SetActive(isself);
|
||||
//边框样式
|
||||
var color = isself ? WHITE : TRANSPARENT;
|
||||
//outline.effectColor = color;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,9 @@
|
||||
using Assets.Scenes.Ride.Scripts.Model.RiderModels;
|
||||
using Assets.Scripts;
|
||||
using Assets.Scripts.Apis.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Assets.Scenes.Ride.Scripts.Model.CyclingModels
|
||||
{
|
||||
@@ -14,7 +13,9 @@ namespace Assets.Scenes.Ride.Scripts.Model.CyclingModels
|
||||
/// 第一个到终点的时间
|
||||
/// </summary>
|
||||
public DateTime? FirstEndTime { get; private set; }
|
||||
public int? FirstUserId { get; private set; }
|
||||
public GameRoomModel GameRoom { get; private set; }
|
||||
public List<RoomRankItem> mapWorkoutRecordRankings = new List<RoomRankItem>();
|
||||
|
||||
public GameModel(Route route,RouteResultParam param)
|
||||
: base(route, CyclingModel.Single)
|
||||
@@ -87,15 +88,69 @@ namespace Assets.Scenes.Ride.Scripts.Model.CyclingModels
|
||||
protected override void BeforeRunAfterPakcData()
|
||||
{
|
||||
base.BeforeRunAfterPakcData();
|
||||
|
||||
var userList = MapUDPService.GetOnlineUsers(recorderData.CurrentRoute.RouteInstance.Id,recorderData.RoomId).Where(c=>c.IsSelf == false).OrderByDescending(u => u.Saved).ThenBy(d => d.CreateTime).ThenByDescending(d => d.EndDistance);
|
||||
int index = 0;
|
||||
List<CompetitionRankingSortModel> sort = new List<CompetitionRankingSortModel>();
|
||||
var userList = MapUDPService.GetOnlineUsers(recorderData.CurrentRoute.RouteInstance.Id,recorderData.RoomId).OrderByDescending(u => u.Saved).ThenBy(d => d.CreateTime).ThenByDescending(d => d.EndDistance);
|
||||
if (userList.Any())
|
||||
{
|
||||
//计算关门时间
|
||||
foreach (var item in userList)
|
||||
{
|
||||
if(!FirstEndTime.HasValue && item.IsCompleted)
|
||||
if (!FirstEndTime.HasValue && item.IsCompleted)
|
||||
{
|
||||
FirstEndTime = Now.AddMinutes(GameRoom.CloseTime);
|
||||
FirstUserId = item.Id;
|
||||
}
|
||||
index++;
|
||||
double near = Math.Round(item.EndDistance - currentDistance, 2); //Math.Round(TurfHelper.GetDistances(point, item.Point), 2);
|
||||
|
||||
if (item.IsCompleted)
|
||||
{
|
||||
sort.Add(new CompetitionRankingSortModel
|
||||
{
|
||||
Index = index,
|
||||
Name = item.Name,
|
||||
Near = near,
|
||||
KGWeight = Math.Round(item.WeightKg, 2).ToString(),
|
||||
Speed = Math.Round(item.Speed, 1),
|
||||
CountryImg = item.Country,//ConfigHelper.Host + $"User/GetCountryImg?userid={ item.Id }",
|
||||
UserId = item.Id,
|
||||
IsSelf = item.IsSelf,
|
||||
Headimage = item.HeadImage,
|
||||
CreateTime = DateTime.MaxValue,
|
||||
EndDistance = item.EndDistance,
|
||||
IsCompleted = item.IsCompleted,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
#region 骑行结束,比赛结果展示数据
|
||||
var results = new List<CompetitionResultModel>();
|
||||
if (recorderData.IsCompleted || recorderData.Saved)
|
||||
{
|
||||
var users1 = userList.Where(d => d.IsCompleted || d.Saved);
|
||||
if ((users1.Any() && users1.Any(d => mapWorkoutRecordRankings.All(u => u.UserId != d.Id)))
|
||||
|| mapWorkoutRecordRankings.All(u => u.UserId != recorderData.BelongUserId))
|
||||
{
|
||||
var result = ConfigHelper.GameRoomApi.GetDetail(GameRoom.RoomId);
|
||||
if (result.result)
|
||||
{
|
||||
mapWorkoutRecordRankings = result.data.RoomRankingList;
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var ranking in mapWorkoutRecordRankings)
|
||||
{
|
||||
var needUpdate = sort.Where(c => c.UserId == ranking.UserId).FirstOrDefault();
|
||||
if (needUpdate != null)
|
||||
{
|
||||
ranking.WeightKG = needUpdate.KGWeight;
|
||||
needUpdate.Index = ranking.Rank;
|
||||
needUpdate.IsCompleted = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using Assets.Scenes.Ride.Scripts;
|
||||
using Assets.Scripts.Apis.Models;
|
||||
using Assets.Scenes.Ride.Scripts.Model;
|
||||
using DG.Tweening;
|
||||
using Mapbox.Utils;
|
||||
using System;
|
||||
@@ -85,45 +86,21 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
//人物移动速度
|
||||
public int moveSpeed = 2;
|
||||
|
||||
void setHeroState(int newState)
|
||||
{
|
||||
//根据当前人物方向与上一次备份的方向计算出模型旋转的角度
|
||||
Vector3 transformValue = new Vector3();
|
||||
//模型移动的位置数值
|
||||
switch (newState)
|
||||
{
|
||||
case HERO_UP:
|
||||
transformValue = Vector3.forward * Time.deltaTime;
|
||||
break;
|
||||
case HERO_DOWN:
|
||||
transformValue = (-Vector3.forward) * Time.deltaTime;
|
||||
break;
|
||||
case HERO_LEFT:
|
||||
transformValue = Vector3.left * Time.deltaTime;
|
||||
break;
|
||||
case HERO_RIGHT:
|
||||
transformValue = (-Vector3.left) * Time.deltaTime;
|
||||
break;
|
||||
}
|
||||
//移动人物
|
||||
transform.Translate(transformValue * moveSpeed, Space.World);
|
||||
state = newState;
|
||||
|
||||
}
|
||||
protected virtual void Update()
|
||||
{
|
||||
timer -= Time.deltaTime;
|
||||
CreateHeadImage();
|
||||
Turn();
|
||||
|
||||
while (timer <= 0)
|
||||
{
|
||||
try
|
||||
{
|
||||
ComputeNextSlope();//计算下一个坡度
|
||||
ComputePlayer();//计算人物属性
|
||||
if (GetStart())
|
||||
{
|
||||
ticks++;
|
||||
ComputePlayer();//计算人物属性
|
||||
Forward();
|
||||
ComputeRecord();
|
||||
ComputeVideo();
|
||||
@@ -223,14 +200,14 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
speed = 0;
|
||||
distance = 0;
|
||||
}
|
||||
//一旦有功率就开始骑行、否则暂停
|
||||
if (!manager.IsQuit() && manager.CurrentPlayer.UserId == UserId && !manager.IsQuit() && manager.cyclingModel == Assets.Scenes.Ride.Scripts.Model.CyclingModel.Single)
|
||||
{
|
||||
if (power > 0)
|
||||
{
|
||||
manager.StartGame();
|
||||
}
|
||||
}
|
||||
////一旦有功率就开始骑行、否则暂停
|
||||
//if (!manager.IsQuit() && manager.CurrentPlayer.UserId == UserId && !manager.IsQuit() && manager.cyclingModel == CyclingModel.Single)
|
||||
//{
|
||||
// if (power > 0)
|
||||
// {
|
||||
// manager.StartGame();
|
||||
// }
|
||||
//}
|
||||
}
|
||||
Vector3 current { get; set; }
|
||||
Vector3 forward { get; set; }
|
||||
@@ -264,8 +241,8 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
}
|
||||
if (manager.CurrentPlayer != null && manager.CurrentPlayer.UserId != UserId)
|
||||
return;
|
||||
|
||||
manager.Play(ratio);
|
||||
//ratio = (float)Math.Round(ratio, 1);
|
||||
manager.Play(totalDistance);
|
||||
|
||||
if (ratio > 1)
|
||||
{
|
||||
@@ -303,6 +280,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
decimal right = (decimal)sumDistance;
|
||||
if (left <= right)
|
||||
{
|
||||
Debug.Log($"当前索引{i}");
|
||||
currentIndex = i;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -119,9 +119,9 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
var screenWidth = UnityEngine.Screen.width;
|
||||
var screenHeight = UnityEngine.Screen.height;
|
||||
|
||||
var sw_world = _minicamera.ViewportToWorldPoint(new Vector3(0.25f, 0.1f, 160));
|
||||
var sw_world = _minicamera.ViewportToWorldPoint(new Vector3(0f, 0f, 160));
|
||||
var sw = _map.WorldToGeoPosition(sw_world);
|
||||
var ne_world = _minicamera.ViewportToWorldPoint(new Vector3(0.75f, 0.9f, 90));
|
||||
var ne_world = _minicamera.ViewportToWorldPoint(new Vector3(1f, 1f, 90));
|
||||
var ne = _map.WorldToGeoPosition(ne_world);
|
||||
|
||||
return new Vector2dBounds(new Vector2d(sw.x, sw.y), new Vector2d(ne.x, ne.y));
|
||||
|
||||
@@ -24,7 +24,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
//var left = totalDistance % mapData.TotalDistance;
|
||||
//var right = current.totalDistance % mapData.TotalDistance;
|
||||
//diff = (left - right) * 1000;
|
||||
if (Math.Abs(diff) > 150)
|
||||
if (Math.Abs(diff) > 100)
|
||||
{
|
||||
Destroy();
|
||||
}
|
||||
|
||||
@@ -99,7 +99,6 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
DeviceCache.Init(PFConstants.DeviceCacheFolder);
|
||||
var check = CheckAnt();//初始化蓝牙设备
|
||||
recordId = Guid.NewGuid().ToString();
|
||||
MockDirection();
|
||||
infoPanel = Resources.Load<GameObject>("UI/Prefab/AR/VideoPlayerHead");
|
||||
OnlinePlayer = Resources.Load<GameObject>("UI/Prefab/AR/OnlineVideoPlayer");
|
||||
OnlinePlayer_NV = Resources.Load<GameObject>("UI/Prefab/AR/OnlineVideoPlayer_NV");
|
||||
@@ -115,6 +114,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
//获取路书
|
||||
GetMapRoute();
|
||||
GetMapData();
|
||||
MockDirection();
|
||||
route = new Route(mapData, mapRoute);
|
||||
|
||||
if (selectParamModel == null)
|
||||
@@ -365,8 +365,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
|
||||
private void MockDirection()
|
||||
{
|
||||
var text = Resources.Load<TextAsset>("UI/direction");
|
||||
var arr = text.text.Replace("\r\n", " ").Split(' ');
|
||||
var arr = mapRoute.ARConfig.Replace("\r\n", " ").Split(' ');
|
||||
foreach (var item in arr)
|
||||
{
|
||||
if (string.IsNullOrEmpty(item))
|
||||
@@ -390,12 +389,6 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
break;
|
||||
}
|
||||
}
|
||||
//模拟登录
|
||||
private async Task Login()
|
||||
{
|
||||
var result = await new UserApi().Login("anyway2019@163.com", "123456", "");
|
||||
App.CurrentUser = result.data;
|
||||
}
|
||||
//开始游戏
|
||||
public void StartGame()
|
||||
{
|
||||
@@ -428,33 +421,40 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
{
|
||||
return isStop;
|
||||
}
|
||||
double preframe = 0;
|
||||
//设置当前视频播放速度
|
||||
public void Play(float playbackRate = 1f)
|
||||
public void Play(double totalDistance)
|
||||
{
|
||||
if (!isStart)
|
||||
return;
|
||||
if (mediaPlayer != null)
|
||||
{
|
||||
mediaPlayer.PlaybackRate = playbackRate;
|
||||
mediaPlayer.Play();
|
||||
//mediaPlayer.PlaybackRate = totalDistance;
|
||||
//if (!mediaPlayer.Control.IsPlaying())
|
||||
// mediaPlayer.Play();
|
||||
//var frame = DistanceToFrames(totalDistance);
|
||||
var frame = DistanceToTimers(totalDistance);
|
||||
StartCoroutine(DOSeekToFrame(preframe, frame - preframe));
|
||||
preframe = frame;
|
||||
}
|
||||
if (startTime == null)
|
||||
{
|
||||
startTime = UIManager.Now.GetDateTime();
|
||||
}
|
||||
isStart = true;
|
||||
}
|
||||
//暂停
|
||||
public void Pause()
|
||||
{
|
||||
isStart = !isStart;
|
||||
isStop = !isStop;
|
||||
if (isStop)
|
||||
{
|
||||
mediaPlayer?.Pause();
|
||||
}
|
||||
else
|
||||
{
|
||||
mediaPlayer?.Play();
|
||||
}
|
||||
//if (isStop)
|
||||
//{
|
||||
// mediaPlayer?.Pause();
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// mediaPlayer?.Play();
|
||||
//}
|
||||
}
|
||||
//退出骑行
|
||||
public void Quit()
|
||||
@@ -477,6 +477,13 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
distance %= TotalDistance;
|
||||
return TotalDistance > 0 ? Convert.ToInt32(frames / TotalDistance * distance) : 0;
|
||||
}
|
||||
public double DistanceToTimers(double distance)
|
||||
{
|
||||
var timers = mediaPlayer.Info.GetDuration();
|
||||
var TotalDistance = route?.TotalDistance ?? 0;
|
||||
distance %= TotalDistance;
|
||||
return TotalDistance > 0 ? timers / TotalDistance * distance : 0;
|
||||
}
|
||||
public int GetFrameOffSet(double distance)
|
||||
{
|
||||
var currentFrame = GetCurrentFrame();
|
||||
@@ -492,6 +499,21 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
{
|
||||
mediaPlayer?.Control.SeekToFrame(seq);
|
||||
}
|
||||
double currentFrame = 0d;
|
||||
private IEnumerator DOSeekToFrame(double preFrame, double offset)
|
||||
{
|
||||
float t = 0;
|
||||
while (t < 1)
|
||||
{
|
||||
t += Time.deltaTime;
|
||||
var result = preFrame + offset * t;
|
||||
currentFrame = result;
|
||||
mediaPlayer?.Control.SeekFast(result);
|
||||
yield return new WaitForEndOfFrame();
|
||||
}
|
||||
}
|
||||
//获取AR骑行配置信息
|
||||
|
||||
//获取路书gps信息
|
||||
public MapDataModel GetMapData()
|
||||
{
|
||||
@@ -499,7 +521,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
{
|
||||
var mapApi = ConfigHelper.mapApi;
|
||||
int routeId = App.RouteIdParam;
|
||||
mapData = mapApi.GetData(routeId);//获取路书地理数据
|
||||
mapData = mapApi.GetData(routeId,20);//获取路书地理数据
|
||||
}
|
||||
return mapData;
|
||||
}
|
||||
|
||||
@@ -106,7 +106,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
|
||||
download = transform.Find("Panel/Download").gameObject;
|
||||
watch = transform.Find("Panel/Watch").gameObject;
|
||||
|
||||
|
||||
UIManager.AddEvent(watch, UnityEngine.EventSystems.EventTriggerType.PointerClick, WatchHandler);
|
||||
canvasGroup = transform.GetComponent<CanvasGroup>();
|
||||
|
||||
@@ -117,12 +117,14 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
|
||||
if (File.Exists(filepath))
|
||||
{
|
||||
watch.SetActive(true);
|
||||
slider.value = 100;
|
||||
download.gameObject.SetActive(false);
|
||||
manager.SetMedia(filepath);
|
||||
}
|
||||
else
|
||||
{
|
||||
watch.SetActive(false);
|
||||
//检查本地文件是否存在 如果存在直接设置mediaPlayer 否则显示下载按钮
|
||||
UIManager.AddEvent(download.gameObject, UnityEngine.EventSystems.EventTriggerType.PointerClick, Download);
|
||||
}
|
||||
@@ -200,7 +202,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
#endregion
|
||||
//显示线路背景图
|
||||
DrawMapRouteAsync(route.Id);
|
||||
//查询排行榜
|
||||
//查询排行榜 TODO优化
|
||||
var list = ConfigHelper.mapApi.GetRouteRanking(route.Id, "1", 0, 10000, "");
|
||||
if (list.result)
|
||||
{
|
||||
@@ -212,9 +214,10 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
var ui = manager.GetCanvasTransform();
|
||||
canvasGroup.DOFade(0, 1).onComplete += () => {
|
||||
gameObject.SetActive(false);
|
||||
manager.StartGame();
|
||||
manager.SetCyclingModel(Assets.Scenes.Ride.Scripts.Model.CyclingModel.Single);
|
||||
manager.SetCurrentMode(VideoGameManager.ARMode.RIDE);
|
||||
ui.Find("Panel").gameObject.SetActive(true);
|
||||
//ui.Find("Panel").gameObject.SetActive(true);
|
||||
};
|
||||
}
|
||||
|
||||
@@ -236,10 +239,14 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
{
|
||||
var path = PFConstants.VideoFolder;
|
||||
var filepath = path + $"/{route.FileName}";
|
||||
var text = rideNow.GetComponentInChildren<Text>();
|
||||
StartCoroutine(Utils.DownloadVideo(route.FileName, route.Url
|
||||
, (p, req) =>
|
||||
{
|
||||
rideNow.enabled = false;
|
||||
rideNow.interactable = false;
|
||||
slider.value = (float)Math.Round(p * 100, 2);
|
||||
text.text = slider.value.ToString()+"%";
|
||||
request = req;
|
||||
download.SetActive(false);
|
||||
}
|
||||
@@ -250,6 +257,10 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
}
|
||||
else
|
||||
{
|
||||
rideNow.enabled = true;
|
||||
rideNow.interactable = true;
|
||||
text.text = App.GetLocalString("Ride Now");
|
||||
watch.SetActive(true);
|
||||
slider.value = 100;
|
||||
manager.SetMedia(filepath);
|
||||
}
|
||||
|
||||
@@ -12,6 +12,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
{
|
||||
public double EndDistance => totalDistance;
|
||||
protected Transform LightTrans { get; set; }
|
||||
private bool isSingle = true;
|
||||
protected override void Start()
|
||||
{
|
||||
base.Start();
|
||||
@@ -42,7 +43,11 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
public void Complete()
|
||||
{
|
||||
start = false;
|
||||
manager.Save(totalDistance);
|
||||
var uimanager= FindObjectOfType<VideoUIManager>();
|
||||
if (uimanager!= null)
|
||||
{
|
||||
uimanager.SaveAndShowResult();
|
||||
}
|
||||
}
|
||||
protected override void ComputeAnimator()
|
||||
{
|
||||
@@ -67,11 +72,11 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
heartRate = manager.UpDateHeart();
|
||||
power = manager.UpdatePower();
|
||||
cadance = manager.UpdateCadence();
|
||||
//#if UNITY_EDITOR
|
||||
power = 100;
|
||||
#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);
|
||||
@@ -81,13 +86,15 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
//发送阻力
|
||||
manager.TrackResistance(currentSlope);
|
||||
base.ComputePlayer();
|
||||
//比人先完成触发关门时间
|
||||
HandleForGameRoom();
|
||||
}
|
||||
private bool gameRoomHandled { get; set; }
|
||||
//房间倒计时保存
|
||||
private void HandleForGameRoom()
|
||||
{
|
||||
var model = manager.cyclingController as GameModel;
|
||||
if (model != null && model.FirstEndTime.HasValue && !gameRoomHandled)
|
||||
if (model != null && model.FirstEndTime.HasValue && !gameRoomHandled && App.CurrentUser.Id != model.FirstUserId)
|
||||
{
|
||||
gameRoomHandled = true;
|
||||
var gap = model.FirstEndTime.Value - UIManager.Now.GetDateTime();
|
||||
@@ -96,13 +103,14 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
Upload();
|
||||
var uiManager = FindObjectOfType<VideoUIManager>();
|
||||
uiManager.ShowResultPanel();
|
||||
});
|
||||
},true);
|
||||
}
|
||||
}
|
||||
//控制视频播放速度
|
||||
protected override void ComputeVideo()
|
||||
{
|
||||
base.ComputeVideo();
|
||||
//单人骑行到终点自动暂停
|
||||
}
|
||||
|
||||
protected override void ComputeRecord()
|
||||
@@ -116,7 +124,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
Ticks = ticks,
|
||||
_Power = power,
|
||||
_Speed = speed,
|
||||
_Distance = totalDistance,//totalDistance > mapData.TotalDistance ? mapData.TotalDistance : totalDistance,
|
||||
_Distance = totalDistance > mapData.TotalDistance ? mapData.TotalDistance : totalDistance,
|
||||
_Cadence = cadance,
|
||||
_HeartRate = heartRate,
|
||||
_Lat = currentlatLon.x,
|
||||
@@ -124,16 +132,20 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
_TotalClimb = totalClimb,
|
||||
_FrameRate = manager.GetCurrentFrame()
|
||||
};
|
||||
var preDistance = targetData._Distance - distance;//totalDistance >= mapData.TotalDistance ? targetData._Distance : targetData._Distance - distance;
|
||||
|
||||
var preDistance = totalDistance >= mapData.TotalDistance ? targetData._Distance : targetData._Distance - distance;
|
||||
if (!isSingle)
|
||||
{
|
||||
preDistance = targetData._Distance - distance;
|
||||
}
|
||||
recorderData.PreDistance = Math.Round(preDistance, 6, MidpointRounding.AwayFromZero);
|
||||
recorderData.EndDistance = Math.Round(targetData._Distance, 6, MidpointRounding.AwayFromZero);
|
||||
recorderData.RiderDatas.Add(targetData);
|
||||
//默认启用多圈
|
||||
//if (totalDistance >= mapData.TotalDistance)
|
||||
//{
|
||||
// start = false;
|
||||
// manager.Save(totalDistance);
|
||||
//}
|
||||
if (isSingle && totalDistance >= mapData.TotalDistance)
|
||||
{
|
||||
Complete();
|
||||
}
|
||||
}
|
||||
|
||||
protected override void Forward()
|
||||
|
||||
@@ -5,6 +5,7 @@ using UnityEngine.EventSystems;
|
||||
using UnityEngine.UI;
|
||||
using DG.Tweening;
|
||||
using UnityEngine.SceneManagement;
|
||||
using Assets.Scenes.Ride.Scripts.Model.CyclingModels;
|
||||
|
||||
namespace Assets.Scripts.Scenes.VideoRide
|
||||
{
|
||||
@@ -43,6 +44,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
//modal
|
||||
GameObject settingPanel { get; set; }
|
||||
GameObject resultPanel { get; set; }
|
||||
GameObject gameRoomResultPanel { get; set; }
|
||||
|
||||
//ftp
|
||||
GameObject ftpPanel { get; set; }
|
||||
@@ -136,6 +138,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
//modal
|
||||
settingPanel = transform.Find("Panel/SettingPanel").gameObject;
|
||||
resultPanel = transform.Find("Panel/ResultPanel").gameObject;
|
||||
gameRoomResultPanel = transform.Find("Panel/GameRoomResult").gameObject;
|
||||
//
|
||||
explosive = transform.Find("Panel/Explosive").gameObject;
|
||||
//toolbar 事件注册
|
||||
@@ -225,6 +228,25 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
videoResultScript.InjectController(manager);
|
||||
videoResultScript.SetDataSource(manager.cyclingController.recorderData);
|
||||
}
|
||||
public void SaveAndShowResult()
|
||||
{
|
||||
videoPlayer = FindObjectOfType<VideoPlayer>();
|
||||
videoPlayer?.Upload();
|
||||
//show result
|
||||
if (manager.cyclingController is GameModel)
|
||||
{
|
||||
gameRoomResultPanel.SetActive(true);
|
||||
gameRoomResultPanel.transform.SetAsLastSibling();
|
||||
}
|
||||
else
|
||||
{
|
||||
resultPanel.SetActive(true);
|
||||
resultPanel.transform.SetAsLastSibling();
|
||||
var videoResultScript = resultPanel.GetComponent<VideoResultScript>();
|
||||
videoResultScript.InjectController(manager);
|
||||
videoResultScript.SetDataSource(manager.cyclingController.recorderData);
|
||||
}
|
||||
}
|
||||
private void QuitClick(BaseEventData e)
|
||||
{
|
||||
if (manager._aRMode == VideoGameManager.ARMode.RIDE)
|
||||
@@ -233,15 +255,8 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
UIManager.ShowConfirm("Quit", "Do you want to keep the record?",
|
||||
() =>
|
||||
{
|
||||
videoPlayer = FindObjectOfType<VideoPlayer>();
|
||||
videoPlayer?.Upload();
|
||||
SaveAndShowResult();
|
||||
UIManager.CloseConfirm();
|
||||
//show result
|
||||
resultPanel.SetActive(true);
|
||||
resultPanel.transform.SetAsLastSibling();
|
||||
var videoResultScript = resultPanel.GetComponent<VideoResultScript>();
|
||||
videoResultScript.InjectController(manager);
|
||||
videoResultScript.SetDataSource(manager.cyclingController.recorderData);
|
||||
},
|
||||
2,
|
||||
() =>
|
||||
|
||||
@@ -67,6 +67,14 @@ class GameRoomDownLoad : MonoBehaviour
|
||||
});
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
if (!string.IsNullOrEmpty(FileName) && Loom.DownLoadTaskList.ContainsKey(FileName))
|
||||
{
|
||||
processing(Loom.DownLoadTaskList[FileName]);
|
||||
}
|
||||
}
|
||||
|
||||
public void Init(int Id,string fileName,string url, GameRoomListController gameRoomListController)
|
||||
{
|
||||
RoomId = Id;
|
||||
@@ -74,6 +82,12 @@ class GameRoomDownLoad : MonoBehaviour
|
||||
FileUrl = url;
|
||||
manager = gameRoomListController;
|
||||
}
|
||||
public void ComeIntoStep2(string fileName)
|
||||
{
|
||||
FileName = fileName;
|
||||
step2.SetActive(true);
|
||||
step3.SetActive(false);
|
||||
}
|
||||
|
||||
private void Reset()
|
||||
{
|
||||
@@ -86,6 +100,18 @@ class GameRoomDownLoad : MonoBehaviour
|
||||
Reset();
|
||||
gameObject.SetActive(false);
|
||||
}
|
||||
private void processing(float p)
|
||||
{
|
||||
downloadSlider.value = p;
|
||||
if (Loom.DownLoadTaskList.ContainsKey(FileName))
|
||||
{
|
||||
Loom.DownLoadTaskList[FileName] = p;
|
||||
}
|
||||
else
|
||||
{
|
||||
Loom.DownLoadTaskList.Add(FileName, p);
|
||||
}
|
||||
}
|
||||
|
||||
private void DownloadClick(BaseEventData baseEventData)
|
||||
{
|
||||
@@ -105,16 +131,8 @@ class GameRoomDownLoad : MonoBehaviour
|
||||
Loom.Current.StartCoroutine(Utils.DownloadVideo(fileName, url
|
||||
, (p, req) =>
|
||||
{
|
||||
downloadSlider.value = p;
|
||||
currentTask.UpdateProcess(p);
|
||||
if (Loom.DownLoadTaskList.ContainsKey(FileName))
|
||||
{
|
||||
Loom.DownLoadTaskList[FileName] = p;
|
||||
}
|
||||
else
|
||||
{
|
||||
Loom.DownLoadTaskList.Add(FileName, p);
|
||||
}
|
||||
processing(p);
|
||||
}
|
||||
, (p) =>
|
||||
{
|
||||
|
||||
@@ -25,6 +25,7 @@ class GameRoomDownloadTask : MonoBehaviour
|
||||
UIManager.AddEvent(btn, EventTriggerType.PointerClick, (e) =>
|
||||
{
|
||||
modal.SetActive(true);
|
||||
modal.GetComponent<GameRoomDownLoad>().ComeIntoStep2(FileName);
|
||||
transform.parent.parent.parent.gameObject.SetActive(false);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -105,7 +105,7 @@ public class GameRoomMapItem : MonoBehaviour, IPointerExitHandler, IPointerEnter
|
||||
if (gameObject != null)
|
||||
{
|
||||
slider.value = process;
|
||||
ShowOutLine();
|
||||
Ride();
|
||||
transform.Find("DownLoadModal").gameObject.SetActive(false);
|
||||
}
|
||||
}
|
||||
@@ -163,7 +163,7 @@ public class GameRoomMapItem : MonoBehaviour, IPointerExitHandler, IPointerEnter
|
||||
var fileName = map.FileName;
|
||||
var path = PFConstants.VideoFolder;
|
||||
var filepath = path + "/" + fileName;
|
||||
//if ((map.EnableAR && !File.Exists(filepath) )|| !map.EnableAR)
|
||||
if ((map.EnableAR && File.Exists(filepath) )|| !map.EnableAR)
|
||||
{
|
||||
var list = FindObjectsOfType<GameRoomMapItem>();
|
||||
foreach (var item in list)
|
||||
|
||||
@@ -43,20 +43,19 @@ class GameRoomPlayerPanel : MonoBehaviour
|
||||
|
||||
UIManager.AddEvent(gameObject, EventTriggerType.PointerClick, (e) =>
|
||||
{
|
||||
if (App.gameRoomDetail.UserId != App.CurrentUser.Id)
|
||||
if (App.gameRoomDetail.UserId == UserId)
|
||||
return;
|
||||
kickModal.SetActive(true);
|
||||
});
|
||||
UIManager.AddEvent(cancelBtn, EventTriggerType.PointerClick, (e) =>
|
||||
{
|
||||
if (App.gameRoomDetail.UserId != App.CurrentUser.Id)
|
||||
return;
|
||||
kickModal.SetActive(false);
|
||||
});
|
||||
UIManager.AddEvent(kickBtn, EventTriggerType.PointerClick, (e) =>
|
||||
{
|
||||
if (App.gameRoomDetail.UserId != App.CurrentUser.Id)
|
||||
return;
|
||||
kickModal.SetActive(false);
|
||||
MapUDPService.SendGameRoomKick(App.gameRoomDetail.RoomId, UserId, App.CurrentUser.Id);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -0,0 +1,194 @@
|
||||
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 Assets.Scenes.Ride.Scripts;
|
||||
using Assets.Scripts.Scenes.VideoRide;
|
||||
using System;
|
||||
|
||||
public class GameRoomResult : MonoBehaviour
|
||||
{
|
||||
VideoGameManager manager;
|
||||
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()
|
||||
{
|
||||
manager = FindObjectOfType<VideoGameManager>();
|
||||
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()
|
||||
{
|
||||
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 (manager.cyclingController is GameModel model)
|
||||
{
|
||||
if (model == null)
|
||||
return;
|
||||
var list = model.mapWorkoutRecordRankings;
|
||||
if (list == null) return;
|
||||
var parent = transform.Find("ScrollView/Viewport/Content");
|
||||
Mine.SetActive(true);
|
||||
RankingPanel.SetActive(false);
|
||||
TitleImage.SetActive(true);
|
||||
WatchTitle.SetActive(false);
|
||||
|
||||
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);
|
||||
}
|
||||
//当前用户排名
|
||||
var currentRanking = list.Where(c => c.UserId == manager.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);
|
||||
}
|
||||
}
|
||||
|
||||
//排名列表
|
||||
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);
|
||||
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");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 873bd5947356d6f4d84526e63f9643fc
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,4 +1,5 @@
|
||||
using Assets.Scripts.Apis.Models;
|
||||
using Assets.Scenes.Ride.Scripts;
|
||||
using Assets.Scripts.Apis.Models;
|
||||
using System;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
@@ -6,6 +7,7 @@ using UnityEngine.UI;
|
||||
public class GameRoomCountDownController : PFUIPanel
|
||||
{
|
||||
public Text count;
|
||||
public Text endCount;
|
||||
|
||||
private int Seconds { get; set; }
|
||||
public GameRoomModel GameRoom { get; set; }
|
||||
@@ -22,10 +24,11 @@ public class GameRoomCountDownController : PFUIPanel
|
||||
base.Show();
|
||||
}
|
||||
|
||||
public void Init(int seconds,Action action)
|
||||
public void Init(int seconds,Action action,bool isEnd = false)
|
||||
{
|
||||
Seconds = seconds;
|
||||
Callback = action;
|
||||
endCount.gameObject.SetActive(isEnd);
|
||||
}
|
||||
|
||||
float timer = 0f;
|
||||
@@ -44,7 +47,8 @@ public class GameRoomCountDownController : PFUIPanel
|
||||
}
|
||||
else
|
||||
{
|
||||
count.text = Seconds.ToString();
|
||||
count.text = Helper.FormatTicks(Seconds);
|
||||
endCount.text = Helper.FormatTicks(Seconds);
|
||||
}
|
||||
Seconds--;
|
||||
timer += 1f;
|
||||
|
||||
@@ -12,6 +12,7 @@ using Assets.Scenes.Ride.Scripts.Model;
|
||||
|
||||
public class GameRoomDetailController : PFUIPanel
|
||||
{
|
||||
public Text versionText;
|
||||
public RawImage Avatar;
|
||||
public Text idText;
|
||||
public Text roomName;
|
||||
@@ -128,6 +129,7 @@ public class GameRoomDetailController : PFUIPanel
|
||||
private void Init()
|
||||
{
|
||||
App.Model = "GameRoom";
|
||||
versionText.text = "V"+App.AppVersion.ToString();
|
||||
MapUDPService.MessageListener = ListenerHandler;
|
||||
GameRoom = App.gameRoomDetail;
|
||||
|
||||
@@ -250,9 +252,6 @@ public class GameRoomDetailController : PFUIPanel
|
||||
|
||||
protected override void OnDisable()
|
||||
{
|
||||
}
|
||||
|
||||
protected override void OnDestroy()
|
||||
{
|
||||
App.Model = "";
|
||||
}
|
||||
}
|
||||
@@ -59,6 +59,7 @@ public class GameRoomListController : PFUIPanel
|
||||
private GameObject btn40;
|
||||
private GameObject btn50;
|
||||
private GameObject btn60;
|
||||
private GameObject btnMore;
|
||||
|
||||
private GameObject btn2;
|
||||
private GameObject btn3;
|
||||
@@ -172,12 +173,12 @@ public class GameRoomListController : PFUIPanel
|
||||
Total = roomList.GameRoomTotal;
|
||||
ListChanged = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
list = null;
|
||||
Total = 0;
|
||||
ListChanged = true;
|
||||
}
|
||||
//else
|
||||
//{
|
||||
// list = null;
|
||||
// Total = 0;
|
||||
// ListChanged = true;
|
||||
//}
|
||||
//查询自己当前创建的房间信息并进入
|
||||
var info = message.Where(c => c.RoomList != null && c.RoomList.Where(o => o.UserId == App.CurrentUser.Id && o.Status == 0).Any()).FirstOrDefault();
|
||||
if (info != null)
|
||||
@@ -210,20 +211,6 @@ public class GameRoomListController : PFUIPanel
|
||||
public override void Show()
|
||||
{
|
||||
base.Show();
|
||||
|
||||
//LOOM中取数据渲染下载当前下载进度
|
||||
var downLoadList = transform.Find("DownLoadList").gameObject;
|
||||
var downloadPanel = transform.Find("DownloadPanel").gameObject;
|
||||
if (!downLoadList.activeSelf && !downloadPanel.activeSelf)
|
||||
{
|
||||
var content = downLoadList.transform.Find("Viewport/Content");
|
||||
foreach (var item in Loom.DownLoadTaskList)
|
||||
{
|
||||
var newtask = Instantiate(_downLoadTask, content);
|
||||
newtask.GetComponent<GameRoomDownloadTask>().Init(0, item.Key, downloadPanel);
|
||||
downLoadList.SetActive(true);
|
||||
}
|
||||
}
|
||||
App.Model = "GameRoom";
|
||||
MapUDPService.MessageListener = ListenerHandler;
|
||||
MapUDPService.SendQueryGameRoomList(App.CurrentUser.Id, pageHelper.PageIndex, pageHelper.PageSize, seachName);
|
||||
@@ -275,6 +262,20 @@ public class GameRoomListController : PFUIPanel
|
||||
CreateClicked = false;
|
||||
UIManager.ShowGameRoomDetailPanel();
|
||||
}
|
||||
|
||||
//LOOM中取数据渲染下载当前下载进度
|
||||
var downLoadList = transform.Find("DownLoadList").gameObject;
|
||||
var downloadPanel = transform.Find("DownloadPanel").gameObject;
|
||||
if (!downLoadList.activeSelf && !downloadPanel.activeSelf)
|
||||
{
|
||||
var content = downLoadList.transform.Find("Viewport/Content");
|
||||
foreach (var item in Loom.DownLoadTaskList)
|
||||
{
|
||||
var newtask = Instantiate(_downLoadTask, content);
|
||||
newtask.GetComponent<GameRoomDownloadTask>().Init(0, item.Key, downloadPanel);
|
||||
downLoadList.SetActive(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void InitStep1()
|
||||
@@ -290,7 +291,14 @@ public class GameRoomListController : PFUIPanel
|
||||
UIManager.RemoveEvent(scroll, UnityEngine.EventSystems.EventTriggerType.EndDrag);
|
||||
UIManager.AddEvent(scroll, UnityEngine.EventSystems.EventTriggerType.EndDrag, OnEndDrag);
|
||||
}
|
||||
|
||||
var close = transform.Find("MapList/Modal/Close").gameObject;
|
||||
if (close != null)
|
||||
{
|
||||
UIManager.RemoveEvent(close, UnityEngine.EventSystems.EventTriggerType.PointerClick);
|
||||
UIManager.AddEvent(close, UnityEngine.EventSystems.EventTriggerType.PointerClick, (e)=> {
|
||||
mapList.gameObject.SetActive(false);
|
||||
});
|
||||
}
|
||||
distanceOptions = topContainer.Find("distanceOptions");
|
||||
if (distanceOptions != null)
|
||||
{
|
||||
@@ -320,12 +328,12 @@ public class GameRoomListController : PFUIPanel
|
||||
Refresh();
|
||||
});
|
||||
}
|
||||
//是否收藏
|
||||
//是否AR
|
||||
if (favContainer != null)
|
||||
{
|
||||
isEnableAR = true;//默认勾选ar
|
||||
var g = favContainer.Find("Gou").gameObject;
|
||||
g.SetActive(false);
|
||||
isEnableAR = false;
|
||||
g.SetActive(isEnableAR);
|
||||
UIManager.RemoveEvent(favContainer.gameObject, UnityEngine.EventSystems.EventTriggerType.PointerClick);
|
||||
UIManager.AddEvent(favContainer.gameObject, EventTriggerType.PointerClick, (e)=> {
|
||||
var gou = e.selectedObject.transform.Find("Gou").gameObject;
|
||||
@@ -483,6 +491,7 @@ public class GameRoomListController : PFUIPanel
|
||||
MapUDPService.SendCreateGameRoom(RoomName, selectedRouteId, Roompwd, UIManager.Now.GetDateTime(), CloseTime, Members, Map.AverageGrade, (Map.TotalClimb ?? 0), Map.Distance, Map.Enable3D, Map.EnableAR, Map.Name, Map.FileName, Map.Url, Map.AltitudeGraph);
|
||||
MapList.SetActive(false);
|
||||
CreateClicked = true;
|
||||
Query();
|
||||
});
|
||||
}
|
||||
|
||||
@@ -493,6 +502,7 @@ public class GameRoomListController : PFUIPanel
|
||||
btn40 = right2.transform.Find("btn40").gameObject;
|
||||
btn50 = right2.transform.Find("btn50").gameObject;
|
||||
btn60 = right2.transform.Find("btn60").gameObject;
|
||||
btnMore = right2.transform.Find("btnMore").gameObject;
|
||||
//房间人数
|
||||
btn2 = right2.transform.Find("btn2").gameObject;
|
||||
btn3 = right2.transform.Find("btn3").gameObject;
|
||||
@@ -504,16 +514,19 @@ public class GameRoomListController : PFUIPanel
|
||||
var 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);
|
||||
hourInputField.gameObject.SetActive(false);
|
||||
minInputField.gameObject.SetActive(false);
|
||||
hourInputField.text = "0";
|
||||
minInputField.text = "0";
|
||||
roomNameInputField.text = "";
|
||||
passwordInputField.text = "";
|
||||
RoomName = "";
|
||||
RoomName = App.CurrentUser.Nickname + App.GetLocalString("'s Room");
|
||||
Roompwd = "";
|
||||
roomNameInputField.text = RoomName;
|
||||
passwordInputField.text = "";
|
||||
hourInputField.GetComponent<Outline>().enabled = false;
|
||||
HandleFormInput();
|
||||
HandleCloseTimeBtnClick(0, "");
|
||||
HandleMembersBtnClick(0, "");
|
||||
HandleMembersBtnClick(6, btn6.name);//默认6人
|
||||
HandleCloseTimeBtnClick(30, btn30.name);//默认关门时间30min
|
||||
roomNameInputField.onValueChanged.RemoveAllListeners();
|
||||
//房间名
|
||||
roomNameInputField.onValueChanged.AddListener((e) => {
|
||||
@@ -526,6 +539,7 @@ public class GameRoomListController : PFUIPanel
|
||||
Roompwd = e;
|
||||
HandleFormInput();
|
||||
});
|
||||
|
||||
UIManager.AddEvent(minInputField.gameObject, EventTriggerType.Select, (e) => {
|
||||
hourInputField.GetComponent<Outline>().enabled = true;
|
||||
HandleFormInput();
|
||||
@@ -546,6 +560,12 @@ public class GameRoomListController : PFUIPanel
|
||||
{
|
||||
HandleCloseTimeBtnClick(60, btn60.name);
|
||||
});
|
||||
UIManager.AddEvent(btnMore, EventTriggerType.PointerClick, (e) =>
|
||||
{
|
||||
btnMore.SetActive(false);
|
||||
hourInputField.gameObject.SetActive(true);
|
||||
minInputField.gameObject.SetActive(true);
|
||||
});
|
||||
//小时
|
||||
hourInputField.onValueChanged.RemoveAllListeners();
|
||||
hourInputField.onValueChanged.AddListener((e) => {
|
||||
@@ -560,7 +580,9 @@ public class GameRoomListController : PFUIPanel
|
||||
CloseTime = hours * 60 + mins;
|
||||
HandleCloseTimeBtnClick(CloseTime, minInputField.name);
|
||||
});
|
||||
|
||||
//房间人数
|
||||
|
||||
UIManager.AddEvent(btn2, EventTriggerType.PointerClick, (e) =>
|
||||
{
|
||||
HandleMembersBtnClick(2, btn2.name);
|
||||
@@ -877,7 +899,7 @@ public class GameRoomListController : PFUIPanel
|
||||
next.GetComponent<Button>().interactable = false;
|
||||
next.GetComponent<Button>().enabled = false;
|
||||
HandleStepBtn(previous.name);
|
||||
HandleCloseTimeBtnClick(0, "");
|
||||
HandleCloseTimeBtnClick(30, btn30.name);//默认关门时间30min
|
||||
|
||||
MapList.SetActive(true);
|
||||
}
|
||||
@@ -885,6 +907,7 @@ public class GameRoomListController : PFUIPanel
|
||||
{
|
||||
base.OnDisable();
|
||||
MapUDPService.MessageListener = null;
|
||||
App.Model = "";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -96,6 +96,8 @@ public class LocalRouteItem : MonoBehaviour, IPointerExitHandler, IPointerEnterH
|
||||
//自动上传
|
||||
try
|
||||
{
|
||||
if (record == null)
|
||||
return;
|
||||
MapInterruptRecordApi service = ConfigHelper.mapInterruptRecordApi;
|
||||
var result = service.Add(record, listFileName);
|
||||
//删除文件
|
||||
|
||||
@@ -132,6 +132,7 @@ public class UIManager : MonoBehaviour
|
||||
return this.GetPanelInstance("GameRoomCountDown", ref this.mGameRoomCountDownController);
|
||||
}
|
||||
}
|
||||
|
||||
private SettingContoller mSettingContoller;
|
||||
public SettingContoller SettingModal
|
||||
{
|
||||
@@ -702,7 +703,7 @@ public class UIManager : MonoBehaviour
|
||||
}
|
||||
if (UIManager.Instance.MainPanel != null && parent == UIManager.Instance.MainPanel)
|
||||
{
|
||||
App.currentPageIsHome = panelToShow.GetType().Name.Equals("HomeController");
|
||||
App.currentPageIsHome = panelToShow.GetType().Name.Equals("NewHomeController");
|
||||
}
|
||||
|
||||
if (modal)
|
||||
@@ -869,11 +870,11 @@ public class UIManager : MonoBehaviour
|
||||
{
|
||||
UIManager.Show(UIManager.Instance.GameRoomLoadingPanel, null, true);
|
||||
}
|
||||
public static void ShowGameRoomCountDownPanel(int seconds,Action action)
|
||||
public static void ShowGameRoomCountDownPanel(int seconds,Action action,bool isEnd = false)
|
||||
{
|
||||
if (UIManager.Instance.GameRoomCountDownPanel!= null)
|
||||
{
|
||||
UIManager.Instance.GameRoomCountDownPanel.Init(seconds, action);
|
||||
UIManager.Instance.GameRoomCountDownPanel.Init(seconds, action, isEnd);
|
||||
}
|
||||
UIManager.Show(UIManager.Instance.GameRoomCountDownPanel, null, true);
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user