using Assets.Scripts; using Assets.Scripts.Apis.Models; using Facebook.Unity; using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class RowerWelldone : PFUIPanel { [SerializeField] GameObject AllRecord, Record,Rank; Dictionary caches; Transform rankContent, gradeContent; private Action initFunc; public string id { get; private set; } public override void Show() { base.Show(); Debug.Log("well done show"); } // Start is called before the first frame update protected override void Awake() { caches = new Dictionary(); rankContent = transform.Find("Container/Left/Scroll View").GetComponent().content; gradeContent = transform.Find("Container/Right/Scroll View").GetComponent().content; } void Start() { UIManager.AddEvent(transform.Find("Container/BtnDefine").gameObject, UnityEngine.EventSystems.EventTriggerType.PointerClick, b => { CloseModal(); //UIManager.ShowHomePanel(); //UIManager.ShowUserInfoPanel(); }); UIManager.AddEvent(transform.Find("Container/BtnView").gameObject, UnityEngine.EventSystems.EventTriggerType.PointerClick, b => { CloseModal(); Application.OpenURL($"{App.websiteDict[App.Host]}rower/record/{id}?Token={App.CurrentUser.cookie}"); }); UIManager.AddEvent(transform.Find("Container/Share/Wx").gameObject, UnityEngine.EventSystems.EventTriggerType.PointerClick, b => { if (data == null) return; App.weChatController.ShareWebpageToWX(0, $"{App.websiteDict[App.Host]}rower/record/{id}?UserId={App.CurrentUser.Id}", $"PowerFun {data.info.TypeStr} Rowing", $"By {App.CurrentUser.Nickname}",null); }); UIManager.AddEvent(transform.Find("Container/Share/WxMoment").gameObject, UnityEngine.EventSystems.EventTriggerType.PointerClick, b => { if (data == null) return; App.weChatController.ShareWebpageToWX(1, $"{App.websiteDict[App.Host]}rower/record/{id}?UserId={App.CurrentUser.Id}", $"PowerFun {data.info.TypeStr} Rowing", $"By {App.CurrentUser.Nickname}", null); }); UIManager.AddEvent(transform.Find("Container/Share/Fb").gameObject, UnityEngine.EventSystems.EventTriggerType.PointerClick, b => { if (data == null) return; FB.ShareLink(contentURL: new Uri($"{App.websiteDict[App.Host]}rower/record/{id}?UserId={App.CurrentUser.Id}"), contentTitle: $"PowerFun {data.info.TypeStr} Rowing", contentDescription: $"By {App.CurrentUser.Nickname}"); //App.weChatController.ShareWebpageToWX(1, , , , null); }); } // Update is called once per frame void Update() { if (Input.touchCount > 0) { startTime = false; transform.Find("Container/BtnDefine/Text").GetComponent().text = $"{App.GetLocalString("DEFINE")}"; } if (startTime) { timer -= Time.deltaTime; if (timer <= 0) { remainTime--; if (remainTime == 0) { CloseModal(); return; } transform.Find("Container/BtnDefine/Text").GetComponent().text = $"{App.GetLocalString("DEFINE")}({remainTime.ToString("#0")})"; timer += 1f; } } } float timer = 1f, remainTime = 10f; bool startTime = false; RowerSegmentData data; public async void Initial(string id,Action init) { if (string.IsNullOrEmpty(id)) return; this.initFunc = init; this.id = id; var res = await ConfigHelper.rowerApi.GetSegmentDataAndRanking(id); if (res.result) { this.data = res.data; DisplayData(res.data, caches); startTime = true; remainTime = 30f; timer = 1f; transform.Find("Container/BtnDefine/Text").GetComponent().text = $"{App.GetLocalString("DEFINE")}({remainTime.ToString("#0")})"; } } private void DisplayData(RowerSegmentData data, Dictionary caches) { rankContent.DestroyChildren(); gradeContent.DestroyChildren(); for (int i = 0; i < data.ranks.Count; i++) { var item = data.ranks[i]; var game = Instantiate(Rank); game.transform.Find("Content/Rank").GetComponent().text = (i + 1).ToString("00"); game.transform.Find("Content/NickName").GetComponent().text = item.NickName; Utils.DisplayImageTempDict(game.transform.Find("Content/Avatar").GetComponent(), item.WxHeadImg, caches); game.transform.Find("Content/Time").GetComponent().text = data.info.Type == 1 ? TimeSpan.FromSeconds(item.Time).ToString(@"hh\:mm\:ss") : item.TotalDistance.ToString("#0M"); game.transform.SetParent(rankContent); game.transform.localScale = Vector3.one; game.SetActive(true); if (new Guid(item.Id) == new Guid(id)) { game.transform.Find("Content/Rank").GetComponent().color = Utils.HexToColorHtml("#f93086"); game.transform.Find("Content/NickName").GetComponent().color = Utils.HexToColorHtml("#f93086"); game.transform.Find("Content/Time").GetComponent().color = Utils.HexToColorHtml("#f93086"); } else { game.transform.Find("Content/Rank").GetComponent().color = Utils.HexToColorHtml("#ffffff"); game.transform.Find("Content/NickName").GetComponent().color = Utils.HexToColorHtml("#ffffff"); game.transform.Find("Content/Time").GetComponent().color = Utils.HexToColorHtml("#ffffff"); } } for (int i = 0; i < data.segmentList.Count; i++) { var item = data.segmentList[i]; var game = i == 0 ? Instantiate(AllRecord) : Instantiate(Record); var content = i != 0 ? game.transform.Find("Content") : game.transform; content.Find("Index").GetComponent().text = i == 0 ? "ALL" : i.ToString("00"); content.Find("Time").GetComponent().text = TimeSpan.FromSeconds(item.Ticks).ToString(); content.Find("Distance").GetComponent().text = item.Distance.ToString("#0"); content.Find("500").GetComponent().text = TimeSpan.FromSeconds(item.Speed).ToString(); content.Find("Power").GetComponent().text = item.Power.ToString("#0"); content.Find("HR").GetComponent().text = item.HeartRate.ToString("#0"); content.Find("Count").GetComponent().text = item.StrokeCount.ToString("#0"); content.Find("Carlories").GetComponent().text = item.Rate.ToString("#0"); //game.transform.Find("Content/Rank").GetComponent().text = (i + 1).ToString("00"); //game.transform.Find("Content/NickName").GetComponent().text = item.NickName; //Utils.DisplayImageTempDict(game.transform.Find("Content/Avatar").GetComponent(), item.WxHeadImg, caches); //game.transform.Find("Content/Time").GetComponent().text = data.info.Type == 1 ? TimeSpan.FromSeconds(item.Time).ToString() : item.TotalDistance.ToString("#0"); game.transform.SetParent(gradeContent); game.transform.localScale = Vector3.one; game.SetActive(true); } transform.Find("Container/Left/MyRank").GetComponent().text = data.info.MyRank; transform.Find("Container/Right/Time").GetComponent().text = data.info.CreateTime; } public void CloseModal() { startTime = false; if (initFunc != null) { initFunc.Invoke(); } Close(); } }