骑行页面消息通知

在线用户和影子选手用图片显示,缩放等功能按钮微调
This commit is contained in:
lishuo committed 2021-05-11 18:21:32 +08:00
1 parent 2b4b2c4f70
commit 8f0598580d
37 files changed
+5951 -3153

No files matched your search

+3773 -3044
View File
File diff suppressed because it is too large. Load diff
+5 -1
View File
@@ -85,6 +85,11 @@ namespace Assets.Scenes.Ride.Scripts
void Update()
{
Excute();
AfterExcute();
}
protected virtual void AfterExcute()
{
}
#region 骑行逻辑
@@ -161,7 +166,6 @@ namespace Assets.Scenes.Ride.Scripts
//移动动画控制
//if (distance > 0)
{
Debug.Log("164"+totalDistance.ToString());
StartCoroutine(MoveTo());//移动
}
}
+15 -14
View File
@@ -276,20 +276,21 @@ public class CyclingController : DeviceServiceMonoBase
if (currentUser == null)
{
//for (int i = 0; i < 100; i++)
{
//大地图人物
GameObject otherPlayerObj = (GameObject)Instantiate(onlineUserPrefab, transform);
var onlinePlayerController = otherPlayerObj.GetComponent<OnlinePlayerController>();
otherList.Add(onlinePlayerController);
onlinePlayerController.UserId = onlineRider.UserId;
//onlinePlayerController.SetDistance(onlineDistance);
onlinePlayerController.SetTotalDistance(onlineTotalDistance, onlineDistance);
onlinePlayerController.SetHead(onlineRider.WxHeadImg);
//小地图人物
GameObject miniPlayer = (GameObject)Instantiate(miniMapPlayerPrefab, transform);
var miniController = miniPlayer.GetComponent<MiniMapPlayerController>();
miniController.SetController(onlinePlayerController);
}
//大地图人物
GameObject otherPlayerObj = (GameObject)Instantiate(onlineUserPrefab, transform);
otherPlayerObj.transform.position = map.GeoToWorldPosition(Along(onlineTotalDistance));
var onlinePlayerController = otherPlayerObj.GetComponent<OnlinePlayerController>();
otherList.Add(onlinePlayerController);
onlinePlayerController.UserId = onlineRider.UserId;
//onlinePlayerController.SetDistance(onlineDistance);
onlinePlayerController.SetTotalDistance(onlineTotalDistance, onlineDistance);
onlinePlayerController.SetHead(onlineRider.WxHeadImg);
//小地图人物
GameObject miniPlayer = (GameObject)Instantiate(miniMapPlayerPrefab, transform);
var miniController = miniPlayer.GetComponent<MiniMapPlayerController>();
miniController.SetController(onlinePlayerController);
EventQueueSystem.QueueEvent(new JoinMessageEvent(onlineRider.NickName, onlineRider.WxHeadImg));
}
else
{
@@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Assets.Scenes.Ride.Scripts
{
public class EventDelegate : Singleton<EventDelegate>
{
public EventQueueSystem.EventDelegate<GameEvent> JoyStickUpHandler;
//...其他的全局委托
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 033ce2de076bd6148abe8d18305d9d17
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,147 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
namespace Assets.Scenes.Ride.Scripts
{
public class GameEvent { }
public class EventQueueSystem : MonoSingleton<EventQueueSystem>
{
public delegate void EventDelegate<T>(T e) where T : GameEvent;
private delegate void InternalEventDelegate(GameEvent e);
private Dictionary<Type, InternalEventDelegate> delegates = new Dictionary<Type, InternalEventDelegate>();
private Dictionary<Delegate, InternalEventDelegate> delegateLookup = new Dictionary<Delegate, InternalEventDelegate>();
private Dictionary<InternalEventDelegate, Delegate> delegateLookOnce = new Dictionary<InternalEventDelegate, Delegate>();
private Queue eventQueue = new Queue();
public bool bLimitQueueProcessing = false;
public float limitQueueTime = 1f;
//注册侦听事件(持续)
public static void AddListener<T>(EventDelegate<T> del) where T : GameEvent
{
Instance.AddDelegate(del);
}
//注册侦听事件(一次)
public static void AddListenerOnce<T>(EventDelegate<T> del) where T : GameEvent
{
var result = Instance.AddDelegate(del);
if (result != null)
Instance.delegateLookOnce[result] = del;
}
//判定侦听事件是否存在
public static bool HasListener<T>(EventDelegate<T> del) where T : GameEvent
{
return Instance.delegateLookup.ContainsKey(del);
}
//移除侦听事件
public static void RemoveListener<T>(EventDelegate<T> del) where T : GameEvent
{
if (Instance == null)
return;
if (Instance.delegateLookup.TryGetValue(del, out InternalEventDelegate eventDelegate))
{
if (Instance.delegates.TryGetValue(typeof(T), out InternalEventDelegate temp))
{
temp -= eventDelegate;
if (temp == null)
Instance.delegates.Remove(typeof(T));
else
Instance.delegates[typeof(T)] = temp;
}
Instance.delegateLookup.Remove(del);
}
}
public static void RemoveAll()
{
if (Instance != null)
{
Instance.delegates.Clear();
Instance.delegateLookup.Clear();
Instance.delegateLookOnce.Clear();
}
}
private InternalEventDelegate AddDelegate<T>(EventDelegate<T> del) where T : GameEvent
{
if (delegateLookup.ContainsKey(del))
return null;
void eventDelegate(GameEvent e) => del((T)e);
delegateLookup[del] = eventDelegate;
if (delegates.TryGetValue(typeof(T), out InternalEventDelegate temp))
delegates[typeof(T)] = temp += eventDelegate;
else
delegates[typeof(T)] = eventDelegate;
return eventDelegate;
}
//单个事件触发
private static void TriggerEvent(GameEvent e)
{
var type = e.GetType();
if (Instance.delegates.TryGetValue(type, out InternalEventDelegate eventDelegate))
{
eventDelegate.Invoke(e);
//移除单一侦听
foreach (InternalEventDelegate item in Instance.delegates[type].GetInvocationList())
{
if (Instance.delegateLookOnce.TryGetValue(item, out Delegate temp))
{
Instance.delegates[type] -= item;
if (Instance.delegates[type] == null)
Instance.delegates.Remove(type);
Instance.delegateLookup.Remove(temp);
Instance.delegateLookOnce.Remove(item);
}
}
}
}
//外部调用的推入事件队列接口
public static void QueueEvent(GameEvent e)
{
if (!Instance.delegates.ContainsKey(e.GetType()))
return;
Instance.eventQueue.Enqueue(e);
}
float timer = 0.0f;
//事件队列触发处理
void Update()
{
//float timer = 0.0f;
//while (eventQueue.Count > 0)
//{
// if (bLimitQueueProcessing)
// if (timer > limitQueueTime)
// return;
// var e = eventQueue.Dequeue() as GameEvent;
// TriggerEvent(e);
// if (bLimitQueueProcessing)
// timer += Time.deltaTime;
//}
timer += Time.deltaTime;
while (timer >= 1 && eventQueue.Count > 0)
{
var e = eventQueue.Dequeue() as GameEvent;
TriggerEvent(e);
timer = 0;
}
}
private void OnApplicationQuit()
{
RemoveAll();
eventQueue.Clear();
}
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: c7adca7a71f7c6f4f91c5b09695140af
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,76 @@
using Assets.Scripts;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using DG.Tweening;
namespace Assets.Scenes.Ride.Scripts
{
public class MessagePanelScript : MonoBehaviour
{
CanvasGroup canvas;
Text text;
RawImage head;
string Name ="";
string url ="";
bool run = false;
private void Awake()
{
canvas = transform.GetComponent<CanvasGroup>();
EventQueueSystem.AddListener<JoinMessageEvent>(JoinHandler);
text = transform.Find("Name").GetComponent<Text>();
head = transform.Find("RawImage").GetComponent<RawImage>();
}
private void JoinHandler(JoinMessageEvent e)
{
Name = e.name;
url = e.url;
}
float timer = 1f;
private void Update()
{
timer -= Time.deltaTime;
if (timer <= 0)//定时器 一秒执行一次
{
if (!string.IsNullOrEmpty(Name))
{
text.text = Name;
canvas.alpha = 1;
Name = string.Empty;
}
else
{
canvas.DOFade(0, 1);
}
if (!string.IsNullOrEmpty(url))
{
Utils.DisplayImage(head, url, false);
url = string.Empty;
}
//dic.
//foreach (var item in dic)
//{
// text.text = item.Key;
// Utils.DisplayImage(head, item.Value, true);
// dic.Remove(item.Key);
// break;
//}
timer = 1.0f;
}
}
}
public class JoinMessageEvent : GameEvent
{
public string name;//人物名称
public string url;//头像地址
public JoinMessageEvent(string name,string url)
{
this.name = name;
this.url = url;
}
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 811cf43645936ee4da7d950ad83b55a0
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -63,23 +63,26 @@ namespace Assets.Scenes.Ride.Scripts.Model.CyclingModels
public override void Run(TargetData targetData)
{
//riders.RemoveAll(r => r.IsSelf == false);
//var onlineUsers = MapUDPService.GetOnlineUsers(recorderData.CurrentRoute.RouteInstance.Id).Where(d => d.IsSelf == false)
// .ToList();
//foreach (var item in onlineUsers)
//{
// riders.Add(new OnlineRiderModel()
// {
// NickName = item.Name,
// UserId = item.Id,
// WxHeadImg = item.HeadImage,
// Point = new GeoJSON.Net.Geometry.GeographicPosition(item.Point[0], item.Point[1]),
// EndDistance = item.EndDistance,
// PreDistance = item.PreDistance,
// });
//}
#region 获取当前路线在线用户
riders.RemoveAll(r => r.IsSelf == false);
var onlineUsers = MapUDPService.GetOnlineUsers(recorderData.CurrentRoute.RouteInstance.Id).Where(d => d.IsSelf == false)
.ToList();
foreach (var item in onlineUsers)
{
riders.Add(new OnlineRiderModel()
{
NickName = item.Name,
UserId = item.Id,
WxHeadImg = item.HeadImage,
Point = new GeoJSON.Net.Geometry.GeographicPosition(item.Point[0], item.Point[1]),
EndDistance = item.EndDistance,
PreDistance = item.PreDistance,
});
}
#endregion
base.Run(targetData);
}
}
@@ -0,0 +1,66 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UnityEngine;
namespace Assets.Scenes.Ride.Scripts
{
public abstract class MonoSingleton<T> : MonoBehaviour where T : MonoBehaviour
{
private static T instance = null;
private static readonly object locker = new object();
private static bool bAppQuitting;
public static T Instance
{
get
{
if (bAppQuitting)
{
instance = null;
return instance;
}
lock (locker)
{
if (instance == null)
{
instance = FindObjectOfType<T>();
if (FindObjectsOfType<T>().Length > 1)
{
Debug.LogError("不应该存在多个单例!");
return instance;
}
if (instance == null)
{
var singleton = new GameObject();
instance = singleton.AddComponent<T>();
singleton.name = "(singleton)" + typeof(T);
singleton.hideFlags = HideFlags.None;
DontDestroyOnLoad(singleton);
}
else
DontDestroyOnLoad(instance.gameObject);
}
instance.hideFlags = HideFlags.None;
return instance;
}
}
}
private void Awake()
{
bAppQuitting = false;
}
private void OnDestroy()
{
bAppQuitting = true;
}
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 018a42bd337f3c74789a75cc6973b979
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
+34 -6
View File
@@ -1,5 +1,6 @@
using Assets.Scenes.Ride.Scripts.Model;
using Assets.Scripts;
using System;
using System.Linq;
using UnityEngine;
using UnityEngine.EventSystems;
@@ -23,7 +24,7 @@ namespace Assets.Scenes.Ride.Scripts
private int offset = 8;//显示区域的数量
CyclingController cyclingController;
private void Start()
private void Awake()
{
cyclingController = FindObjectOfType<CyclingController>();
playerController = FindObjectOfType<PlayerController>();
@@ -35,15 +36,33 @@ namespace Assets.Scenes.Ride.Scripts
UIManager.AddEvent(scroll, UnityEngine.EventSystems.EventTriggerType.EndDrag, OnEndDrag);
}
}
bool startMouse = false;
float t =1f;
private void Update()
{
if (Input.GetAxis("Mouse ScrollWheel") != 0)
{
if (scroll.GetComponent<ScrollRect>().verticalNormalizedPosition <= 0 ||
scroll.GetComponent<ScrollRect>().verticalNormalizedPosition >= (pageIndex == 0 ? 1.2 : 1))
{
startMouse = true;
}
}
else
{
if (startMouse)
{
startMouse = false;
OnEndDrag(null);
}
}
t -= Time.deltaTime;
while (t < 0)
{
Utils.DestroyChildren(transform);
var nearList = MapUDPService.GetNearRiderData(pageIndex, pageSize, new double[] { playerController.Currentlatlong.x, playerController.Currentlatlong.y });
totalPages = MapUDPService.GetNearRiderCount();
for (int i = 0; i < nearList.Count(); i++)
{
Create(nearList[i]);
@@ -51,20 +70,29 @@ namespace Assets.Scenes.Ride.Scripts
t = 1;
}
}
private int totalPages = 0;
private void OnEndDrag(BaseEventData arg0)
{
var scrollrect = scroll.GetComponent<ScrollRect>();
if (scrollrect.verticalNormalizedPosition <= 0)
{
Debug.Log(scrollrect.verticalNormalizedPosition);
pageIndex++;
var p = pageIndex + 1;
if (p * pageSize <= totalPages)
{
pageIndex++;
}
//RefreshList();
}
if (scrollrect.verticalNormalizedPosition >= 1)
if (scrollrect.verticalNormalizedPosition >= (pageIndex == 0 ? 1.2 : 1))
{
if(pageIndex > 0)
var p = pageIndex - 1;
if (p > 0)
{
pageIndex--;
}
//if (pageIndex > 0)
// pageIndex--;
//RefreshList();
}
}
+4 -2
View File
@@ -22,13 +22,14 @@ namespace Assets.Scenes.Ride.Scripts
}
private double temp = 0;
private int index = -1;
public void AnimateNum(float newScore,double totalDistance,int currentIndex, int digit, string format)
public void AnimateNum(float newScore,double totalDistance,int currentIndex, int digit, string format,Image process)
{
if (currentIndex != index)
{
text.text = string.Format(format, totalDistance);
index = currentIndex;
mOldScore = (float)totalDistance;
mOldScore = 0;
process.fillAmount = 0;
}
else
{
@@ -37,6 +38,7 @@ namespace Assets.Scenes.Ride.Scripts
//if (value != newScore)
{
temp = Math.Round(value, digit);
process.fillAmount = ((float)temp / (float)totalDistance);
//向Text组件赋值
text.text = string.Format(format, temp);
}
@@ -1,9 +1,12 @@
using Assets.Scenes.Ride.Scripts.Model;
using Assets.Scripts;
using Assets.Scripts.Apis.Models;
using ChartAndGraph;
using DG.Tweening;
using System;
using UnityEngine;
using UnityEngine.UI;
using System.Linq;
namespace Assets.Scenes.Ride.Scripts
{
@@ -12,15 +15,28 @@ namespace Assets.Scenes.Ride.Scripts
public PlayerController _playerController;
RawImage head;
GameObject headPanel;
Image arrowImage;
GameObject reviewInfoPanel;
Transform uiObject;
GraphChartBase graph;
ChartDataSourceScript chartDataSourceScript;
protected override void Init()
{
base.Init();
currentlatlong = mainController.GetCenterCoordinate();
_playerController = FindObjectOfType<PlayerController>();
var cuurentLocalPos = map.GeoToWorldPosition(currentlatlong);
cuurentLocalPos.y += transform.localScale.y;
transform.localPosition = cuurentLocalPos;
graph = transform.parent.Find("SingleUI/Panel/GraphChart").GetComponent<GraphChartBase>();
chartDataSourceScript = transform.parent.Find("SingleUI/Panel/GraphChart").GetComponent<ChartDataSourceScript>();
//创建UI
uiObject = transform.parent.Find("SingleUI/Panel/ArrowList");
arrowImage = Instantiate(Resources.Load<Image>("UI/Prefab/Ride/ReviewArrow"), uiObject);
arrowImage.color = new Color(0.1529412f, 0.8745098f, 0.8901961f);
}
protected override bool GetStart()
{
@@ -28,8 +44,12 @@ namespace Assets.Scenes.Ride.Scripts
}
protected override void Compute()
{
Debug.Log("31" + totalDistance.ToString());
currentlatlong = mainController.Along(totalDistance);//下一个坐标
//var currentUser = cyclingExcutor.riders.Where(c => c.UserId == UserId).FirstOrDefault();
//if (currentUser == null)
//{
// RemoveSelf();
//}
}
public void SetDistance(double _distance)
@@ -38,22 +58,46 @@ namespace Assets.Scenes.Ride.Scripts
public void SetTotalDistance(double _totalDistance, double _distance)
{
Debug.Log("41" + _totalDistance.ToString());
totalDistance = _totalDistance;
distance = _distance;
}
public int GetCurrentIndex(double endistance,MapDataModel mapDataModel)
{
var pointList = mapDataModel.List;
int onIndex = 0;
var sumDistance = 0D;
for (int i = 0; i < pointList.Count; i++)
{
sumDistance += pointList[i].Distance;
if (endistance * 1000 <= sumDistance)
{
onIndex = i;
break;
}
}
return onIndex;
}
private string headUrl;
public void SetHead(string url )
{
headUrl = url;
}
public void MoveHead(Transform parent,Vector3 nextPosition)
public void MoveHead(Transform parent)
{
var itemIndex = chartDataSourceScript.GetViewIndex(GetCurrentIndex(TotalDistance, mainController.GetMapData())) + 1;
var m = graph.DataSource.GetPoint("Player 2", itemIndex);
graph.PointToWorldSpace(out Vector3 itemPosition, m.x, m.y, "Player 2");
itemPosition.x -= 12f;
itemPosition.y += 5f;
if (headPanel == null)
{
headPanel = Instantiate(Resources.Load<GameObject>("UI/Prefab/Ride/HeadPanel"));
headPanel.transform.parent = parent;
headPanel = Instantiate(Resources.Load<GameObject>("UI/Prefab/Ride/OnlineHeadPanel"));
headPanel.transform.SetParent(parent);
headPanel.transform.localScale = new Vector3(0.8f, 0.8f, 0.8f);
headPanel.transform.position = itemPosition;
}
if (head == null)
{
@@ -63,7 +107,8 @@ namespace Assets.Scenes.Ride.Scripts
Utils.DisplayImage(head, headUrl, true);
}
}
headPanel.transform.DOMove(new Vector3(nextPosition.x, nextPosition.y, 0), 1);
headPanel.transform.DOMove(new Vector3(itemPosition.x, itemPosition.y, 0), 1);
}
public void RemoveSelf()
@@ -71,5 +116,10 @@ namespace Assets.Scenes.Ride.Scripts
transform.gameObject.Destroy();
headPanel.Destroy();
}
protected override void AfterExcute()
{
((RectTransform)arrowImage.transform).position = Camera.main.WorldToScreenPoint(transform.position);
MoveHead(graph.transform);
}
}
}
@@ -16,11 +16,17 @@ namespace Assets.Scenes.Ride.Scripts
GameObject headPanel;
public int tickOffset = 0;
Image arrowImage;
GameObject reviewInfoPanel;
Transform uiObject;
protected override void Init()
{
base.Init();
_playerController = FindObjectOfType<PlayerController>();
tickOffset = mainController.preticks;
//创建UI
uiObject = transform.parent.Find("SingleUI/Panel/ArrowList");
arrowImage = Instantiate(Resources.Load<Image>("UI/Prefab/Ride/ReviewArrow"), uiObject);
}
protected override void Compute()
@@ -60,5 +66,9 @@ namespace Assets.Scenes.Ride.Scripts
}
headPanel.transform.DOMove(new Vector3(nextPosition.x, nextPosition.y, 0), 1);
}
protected override void AfterExcute()
{
((RectTransform)arrowImage.transform).position = Camera.main.WorldToScreenPoint(transform.position);
}
}
}
@@ -94,6 +94,7 @@ namespace Assets.Scenes.Ride.Scripts
reviewItemScript.SetDistance(0D);
reviewList.Add(reviewItemScript);
GameObject otherPlayerObj = (GameObject)Instantiate(otherPlayer, transform.parent.parent.parent);
otherPlayerObj.transform.position = cyclingController.map.GeoToWorldPosition(cyclingController.Along(0));
var otherPlayerController = otherPlayerObj.GetComponent<OtherPlayerController>();
otherList.Add(otherPlayerController);
otherPlayerController.record = item.record;
@@ -241,7 +241,7 @@ namespace Assets.Scenes.Ride.Scripts
lineRender.positionCount = feat.Count;
lineRender.SetPositions(feat.ToArray());
lineRender.loop = false;
//lineRender.numCapVertices = 10;
lineRender.numCapVertices = 10;
lineRender.numCornerVertices = 10;
//
lineRender.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off;
@@ -30,7 +30,7 @@ namespace Assets.Scenes.Ride.Scripts
InputField startValue;
InputField endValue;
private int pageIndex = 0;
private int pageSize = 25;
private int pageSize = 8;
private int totalPages = 0;
private string seachName = string.Empty;
@@ -90,6 +90,26 @@ namespace Assets.Scenes.Ride.Scripts
//startValue.text = _startValue.ToString();
//endValue.text = _endValue.ToString();
}
bool startMouse = false;
private void Update()
{
if (Input.GetAxis("Mouse ScrollWheel") != 0)
{
if (scroll.GetComponent<ScrollRect>().verticalNormalizedPosition <= 0 ||
scroll.GetComponent<ScrollRect>().verticalNormalizedPosition >= (pageIndex == 0 ? 1.2 : 1))
{
startMouse = true;
}
}
else
{
if (startMouse)
{
startMouse = false;
OnEndDrag(null);
}
}
}
private void StartvalueChanged(string input)
{
if (!string.IsNullOrWhiteSpace(input))
@@ -176,7 +196,7 @@ namespace Assets.Scenes.Ride.Scripts
private void Refresh()
{
var list = mapApi.GetRouteRanking(App.RouteIdParam, "1", pageIndex, pageSize, seachName);
var list = mapApi.GetShadowList(App.RouteIdParam, seachName, pageIndex, pageSize);
totalPages = list.data.TotalPages;
var data = list.data.list;//.Where(c => c.WeightKg >= _startValue && c.WeightKg <= _endValue).ToList();
if (_startValue > 0)
@@ -199,14 +219,14 @@ namespace Assets.Scenes.Ride.Scripts
}
private void CreateGameObject(List<MapRouteRanking> list)
{
if (list.Count == 0)
{
noRecord.SetActive(true);
}
else
{
noRecord.SetActive(false);
}
//if (list.Count == 0)
//{
// noRecord.SetActive(true);
//}
//else
//{
// noRecord.SetActive(false);
//}
var parent = transform.Find("Panel/PlayerList/Scroll View/Viewport/Content");
int index = 0;
foreach (var item in list)
@@ -251,12 +271,13 @@ namespace Assets.Scenes.Ride.Scripts
}
seletedPlayerScript.Reset();
}
//TODO BUG
private void OnEndDrag(BaseEventData arg0)
{
var scrollrect = scroll.GetComponent<ScrollRect>();
if (scrollrect.verticalNormalizedPosition <= 0)
{
if (pageIndex < totalPages )
if (pageIndex < totalPages-1 )
{
pageIndex++;
Refresh();
+39 -43
View File
@@ -99,6 +99,7 @@ namespace Assets.Scenes.Ride.Scripts
Image nextSlopeImage;
Image currentSlopeImage;
Image miniMapProcess;
Image currentSlopeProcess;
Text miniMapProcessText;
void Awake()
@@ -124,6 +125,8 @@ namespace Assets.Scenes.Ride.Scripts
currentSlopeText = transform.Find("Panel/CurrentSlopePanel/CurrentSlopeText").GetComponent<Text>();
currentSlopeDistanceText = transform.Find("Panel/CurrentSlopePanel/CurrentSlopeDistance").GetComponent<Text>();
currentSlopeToatalDistanceText = transform.Find("Panel/CurrentSlopePanel/TotalSlopeDistance").GetComponent<Text>();
currentSlopeProcess = transform.Find("Panel/CurrentSlopePanel/Process").GetComponent<Image>();
speedTxt = transform.Find("Panel/ComputerPanel/Speed").GetComponent<Text>();
powerTxt = transform.Find("Panel/PowerPanel/Power").GetComponent<Text>();
timerTxt = transform.Find("Panel/ComputerPanel/Timer").GetComponent<Text>();
@@ -395,39 +398,43 @@ namespace Assets.Scenes.Ride.Scripts
//nextSlopeDistanceText.GetComponent<NumberDotween>().AnimateNum((float)playerController.NextSlopeDistance, 0, "-{0}M");
nextSlopeDistanceText.text = $"{Math.Round(playerController.NextSlopeTotalDistance, 0)}M";
currentSlopeText.text = Math.Round(playerController.CurrentSlope, 1).ToString() + "%";
currentSlopeDistanceText.GetComponent<NumberDotween>().AnimateNum((float)playerController.CurrentSlopeDistance, Math.Round(playerController.CurrentDistance, 0), playerController.CurrentIndex, 0, "{0}M");
currentSlopeDistanceText.GetComponent<NumberDotween>().AnimateNum((float)playerController.CurrentDistance - (float)playerController.CurrentSlopeDistance, Math.Round(playerController.CurrentDistance, 0), playerController.CurrentIndex, 0, "{0}M", currentSlopeProcess);
totalClimb.text = Math.Round(playerController.TotalClimb, 0).ToString();
//小地图进度
var process = (float)(playerController.TotalDistance / routeInstance.Distance);
miniMapProcess.fillAmount = process;
miniMapProcessText.text = $"{process*100:f0}%";
//动态改变坡度图片
if (playerController.CurrentSlope >= 1)
{
currentSlopeImage.sprite = uphill1;
}
else if (playerController.CurrentSlope > -1 || playerController.CurrentSlope < 1)
{
currentSlopeImage.sprite = straight;
}
else
{
currentSlopeImage.sprite = downhill1;
}
//下一个坡度
if (playerController.NextSlope >= 1)
{
nextSlopeImage.sprite = uphill1Small;
}
else if (playerController.NextSlope > -1 || playerController.NextSlope < 1)
{
nextSlopeImage.sprite = straightSmall;
}
else
{
nextSlopeImage.sprite = downhill1Small;
}
ChangeSlopeImage();
}
}
private void ChangeSlopeImage()
{
if (playerController.CurrentSlope >= 1)
{
currentSlopeImage.sprite = uphill1;
}
else if (playerController.CurrentSlope > -1 || playerController.CurrentSlope < 1)
{
currentSlopeImage.sprite = straight;
}
else
{
currentSlopeImage.sprite = downhill1;
}
//下一个坡度
if (playerController.NextSlope >= 1)
{
nextSlopeImage.sprite = uphill1Small;
}
else if (playerController.NextSlope > -1 || playerController.NextSlope < 1)
{
nextSlopeImage.sprite = straightSmall;
}
else
{
nextSlopeImage.sprite = downhill1Small;
}
}
//重置游戏
@@ -552,7 +559,11 @@ namespace Assets.Scenes.Ride.Scripts
titlePanel.transform.DOLocalMove(new Vector3(titlePanel.transform.localPosition.x, titlePanel.transform.localPosition.y + isSimple * 200f, titlePanel.transform.localPosition.z), 1);
miniMap.transform.DOLocalMove(new Vector3(miniMap.transform.localPosition.x, miniMap.transform.localPosition.y + isSimple * 260f, miniMap.transform.localPosition.z), 1);
nextSlopePanel.transform.DOLocalMove(new Vector3(nextSlopePanel.transform.localPosition.x, nextSlopePanel.transform.localPosition.y + isSimple * 260f, nextSlopePanel.transform.localPosition.z), 1);
currentSlopePanel.transform.DOLocalMove(new Vector3(currentSlopePanel.transform.localPosition.x, currentSlopePanel.transform.localPosition.y + isSimple * 80f, currentSlopePanel.transform.localPosition.z), 1);
currentSlopePanel.transform.DOLocalMove(new Vector3(currentSlopePanel.transform.localPosition.x, currentSlopePanel.transform.localPosition.y + isSimple * 120f, currentSlopePanel.transform.localPosition.z), 1);
var Scale = isSimple == 1 ? new Vector3(0.7f, 0.7f, 0.7f) : new Vector3(1f, 1f, 1f);
currentSlopePanel.transform.DOScale(Scale, 1);
viewButton.transform.DOLocalMove(new Vector3(viewButton.transform.localPosition.x + isSimple * 200f, viewButton.transform.localPosition.y, viewButton.transform.localPosition.z), 1);
nearByPanel.transform.DOLocalMove(new Vector3(nearByPanel.transform.localPosition.x + isSimple * -330f, nearByPanel.transform.localPosition.y, nearByPanel.transform.localPosition.z), 1).onComplete += () =>
{
@@ -593,7 +604,6 @@ namespace Assets.Scenes.Ride.Scripts
}
}
//挪到人物脚本中处理
void MoveChartMarkPoint()
{
//if (mainController.isStart)
@@ -650,21 +660,7 @@ namespace Assets.Scenes.Ride.Scripts
itemPosition.y += 5f;
item.MoveHead(graph.transform, itemPosition);
}
//移动在线的人
var onlineUsers = FindObjectsOfType<OnlinePlayerController>();
foreach (var item in onlineUsers)
{
var itemIndex = chartDataSourceScript.GetViewIndex(item.CurrentIndex) + 1;
//if (!mainController.isStart && !mainController.isPause && !mainController.isQuit || (mainController.isStart && item.TotalDistance == 0))//未开始未暂停未结束
//{
// itemIndex = 0;
//}
var m = graph.DataSource.GetPoint("Player 2", itemIndex);
graph.PointToWorldSpace(out Vector3 itemPosition, m.x, m.y, "Player 2");
itemPosition.x -= 12f;
itemPosition.y += 5f;
item.MoveHead(graph.transform, itemPosition);
}
}
//移动总海拔图范围
private void MoveElevationImage()
+28
View File
@@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Assets.Scenes.Ride.Scripts
{
public abstract class Singleton<T> where T : class, new()
{
private static T instance = null;
private static readonly object locker = new object();
public static T Instance
{
get
{
lock (locker)
{
if (instance == null)
instance = new T();
return instance;
}
}
}
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 08725ccb95699af4c8a913ea306d889e
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: