402 lines
16 KiB
C#

using Assets.Scenes.Ride.Scripts;
using Assets.Scripts;
using Assets.Scripts.Apis;
using Assets.Scripts.Apis.Models;
using Assets.Scripts.UI.Control;
using DG.Tweening;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Threading.Tasks;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.EventSystems;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class HomeController : PFUIPanel
{
//[SerializeField] Text Ftp;
//[SerializeField] RawImage Avatar;
//[SerializeField] Text Weight;
//[SerializeField] Text WKG;
//[SerializeField] Text Calories;
//[SerializeField] Text KM;
//[SerializeField] Text Climb;
//[SerializeField] Text NickName;
//[SerializeField] Button More;
[SerializeField] Button BtnRide;
[SerializeField] Transform userInfo;
Transform BtnMatch, BtnTraining;
private MainNav mainNav;
private Dictionary<string, Sprite[]> dict;
// Start is called before the first frame update
protected override void Start()
{
base.Start();
UIManager.AddEvent(transform.Find("TodayData/Avatar").gameObject, EventTriggerType.PointerClick, b =>
{
UIManager.ShowUserInfoPanel();
});
#if UNITY_ANDROID || UNITY_IOS
var nav = transform.Find("MainNav-mobile").GetComponent<NewMainNav>();
nav.SetButtonActive(new List<int> { 1, 3, 4, 6 },null,new NewMainNav.CustomButton(Resources.Load<Sprite>("Images/RowerNew/ICON_mode_44"), () =>
{
UIManager.ShowRowerSelector();
},false));
newNav = nav;
UIManager.AddEvent(transform.Find("TodayData/Datas/Distance").gameObject, EventTriggerType.PointerClick, b =>
{
UIManager.ShowResultListPanel();
});
#else
UIManager.AddEvent(transform.Find("TodayData/Datas/Distance").gameObject, EventTriggerType.PointerClick, b =>
{
UIManager.ShowUserInfoPanel();
});
mainNav = this.transform.Find("MainNav").GetComponent<MainNav>();
mainNav.ShowExit();
#endif
var BtnContainer = transform.Find("MainFuncContainer");
UIManager.AddEvent(BtnRide.gameObject, EventTriggerType.PointerClick, GoRide);
UIManager.AddEvent(BtnRide.gameObject, EventTriggerType.PointerEnter, OnHover);
UIManager.AddEvent(BtnRide.gameObject, EventTriggerType.PointerExit, OnExit);
BtnMatch = BtnContainer.Find("BtnMatch");
//BtnMatch.GetComponent<Button>().onClick.AddListener(() =>
//{
// Debug.Log(45);
//});
UIManager.AddEvent(BtnMatch.gameObject, EventTriggerType.PointerClick, GoMatch);
UIManager.AddEvent(BtnMatch.gameObject, EventTriggerType.PointerEnter, OnHover);
UIManager.AddEvent(BtnMatch.gameObject, EventTriggerType.PointerExit, OnExit);
BtnTraining = BtnContainer.Find("BtnTraining");
UIManager.AddEvent(BtnTraining.gameObject, EventTriggerType.PointerClick, (e) =>
{
Debug.Log(Application.platform);
goTraining(e);
});
UIManager.AddEvent(BtnTraining.gameObject, EventTriggerType.PointerEnter, OnHover);
UIManager.AddEvent(BtnTraining.gameObject, EventTriggerType.PointerExit, OnExit);
var avatar = userInfo.Find("Avatar").GetComponent<RawImage>();
var rect = ((RectTransform)avatar.transform).rect;
SetRounded(avatar.transform, rect.height);
UIManager.AddEvent(avatar.gameObject, EventTriggerType.PointerClick, x =>
{
UIManager.ShowUserInfoPanel();
});
UIManager.AddEvent(userInfo.Find("BtnMore").gameObject, EventTriggerType.PointerClick, x =>
{
UIManager.ShowUserInfoPanel();
//UIManager.ShowConfirm("Quit", "Do you want to quit PowerFun?", null);
});
if (transform.Find("Other/BtnRower"))
{
UIManager.AddEvent(transform.Find("Other/BtnRower").gameObject, EventTriggerType.PointerClick, b =>
{
UIManager.ShowRowerPanel();
});
}
//GetSummary();
dict = new Dictionary<string, Sprite[]>
{
//{
// "BtnMatch",new Sprite[]
// {
// Resources.Load<Sprite>("Images/home/Entrance - MATCH_soon"),
// Resources.Load<Sprite>("Images/home/Entrance - MATCH_soon_hover"),
// }
//},
//{
// "BtnTraining",new Sprite[]
// {
// Resources.Load<Sprite>("Images/home/Entrance - TRAINING_soon"),
// Resources.Load<Sprite>("Images/home/Entrance - TRAINING_soon_hover"),
// }
//},
};
}
private void GoRide(BaseEventData e)
{
Debug.Log(App.firstEnter.ToString());
//UIManager.ShowEarthPanel(App.latitude, App.longitude);
#if UNITY_ANDROID || UNITY_IOS
UIManager.ShowNewRouteOverviewPanel();
#else
if (App.firstEnter == 0)
{
App.firstEnter = 1;
UIManager.ShowEarthPanel(App.latitude, App.longitude);
}
else
{
UIManager.ShowNewRouteOverviewPanel();
}
#endif
OnExit(e);
}
void goTraining(BaseEventData e)
{
#if !(UNITY_IOS || UNITY_ANDROID)
var path = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\PowerFun\Rhino.PowerFun.exe";
//Debug.Log(System.IO.File.Exists(path + ));
if (!System.IO.File.Exists(path))
{
//TODO: auto update
UIManager.ShowDownloadWorkoutsPanel();
//Application.OpenURL("https://powerfun.oss-cn-shanghai.aliyuncs.com/Releases/PowerFunWorkouts.exe");
return;
}
UIManager.ShowConfirm("Switch to PowerFun Workouts?", "We will close the Powerfun and start PowerFun Workouts.", () =>
{
Utils.ExecFile(path);
Application.Quit();
});
#else
if (App.weChatController.isApplicationAvilible("com.zhixingpai.powerfun", "powerfun"))
{
UIManager.ShowConfirm("Switch to PowerFun Workouts?", "We will close the Powerfun and start PowerFun Workouts.", () =>
{
UIManager.CloseConfirm();
Application.OpenURL("powerfun://app");
Application.Quit();
});
}
else
{
UIManager.ShowConfirm("Workouts not installed", "Go to the official website to download?", () =>
{
UIManager.CloseConfirm();
Application.OpenURL(App.WorkoutsUrl);
});
}
#endif
}
//进入比赛
private void GoMatch(BaseEventData e)
{
UIManager.ShowRaceHomePanel();
OnExit(e);
}
private void OnHover(BaseEventData e)
{
var pe = (PointerEventData)e;
var parent = pe.pointerEnter.transform.parent;
if (dict.ContainsKey(parent.name))
{
parent.Find("Image").GetComponent<Image>().sprite = dict[parent.name][1];
}
//parent.Find("Image").GetComponent<Image>().sprite = Resources.Load<Sprite>("Images/home/Entrance - ROUTES_hover");
//parent.Find("Text").GetComponent<Text>().color = Utils.HexToColorHtml("#ffffff");
parent.DOScale(new Vector3(1.05f, 1.05f, 0), 0.3f);
//parent.GetComponent<RectTransform>().localScale = ;
}
private void OnExit(BaseEventData e)
{
var pe = (PointerEventData)e;
var parent = pe.pointerEnter.transform.parent;
//parent.Find("Image").GetComponent<Image>().sprite = Resources.Load<Sprite>("Images/home/Entrance - ROUTES_nomal");
//parent.Find("Text").GetComponent<Text>().color = Utils.HexToColorHtml("#5C5C6E");
if (dict.ContainsKey(parent.name))
{
parent.Find("Image").GetComponent<Image>().sprite = dict[parent.name][0];
}
parent.DOScale(new Vector3(1f, 1f, 0), 0.3f);
//parent.GetComponent<RectTransform>().localScale = new Vector3(1f, 1f, 0);
}
void MoreFunc()
{
//Utils.showToast(gameObject, "更多信息", 1);
//DOTween.ToAlpha(() => )
}
void SetCurrentUser(SummaryResultModel summary)
{
userInfo.Find("NickName").GetComponent<Text>().text = App.CurrentUser.Nickname;
userInfo.Find("GroupTop").Find("FtpContainer").Find("FtpValue").GetComponent<Text>().text = App.CurrentUser.FTP.ToString();
userInfo.Find("GroupTop").Find("WeightContainer").Find("WeightValue").GetComponent<Text>().text = App.CurrentUser.Weight.ToString();
userInfo.Find("GroupTop").Find("WKGContainer").Find("WKGValue").GetComponent<Text>().text = $"{ (App.CurrentUser.FTP/ App.CurrentUser.Weight).ToString("0.0") }";
userInfo.Find("IDText").GetComponent<Text>().text = "ID:" + App.CurrentUser.Id.ToString("000000");
if (!string.IsNullOrWhiteSpace(App.CurrentUser.Unionid))
{
userInfo.Find("Wx").GetComponent<Image>().sprite = Resources.Load<Sprite>("Images/Wechat_person_1");
}
if (App.CurrentUser.Sex == 2)
{
userInfo.Find("SexIcon").GetComponent<Image>().sprite = Resources.Load<Sprite>("Images/woman");
}
else
{
userInfo.Find("SexIcon").GetComponent<Image>().sprite = Resources.Load<Sprite>("Images/man");
}
Utils.DisplayHead(userInfo.Find("Avatar").GetComponent<RawImage>(), App.CurrentUser.WxHeadImg);
userInfo.Find("Country").GetComponent<RawImage>().texture = UIManager.Instance.loginRegOptions.GetCountryImageByName(App.CurrentUser.Country);
userInfo.Find("CaloriesContainer").Find("CaloriesValue").GetComponent<Text>().text = double.Parse(summary.Kcal,CultureInfo.InvariantCulture).ToString("0") +" KCAL";
userInfo.Find("KMContainer").Find("KMValue").GetComponent<Text>().text = summary.TotalDistance.ToString("0") +" KM";
userInfo.Find("ClimbContainer").Find("ClimbValue").GetComponent<Text>().text = double.Parse(summary.TotalClimb,CultureInfo.InvariantCulture).ToString("0") + " M";
userInfo.Find("GroupTop").Find("FtpContainer").Find("FtpTime").GetComponent<Text>().text = App.CurrentUser.LastUpdateFtpTime.ToString("dd.MM.yyyy");
userInfo.Find("GroupTop").Find("WeightContainer").Find("WeightTime").GetComponent<Text>().text = App.CurrentUser.LastUpdateWeightTime.ToString("dd.MM.yyyy");
userInfo.Find("GroupTop").Find("WKGContainer").Find("WKGTime").GetComponent<Text>().text =
DateTime.Compare(App.CurrentUser.LastUpdateFtpTime, App.CurrentUser.LastUpdateWeightTime)>0
? App.CurrentUser.LastUpdateFtpTime.ToString("dd.MM.yyyy")
: App.CurrentUser.LastUpdateWeightTime.ToString("dd.MM.yyyy");
//新版设计稿
var todayData = transform.Find("TodayData");
if (todayData)
{
Utils.DisplayHead(todayData.Find("Avatar").GetComponent<RawImage>(), App.CurrentUser.WxHeadImg);
todayData.Find("Datas/Distance/Value").GetComponent<Text>().text = $"{summary.ContinuesDay}"+ (summary.ContinuesDay > 1 ? App.GetLocalString("DAYS") : App.GetLocalString("DAY"));
todayData.Find("Datas/Climb/Value").GetComponent<Text>().text = $"{summary.ContinuesKm.ToString("#0.0")}";//$"{double.Parse(summary.TotalClimb, CultureInfo.InvariantCulture).ToString("0")}M";
todayData.Find("Datas/Carlories/Value").GetComponent<Text>().text = $"{summary.ContinuesKcal.ToString("#0")}";
//todayData.Find("Datas/Distance/Rank").GetComponent<Text>().text = summary.CurrentTotalDistance == 0 ? "——" : $"+{summary.CurrentTotalDistance.ToString("#0")}";
todayData.Find("Datas/Climb/Rank").GetComponent<Text>().text = summary.CurrentTotalDistance == 0 ? "——" : $"+{summary.CurrentTotalDistance.ToString("#0.0")}";
todayData.Find("Datas/Carlories/Rank").GetComponent<Text>().text = summary.CurrentTotalKcal == 0 ? "——" : $"+{summary.CurrentTotalKcal.ToString("#0")}";
#if UNITY_STANDALONE_WIN
//todayData.Find("NickName").GetComponent<Text>().text = App.CurrentUser.Nickname;
//todayData.Find("ID").GetComponent<Text>().text = $"ID:{App.CurrentUser.Id.ToString("000000")}";
#endif
}
}
async void GetSummary()
{
var res = await ConfigHelper.userApi.GetSummary();
if (res.result)
{
//App.CurrentUser.Distance = res.data.TotalDistance;
//App.CurrentUser.Climb = res.data.TotalClimb;
//App.CurrentUser.Carlories = res.data.Kcal;
SetCurrentUser(res.data);
//Climb.text = $"{res.data.TotalClimb.ToString()}M";
//Calories.text = $"{res.data.Kcal.ToString()}KCAL";
//Calories.text = res.data.
}
else
{
Utils.showToast(gameObject, res.errMsg);
}
//var res = await NoAuthApi.GetCurrentUser();
//if (res.result)
//{
// Global.CurrentUser = res.data;
// SetCurrentUser();
//}
//else
//{
// Utils.showToast(gameObject, res.errMsg);
//}
}
float maxt = 0f; //用于获取全服最值内容
// Update is called once per frame
void Update()
{
maxt -= Time.deltaTime;
if (maxt <= 0)
{
GetMaxRanking();
maxt += 60f * 5;
}
if (maxdataTime > 0)
{
maxdataTime -= Time.deltaTime;
}
else if (maxdataTime < 0)
{
DORotateMaxData();
maxdataTime += 10f;
}
}
private async void GetMaxRanking()
{
var res = await ConfigHelper.mapApi.GetMaxRanking();
if (res.result)
{
maxList = res.data;
if (maxList.Count > 0)
{
maxdataTime = 3;
maxdataIndex = 0;
SetMessage(maxList[maxdataIndex++]);
//Transform p = transform.Find("MaxRankingData/Power"),
//d = transform.Find("MaxRankingData/Distance"),
//c = transform.Find("MaxRankingData/Climb");
//Utils.DisplayHead(p.Find("Avatar").GetComponent<RawImage>(), list[1].WxHeadImg);
//Utils.DisplayHead(d.Find("Avatar").GetComponent<RawImage>(), list[0].WxHeadImg);
//Utils.DisplayHead(c.Find("Avatar").GetComponent<RawImage>(), list[2].WxHeadImg);
//p.Find("NickName").GetComponent<Text>().text = list[1].NickName;
//d.Find("NickName").GetComponent<Text>().text = list[0].NickName;
//c.Find("NickName").GetComponent<Text>().text = list[2].NickName;
}
else
{
transform.Find("MaxRankingData").gameObject.SetActive(false);
}
}
}
int maxdataIndex = 0;
float maxdataTime = 0;
private List<MapMaxRanking> maxList;
private void DORotateMaxData()
{
var t = transform.Find("MaxRankingData");
var se = DOTween.Sequence();
var s1 = t.DORotate(new Vector3(-90, 0, 0), 0.5f);
s1.onComplete = () =>
{
SetMessage(maxList[(maxdataIndex++) % maxList.Count]);
};
se.Append(s1);
se.Append(t.DORotate(Vector3.zero, 0.5f));
}
void SetMessage(MapMaxRanking e)
{
var m = transform.Find("MaxRankingData");
Utils.DisplayHead(m.transform.Find("Avatar").GetComponent<RawImage>(), e.WxHeadImg);
m.transform.Find("Nickname").GetComponent<Text>().text = e.NickName;
var txt = m.transform.Find("TextContainer/Content").GetComponent<RectTransform>();
txt.GetComponent<Text>().text = e.Message;
LayoutRebuilder.ForceRebuildLayoutImmediate(txt);
m.GetComponent<HomeMessageController>().Initial(txt.sizeDelta.x);
}
public override void Show()
{
base.Show();
transform.MyDOFade();
GetSummary();
#if UNITY_STANDALONE_WIN
GetNotify();
#endif
//transform.Find("Panel (1)").GetComponent<test>().startPage();
}
private async Task GetNotify()
{
var r = await ConfigHelper.userApi.GetNotify();
if (r.result)
{
var lm = transform.Find("LongMessage");
if (r.data.Value<int>("Id") > 1)
{
lm.gameObject.SetActive(true);
lm.GetComponent<LongMessageScript>().Initial(r.data["Content"].ToString().Replace("\r\n"," "));
}
else
{
lm.gameObject.SetActive(false);
}
}
}
}