2022-03-10 18:10:34 +08:00
|
|
|
|
using Assets.Scripts;
|
|
|
|
|
|
using System.Collections;
|
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
using UnityEngine;
|
|
|
|
|
|
using DG.Tweening;
|
|
|
|
|
|
using Assets.Scripts.Apis.Models;
|
|
|
|
|
|
using System;
|
|
|
|
|
|
using System.Linq;
|
|
|
|
|
|
using UnityEngine.UI;
|
|
|
|
|
|
using Assets.Scripts.UI.Prefab.Login;
|
|
|
|
|
|
using Newtonsoft.Json;
|
2022-04-19 18:09:29 +08:00
|
|
|
|
using Assets.Scripts.UI.UIEffect;
|
2022-03-10 18:10:34 +08:00
|
|
|
|
|
|
|
|
|
|
public class RowerMultiModeScript : MonoBehaviour
|
|
|
|
|
|
{
|
|
|
|
|
|
// Start is called before the first frame update
|
|
|
|
|
|
[SerializeField]
|
2022-04-11 17:24:36 +08:00
|
|
|
|
GameObject rank,trace;
|
2022-03-10 18:10:34 +08:00
|
|
|
|
|
2022-04-27 14:48:06 +08:00
|
|
|
|
Transform scroll,m1,m2;
|
2022-03-10 18:10:34 +08:00
|
|
|
|
Vector3 startPosition,boatStartPosition;
|
|
|
|
|
|
TKPanRecognizer pan;
|
|
|
|
|
|
|
|
|
|
|
|
ScrollRect scrollRank;
|
|
|
|
|
|
|
|
|
|
|
|
Dictionary<string, Texture> caches;
|
|
|
|
|
|
public class Trace
|
|
|
|
|
|
{
|
|
|
|
|
|
public int userId { get; set; }
|
|
|
|
|
|
public Transform trace { get; set; }
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public class TraceData
|
|
|
|
|
|
{
|
|
|
|
|
|
public List<RowerChartModel> list { get; set; }
|
|
|
|
|
|
public string NickName { get; set; }
|
|
|
|
|
|
public string Avatar { get; set; }
|
|
|
|
|
|
public int UserId { get; set; }
|
|
|
|
|
|
public bool isMine { get; set; }
|
|
|
|
|
|
public int currentDistance { get; set; }
|
|
|
|
|
|
public string Country { get; set; }
|
2022-03-28 17:42:23 +08:00
|
|
|
|
public int currentRank { get; set; }
|
2022-03-10 18:10:34 +08:00
|
|
|
|
}
|
|
|
|
|
|
List<Trace> traceList;
|
|
|
|
|
|
List<float> initialPosYList;
|
|
|
|
|
|
void Awake()
|
|
|
|
|
|
{
|
|
|
|
|
|
scroll = transform.Find("Rower/Modes/Scroll");
|
|
|
|
|
|
startPosition = scroll.localPosition;
|
2022-04-27 14:48:06 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//if (PlayerPrefs.GetFloat("RowerMultiModeLocationX") != 0f)
|
|
|
|
|
|
//{
|
|
|
|
|
|
// scroll.localPosition = new Vector3(PlayerPrefs.GetFloat("RowerMultiModeLocationX"), startPosition.y, startPosition.z);
|
|
|
|
|
|
// foreach (Transform t in transform.Find("Rower/Dots"))
|
|
|
|
|
|
// {
|
|
|
|
|
|
// t.GetComponent<Image>().color = Utils.HexToColorHtml("#ffffff");
|
|
|
|
|
|
// }
|
|
|
|
|
|
// if (scroll.localPosition.x >= startPosition.x - (730 / 2))
|
|
|
|
|
|
// {
|
|
|
|
|
|
// transform.Find("Rower/Dots/d1").GetComponent<Image>().color = Utils.HexToColorHtml("#f93086");
|
|
|
|
|
|
// }
|
|
|
|
|
|
// else
|
|
|
|
|
|
// {
|
|
|
|
|
|
// transform.Find("Rower/Dots/d2").GetComponent<Image>().color = Utils.HexToColorHtml("#f93086");
|
|
|
|
|
|
// }
|
|
|
|
|
|
//}
|
2022-03-10 18:10:34 +08:00
|
|
|
|
AddTouchEvent();
|
2022-04-27 14:48:06 +08:00
|
|
|
|
m1 = transform.Find("Rower/Modes/Scroll/M1");
|
2022-03-10 18:10:34 +08:00
|
|
|
|
m2 = transform.Find("Rower/Modes/Scroll/M2");
|
2022-04-27 14:48:06 +08:00
|
|
|
|
|
|
|
|
|
|
currentModeType = PlayerPrefs.GetInt("CurrentModeType");
|
|
|
|
|
|
Transform aniView = currentModeType == 0 ? m1 : m2, followAniView = currentModeType == 0 ? m2 : m1;
|
|
|
|
|
|
aniView.localPosition = new Vector3(0, aniView.localPosition.y, aniView.localPosition.z);
|
|
|
|
|
|
followAniView.localPosition = new Vector3(730, followAniView.localPosition.y, followAniView.localPosition.z);
|
|
|
|
|
|
string selDot = currentModeType == 0 ? "d1" : "d2";
|
|
|
|
|
|
foreach (Transform t in transform.Find("Rower/Dots"))
|
|
|
|
|
|
{
|
|
|
|
|
|
t.GetComponent<Image>().color = Utils.HexToColorHtml("#ffffff");
|
|
|
|
|
|
}
|
|
|
|
|
|
transform.Find($"Rower/Dots/{selDot}").GetComponent<Image>().color = Utils.HexToColorHtml("#f93086");
|
|
|
|
|
|
|
|
|
|
|
|
print($"模块位置:{m1.localPosition.x},{m2.localPosition.x}");
|
2022-03-10 18:10:34 +08:00
|
|
|
|
caches = new Dictionary<string, Texture>();
|
2022-04-11 17:24:36 +08:00
|
|
|
|
traceList = new List<Trace>();
|
|
|
|
|
|
//traceList = new List<Trace>()
|
|
|
|
|
|
//{
|
|
|
|
|
|
// new Trace{ userId=0, trace=m2.Find("Track/T1") },
|
|
|
|
|
|
// new Trace{ userId=0, trace=m2.Find("Track/T2") },
|
|
|
|
|
|
// new Trace{ userId=0, trace=m2.Find("Track/T3") },
|
|
|
|
|
|
// new Trace{ userId=0, trace=m2.Find("Track/T4") },
|
|
|
|
|
|
// new Trace{ userId=0, trace=m2.Find("Track/T5") },
|
|
|
|
|
|
//};
|
|
|
|
|
|
//initialPosYList = new List<float>
|
|
|
|
|
|
//{
|
|
|
|
|
|
// m2.Find("Track/T1").localPosition.y,
|
|
|
|
|
|
// m2.Find("Track/T2").localPosition.y,
|
|
|
|
|
|
// m2.Find("Track/T3").localPosition.y,
|
|
|
|
|
|
// m2.Find("Track/T4").localPosition.y,
|
|
|
|
|
|
// m2.Find("Track/T5").localPosition.y,
|
|
|
|
|
|
//};
|
2022-05-09 13:18:14 +08:00
|
|
|
|
scrollRank = transform.Find("Rower/Modes/Scroll/M1/Rank/Scroll View").GetComponent<ScrollRect>();
|
2022-03-10 18:10:34 +08:00
|
|
|
|
var countryJson = Resources.Load<TextAsset>("UI/flags-mini").text;
|
|
|
|
|
|
countryList = JsonConvert.DeserializeObject<List<CountryModel>>(countryJson);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void HandleTimeTick(RowerChartModel data)
|
|
|
|
|
|
{
|
2022-03-28 17:42:23 +08:00
|
|
|
|
//rowerType = GetComponent<RowerHomeScript>().rowerType;
|
2022-03-10 18:10:34 +08:00
|
|
|
|
currentSecond++;
|
|
|
|
|
|
myData.list.Add(data);
|
|
|
|
|
|
SortByCurrentDistance();
|
|
|
|
|
|
DisplayUserRanks();
|
|
|
|
|
|
DisplayTraces();
|
|
|
|
|
|
}
|
|
|
|
|
|
private void SortByCurrentDistance()
|
|
|
|
|
|
{
|
|
|
|
|
|
if (currentSecond >= 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
userList.ForEach(x =>
|
|
|
|
|
|
{
|
|
|
|
|
|
var _list = x.list;
|
|
|
|
|
|
var _distance = 0;
|
|
|
|
|
|
if (_list.Count == 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
_distance = 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (currentSecond >= _list.Count)
|
|
|
|
|
|
{
|
|
|
|
|
|
_distance = _list[_list.Count - 1].Distance;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
_distance = _list[currentSecond].Distance;
|
|
|
|
|
|
}
|
|
|
|
|
|
x.currentDistance = _distance;
|
2022-03-31 18:30:07 +08:00
|
|
|
|
if (x.isMine && rowerType.type == 1 && x.currentDistance > rowerType.value)
|
|
|
|
|
|
{
|
|
|
|
|
|
x.currentDistance = (int)rowerType.value;
|
|
|
|
|
|
}
|
2022-03-10 18:10:34 +08:00
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
userList = userList.OrderByDescending(x => x.currentDistance).ToList();
|
2022-03-28 17:42:23 +08:00
|
|
|
|
for (int i = 0; i < userList.Count; i++)
|
|
|
|
|
|
{
|
2022-04-07 10:08:55 +08:00
|
|
|
|
int rank = i + 1, userId = userList[i].UserId;
|
|
|
|
|
|
if (rankDiffDict.ContainsKey(userId))
|
|
|
|
|
|
{
|
|
|
|
|
|
rankDiffDict[userId].rank = rank;
|
|
|
|
|
|
rankDiffDict[userId].diff = userList[i].currentRank - rank;
|
2022-04-15 11:14:27 +08:00
|
|
|
|
if (currentSecond % 3 == 0)
|
2022-04-11 17:24:36 +08:00
|
|
|
|
{
|
|
|
|
|
|
rankDiffDict[userId].sumdiff = rankDiffDict[userId].diff;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
rankDiffDict[userId].sumdiff += rankDiffDict[userId].diff;
|
|
|
|
|
|
}
|
2022-04-07 10:08:55 +08:00
|
|
|
|
}
|
|
|
|
|
|
userList[i].currentRank = rank;
|
2022-03-28 17:42:23 +08:00
|
|
|
|
}
|
2022-03-10 18:10:34 +08:00
|
|
|
|
}
|
|
|
|
|
|
private List<TraceData> HandleData()
|
|
|
|
|
|
{
|
|
|
|
|
|
//仅取5个
|
|
|
|
|
|
var mineIndex = userList.FindIndex(x => x.isMine);
|
|
|
|
|
|
if (mineIndex < 2)
|
|
|
|
|
|
{
|
|
|
|
|
|
return userList.Where((x, i) => i < 5).ToList();
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (mineIndex > userList.Count - 3)
|
|
|
|
|
|
{
|
|
|
|
|
|
return userList.Where((x, i) => i >= userList.Count - 5).ToList();
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
return userList.Where((x, i) => i >= mineIndex - 2 && i <= mineIndex + 2).ToList();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
List<TraceData> userList;
|
|
|
|
|
|
TraceData myData;
|
2022-03-28 17:42:23 +08:00
|
|
|
|
public List<RowerRank> shadowList { get; private set; }
|
2022-04-07 10:08:55 +08:00
|
|
|
|
public class RankDiff
|
|
|
|
|
|
{
|
|
|
|
|
|
public int rank { get; set; }
|
|
|
|
|
|
public int diff { get; set; }
|
2022-04-11 17:24:36 +08:00
|
|
|
|
public int sumdiff { get; set; }
|
2022-04-07 10:08:55 +08:00
|
|
|
|
}
|
|
|
|
|
|
public Dictionary<int, RankDiff> rankDiffDict;
|
2022-04-14 19:18:44 +08:00
|
|
|
|
public async void GetShadowList(RowerTaskPanel.RowerType rowerType, RowerResultModel reRowData)
|
2022-03-10 18:10:34 +08:00
|
|
|
|
{
|
2022-03-28 17:42:23 +08:00
|
|
|
|
this.rowerType = rowerType;
|
2022-03-10 18:10:34 +08:00
|
|
|
|
currentSecond = -1;
|
2022-04-19 18:09:29 +08:00
|
|
|
|
//if(Application.internetReachability == NetworkReachability.NotReachable)
|
2022-04-14 19:18:44 +08:00
|
|
|
|
var res = reRowData ==null? await ConfigHelper.rowerApi.GetShadowList(rowerType): await ConfigHelper.rowerApi.GetReRowShadowList(reRowData.Id);
|
2022-03-10 18:10:34 +08:00
|
|
|
|
shadowList = res.data;
|
2022-04-19 18:09:29 +08:00
|
|
|
|
|
2022-04-11 17:24:36 +08:00
|
|
|
|
//foreach (var t in traceList)
|
|
|
|
|
|
//{
|
|
|
|
|
|
// t.userId = 0;
|
|
|
|
|
|
// t.trace.gameObject.SetActive(false);
|
|
|
|
|
|
//}
|
2022-03-10 18:10:34 +08:00
|
|
|
|
var _tmpList = shadowList.Select(x => new TraceData
|
|
|
|
|
|
{
|
|
|
|
|
|
list = x.list,
|
|
|
|
|
|
NickName = x.NickName,
|
|
|
|
|
|
Avatar = x.WxHeadImg,
|
|
|
|
|
|
UserId = x.UserId,
|
|
|
|
|
|
isMine = false,
|
|
|
|
|
|
currentDistance = 0,
|
|
|
|
|
|
Country = x.Country
|
|
|
|
|
|
}).ToList();
|
|
|
|
|
|
|
|
|
|
|
|
myData = new TraceData();
|
|
|
|
|
|
myData.list = new List<RowerChartModel>();
|
|
|
|
|
|
myData.UserId = App.CurrentUser.Id;
|
|
|
|
|
|
myData.NickName = App.CurrentUser.Nickname;
|
|
|
|
|
|
myData.Avatar = App.CurrentUser.WxHeadImg;
|
|
|
|
|
|
myData.isMine = true;
|
|
|
|
|
|
myData.Country = App.CurrentUser.Country;
|
2022-04-11 17:24:36 +08:00
|
|
|
|
_tmpList.Insert(_tmpList.Count / 2, myData);
|
|
|
|
|
|
//_tmpList.Add(myData);
|
2022-03-10 18:10:34 +08:00
|
|
|
|
userList = _tmpList.OrderByDescending(x => x.currentDistance).ToList();
|
2022-04-07 10:08:55 +08:00
|
|
|
|
rankDiffDict = new Dictionary<int, RankDiff>();
|
2022-03-28 17:42:23 +08:00
|
|
|
|
for (int i = 0; i < userList.Count; i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
userList[i].currentRank = i + 1;
|
2022-04-07 10:08:55 +08:00
|
|
|
|
rankDiffDict.Add(userList[i].UserId, new RankDiff { rank = userList[i].currentRank, diff = 0 });
|
2022-03-28 17:42:23 +08:00
|
|
|
|
}
|
2022-03-10 18:10:34 +08:00
|
|
|
|
DisplayUserRanks(true);
|
2022-04-11 17:24:36 +08:00
|
|
|
|
DisplayTraces(true);
|
2022-03-10 18:10:34 +08:00
|
|
|
|
}
|
2022-04-19 18:09:29 +08:00
|
|
|
|
float GetStrokeSpeed(uint rate)
|
|
|
|
|
|
{
|
|
|
|
|
|
//0 10 20 30 35
|
|
|
|
|
|
//0.9 0.8 0.7 0.6 0.5
|
|
|
|
|
|
if (rate < 10) return 0.9f;
|
|
|
|
|
|
else if (rate < 20) return 0.7f;
|
|
|
|
|
|
else if (rate < 30) return 0.5f;
|
|
|
|
|
|
else if (rate < 35) return 0.4f;
|
|
|
|
|
|
else return 0.3f;
|
|
|
|
|
|
}
|
2022-04-27 14:48:06 +08:00
|
|
|
|
//标识线
|
|
|
|
|
|
int leftWidth = 0, rightWidth = 100;
|
2022-04-11 17:24:36 +08:00
|
|
|
|
private void DisplayTrace(Transform t,TraceData data,TraceData mineData,bool isAni = false)
|
2022-03-10 18:10:34 +08:00
|
|
|
|
{
|
2022-04-27 14:48:06 +08:00
|
|
|
|
//增加新设计稿逻辑
|
|
|
|
|
|
t.Find("Left").GetComponent<Image>().sprite = data.isMine ? Resources.Load<Sprite>("Images/RowerNew/动画用/bg_myself") : Resources.Load<Sprite>("Images/RowerNew/动画用/bg_other");
|
|
|
|
|
|
t.Find("Main/Boat/Head").GetComponent<Image>().sprite = data.isMine ? Resources.Load<Sprite>("Images/RowerNew/动画用/img_overline_myself") : Resources.Load<Sprite>("Images/RowerNew/动画用/img_overline_others");
|
|
|
|
|
|
t.Find("Main/Boat/Head").gameObject.SetActive(data.currentDistance > 0);
|
|
|
|
|
|
t.Find("Main/Rowed").GetComponent<Image>().color = data.isMine ? Utils.HexToColorHtml("#f9308699") : Utils.HexToColorHtml("#27dfe399");
|
|
|
|
|
|
t.GetComponent<Image>().color = data.isMine ? Utils.HexToColorHtml("#f930861a") : Utils.HexToColorHtml("#27dfe31a");
|
|
|
|
|
|
|
|
|
|
|
|
|
2022-04-11 17:24:36 +08:00
|
|
|
|
if (string.IsNullOrEmpty(data.Avatar))
|
2022-03-10 18:10:34 +08:00
|
|
|
|
{
|
2022-04-11 17:24:36 +08:00
|
|
|
|
t.Find("Left/Avatar").GetComponent<RawImage>().texture = null;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
Utils.DisplayImageTempDict(t.Find("Left/Avatar").GetComponent<RawImage>(), data.Avatar, caches);
|
|
|
|
|
|
}
|
|
|
|
|
|
var _c = countryList.SingleOrDefault(x => x.country == data.Country);
|
|
|
|
|
|
if (_c != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
t.Find("Left/Avatar/Country").GetComponent<Image>().sprite = Resources.Load<Sprite>(_c.source);
|
|
|
|
|
|
}
|
|
|
|
|
|
t.Find("Left/NickName").GetComponent<Text>().text = data.NickName;
|
|
|
|
|
|
|
2022-05-09 13:18:14 +08:00
|
|
|
|
if (data.list.Count == 0 || !GetComponent<RowerHomeScript>().openTimer)
|
2022-04-11 17:24:36 +08:00
|
|
|
|
{
|
|
|
|
|
|
t.Find("Left/Time").GetComponent<Text>().text = TimeSpan.FromSeconds(0).ToString(@"mm\:ss");
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (currentSecond >= 0 && currentSecond < data.list.Count)
|
|
|
|
|
|
{
|
|
|
|
|
|
var _d = data.list[currentSecond];
|
|
|
|
|
|
t.Find("Left/Time").GetComponent<Text>().text = TimeSpan.FromSeconds(_d.Pace).ToString(@"mm\:ss");
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
var _d = data.list[data.list.Count - 1];
|
|
|
|
|
|
t.Find("Left/Time").GetComponent<Text>().text = TimeSpan.FromSeconds(_d.Pace).ToString(@"mm\:ss");
|
|
|
|
|
|
}
|
2022-04-13 15:44:02 +08:00
|
|
|
|
t.Find("Mine").gameObject.SetActive(data.isMine);
|
2022-04-11 17:24:36 +08:00
|
|
|
|
var diff = data.currentDistance - mineData.currentDistance;
|
|
|
|
|
|
if (diff > 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
t.Find("Main/Diff").GetComponent<Text>().text = diff.ToString("+#0M");
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (diff == 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (data.isMine)
|
2022-03-10 18:10:34 +08:00
|
|
|
|
{
|
2022-04-11 17:24:36 +08:00
|
|
|
|
var originstr = $"<color=#f93086>{userList.FindIndex(x => x.isMine) + 1}</color> / {userList.Count}";
|
|
|
|
|
|
var str = originstr;
|
|
|
|
|
|
var mytxt = t.Find("Main/Diff").GetComponent<Text>();
|
|
|
|
|
|
if (rankDiffDict[data.UserId].diff != 0)
|
2022-03-31 18:30:07 +08:00
|
|
|
|
{
|
2022-04-11 17:24:36 +08:00
|
|
|
|
var myranksq = DOTween.Sequence();
|
|
|
|
|
|
myranksq.AppendCallback(() =>
|
|
|
|
|
|
{
|
|
|
|
|
|
mytxt.DOFade(0, 0);
|
|
|
|
|
|
if (rankDiffDict[data.UserId].diff > 0) str = "<color=#f93086>↑</color>";
|
|
|
|
|
|
else if (rankDiffDict[data.UserId].diff < 0) str = "<color=#2fb95b>↓</color>";
|
|
|
|
|
|
mytxt.text = str;
|
|
|
|
|
|
});
|
|
|
|
|
|
myranksq.Append(mytxt.DOFade(1, 0.2f));
|
|
|
|
|
|
myranksq.AppendInterval(0.3f);
|
|
|
|
|
|
myranksq.Append(mytxt.DOFade(0, 0.2f));
|
|
|
|
|
|
myranksq.AppendCallback(() =>
|
|
|
|
|
|
{
|
|
|
|
|
|
mytxt.text = originstr;
|
|
|
|
|
|
});
|
|
|
|
|
|
myranksq.Append(mytxt.DOFade(1, 0.2f));
|
|
|
|
|
|
myranksq.Play();
|
2022-03-31 18:30:07 +08:00
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
2022-04-11 17:24:36 +08:00
|
|
|
|
mytxt.text = originstr;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
2022-03-10 18:10:34 +08:00
|
|
|
|
{
|
2022-04-11 17:24:36 +08:00
|
|
|
|
t.Find("Main/Diff").GetComponent<Text>().text = diff.ToString("#0M");
|
2022-03-10 18:10:34 +08:00
|
|
|
|
}
|
2022-04-11 17:24:36 +08:00
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
t.Find("Main/Diff").GetComponent<Text>().text = diff.ToString("#0M");
|
|
|
|
|
|
}
|
|
|
|
|
|
if (data.isMine)
|
|
|
|
|
|
{
|
|
|
|
|
|
t.transform.Find("Left/Time").GetComponent<Text>().color = Utils.HexToColorHtml("#f93086");
|
|
|
|
|
|
t.transform.Find("Left/NickName").GetComponent<Text>().color = Utils.HexToColorHtml("#f93086");
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
t.transform.Find("Left/Time").GetComponent<Text>().color = Utils.HexToColorHtml("#ffffff");
|
|
|
|
|
|
t.transform.Find("Left/NickName").GetComponent<Text>().color = Utils.HexToColorHtml("#ffffff");
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
var width = t.Find("Main").GetComponent<RectTransform>().sizeDelta.x - t.Find("Main/Boat").GetComponent<RectTransform>().sizeDelta.x;
|
|
|
|
|
|
var diffWidth = data.currentDistance - mineData.currentDistance + 50;
|
2022-04-27 14:48:06 +08:00
|
|
|
|
if (mineData.currentDistance <= 50)
|
2022-04-11 17:24:36 +08:00
|
|
|
|
{
|
|
|
|
|
|
diffWidth = data.currentDistance;
|
|
|
|
|
|
}
|
2022-04-27 14:48:06 +08:00
|
|
|
|
else if (rowerType.type == 1 && rowerType.value - mineData.currentDistance <= 50)
|
2022-04-11 17:24:36 +08:00
|
|
|
|
{
|
|
|
|
|
|
diffWidth = 100 - ((int)rowerType.value - data.currentDistance);
|
|
|
|
|
|
}
|
2022-04-27 14:48:06 +08:00
|
|
|
|
Func<float, bool> is0to100 = a => a >= 0 && a <= 100;
|
|
|
|
|
|
//标识线显示
|
|
|
|
|
|
if (data.isMine)
|
|
|
|
|
|
{
|
|
|
|
|
|
Transform leftLine = transform.Find("Rower/Modes/Scroll/M2/Track/TraceContainer/LineMeterLeft"),
|
|
|
|
|
|
rightLine = transform.Find("Rower/Modes/Scroll/M2/Track/TraceContainer/LineMeterRight"),
|
|
|
|
|
|
finishLine = transform.Find("Rower/Modes/Scroll/M2/Track/TraceContainer/LineFinish");
|
|
|
|
|
|
if (rightWidth <= mineData.currentDistance)
|
|
|
|
|
|
{
|
|
|
|
|
|
var tmp = leftLine;
|
|
|
|
|
|
leftLine = rightLine;
|
|
|
|
|
|
rightLine = tmp;
|
|
|
|
|
|
leftLine.name = "LineMeterLeft";
|
|
|
|
|
|
rightLine.name = "LineMeterRight";
|
|
|
|
|
|
}
|
|
|
|
|
|
leftWidth = (mineData.currentDistance / 100) * 100;
|
|
|
|
|
|
rightWidth = leftWidth + 100;
|
|
|
|
|
|
leftLine.gameObject.SetActive(leftWidth != 0);
|
|
|
|
|
|
int leftDiff = leftWidth - mineData.currentDistance, rightDiff = rightWidth - mineData.currentDistance;
|
|
|
|
|
|
leftLine.Find("Text").GetComponent<Text>().text = $"{leftWidth}M";
|
|
|
|
|
|
rightLine.Find("Text").GetComponent<Text>().text = $"{rightWidth}M";
|
|
|
|
|
|
float leftPositionX = ((diffWidth + leftDiff) / 100f) * width + 43,
|
|
|
|
|
|
rightPositionX = ((diffWidth + rightDiff) / 100f) * width + 43;
|
|
|
|
|
|
if (leftPositionX >= -30 && leftPositionX<=415)
|
|
|
|
|
|
{
|
2022-04-27 20:03:56 +08:00
|
|
|
|
StartCoroutine(MoveLine(leftLine, leftLine.localPosition, new Vector3(leftPositionX - 207.5f, leftLine.localPosition.y, leftLine.localPosition.z)));
|
|
|
|
|
|
//leftLine.DOLocalMoveX(leftPositionX - 207.5f, 0.9f);
|
2022-04-27 14:48:06 +08:00
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
leftLine.localPosition = new Vector3(leftPositionX - 207.5f, leftLine.localPosition.y, leftLine.localPosition.z);
|
|
|
|
|
|
}
|
|
|
|
|
|
if (rightPositionX >= 0 && rightPositionX <= 415)
|
|
|
|
|
|
{
|
2022-04-27 20:03:56 +08:00
|
|
|
|
StartCoroutine(MoveLine(rightLine, rightLine.localPosition, new Vector3(rightPositionX - 207.5f, rightLine.localPosition.y, rightLine.localPosition.z)));
|
|
|
|
|
|
//rightLine.DOLocalMoveX(rightPositionX - 207.5f, 0.9f);
|
2022-04-27 14:48:06 +08:00
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
rightLine.localPosition = new Vector3(rightPositionX - 207.5f, rightLine.localPosition.y, rightLine.localPosition.z);
|
|
|
|
|
|
}
|
2022-04-11 17:24:36 +08:00
|
|
|
|
|
2022-04-27 14:48:06 +08:00
|
|
|
|
if (rowerType.type == 1)
|
|
|
|
|
|
{
|
|
|
|
|
|
finishLine.gameObject.SetActive(true);
|
|
|
|
|
|
//终点线
|
|
|
|
|
|
float finishWidth = rowerType.value;
|
|
|
|
|
|
leftLine.gameObject.SetActive(Math.Abs(finishWidth - leftWidth) > 10 && leftWidth != 0);
|
|
|
|
|
|
rightLine.gameObject.SetActive(Math.Abs(finishWidth - rightWidth) > 10);
|
|
|
|
|
|
float finishDiff = finishWidth - mineData.currentDistance;
|
|
|
|
|
|
float finishPositionX = ((diffWidth + finishDiff) / 100f) * width + 43;
|
|
|
|
|
|
if (finishPositionX >= 0 && finishPositionX <= 415)
|
|
|
|
|
|
{
|
2022-04-27 20:03:56 +08:00
|
|
|
|
StartCoroutine(MoveLine(finishLine, finishLine.localPosition, new Vector3(finishPositionX - 207.5f, finishLine.localPosition.y, finishLine.localPosition.z)));
|
|
|
|
|
|
//finishLine.DOLocalMoveX(finishPositionX - 207.5f, 0.9f);
|
2022-04-27 14:48:06 +08:00
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
finishLine.localPosition = new Vector3(finishPositionX - 207.5f, finishLine.localPosition.y, finishLine.localPosition.z);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
finishLine.gameObject.SetActive(false);
|
|
|
|
|
|
rightLine.gameObject.SetActive(true);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
//if(!data.isMine) diffWidth = 101;
|
|
|
|
|
|
if (is0to100(diffWidth))
|
2022-04-11 17:24:36 +08:00
|
|
|
|
{
|
|
|
|
|
|
var tWidth = (diffWidth / 100f) * width;
|
|
|
|
|
|
t.Find("Main/Boat").gameObject.SetActive(true);
|
2022-04-27 20:03:56 +08:00
|
|
|
|
t.Find("Left/Rank").GetComponent<Text>().text = (userList.FindIndex(x => x.UserId == data.UserId) + 1).ToString("00");
|
2022-04-11 17:24:36 +08:00
|
|
|
|
if (isAni)
|
2022-04-11 11:40:02 +08:00
|
|
|
|
{
|
2022-04-27 14:48:06 +08:00
|
|
|
|
t.Find("Main/Boat").DOLocalMoveX(21.5f + tWidth, 0.9f);
|
2022-04-19 18:09:29 +08:00
|
|
|
|
var rowed = t.Find("Main/Rowed").GetComponent<RectTransform>();
|
2022-04-27 14:48:06 +08:00
|
|
|
|
//rowed.GetComponent<UIGradient>().color1 = data.isMine ? Utils.HexToColorHtml("#f9308633") : Utils.HexToColorHtml("#27bac033");
|
|
|
|
|
|
//rowed.GetComponent<UIGradient>().color2 = data.isMine ? Utils.HexToColorHtml("#f930864d") : Utils.HexToColorHtml("#27bac04d");
|
|
|
|
|
|
rowed.DOSizeDelta(new Vector2(tWidth, rowed.sizeDelta.y), 0.9f);
|
2022-04-11 11:40:02 +08:00
|
|
|
|
}
|
|
|
|
|
|
else
|
2022-03-10 18:10:34 +08:00
|
|
|
|
{
|
2022-04-11 17:24:36 +08:00
|
|
|
|
t.Find("Main/Boat").localPosition = new Vector3(21.5f + tWidth, t.Find("Main/Boat").localPosition.y, t.Find("Main/Boat").localPosition.z);
|
2022-03-10 18:10:34 +08:00
|
|
|
|
}
|
2022-04-11 17:24:36 +08:00
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
2022-04-27 14:48:06 +08:00
|
|
|
|
t.Find("Main/Boat").localPosition = new Vector3(diffWidth < 0 ? -21.5f : 21.5f + width, t.Find("Main/Boat").localPosition.y, t.Find("Main/Boat").localPosition.z);
|
2022-04-11 17:24:36 +08:00
|
|
|
|
t.Find("Main/Boat").gameObject.SetActive(false);
|
2022-04-27 14:48:06 +08:00
|
|
|
|
var rowed = t.Find("Main/Rowed").GetComponent<RectTransform>();
|
|
|
|
|
|
rowed.sizeDelta = new Vector2(diffWidth < 0 ? 0 : t.Find("Main").GetComponent<RectTransform>().sizeDelta.x, rowed.sizeDelta.y);
|
2022-04-11 17:24:36 +08:00
|
|
|
|
}
|
2022-04-29 18:32:04 +08:00
|
|
|
|
if (isAni && currentSecond >= 0 && currentSecond < data.list.Count && currentSecond%2 == 0)
|
2022-04-11 17:24:36 +08:00
|
|
|
|
{
|
|
|
|
|
|
var ani = DOTween.Sequence();
|
|
|
|
|
|
var _d = data.list[currentSecond];
|
2022-04-19 18:09:29 +08:00
|
|
|
|
if (currentSecond > 0 && _d.Rate > 0)
|
2022-03-10 18:10:34 +08:00
|
|
|
|
{
|
2022-04-27 14:48:06 +08:00
|
|
|
|
var spDict = GetComponent<RowerHomeScript>().spriteDict2;
|
2022-04-14 19:18:44 +08:00
|
|
|
|
int spDictIndex = 0;
|
2022-04-19 18:09:29 +08:00
|
|
|
|
|
2022-04-29 18:32:04 +08:00
|
|
|
|
ani.Join(DOTween.To(() => spDictIndex, x => t.Find("Main/Boat/Image").GetComponent<Image>().sprite = spDict[x], 14, 0.495f));
|
2022-04-14 19:18:44 +08:00
|
|
|
|
ani.AppendCallback(() =>
|
2022-03-10 18:10:34 +08:00
|
|
|
|
{
|
2022-04-14 19:18:44 +08:00
|
|
|
|
int spDictIndex2 = 14;
|
2022-04-29 18:32:04 +08:00
|
|
|
|
DOTween.To(() => spDictIndex2, x => t.Find("Main/Boat/Image").GetComponent<Image>().sprite = spDict[x], 0, 1.485f);
|
2022-04-14 19:18:44 +08:00
|
|
|
|
});
|
|
|
|
|
|
ani.Play();
|
|
|
|
|
|
//var _pred = data.list[currentSecond - 1];
|
|
|
|
|
|
//if (_pred.StrokeCount != _d.StrokeCount)
|
|
|
|
|
|
//{
|
|
|
|
|
|
// //上次划桨次数和这次不一样 说明需要划桨一次
|
|
|
|
|
|
// var spDict = GetComponent<RowerHomeScript>().spriteDict;
|
|
|
|
|
|
// int spDictIndex = 0;
|
|
|
|
|
|
// ani.Join(DOTween.To(() => spDictIndex, x => t.Find("Main/Boat").GetComponent<Image>().sprite = spDict[x], 14, 0.2f));
|
|
|
|
|
|
// ani.AppendCallback(() =>
|
|
|
|
|
|
// {
|
|
|
|
|
|
// int spDictIndex2 = 14;
|
|
|
|
|
|
// DOTween.To(() => spDictIndex2, x => t.Find("Main/Boat").GetComponent<Image>().sprite = spDict[x], 0, 0.4f);
|
|
|
|
|
|
// });
|
|
|
|
|
|
// ani.Play();
|
|
|
|
|
|
//}
|
2022-03-10 18:10:34 +08:00
|
|
|
|
}
|
2022-04-27 14:48:06 +08:00
|
|
|
|
|
2022-04-11 17:24:36 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
2022-04-27 20:03:56 +08:00
|
|
|
|
private IEnumerator MoveLine(Transform line, Vector3 originLocation, Vector3 targetLocation)
|
|
|
|
|
|
{
|
|
|
|
|
|
float t = 0;
|
|
|
|
|
|
while (t < 1)
|
|
|
|
|
|
{
|
|
|
|
|
|
t += Time.deltaTime;
|
|
|
|
|
|
Vector3 v = Vector3.Lerp(originLocation, targetLocation, t);
|
|
|
|
|
|
line.localPosition = v;
|
|
|
|
|
|
yield return new WaitForEndOfFrame();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2022-04-11 17:24:36 +08:00
|
|
|
|
private int getStartIndexByMineData()
|
|
|
|
|
|
{
|
|
|
|
|
|
var list = userList;
|
|
|
|
|
|
var mineIndex = list.FindIndex(x => x.isMine);
|
|
|
|
|
|
if (mineIndex < 2) return 0;
|
|
|
|
|
|
else if (mineIndex >= list.Count - 2)
|
|
|
|
|
|
{
|
|
|
|
|
|
mineIndex = list.Count - 5;
|
|
|
|
|
|
if (mineIndex < 0) mineIndex = 0;
|
|
|
|
|
|
return mineIndex;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
return mineIndex - 2;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private int[] getStartRangeByMineData()
|
|
|
|
|
|
{
|
|
|
|
|
|
var list = userList;
|
|
|
|
|
|
var mineIndex = list.FindIndex(x => x.isMine);
|
|
|
|
|
|
if (mineIndex < 2)
|
|
|
|
|
|
{
|
|
|
|
|
|
int sindex = 0,eIndex = 4;
|
|
|
|
|
|
if (eIndex > list.Count - 1) eIndex = list.Count - 1;
|
|
|
|
|
|
return new int[] { sindex, eIndex };
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (mineIndex >= list.Count - 2)
|
|
|
|
|
|
{
|
|
|
|
|
|
mineIndex = list.Count - 5;
|
|
|
|
|
|
if (mineIndex < 0) mineIndex = 0;
|
|
|
|
|
|
return new int[] { mineIndex, list.Count - 1 };
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
return new int[] { mineIndex - 2, mineIndex + 2 };
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2022-04-15 11:14:27 +08:00
|
|
|
|
private Color RandomColor()
|
|
|
|
|
|
{
|
|
|
|
|
|
//随机颜色的HSV值,饱和度不变,只改变H值
|
|
|
|
|
|
//H、S、V三个值的范围都是在0~1之间
|
|
|
|
|
|
float h = UnityEngine.Random.Range(0f, 1f);//随机值
|
|
|
|
|
|
float s = 0.3f;//设置饱和度为定值
|
|
|
|
|
|
Color color = Color.HSVToRGB(h, s, 1);
|
|
|
|
|
|
return color;
|
|
|
|
|
|
}
|
2022-04-11 17:24:36 +08:00
|
|
|
|
private void DisplayTraces(bool isRefresh = false)
|
|
|
|
|
|
{
|
|
|
|
|
|
var list = userList;
|
|
|
|
|
|
var listc = transform.Find("Rower/Modes/Scroll/M2/Track/Container/List");
|
|
|
|
|
|
var mineData = list.FirstOrDefault(x => x.isMine);
|
|
|
|
|
|
var sindex = getStartIndexByMineData();
|
|
|
|
|
|
int i = 0;
|
|
|
|
|
|
if (isRefresh)
|
|
|
|
|
|
{
|
|
|
|
|
|
traceList.Clear();
|
2022-04-19 18:09:29 +08:00
|
|
|
|
listc.localPosition = new Vector3(0, 115.5f);
|
|
|
|
|
|
listc.GetComponent<RectTransform>().sizeDelta = new Vector2(550f, 43 + 47 * (list.Count - 1));
|
|
|
|
|
|
print(listc.localPosition.ToString());
|
2022-04-11 17:24:36 +08:00
|
|
|
|
listc.DestroyChildren();
|
|
|
|
|
|
for (i = 0; i < list.Count; i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
var data = list[i];
|
|
|
|
|
|
var g = Instantiate<GameObject>(trace);
|
|
|
|
|
|
g.name = i.ToString();
|
|
|
|
|
|
DisplayTrace(g.transform.Find("T1/p1"), data, mineData);
|
2022-04-19 18:09:29 +08:00
|
|
|
|
g.transform.parent = listc;
|
2022-04-11 17:24:36 +08:00
|
|
|
|
g.SetActive(true);
|
|
|
|
|
|
g.transform.localScale = Vector3.one;
|
2022-04-15 11:14:27 +08:00
|
|
|
|
g.transform.localPosition = new Vector3(0, -21.5f - 47f * i);
|
|
|
|
|
|
//g.transform.Find("T1/p1").GetComponent<Image>().color = RandomColor();
|
2022-04-11 17:24:36 +08:00
|
|
|
|
traceList.Add(new Trace { userId = data.UserId, trace = g.transform.Find("T1") });
|
2022-03-28 17:42:23 +08:00
|
|
|
|
}
|
2022-04-11 17:24:36 +08:00
|
|
|
|
listc.DOLocalMoveY(47 * sindex + 115.5f, 0.8f);
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
2022-04-15 11:14:27 +08:00
|
|
|
|
|
|
|
|
|
|
if (currentSecond % 3 == 2)
|
|
|
|
|
|
{
|
|
|
|
|
|
var allsq = DOTween.Sequence();
|
|
|
|
|
|
// -21.5
|
|
|
|
|
|
allsq.Join(listc.DOLocalMoveY(47 * sindex + 115.5f, 1.5f));
|
|
|
|
|
|
var sq = DOTween.Sequence();
|
|
|
|
|
|
for (i = 0; i < list.Count; i++)
|
2022-03-31 18:30:07 +08:00
|
|
|
|
{
|
2022-04-15 11:14:27 +08:00
|
|
|
|
var data = list[i];
|
|
|
|
|
|
var t = traceList.FirstOrDefault(x => x.userId == data.UserId).trace;
|
|
|
|
|
|
var diff = rankDiffDict[data.UserId];
|
|
|
|
|
|
DisplayTrace(t.Find("p1"), data, mineData, true);
|
|
|
|
|
|
|
|
|
|
|
|
if (diff.sumdiff != 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (diff.sumdiff > 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
t.parent.SetAsLastSibling();
|
|
|
|
|
|
}
|
|
|
|
|
|
//t.parent.gets
|
|
|
|
|
|
|
|
|
|
|
|
sq.Join(t.parent.DOLocalMoveY(-47 * (diff.rank - 1) - 21.5f, 1.5f));
|
|
|
|
|
|
var sq1 = DOTween.Sequence();
|
2022-04-19 18:09:29 +08:00
|
|
|
|
if (diff.sumdiff < 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
sq1.Append(t.GetComponent<CanvasGroup>().DOFade(0.2f, 0.75f));
|
|
|
|
|
|
sq1.Append(t.GetComponent<CanvasGroup>().DOFade(1f, 0.75f));
|
|
|
|
|
|
}
|
2022-04-15 11:14:27 +08:00
|
|
|
|
sq.Join(sq1);
|
2022-04-19 18:09:29 +08:00
|
|
|
|
//sq.SetEase(Ease.InOutCubic);
|
2022-04-15 11:14:27 +08:00
|
|
|
|
//sq.Append(t.GetComponent)
|
|
|
|
|
|
}
|
|
|
|
|
|
//t.parent.name = i.ToString();
|
2022-04-11 17:24:36 +08:00
|
|
|
|
}
|
2022-04-15 11:14:27 +08:00
|
|
|
|
allsq.Join(sq);
|
|
|
|
|
|
allsq.Play();
|
2022-03-10 18:10:34 +08:00
|
|
|
|
}
|
2022-04-15 11:14:27 +08:00
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
for (i = 0; i < list.Count; i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
var data = list[i];
|
|
|
|
|
|
var t = traceList.FirstOrDefault(x => x.userId == data.UserId).trace;
|
|
|
|
|
|
DisplayTrace(t.Find("p1"), data, mineData, true);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2022-04-11 17:24:36 +08:00
|
|
|
|
//for (i = 0; i < list.Count; i++)
|
|
|
|
|
|
//{
|
2022-04-13 18:08:50 +08:00
|
|
|
|
// traceList[i].trace = traceList[i].trace.parent.parent.Find($"{i.ToString()}/T1");
|
|
|
|
|
|
//}
|
2022-04-15 11:14:27 +08:00
|
|
|
|
|
2022-04-13 18:08:50 +08:00
|
|
|
|
//return;
|
|
|
|
|
|
//if (currentSecond % 2 == 1)
|
|
|
|
|
|
//{
|
|
|
|
|
|
// //0-0.5
|
|
|
|
|
|
// allsq.Append(listc.DOLocalMoveY(47 * sindex + 115.5f, 0.5f));
|
|
|
|
|
|
// var indexRange = getStartRangeByMineData();
|
|
|
|
|
|
|
2022-04-11 17:24:36 +08:00
|
|
|
|
// var sq = DOTween.Sequence();
|
2022-04-13 18:08:50 +08:00
|
|
|
|
// for (i = 0; i < list.Count; i++)
|
|
|
|
|
|
// {
|
|
|
|
|
|
|
|
|
|
|
|
// var sq1 = DOTween.Sequence();
|
|
|
|
|
|
// var data = list[i];
|
|
|
|
|
|
// var t = traceList[i].trace;
|
|
|
|
|
|
// if (i >= indexRange[0] && i <= indexRange[1])
|
|
|
|
|
|
// {
|
|
|
|
|
|
// //需要做动画
|
|
|
|
|
|
// if (data.UserId != traceList[i].userId)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// //var mysq = DOTween.Sequence();
|
|
|
|
|
|
// //if (traceList[i].userId == App.CurrentUser.Id)
|
|
|
|
|
|
// //{
|
|
|
|
|
|
// // mysq.Join(t.GetComponent<CanvasGroup>().DOFade(0, 0.5f).SetEase(Ease.OutSine));
|
|
|
|
|
|
// //}
|
|
|
|
|
|
// //if (data.UserId != App.CurrentUser.Id)
|
|
|
|
|
|
// //{
|
|
|
|
|
|
// // sq1.Append(t.GetComponent<CanvasGroup>().DOFade(0.68f, 0.45f).SetEase(Ease.InSine));
|
|
|
|
|
|
// // sq1.AppendCallback(() =>
|
|
|
|
|
|
// // {
|
|
|
|
|
|
// // DisplayTrace(t.Find("p1"), data, mineData);
|
|
|
|
|
|
// // });
|
|
|
|
|
|
// // sq1.Append(t.GetComponent<CanvasGroup>().DOFade(1, 0.45f));
|
|
|
|
|
|
// //}
|
|
|
|
|
|
// //else
|
|
|
|
|
|
// //{
|
|
|
|
|
|
// // mysq.Join(t.GetComponent<RowerTraceAnimated>().startAnimation(0.5f, () =>
|
|
|
|
|
|
// // {
|
|
|
|
|
|
// // DisplayTrace(t.Find("p2"), data, mineData);
|
|
|
|
|
|
// // }, rankDiffDict[data.UserId].sumdiff >= 0 ? 1 : 0));
|
|
|
|
|
|
// // allsq.Append(mysq);
|
|
|
|
|
|
// //}
|
|
|
|
|
|
|
|
|
|
|
|
// sq1.Append(t.GetComponent<RowerTraceAnimated>().startAnimation(0.8f, () =>
|
|
|
|
|
|
// {
|
|
|
|
|
|
// DisplayTrace(t.Find("p2"), data, mineData);
|
|
|
|
|
|
// }, rankDiffDict[data.UserId].sumdiff >= 0 ? 1 : 0).SetEase(Ease.OutBounce));
|
|
|
|
|
|
|
|
|
|
|
|
// //sq1.Append(t.GetComponent<RowerTraceAnimated>().startAnimation(0.8f, () =>
|
|
|
|
|
|
// //{
|
|
|
|
|
|
// // DisplayTrace(t.Find("p2"), data, mineData);
|
|
|
|
|
|
// //}, 0).SetEase(Ease.OutBounce));
|
|
|
|
|
|
// }
|
|
|
|
|
|
// else
|
|
|
|
|
|
// {
|
|
|
|
|
|
// sq1.AppendCallback(() =>
|
|
|
|
|
|
// {
|
|
|
|
|
|
// DisplayTrace(t.Find("p1"), data, mineData, true);
|
|
|
|
|
|
// });
|
|
|
|
|
|
// }
|
|
|
|
|
|
// traceList[i].userId = data.UserId;
|
|
|
|
|
|
// }
|
|
|
|
|
|
// else
|
|
|
|
|
|
// {
|
|
|
|
|
|
// DisplayTrace(t.Find("p1"), data, mineData);
|
|
|
|
|
|
// }
|
|
|
|
|
|
// sq.Join(sq1);
|
|
|
|
|
|
// }
|
|
|
|
|
|
// allsq.Append(sq);
|
|
|
|
|
|
// allsq.Play();
|
|
|
|
|
|
//}
|
|
|
|
|
|
//else
|
|
|
|
|
|
//{
|
|
|
|
|
|
// for (i = 0; i < list.Count; i++)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// var data = list[i];
|
|
|
|
|
|
// var _trace = traceList.FirstOrDefault(x=>x.userId == data.UserId);
|
|
|
|
|
|
// if (_trace != null)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// DisplayTrace(_trace.trace.Find("p1"), data, mineData, true);
|
|
|
|
|
|
// }
|
|
|
|
|
|
// }
|
2022-04-11 17:24:36 +08:00
|
|
|
|
//}
|
2022-04-13 18:08:50 +08:00
|
|
|
|
////for (i = 0; i < list.Count; i++)
|
|
|
|
|
|
////{
|
|
|
|
|
|
//// var sq = DOTween.Sequence();
|
|
|
|
|
|
//// var item = traceList[i];
|
|
|
|
|
|
//// var data = list[i];
|
|
|
|
|
|
//// var t = item.trace.Find("p2");
|
|
|
|
|
|
////}
|
|
|
|
|
|
//return;
|
2022-04-11 17:24:36 +08:00
|
|
|
|
//var list = HandleData();
|
|
|
|
|
|
//CompareTraceList(traceList, list);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//for (i = 0; i < list.Count;i++)
|
|
|
|
|
|
//{
|
|
|
|
|
|
// var sq = DOTween.Sequence();
|
|
|
|
|
|
// var item = traceList[i];
|
|
|
|
|
|
// var data = list[i];
|
|
|
|
|
|
// var t = item.trace.Find("p2");
|
|
|
|
|
|
// TweenCallback callback = () =>
|
|
|
|
|
|
// {
|
|
|
|
|
|
|
|
|
|
|
|
// };
|
|
|
|
|
|
// if (!item.trace.gameObject.activeInHierarchy)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// t = item.trace.Find("p1");
|
|
|
|
|
|
// item.trace.gameObject.SetActive(true);
|
|
|
|
|
|
// callback();
|
|
|
|
|
|
// continue;
|
|
|
|
|
|
// }
|
|
|
|
|
|
// //var rotatesq = item.trace.GetComponent<RowerTraceAnimated>().startAnimation(0.8f, callback);
|
|
|
|
|
|
// //if (rotatesq != null)
|
|
|
|
|
|
// //{
|
|
|
|
|
|
// // sq.Join(rotatesq);
|
|
|
|
|
|
// //}
|
|
|
|
|
|
// var isRotate = item.userId != data.UserId;
|
|
|
|
|
|
// if (isRotate)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// t = item.trace.Find("p2");
|
|
|
|
|
|
// var rotatesq = item.trace.GetComponent<RowerTraceAnimated>().startAnimation(0.8f, callback);
|
|
|
|
|
|
// if (rotatesq != null)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// sq.Join(rotatesq);
|
|
|
|
|
|
// }
|
|
|
|
|
|
// }
|
|
|
|
|
|
// else
|
|
|
|
|
|
// {
|
|
|
|
|
|
// t = item.trace.Find("p1");
|
|
|
|
|
|
// sq.AppendCallback(callback);
|
|
|
|
|
|
// }
|
|
|
|
|
|
// item.userId = data.UserId;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// if (currentSecond >= 0 && currentSecond < list[i].list.Count)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// var _d = data.list[currentSecond];
|
|
|
|
|
|
// if (currentSecond > 0)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// var _pred = data.list[currentSecond - 1];
|
|
|
|
|
|
// if (_pred.StrokeCount != _d.StrokeCount)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// //上次划桨次数和这次不一样 说明需要划桨一次
|
|
|
|
|
|
// var spDict = GetComponent<RowerHomeScript>().spriteDict;
|
|
|
|
|
|
// int spDictIndex = 0;
|
|
|
|
|
|
// sq.Join(DOTween.To(() => spDictIndex, x => t.Find("Main/Boat").GetComponent<Image>().sprite = spDict[x], 14, 0.3f));
|
|
|
|
|
|
// sq.AppendCallback(() =>
|
|
|
|
|
|
// {
|
|
|
|
|
|
// int spDictIndex2 = 14;
|
|
|
|
|
|
// DOTween.To(() => spDictIndex2, x => t.Find("Main/Boat").GetComponent<Image>().sprite = spDict[x], 0, 0.6f);
|
|
|
|
|
|
// });
|
|
|
|
|
|
// }
|
|
|
|
|
|
// }
|
|
|
|
|
|
// }
|
|
|
|
|
|
// var width = t.Find("Main").GetComponent<RectTransform>().sizeDelta.x - t.Find("Main/Boat").GetComponent<RectTransform>().sizeDelta.x;
|
|
|
|
|
|
// var diffWidth = data.currentDistance - mineData.currentDistance + 50;
|
|
|
|
|
|
// if (data.currentDistance <= 50)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// diffWidth = data.currentDistance;
|
|
|
|
|
|
// }
|
|
|
|
|
|
// else if (rowerType.type == 1 && rowerType.value - data.currentDistance <= 50)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// diffWidth = 100 - ((int)rowerType.value - data.currentDistance);
|
|
|
|
|
|
// }
|
|
|
|
|
|
// //if (data.isMine)
|
|
|
|
|
|
// //{
|
|
|
|
|
|
// // print("diff:" + diffWidth + ";"+ rowerType.type);
|
|
|
|
|
|
// //}
|
|
|
|
|
|
// if (diffWidth >= 0 && diffWidth <= 100)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// var tWidth = (diffWidth / 100f) * width;
|
|
|
|
|
|
// t.Find("Main/Boat").gameObject.SetActive(true);
|
|
|
|
|
|
// //t.Find("Main/Boat").localPosition = new Vector3(25 + tWidth, t.Find("Main/Boat").localPosition.y, t.Find("Main/Boat").localPosition.z);
|
|
|
|
|
|
// if (isRotate)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// t.Find("Main/Boat").localPosition = new Vector3(21.5f + tWidth, t.Find("Main/Boat").localPosition.y, t.Find("Main/Boat").localPosition.z);
|
|
|
|
|
|
// }
|
|
|
|
|
|
// else
|
|
|
|
|
|
// {
|
|
|
|
|
|
// sq.Join(t.Find("Main/Boat").DOLocalMoveX(21.5f + tWidth, 0.9f));
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
// else
|
|
|
|
|
|
// {
|
|
|
|
|
|
// t.Find("Main/Boat").localPosition = new Vector3(-21.5f, t.Find("Main/Boat").localPosition.y, t.Find("Main/Boat").localPosition.z);
|
|
|
|
|
|
// t.Find("Main/Boat").gameObject.SetActive(false);
|
|
|
|
|
|
// }
|
|
|
|
|
|
//排名变化
|
|
|
|
|
|
//var diffTransfrom = transform.Find("Rower/Modes/Scroll/M2/Track/RankDiff"+item.trace.name).GetComponent<Text>();
|
|
|
|
|
|
//if (rankDiffDict[data.UserId].diff > 0)
|
|
|
|
|
|
//{
|
|
|
|
|
|
// diffTransfrom.text = "+" + rankDiffDict[data.UserId].diff;
|
|
|
|
|
|
// var rankDiffSQ = DOTween.Sequence();
|
|
|
|
|
|
// rankDiffSQ.Append(diffTransfrom.DOColor(Utils.HexToColorHtml("#bd362bff"), 0.3f));
|
|
|
|
|
|
// rankDiffSQ.AppendInterval(0.4f);
|
|
|
|
|
|
// rankDiffSQ.Append(diffTransfrom.DOColor(Utils.HexToColorHtml("#ffffff00"), 0.3f));
|
|
|
|
|
|
// sq.Join(rankDiffSQ);
|
|
|
|
|
|
//}
|
|
|
|
|
|
//else if (rankDiffDict[data.UserId].diff < 0)
|
|
|
|
|
|
//{
|
|
|
|
|
|
// diffTransfrom.text = "" + rankDiffDict[data.UserId].diff;
|
|
|
|
|
|
// var rankDiffSQ = DOTween.Sequence();
|
|
|
|
|
|
// rankDiffSQ.Append(diffTransfrom.DOColor(Utils.HexToColorHtml("#27bac0ff"), 0.3f));
|
|
|
|
|
|
// rankDiffSQ.AppendInterval(0.4f);
|
|
|
|
|
|
// rankDiffSQ.Append(diffTransfrom.DOColor(Utils.HexToColorHtml("#ffffff00"), 0.3f));
|
|
|
|
|
|
// sq.Join(rankDiffSQ);
|
|
|
|
|
|
//}
|
|
|
|
|
|
//sq.Play();
|
|
|
|
|
|
//}
|
|
|
|
|
|
//for (; i < traceList.Count; i++)
|
|
|
|
|
|
//{
|
|
|
|
|
|
// traceList[i].userId = 0;
|
|
|
|
|
|
// traceList[i].trace.gameObject.SetActive(false);
|
|
|
|
|
|
//}
|
2022-03-10 18:10:34 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void CompareTraceList(List<Trace> traceList, List<TraceData> list)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (traceList.Count(x => x.userId == 0) == 5) return;
|
|
|
|
|
|
var originUserList = traceList.Select(x => x.userId).ToList();
|
|
|
|
|
|
var newUserList = list.Select(x => x.UserId).ToList();
|
|
|
|
|
|
if (newUserList.Count != 5)
|
|
|
|
|
|
{
|
|
|
|
|
|
for (int i = newUserList.Count; i < 5; i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
newUserList.Add(0);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
var diffRank = new List<int?>();
|
|
|
|
|
|
for (int i = 0; i < 5; i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
int _origin = originUserList[i], _new = newUserList[i];
|
|
|
|
|
|
if (_origin == _new)
|
|
|
|
|
|
{
|
|
|
|
|
|
//相等 则排名没变化
|
|
|
|
|
|
diffRank.Add(0);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
//不相等 分情况
|
|
|
|
|
|
var newIndex = originUserList.FindIndex(x => x == _new);
|
|
|
|
|
|
if (newIndex != -1)
|
|
|
|
|
|
{
|
|
|
|
|
|
diffRank.Add(newIndex - _origin);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
diffRank.Add(null);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void SetRank(GameObject game, TraceData item,int i)
|
|
|
|
|
|
{
|
2022-03-28 17:42:23 +08:00
|
|
|
|
game.transform.Find("Content/Rank").GetComponent<Text>().text = item.currentRank.ToString("00");
|
2022-03-10 18:10:34 +08:00
|
|
|
|
game.transform.Find("Content/NickName").GetComponent<Text>().text = item.NickName;
|
2022-04-14 19:18:44 +08:00
|
|
|
|
//Utils.DisplayImageTempDict(game.transform.Find("Content/Avatar").GetComponent<RawImage>(), item.Avatar, caches);
|
|
|
|
|
|
//var _c = countryList.FirstOrDefault(x => item.Country == x.country);
|
|
|
|
|
|
//if (_c != null)
|
|
|
|
|
|
//{
|
|
|
|
|
|
// game.transform.Find("Content/Country").GetComponent<Image>().sprite = Resources.Load<Sprite>(_c.source);
|
|
|
|
|
|
//}
|
2022-03-31 18:30:07 +08:00
|
|
|
|
int _d = 0, _p = 0;
|
2022-03-28 17:42:23 +08:00
|
|
|
|
if (currentSecond < 0 || item.list.Count == 0)
|
2022-03-10 18:10:34 +08:00
|
|
|
|
{
|
2022-03-31 18:30:07 +08:00
|
|
|
|
|
2022-03-10 18:10:34 +08:00
|
|
|
|
}
|
|
|
|
|
|
else if (currentSecond >= 0 && currentSecond < item.list.Count)
|
|
|
|
|
|
{
|
2022-03-31 18:30:07 +08:00
|
|
|
|
_d = item.list[currentSecond].Distance;
|
|
|
|
|
|
_p = item.list[currentSecond].Power;
|
2022-03-10 18:10:34 +08:00
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
2022-03-31 18:30:07 +08:00
|
|
|
|
_d = item.list[item.list.Count - 1].Distance;
|
|
|
|
|
|
_p = item.list[item.list.Count - 1].Power;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (item.isMine && rowerType.type == 1 && _d > rowerType.value)
|
|
|
|
|
|
{
|
|
|
|
|
|
_d = (int)rowerType.value;
|
2022-03-10 18:10:34 +08:00
|
|
|
|
}
|
2022-03-31 18:30:07 +08:00
|
|
|
|
game.transform.Find("Content/Time").GetComponent<Text>().text = $"{_d}M";
|
|
|
|
|
|
game.transform.Find("Content/Power").GetComponent<Text>().text = $"{_p}W";
|
2022-03-10 18:10:34 +08:00
|
|
|
|
if (item.isMine)
|
|
|
|
|
|
{
|
|
|
|
|
|
game.transform.Find("Content/Time").GetComponent<Text>().color = Utils.HexToColorHtml("#f93086");
|
|
|
|
|
|
game.transform.Find("Content/Power").GetComponent<Text>().color = Utils.HexToColorHtml("#f93086");
|
|
|
|
|
|
game.transform.Find("Content/NickName").GetComponent<Text>().color = Utils.HexToColorHtml("#f93086");
|
|
|
|
|
|
game.transform.Find("Content/Rank").GetComponent<Text>().color = Utils.HexToColorHtml("#f93086");
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
game.transform.Find("Content/Time").GetComponent<Text>().color = Utils.HexToColorHtml("#ffffff");
|
|
|
|
|
|
game.transform.Find("Content/Power").GetComponent<Text>().color = Utils.HexToColorHtml("#ffffff");
|
|
|
|
|
|
game.transform.Find("Content/NickName").GetComponent<Text>().color = Utils.HexToColorHtml("#ffffff");
|
|
|
|
|
|
game.transform.Find("Content/Rank").GetComponent<Text>().color = Utils.HexToColorHtml("#ffffff");
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2022-03-28 17:42:23 +08:00
|
|
|
|
private List<TraceData> Get8UserList()
|
|
|
|
|
|
{
|
|
|
|
|
|
var resRanks = userList;
|
|
|
|
|
|
var ind = resRanks.FindIndex(x => x.UserId == App.CurrentUser.Id);
|
|
|
|
|
|
if (ind >= 8)
|
|
|
|
|
|
{
|
|
|
|
|
|
var tops = resRanks.Take(3).ToList();
|
|
|
|
|
|
List<TraceData> mys = null;
|
|
|
|
|
|
if (resRanks.Count - 1 - ind < 2)
|
|
|
|
|
|
{
|
|
|
|
|
|
mys = resRanks.GetRange(resRanks.Count - 5, 5);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
mys = resRanks.GetRange(ind - 2, 5);
|
|
|
|
|
|
}
|
|
|
|
|
|
resRanks = tops.Concat(mys).ToList();
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
resRanks = resRanks.Take(8).ToList();
|
|
|
|
|
|
}
|
|
|
|
|
|
return resRanks;
|
|
|
|
|
|
}
|
2022-03-10 18:10:34 +08:00
|
|
|
|
private void DisplayUserRanks(bool isRefresh = false)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (isRefresh)
|
|
|
|
|
|
{
|
|
|
|
|
|
scrollRank.content.DestroyChildren();
|
|
|
|
|
|
}
|
2022-03-28 17:42:23 +08:00
|
|
|
|
var list = Get8UserList();
|
2022-03-10 18:10:34 +08:00
|
|
|
|
if (scrollRank.content.childCount == 0)
|
|
|
|
|
|
{
|
2022-03-28 17:42:23 +08:00
|
|
|
|
for (int i = 0; i < list.Count; i++)
|
2022-03-10 18:10:34 +08:00
|
|
|
|
{
|
2022-03-28 17:42:23 +08:00
|
|
|
|
var item = list[i];
|
2022-03-10 18:10:34 +08:00
|
|
|
|
var game = Instantiate<GameObject>(rank);
|
|
|
|
|
|
SetRank(game, item, i);
|
|
|
|
|
|
game.transform.SetParent(scrollRank.content);
|
|
|
|
|
|
game.transform.localScale = Vector3.one;
|
|
|
|
|
|
game.SetActive(true);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
int i = 0;
|
|
|
|
|
|
foreach (Transform t in scrollRank.content)
|
|
|
|
|
|
{
|
2022-03-28 17:42:23 +08:00
|
|
|
|
var item = list[i];
|
2022-03-10 18:10:34 +08:00
|
|
|
|
SetRank(t.gameObject, item, i);
|
|
|
|
|
|
i++;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2022-05-09 13:18:14 +08:00
|
|
|
|
transform.Find("Rower/Modes/Scroll/M1/Rank/MyRank").GetComponent<Text>().text = $"<color=#f93086>{userList.FindIndex(x => x.isMine) + 1}</color> / {userList.Count}";
|
2022-03-10 18:10:34 +08:00
|
|
|
|
}
|
2022-04-27 14:48:06 +08:00
|
|
|
|
|
|
|
|
|
|
// 0 单人 1 影子
|
|
|
|
|
|
int currentModeType = 0;
|
2022-03-10 18:10:34 +08:00
|
|
|
|
private void AddTouchEvent()
|
|
|
|
|
|
{
|
|
|
|
|
|
pan = new TKPanRecognizer();
|
2022-04-27 14:48:06 +08:00
|
|
|
|
//0 730 0的位置是显示位置
|
|
|
|
|
|
Sequence sq = DOTween.Sequence();
|
2022-03-10 18:10:34 +08:00
|
|
|
|
pan.gestureRecognizedEvent += (r) =>
|
|
|
|
|
|
{
|
2022-04-27 14:48:06 +08:00
|
|
|
|
if (sq.IsActive() && sq.IsPlaying()) return;
|
2022-03-10 18:10:34 +08:00
|
|
|
|
var startPoint = r.startPoint;
|
2022-04-27 14:48:06 +08:00
|
|
|
|
if (((RectTransform)transform.Find("Rower/Modes")).isPointInTransfrom(startPoint)|| ((RectTransform)transform.Find("RankS")).isPointInTransfrom(startPoint))
|
2022-03-10 18:10:34 +08:00
|
|
|
|
{
|
2022-04-27 14:48:06 +08:00
|
|
|
|
//if (currentModeType == 1 && ((RectTransform)transform.Find("RankS")).isPointInTransfrom(startPoint))
|
|
|
|
|
|
//{
|
|
|
|
|
|
// return;
|
|
|
|
|
|
//}
|
2022-03-10 18:10:34 +08:00
|
|
|
|
var offset = pan.deltaTranslation;
|
2022-04-27 14:48:06 +08:00
|
|
|
|
//if (scroll.localPosition.x >= 30 || scroll.localPosition.x <= -760) return;
|
|
|
|
|
|
|
|
|
|
|
|
Transform aniView = currentModeType == 0 ? m1 : m2, followAniView = currentModeType == 1 ? m1 : m2;
|
|
|
|
|
|
aniView.localPosition += new Vector3(offset.x, 0, 0);
|
|
|
|
|
|
followAniView.localPosition = aniView.localPosition + new Vector3((aniView.localPosition.x < 0 ? 1 : -1) * 730, 0, 0);
|
|
|
|
|
|
//scroll.localPosition += new Vector3(offset.x, 0, 0);
|
2022-03-10 18:10:34 +08:00
|
|
|
|
}
|
|
|
|
|
|
};
|
|
|
|
|
|
pan.gestureCompleteEvent += (r) =>
|
|
|
|
|
|
{
|
2022-04-27 14:48:06 +08:00
|
|
|
|
if (sq.IsActive() && sq.IsPlaying()) return;
|
|
|
|
|
|
sq = DOTween.Sequence();
|
|
|
|
|
|
Transform aniView = currentModeType == 0 ? m1 : m2, followAniView = currentModeType == 1 ? m1 : m2;
|
|
|
|
|
|
if (Math.Abs(aniView.localPosition.x) <= 30)
|
2022-03-28 17:42:23 +08:00
|
|
|
|
{
|
2022-04-27 14:48:06 +08:00
|
|
|
|
sq.Join(aniView.DOLocalMoveX(0, 0.5f));
|
|
|
|
|
|
if (aniView.localPosition.x != 0) sq.Join(followAniView.DOLocalMoveX(aniView.localPosition.x > 0 ? -730 : 730, 0.5f));
|
2022-03-28 17:42:23 +08:00
|
|
|
|
}
|
2022-04-27 14:48:06 +08:00
|
|
|
|
else
|
2022-03-10 18:10:34 +08:00
|
|
|
|
{
|
2022-04-27 14:48:06 +08:00
|
|
|
|
if (aniView.localPosition.x > 30)
|
2022-03-31 18:30:07 +08:00
|
|
|
|
{
|
2022-04-27 14:48:06 +08:00
|
|
|
|
sq.Join(aniView.DOLocalMoveX(730, 0.5f));
|
2022-03-31 18:30:07 +08:00
|
|
|
|
}
|
2022-04-27 14:48:06 +08:00
|
|
|
|
else if (aniView.localPosition.x < -30)
|
2022-03-31 18:30:07 +08:00
|
|
|
|
{
|
2022-04-27 14:48:06 +08:00
|
|
|
|
sq.Join(aniView.DOLocalMoveX(-730, 0.5f));
|
2022-03-31 18:30:07 +08:00
|
|
|
|
}
|
2022-04-27 14:48:06 +08:00
|
|
|
|
sq.Join(followAniView.DOLocalMoveX(0, 0.5f));
|
|
|
|
|
|
sq.onComplete = () =>
|
|
|
|
|
|
{
|
|
|
|
|
|
currentModeType = (currentModeType + 1) % 2;
|
|
|
|
|
|
string selDot = currentModeType == 0 ? "d1" : "d2";
|
|
|
|
|
|
foreach (Transform t in transform.Find("Rower/Dots"))
|
|
|
|
|
|
{
|
|
|
|
|
|
t.GetComponent<Image>().color = Utils.HexToColorHtml("#ffffff");
|
|
|
|
|
|
}
|
|
|
|
|
|
transform.Find($"Rower/Dots/{selDot}").GetComponent<Image>().color = Utils.HexToColorHtml("#f93086");
|
|
|
|
|
|
PlayerPrefs.SetInt("CurrentModeType", currentModeType);
|
|
|
|
|
|
};
|
2022-03-10 18:10:34 +08:00
|
|
|
|
}
|
2022-04-27 14:48:06 +08:00
|
|
|
|
|
|
|
|
|
|
sq.Play();
|
|
|
|
|
|
return;
|
|
|
|
|
|
//float x = 0;
|
|
|
|
|
|
//string selDot = "";
|
|
|
|
|
|
//if (Color.Equals(transform.Find("Rower/Dots/d1").GetComponent<Image>().color, Utils.HexToColorHtml("#f93086")))
|
|
|
|
|
|
//{
|
|
|
|
|
|
// if (scroll.localPosition.x >= startPosition.x - ((730 * 1) / 10))
|
|
|
|
|
|
// {
|
|
|
|
|
|
// x = startPosition.x;
|
|
|
|
|
|
// selDot = "d1";
|
|
|
|
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
// else
|
|
|
|
|
|
// {
|
|
|
|
|
|
// print(491);
|
|
|
|
|
|
// x = startPosition.x - 730;
|
|
|
|
|
|
// selDot = "d2";
|
|
|
|
|
|
// }
|
|
|
|
|
|
//}
|
|
|
|
|
|
//else
|
|
|
|
|
|
//{
|
|
|
|
|
|
// if (scroll.localPosition.x >= startPosition.x - ((730 * 9) / 10))
|
|
|
|
|
|
// {
|
|
|
|
|
|
// x = startPosition.x;
|
|
|
|
|
|
// selDot = "d1";
|
|
|
|
|
|
// }
|
|
|
|
|
|
// else
|
|
|
|
|
|
// {
|
|
|
|
|
|
// x = startPosition.x - 730;
|
|
|
|
|
|
// selDot = "d2";
|
|
|
|
|
|
// }
|
|
|
|
|
|
//}
|
|
|
|
|
|
//foreach (Transform t in transform.Find("Rower/Dots"))
|
|
|
|
|
|
//{
|
|
|
|
|
|
// t.GetComponent<Image>().color = Utils.HexToColorHtml("#ffffff");
|
|
|
|
|
|
//}
|
|
|
|
|
|
//transform.Find($"Rower/Dots/{selDot}").GetComponent<Image>().color = Utils.HexToColorHtml("#f93086");
|
|
|
|
|
|
//scroll.DOLocalMoveX(x, 0.5f);
|
|
|
|
|
|
//PlayerPrefs.SetFloat("RowerMultiModeLocationX", x);
|
2022-03-10 18:10:34 +08:00
|
|
|
|
};
|
|
|
|
|
|
TouchKit.addGestureRecognizer(pan);
|
2022-03-31 18:30:07 +08:00
|
|
|
|
print("注册触摸事件");
|
|
|
|
|
|
}
|
|
|
|
|
|
private void OnDestroy()
|
|
|
|
|
|
{
|
|
|
|
|
|
TouchKit.removeAllGestureRecognizers();
|
2022-03-10 18:10:34 +08:00
|
|
|
|
}
|
|
|
|
|
|
//交换A,B索引的赛道
|
2022-04-11 17:24:36 +08:00
|
|
|
|
//void ChangeTrace(int indexA, int indexB)
|
|
|
|
|
|
//{
|
|
|
|
|
|
// if (indexA >= traceList.Count || indexB >= traceList.Count)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// return;
|
|
|
|
|
|
// }
|
|
|
|
|
|
// if (traceList.Count(x => x.trace.gameObject.activeInHierarchy) == 0) return;
|
|
|
|
|
|
// Trace a = traceList[indexA], b = traceList[indexB];
|
|
|
|
|
|
// //2个排名
|
|
|
|
|
|
// //先视觉交换
|
|
|
|
|
|
// float aniTime = 0.3f;
|
|
|
|
|
|
// Vector3 aloc = a.trace.localPosition;
|
|
|
|
|
|
// var sq = DOTween.Sequence();
|
|
|
|
|
|
// sq.Join(a.trace.DOLocalMoveY(b.trace.localPosition.y, aniTime));
|
|
|
|
|
|
// sq.Join(b.trace.DOLocalMoveY(aloc.y, aniTime));
|
|
|
|
|
|
// //逻辑交换
|
|
|
|
|
|
// var tmp = traceList[indexA];
|
|
|
|
|
|
// traceList[indexA] = traceList[indexB];
|
|
|
|
|
|
// traceList[indexB] = tmp;
|
2022-03-10 18:10:34 +08:00
|
|
|
|
|
2022-04-11 17:24:36 +08:00
|
|
|
|
// var sq1 = DOTween.Sequence();
|
|
|
|
|
|
// if (traceList.Count(x => x.trace.gameObject.activeInHierarchy) != 5) return;
|
|
|
|
|
|
// if (indexA == 1 && indexB == 2)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// for (int i = 0; i < 5; i++)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// if (i == 4)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// sq1.Join(traceList[i].trace.DOLocalMoveY(initialPosYList[4] - 50.4f, aniTime));
|
|
|
|
|
|
// }
|
|
|
|
|
|
// else
|
|
|
|
|
|
// {
|
|
|
|
|
|
// sq1.Join(traceList[i].trace.DOLocalMoveY(initialPosYList[i + 1], aniTime));
|
|
|
|
|
|
// }
|
|
|
|
|
|
// }
|
|
|
|
|
|
// sq1.AppendCallback(() =>
|
|
|
|
|
|
// {
|
|
|
|
|
|
// traceList[4].trace.localPosition = new Vector3(traceList[0].trace.localPosition.x, initialPosYList[0] + 49.5f, traceList[0].trace.localPosition.z);
|
|
|
|
|
|
// });
|
|
|
|
|
|
// sq1.Append(traceList[4].trace.DOLocalMoveY(initialPosYList[0], aniTime));
|
|
|
|
|
|
// sq.Append(sq1);
|
|
|
|
|
|
// sq.Play().onComplete = () =>
|
|
|
|
|
|
// {
|
|
|
|
|
|
// tmp = traceList[4];
|
|
|
|
|
|
// for (int i = 4; i >= 1; i--)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// traceList[i] = traceList[i - 1];
|
|
|
|
|
|
// }
|
|
|
|
|
|
// traceList[0] = tmp;
|
|
|
|
|
|
// };
|
|
|
|
|
|
// }
|
|
|
|
|
|
// else if (indexA == 2 && indexB == 3)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// for (int i = 0; i < 5; i++)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// if (i == 0)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// sq1.Join(traceList[i].trace.DOLocalMoveY(initialPosYList[0] + 50.4f, aniTime));
|
|
|
|
|
|
// }
|
|
|
|
|
|
// else
|
|
|
|
|
|
// {
|
|
|
|
|
|
// sq1.Join(traceList[i].trace.DOLocalMoveY(initialPosYList[i - 1], aniTime));
|
|
|
|
|
|
// }
|
|
|
|
|
|
// }
|
|
|
|
|
|
// sq1.AppendCallback(() =>
|
|
|
|
|
|
// {
|
|
|
|
|
|
// traceList[0].trace.localPosition = new Vector3(traceList[0].trace.localPosition.x, initialPosYList[4] - 49.5f, traceList[0].trace.localPosition.z);
|
|
|
|
|
|
// });
|
|
|
|
|
|
// sq1.Append(traceList[0].trace.DOLocalMoveY(initialPosYList[4], aniTime));
|
|
|
|
|
|
// sq.Append(sq1);
|
|
|
|
|
|
// sq.Play().onComplete = () =>
|
|
|
|
|
|
// {
|
|
|
|
|
|
// tmp = traceList[0];
|
|
|
|
|
|
// for (int i = 0; i < 4; i++)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// traceList[i] = traceList[i + 1];
|
|
|
|
|
|
// }
|
|
|
|
|
|
// traceList[4] = tmp;
|
|
|
|
|
|
// };
|
|
|
|
|
|
// }
|
|
|
|
|
|
//}
|
2022-03-10 18:10:34 +08:00
|
|
|
|
float timer = 1f;
|
|
|
|
|
|
int currentSecond = -1;
|
|
|
|
|
|
private List<CountryModel> countryList;
|
|
|
|
|
|
|
2022-03-28 17:42:23 +08:00
|
|
|
|
public RowerTaskPanel.RowerType rowerType { get; set; }
|
2022-04-27 14:48:06 +08:00
|
|
|
|
int _testdis = 0;
|
2022-03-10 18:10:34 +08:00
|
|
|
|
// Update is called once per frame
|
|
|
|
|
|
void Update()
|
|
|
|
|
|
{
|
|
|
|
|
|
#if UNITY_EDITOR
|
2022-05-09 13:18:14 +08:00
|
|
|
|
return;
|
2022-03-10 18:10:34 +08:00
|
|
|
|
timer -= Time.deltaTime;
|
|
|
|
|
|
if (timer < 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
//var r = new System.Random();
|
|
|
|
|
|
//int a = r.Next(1, 3);
|
|
|
|
|
|
//print($"{a},{a+1}");
|
|
|
|
|
|
//ChangeTrace(a, a+1);
|
2022-04-27 14:48:06 +08:00
|
|
|
|
_testdis += 5;
|
2022-03-10 18:10:34 +08:00
|
|
|
|
HandleTimeTick(new RowerChartModel()
|
|
|
|
|
|
{
|
2022-04-27 14:48:06 +08:00
|
|
|
|
Distance = _testdis,
|
2022-04-19 18:09:29 +08:00
|
|
|
|
Rate = 35,
|
2022-03-10 18:10:34 +08:00
|
|
|
|
});
|
|
|
|
|
|
timer += 1f;
|
|
|
|
|
|
}
|
|
|
|
|
|
#endif
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|