Files
RedHotRoast-ios/Assets/Scripts/ModuleUI/Rank/RankUI.cs
T
2026-04-22 09:52:55 +08:00

468 lines
17 KiB
C#

using System;
using System.Collections.Generic;
using DG.Tweening;
using FairyGUI;
using FGUI.P01_Common;
using FGUI.rank;
using UnityEngine;
namespace FlowerPower
{
public class RankUI : BaseUI
{
private RankUICtrl ctrl;
private RankModel model;
private FGUI.rank.com_rank_view ui;
public btn_watchAd btn_WatchAd;
List<UserData> users = new List<UserData>();
List<UserData> topThreeList = new List<UserData>();
rankType curType = rankType.hour;
int selfRank = 0;
float selfBonus = 0;
long countDownTime = 0;
bool newRound = false;
public RankUI(RankUICtrl ctrl) : base(ctrl)
{
uiName = UIConst.RankUI;
this.ctrl = ctrl;
}
protected override void SetUIInfo(UIInfo uiInfo)
{
uiInfo.packageName = "rank";
uiInfo.assetName = "com_rank_view";
uiInfo.layerType = UILayerType.Popup;
uiInfo.isNeedOpenAnim = false;
uiInfo.isNeedCloseAnim = false;
uiInfo.isNeedUIMask = true;
}
#region
protected override void OnInit()
{
}
protected override void OnClose()
{
HallManager.Instance.UpdateSecondEvent -= upTime;
RankSystemMgr.Instance.upRewardAndRank();
var data = SaveLocalData.GetSaveLocalObject().rankRewardData;
if (data.Count > 0 && !HallManager.Instance.isShowRankView) {
HallManager.Instance.isShowRankView = true;
uiCtrlDispatcher.Dispatch(UICtrlMsg.RankRewardUI_Open);
}
}
protected override void OnBind()
{
ui = baseUI as FGUI.rank.com_rank_view;
}
protected override void OnOpenBefore(object args)
{
if (Screen.safeArea.y != 0)
{
ui.group_top.y += 68;
}
NetworkKit.BuriedPoint(BuriedPointEvent.rank_event, BuriedPointEvent.rank_show, 1);
if (ConfigSystem.GetConfig<CommonModel>().PiggyBankSwitch == 1)
{
ui.mode.selectedIndex = 0;
ui.first_pot.mode.selectedIndex = 0;
ui.second_pot.mode.selectedIndex = 0;
ui.third_pot.mode.selectedIndex = 0;
ui.self_pot.mode.selectedIndex = 0;
}
else
{
ui.mode.selectedIndex = 1;
ui.first_pot.mode.selectedIndex = 1;
ui.second_pot.mode.selectedIndex = 1;
ui.third_pot.mode.selectedIndex = 1;
ui.self_pot.mode.selectedIndex = 1;
}
HallManager.Instance.UpdateSecondEvent += upTime;
InitView();
}
protected override void OnOpen(object args)
{
}
protected override void OnHide()
{
}
protected override void OnDisplay(object args)
{
}
#endregion
#region
protected override void AddListener()
{
GameDispatcher.Instance.AddListener(GameMsg.RefreshRedDot, RefreshRed);
GameDispatcher.Instance.AddListener(GameMsg.RefreshSaveingPot, RefreshSaveingPot);
GameDispatcher.Instance.AddListener(GameMsg.pack_close, RefreshRed);
}
protected override void RemoveListener()
{
GameDispatcher.Instance.RemoveListener(GameMsg.RefreshRedDot, RefreshRed);
GameDispatcher.Instance.RemoveListener(GameMsg.RefreshSaveingPot, RefreshSaveingPot);
GameDispatcher.Instance.RemoveListener(GameMsg.pack_close, RefreshRed);
}
#endregion
//初始化页面逻辑
private void InitView()
{
RankSystemMgr.Instance.upRewardAndRank();
users = RankSystemMgr.Instance.getRankData(rankType.hour);
SaveingPotHelper.TestingClearTime();
ui.lab_pot.text = $"{SaveData.GetSaveobject().saveingpot_ch:N}";
showRank(curType);
int addPoints = RankSystemMgr.Instance.getAddPoints();
if (addPoints > 0)
{
com_add_points add_Points = ui.add_points as com_add_points;
add_Points.visible = true;
add_Points.lab_addPoints.text = "+" + addPoints;
ui.t0.Play();
DOTween.To(() => SaveData.GetSaveobject().selfUser.hourPoints - addPoints, x =>
{
ui.self_points.lab_value.text = x.ToString();
}, SaveData.GetSaveobject().selfUser.hourPoints, 1);
}
ui.btn_close.SetClick(CtrlCloseUI);
ui.btn_task_tab.btn_hour.SetClick(() =>
{
ui.btn_task_tab.select.selectedIndex = 0;
showRank(rankType.hour);
});
ui.btn_task_tab.btn_day.SetClick(() =>
{
ui.btn_task_tab.select.selectedIndex = 1;
showRank(rankType.day);
});
ui.btn_task_tab.btn_week.SetClick(() =>
{
ui.btn_task_tab.select.selectedIndex = 2;
showRank(rankType.week);
});
ui.btn_rule.SetClick(() =>
{
UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.RankRuleUI_Open);
});
ui.btn_pot.SetClick(() =>
{
if (ConfigSystem.GetConfig<CommonModel>().PiggyBankSwitch == 1)
{
UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.SaveingPotUI_Open);
}
});
var data = SaveLocalData.GetSaveLocalObject().rankRewardData;
if (data.Count > 0)
{
uiCtrlDispatcher.Dispatch(UICtrlMsg.RankRewardUI_Open);
}
}
private void showRank(rankType type)
{
// RankSystemMgr.Instance.upRewardAndRank();
curType = type;
users = RankSystemMgr.Instance.getRankData(type);
topThreeList.Clear();
for (int i = 0; i < users.Count; i++)
{
if (users[i].uid == GameHelper.GetLoginModel().uid)
{
users[i].name = GameHelper.GetUserName();
users[i].headId = PreferencesMgr.Instance.PlayerAvatarId;
selfRank = i + 1;
selfBonus = users[i].bonus;
break;
}
}
if (users.Count >= 3)
{
topThreeList.AddRange(users.GetRange(0, 3));
users.RemoveRange(0, 3);
}
ui.list_rank.itemRenderer = refreshItem;
if (users.Count > 47)
{
ui.list_rank.numItems = 47;//users.Count;
}
else
{
ui.list_rank.numItems = users.Count;
}
showTopThree();
showTime();
showSelfInfo();
}
private void showTopThree()
{
for (int i = 0; i < topThreeList.Count; i++)
{
if (curType == rankType.hour)
{
if (i == 0)
{
ui.first_points.lab_value.text = topThreeList[i].hourPoints.ToString();
ui.first_pot.lab_value.text = topThreeList[i].bonus.ToString();
var head = ui.head_1 as btn_head;
TextureHelper.SetAvatarToLoader(topThreeList[i].headId, head.load_avatar);
ui.lab_name1.text = topThreeList[i].name;
}
else if (i == 1)
{
ui.second_points.lab_value.text = topThreeList[i].hourPoints.ToString();
ui.second_pot.lab_value.text = topThreeList[i].bonus.ToString();
var head = ui.head_2 as btn_head;
TextureHelper.SetAvatarToLoader(topThreeList[i].headId, head.load_avatar);
ui.lab_name2.text = topThreeList[i].name;
}
else if (i == 2)
{
ui.third_points.lab_value.text = topThreeList[i].hourPoints.ToString();
ui.third_pot.lab_value.text = topThreeList[i].bonus.ToString();
var head = ui.head_3 as btn_head;
TextureHelper.SetAvatarToLoader(topThreeList[i].headId, head.load_avatar);
ui.lab_name3.text = topThreeList[i].name;
}
}
else if (curType == rankType.day)
{
if (i == 0)
{
ui.first_points.lab_value.text = topThreeList[i].dayPoints.ToString();
ui.first_pot.lab_value.text = topThreeList[i].bonus.ToString();
var head = ui.head_1 as btn_head;
TextureHelper.SetAvatarToLoader(topThreeList[i].headId, head.load_avatar);
ui.lab_name1.text = topThreeList[i].name;
}
else if (i == 1)
{
ui.second_points.lab_value.text = topThreeList[i].dayPoints.ToString();
ui.second_pot.lab_value.text = topThreeList[i].bonus.ToString();
var head = ui.head_2 as btn_head;
TextureHelper.SetAvatarToLoader(topThreeList[i].headId, head.load_avatar);
ui.lab_name2.text = topThreeList[i].name;
}
else if (i == 2)
{
ui.third_points.lab_value.text = topThreeList[i].dayPoints.ToString();
ui.third_pot.lab_value.text = topThreeList[i].bonus.ToString();
var head = ui.head_3 as btn_head;
TextureHelper.SetAvatarToLoader(topThreeList[i].headId, head.load_avatar);
ui.lab_name3.text = topThreeList[i].name;
}
}
else if (curType == rankType.week)
{
if (i == 0)
{
ui.first_points.lab_value.text = topThreeList[i].weekPoints.ToString();
ui.first_pot.lab_value.text = topThreeList[i].bonus.ToString();
var head = ui.head_1 as btn_head;
TextureHelper.SetAvatarToLoader(topThreeList[i].headId, head.load_avatar);
ui.lab_name1.text = topThreeList[i].name;
}
else if (i == 1)
{
ui.second_points.lab_value.text = topThreeList[i].weekPoints.ToString();
ui.second_pot.lab_value.text = topThreeList[i].bonus.ToString();
var head = ui.head_2 as btn_head;
TextureHelper.SetAvatarToLoader(topThreeList[i].headId, head.load_avatar);
ui.lab_name2.text = topThreeList[i].name;
}
else if (i == 2)
{
ui.third_points.lab_value.text = topThreeList[i].weekPoints.ToString();
ui.third_pot.lab_value.text = topThreeList[i].bonus.ToString();
var head = ui.head_3 as btn_head;
TextureHelper.SetAvatarToLoader(topThreeList[i].headId, head.load_avatar);
ui.lab_name3.text = topThreeList[i].name;
}
}
}
}
private void refreshItem(int index, GObject obj)
{
rank_item item = (rank_item)obj;
if (ConfigSystem.GetConfig<CommonModel>().PiggyBankSwitch == 1)
{
item.mode.selectedIndex = 0;
}
else
{
item.mode.selectedIndex = 1;
}
item.lab_rank.text = (index + 4).ToString();
item.lab_name.text = users[index].name;
if (curType == rankType.hour)
{
item.lab_points.text = users[index].hourPoints.ToString();
}
else if (curType == rankType.day)
{
item.lab_points.text = users[index].dayPoints.ToString();
}
else if (curType == rankType.week)
{
item.lab_points.text = users[index].weekPoints.ToString();
}
item.lab_pot.text = users[index].bonus.ToString();
var imgHead = item.btn_head as btn_head;
TextureHelper.SetAvatarToLoader(users[index].headId, imgHead.load_avatar);
}
private void showSelfInfo()
{
if (selfRank > 99)
{
ui.lab_rank.text = "99+";
}
else
{
ui.lab_rank.text = selfRank.ToString();
}
var head = ui.btn_head as btn_head;
GameHelper.SetSelfAvatar(head.load_avatar);
if (curType == rankType.hour)
{
ui.self_points.lab_value.text = SaveData.GetSaveobject().selfUser.hourPoints.ToString();
}
else if (curType == rankType.day)
{
ui.self_points.lab_value.text = SaveData.GetSaveobject().selfUser.dayPoints.ToString();
}
else if (curType == rankType.week)
{
ui.self_points.lab_value.text = SaveData.GetSaveobject().selfUser.weekPoints.ToString();
}
ui.self_pot.lab_value.text = $"{selfBonus:N}";
ui.lab_name.text = GameHelper.GetUserName();
}
private void showTime()
{
long curTime = GameHelper.GetNowTime();
DateTime utcTime = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddSeconds(curTime);
DateTime curLocalTime = utcTime.ToLocalTime();
int year = curLocalTime.Year;
int month = curLocalTime.Month;
int day = curLocalTime.Day;
int hour = curLocalTime.Hour;
int minute = curLocalTime.Minute;
int sec = curLocalTime.Second;
DayOfWeek dayOfWeek = curLocalTime.DayOfWeek;
int round = hour / ConfigSystem.GetConfig<CommonModel>().HourTime;
string curHM = $"{hour:D2}:{minute:D2}:{sec:D2}";
if (newRound)
{
curHM = $"{hour:D2}:{minute:D2}:00";
}
DateTime dt1 = DateTime.Parse(curHM);
if (curType == rankType.hour)
{
int endHour = (round + 1) * ConfigSystem.GetConfig<CommonModel>().HourTime;
string endHM = $"{endHour:D2}:00:00";
if (endHour >= 24)
{
endHM = "23:59:59";
}
DateTime dt2 = DateTime.Parse(endHM);
TimeSpan difference = dt2 - dt1;
countDownTime = (long)difference.TotalSeconds - 1;
ui.lab_time.text = CommonHelper.TimeFormat((int)countDownTime, CountDownType.Hour);
}
else if (curType == rankType.day)
{
string endHM = "23:59:59";
DateTime dt2 = DateTime.Parse(endHM);
TimeSpan difference = dt2 - dt1;
countDownTime = (long)difference.TotalSeconds - 1;
ui.lab_time.text = CommonHelper.TimeFormat((int)countDownTime, CountDownType.Hour);
}
else if (curType == rankType.week)
{
// 获取本周日 23:59:59
DateTime targetTime = RankSystemMgr.Instance.GetThisWeekdayTime(curLocalTime, DayOfWeek.Sunday, 23, 59, 59);
TimeSpan difference = targetTime - curLocalTime;
countDownTime = (long)difference.TotalSeconds - 1;
ui.lab_time.text = CommonHelper.TimeFormat((int)countDownTime, CountDownType.Day, "D");
}
}
private void upTime()
{
if (countDownTime < 0)
{
newRound = true;
InitView();
return;
}
countDownTime--;
if (curType == rankType.hour)
{
ui.lab_time.text = CommonHelper.TimeFormat((int)countDownTime, CountDownType.Hour);
}
else if (curType == rankType.day)
{
ui.lab_time.text = CommonHelper.TimeFormat((int)countDownTime, CountDownType.Hour);
}
else if (curType == rankType.week)
{
ui.lab_time.text = CommonHelper.TimeFormat((int)countDownTime, CountDownType.Day, "D");
}
}
private void RefreshRed(object isShow = null)
{
SaveingPotHelper.TestingClearTime();
ui.lab_pot.text = $"{SaveData.GetSaveobject().saveingpot_ch:N}";
InitView();
}
private void RefreshSaveingPot(object isShow = null)
{
ui.lab_pot.text = $"{SaveData.GetSaveobject().saveingpot_ch:N}";
}
}
}