备份CatanBuilding瘦身独立工程
This commit is contained in:
112
Assets/Scripts/UI/Rank/EventLeadboardItem.cs
Normal file
112
Assets/Scripts/UI/Rank/EventLeadboardItem.cs
Normal file
@@ -0,0 +1,112 @@
|
||||
using asap.core;
|
||||
using game;
|
||||
using GameCore;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using TMPro;
|
||||
using UniRx;
|
||||
using UnityEngine;
|
||||
public class EventLeadboardItem : PanelItemBase<EventLeadboardItemData>
|
||||
{
|
||||
GameObject bg_myself;
|
||||
List<GameObject> rank = new List<GameObject>();
|
||||
TMP_Text text_rank;
|
||||
TMP_Text text_name;
|
||||
Head head;
|
||||
Transform reward_panel;
|
||||
RewardItem require_item;
|
||||
RewardItemNew[] rewardItems;
|
||||
string playFabId;
|
||||
IDisposable disposable;
|
||||
private void Awake()
|
||||
{
|
||||
disposable = GContext.OnEvent<GetClubPlayInfoEvent>().Where(x => x.id == playFabId).Subscribe(SetAvatar);
|
||||
bg_myself = transform.Find("bg_myself").gameObject;
|
||||
text_rank = transform.Find("rank/rank/text_rank").GetComponent<TMP_Text>();
|
||||
text_name = transform.Find("text_name").GetComponent<TMP_Text>();
|
||||
head = transform.Find("btn_head").GetComponent<Head>();
|
||||
reward_panel = transform.Find("reward_panel");
|
||||
rewardItems = reward_panel.GetComponentsInChildren<RewardItemNew>();
|
||||
require_item = transform.Find("icon_rank").GetComponent<RewardItem>();
|
||||
Transform rank_panel = transform.Find("rank");
|
||||
for (int i = 0; i < rank_panel.childCount; i++)
|
||||
{
|
||||
rank.Add(rank_panel.GetChild(i).gameObject);
|
||||
}
|
||||
}
|
||||
public override void OnInit()
|
||||
{
|
||||
if (bg_myself == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
playFabId = data.playFabId;
|
||||
bg_myself.SetActive(data.isMe);
|
||||
for (int i = 0; i < rank.Count - 1; i++)
|
||||
{
|
||||
rank[i].SetActive(data.rank == i + 1);
|
||||
}
|
||||
rank[^1].SetActive(data.rank >= rank.Count);
|
||||
text_rank.text = data.rank.ToString();
|
||||
require_item.SetData(data.value);
|
||||
require_item.text_num.text = ConvertTools.GetNumberString2((int)data.value.count);
|
||||
SetReward(data.itemDatas);
|
||||
IUserService userService = GContext.container.Resolve<IUserService>();
|
||||
if (data.playFabId == userService.UserId)
|
||||
{
|
||||
text_name.text = userService.DisplayName;
|
||||
head.SetData(userService.AvatarUrl);
|
||||
}
|
||||
else
|
||||
{
|
||||
PlayInfo clubPlayInfo = userService.GetPlayInfo(playFabId);
|
||||
SetAvatar(clubPlayInfo);
|
||||
}
|
||||
}
|
||||
public void SetAvatar(PlayInfo clubPlayInfo)
|
||||
{
|
||||
if (clubPlayInfo != null)
|
||||
{
|
||||
text_name.text = clubPlayInfo.name;
|
||||
head.SetData(clubPlayInfo.avatarUrl);
|
||||
}
|
||||
}
|
||||
void SetAvatar(GetClubPlayInfoEvent getClubPlayInfoEvent)
|
||||
{
|
||||
if (getClubPlayInfoEvent.id == playFabId)
|
||||
{
|
||||
text_name.text = getClubPlayInfoEvent.name;
|
||||
head.SetData(getClubPlayInfoEvent.avatarUrl);
|
||||
}
|
||||
}
|
||||
private void OnDestroy()
|
||||
{
|
||||
disposable?.Dispose();
|
||||
disposable = null;
|
||||
}
|
||||
public void SetReward(List<ItemData> itemDatas)
|
||||
{
|
||||
for (int i = 0; i < rewardItems.Length; i++)
|
||||
{
|
||||
if (i < itemDatas.Count)
|
||||
{
|
||||
rewardItems[i].gameObject.SetActive(true);
|
||||
rewardItems[i].SetData(itemDatas[i]);
|
||||
rewardItems[i].text_num.text = $"x{ConvertTools.GetNumberString((int)itemDatas[i].count)}";
|
||||
}
|
||||
else
|
||||
{
|
||||
rewardItems[i].gameObject.SetActive(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
public class EventLeadboardItemData
|
||||
{
|
||||
public int position;
|
||||
public long rank;
|
||||
public ItemData value;
|
||||
public string playFabId;
|
||||
public bool isMe;
|
||||
public List<ItemData> itemDatas;
|
||||
}
|
||||
11
Assets/Scripts/UI/Rank/EventLeadboardItem.cs.meta
Normal file
11
Assets/Scripts/UI/Rank/EventLeadboardItem.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3da9467621be7ba4caf55d6d98d94a5a
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
73
Assets/Scripts/UI/Rank/EventRankInfoPopup.cs
Normal file
73
Assets/Scripts/UI/Rank/EventRankInfoPopup.cs
Normal file
@@ -0,0 +1,73 @@
|
||||
using asap.core;
|
||||
using cfg;
|
||||
using GameCore;
|
||||
using System.Collections.Generic;
|
||||
using TMPro;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
public class EventRankInfoPopup : MonoBehaviour
|
||||
{
|
||||
PlayerData _playerData;
|
||||
List<TMP_Text> bankDrop;
|
||||
|
||||
List<TMP_Text> bombDrop;
|
||||
List<Image> requireIcon;
|
||||
Transform beilvpanel_max;
|
||||
Transform bg_beilvlpanel;
|
||||
TMP_Text text_beilvpanel_content;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
_playerData = GContext.container.Resolve<PlayerData>();
|
||||
bankDrop = new List<TMP_Text>();
|
||||
bombDrop = new List<TMP_Text>();
|
||||
bankDrop.Add(transform.Find("event2/p_icon_item1/text_num").GetComponent<TMP_Text>());
|
||||
bankDrop.Add(transform.Find("event2/p_icon_item2/text_num").GetComponent<TMP_Text>());
|
||||
bankDrop.Add(transform.Find("event2/p_icon_item3/text_num").GetComponent<TMP_Text>());
|
||||
bankDrop.Add(transform.Find("event2/p_icon_item4/text_num").GetComponent<TMP_Text>());
|
||||
bombDrop.Add(transform.Find("event1/p_icon_item1/text_num").GetComponent<TMP_Text>());
|
||||
bombDrop.Add(transform.Find("event1/p_icon_item2/text_num").GetComponent<TMP_Text>());
|
||||
bombDrop.Add(transform.Find("event1/p_icon_item3/text_num").GetComponent<TMP_Text>());
|
||||
requireIcon = new List<Image>();
|
||||
for (int i = 0; i < bankDrop.Count; i++)
|
||||
{
|
||||
requireIcon.Add(bankDrop[i].transform.Find("icon_target").GetComponent<Image>());
|
||||
}
|
||||
for (int i = 0; i < bombDrop.Count; i++)
|
||||
{
|
||||
requireIcon.Add(bombDrop[i].transform.Find("icon_target").GetComponent<Image>());
|
||||
}
|
||||
|
||||
beilvpanel_max = transform.Find("beilvpanel/bg_beilv_max").GetComponent<Transform>();
|
||||
bg_beilvlpanel = transform.Find("beilvpanel/bg_beilv").GetComponent<Transform>();
|
||||
text_beilvpanel_content = transform.Find("beilvpanel/bg_beilv/text_beilv").GetComponent<TMP_Text>();
|
||||
}
|
||||
public void Start()
|
||||
{
|
||||
var _fishingEventData = GContext.container.Resolve<FishingEventData>();
|
||||
if (_fishingEventData.rankTarget != null)
|
||||
{
|
||||
var _tables = GContext.container.Resolve<Tables>();
|
||||
Item item = _tables.TbItem[_fishingEventData.rankInit.TokenID];
|
||||
for (int i = 0; i < requireIcon.Count; i++)
|
||||
{
|
||||
GContext.container.Resolve<IUIService>().SetImageSprite(requireIcon[i], item.Icon, BasePanel.PanelName);
|
||||
}
|
||||
for (int i = 0; i < _fishingEventData.rankInit.PointRobbery.Count - 1; i++)
|
||||
{
|
||||
bankDrop[i].text = "+" + _fishingEventData.rankInit.PointRobbery[i];
|
||||
}
|
||||
for (int i = 0; i < bombDrop.Count; i++)
|
||||
{
|
||||
bombDrop[i].text = "+" + _fishingEventData.rankInit.PointDestruction[i];
|
||||
}
|
||||
}
|
||||
bool IsMax = _playerData.IsMaxMagnification();
|
||||
beilvpanel_max.gameObject.SetActive(IsMax);
|
||||
bg_beilvlpanel.gameObject.SetActive(!IsMax);
|
||||
text_beilvpanel_content.text = IsMax
|
||||
? "MAX"
|
||||
: $"x{_playerData.GetMagnification()}";
|
||||
}
|
||||
}
|
||||
11
Assets/Scripts/UI/Rank/EventRankInfoPopup.cs.meta
Normal file
11
Assets/Scripts/UI/Rank/EventRankInfoPopup.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3c1b14b716c78ce4a965e7a38a09486a
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
23
Assets/Scripts/UI/Rank/EventRankInfoPopupPanel.cs
Normal file
23
Assets/Scripts/UI/Rank/EventRankInfoPopupPanel.cs
Normal file
@@ -0,0 +1,23 @@
|
||||
using GameCore;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
public class EventRankInfoPopupPanel : MonoBehaviour
|
||||
{
|
||||
Button btn_close;
|
||||
Button btn_mask;
|
||||
private void Awake()
|
||||
{
|
||||
btn_close = transform.Find("btn_close").GetComponent<Button>();
|
||||
btn_mask = transform.Find("mask").GetComponent<Button>();
|
||||
}
|
||||
private void Start()
|
||||
{
|
||||
btn_close.onClick.AddListener(OnClose);
|
||||
btn_mask.onClick.AddListener(OnClose);
|
||||
}
|
||||
private void OnClose()
|
||||
{
|
||||
UIManager.Instance.DestroyUI(UITypes.EventRankInfoPopupPanel);
|
||||
}
|
||||
}
|
||||
11
Assets/Scripts/UI/Rank/EventRankInfoPopupPanel.cs.meta
Normal file
11
Assets/Scripts/UI/Rank/EventRankInfoPopupPanel.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 37d3dd9408fa8324a9741086e585931f
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
18
Assets/Scripts/UI/Rank/EventRankItem.cs
Normal file
18
Assets/Scripts/UI/Rank/EventRankItem.cs
Normal file
@@ -0,0 +1,18 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class EventRankItem : MonoBehaviour
|
||||
{
|
||||
// Start is called before the first frame update
|
||||
void Start()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
void Update()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
11
Assets/Scripts/UI/Rank/EventRankItem.cs.meta
Normal file
11
Assets/Scripts/UI/Rank/EventRankItem.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a393091aa26b4c949b556053ac62d4fb
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
561
Assets/Scripts/UI/Rank/EventRankPopupPanel.cs
Normal file
561
Assets/Scripts/UI/Rank/EventRankPopupPanel.cs
Normal file
@@ -0,0 +1,561 @@
|
||||
using asap.core;
|
||||
using cfg;
|
||||
using game;
|
||||
using GameCore;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using TMPro;
|
||||
using UniRx;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
public class EventRankPopupPanel : MonoBehaviour
|
||||
{
|
||||
CanvasGroup canvasGroup;
|
||||
FishingEventData _fishingEventData;
|
||||
LeadboardData _leadboardData;
|
||||
Tables _tables;
|
||||
Button btn_close;
|
||||
GameObject rewardPanel;
|
||||
Button get_reward;
|
||||
Button btn_mask;
|
||||
Image bg;
|
||||
Button btn_questionmark;
|
||||
Image bar;
|
||||
RewardItemNew require;
|
||||
TMP_Text text_info;
|
||||
GameObject text_complete;
|
||||
GameObject layout_reward;
|
||||
GameObject btn_reward;
|
||||
RewardItemNew reward1;
|
||||
RewardItemNew reward2;
|
||||
RewardItemNew reward;
|
||||
|
||||
TMP_Text text_title;
|
||||
TMP_Text text_time;
|
||||
GameObject text_end;
|
||||
Timer timer;
|
||||
GameObject rankRoot;
|
||||
PanelScroll scrollRect;
|
||||
Transform content;
|
||||
GameObject item;
|
||||
EventLeadboardItem selfItem;
|
||||
GameObject rank;
|
||||
GameObject bar_layout;
|
||||
GameObject unlock;
|
||||
GameObject toprank;
|
||||
TMP_Text text_unlock_conditions;
|
||||
|
||||
|
||||
RankTargets targetReward1;
|
||||
RankTargets targetReward2;
|
||||
RankTargets targetReward3;
|
||||
|
||||
ItemData itemData1;
|
||||
ItemData itemData2;
|
||||
ItemData itemData3;
|
||||
|
||||
int targetCount1;
|
||||
int targetCount2;
|
||||
int targetCount3;
|
||||
|
||||
List<BarItemTips> barItemTips = new List<BarItemTips>();
|
||||
|
||||
Image icon_unlock_conditions;
|
||||
bool isOpenRank;
|
||||
int curSelfRank;
|
||||
float itemHigh;
|
||||
List<EventLeadboardItemData> datas = new List<EventLeadboardItemData>();
|
||||
List<EventLeadboardItem> items = new List<EventLeadboardItem>();
|
||||
|
||||
protected CompositeDisposable disposables = new CompositeDisposable();
|
||||
|
||||
GameObject p_text;
|
||||
GameObject text_continue;
|
||||
|
||||
TMP_Text top_text_rank;
|
||||
Head top_icon_head;
|
||||
TMP_Text top_text_title;
|
||||
int SpecialShow = 20;
|
||||
|
||||
RewardItemNew[] top_reward1;
|
||||
|
||||
BgDownload bgDownload;
|
||||
private void Awake()
|
||||
{
|
||||
canvasGroup = GetComponent<CanvasGroup>();
|
||||
_fishingEventData = GContext.container.Resolve<FishingEventData>();
|
||||
_leadboardData = GContext.container.Resolve<LeadboardData>();
|
||||
btn_close = transform.Find("btn_close").GetComponent<Button>();
|
||||
rewardPanel = transform.Find("reward").gameObject;
|
||||
get_reward = transform.Find("reward/btn_play/btn_green").GetComponent<Button>();
|
||||
btn_mask = transform.Find("mask").GetComponent<Button>();
|
||||
btn_questionmark = transform.Find("root/rank/btn_questionmark").GetComponent<Button>();
|
||||
|
||||
bg = transform.Find("root/bg").GetComponent<Image>();
|
||||
|
||||
bar = transform.Find("root/bar_layout/bg_bar/bar").GetComponent<Image>();
|
||||
require = transform.Find("root/bar_layout/btn_icon/reward").GetComponent<RewardItemNew>();
|
||||
text_info = transform.Find("root/bar_layout/bg_info/text_info").GetComponent<TMP_Text>();
|
||||
layout_reward = transform.Find("root/bar_layout/bg_bar/layout_reward").gameObject;
|
||||
text_complete = transform.Find("root/bar_layout/bg_bar/text_complete").gameObject;
|
||||
reward1 = transform.Find("root/bar_layout/bg_bar/layout_reward/reward1").GetComponent<RewardItemNew>();
|
||||
reward2 = transform.Find("root/bar_layout/bg_bar/layout_reward/reward2").GetComponent<RewardItemNew>();
|
||||
btn_reward = transform.Find("root/bar_layout/btn_reward").gameObject;
|
||||
reward = transform.Find("root/bar_layout/btn_reward/reward").GetComponent<RewardItemNew>();
|
||||
|
||||
text_title = transform.Find("root/text_title").GetComponent<TMP_Text>();
|
||||
text_time = transform.Find("root/text_time").GetComponent<TMP_Text>();
|
||||
text_end = transform.Find("root/text_end").gameObject;
|
||||
rankRoot = transform.Find("root/rank").gameObject;
|
||||
scrollRect = transform.Find("root/rank/ScrollView").GetComponent<PanelScroll>();
|
||||
content = transform.Find("root/rank/ScrollView/Viewport/Content").GetComponent<Transform>();
|
||||
selfItem = transform.Find("root/rank/ScrollView/Viewport/Item").GetComponent<EventLeadboardItem>();
|
||||
item = transform.Find("root/rank/ScrollView/Viewport/Content/Item").gameObject;
|
||||
|
||||
rank = transform.Find("root/rank").gameObject;
|
||||
unlock = transform.Find("root/unlock").gameObject;
|
||||
toprank = transform.Find("root/toprank").gameObject;
|
||||
bar_layout = transform.Find("root/bar_layout").gameObject;
|
||||
|
||||
text_unlock_conditions = transform.Find("root/unlock/unlock_conditions/text_unlock_conditions").GetComponent<TMP_Text>();
|
||||
icon_unlock_conditions = transform.Find("root/unlock/unlock_conditions/text_unlock_conditions/icon").GetComponent<Image>();
|
||||
_tables = GContext.container.Resolve<Tables>();
|
||||
|
||||
barItemTips.Add(transform.Find("root/EventRankTips1").GetComponent<BarItemTips>());
|
||||
barItemTips.Add(transform.Find("root/EventRankTips2").GetComponent<BarItemTips>());
|
||||
barItemTips.Add(transform.Find("root/EventRankTips3").GetComponent<BarItemTips>());
|
||||
|
||||
p_text = transform.Find("reward/btn_play/btn_green/Ani_Container/p_text").gameObject;
|
||||
text_continue = transform.Find("reward/btn_play/btn_green/Ani_Container/text_continue").gameObject;
|
||||
|
||||
top_text_rank = transform.Find("root/toprank/text_rank").GetComponent<TMP_Text>();
|
||||
top_icon_head = transform.Find("root/toprank/btn_head").GetComponent<Head>();
|
||||
top_text_title = transform.Find("root/toprank/text_title").GetComponent<TMP_Text>();
|
||||
top_reward1 = transform.Find("root/toprank/reward_layout").GetComponentsInChildren<RewardItemNew>();
|
||||
bgDownload = transform.Find("root/download").GetComponent<BgDownload>();
|
||||
}
|
||||
protected void Start()
|
||||
{
|
||||
btn_close.onClick.AddListener(OnClose);
|
||||
btn_mask.onClick.AddListener(OnClose);
|
||||
btn_questionmark.OnClickAsObservable().Subscribe(async x =>
|
||||
{
|
||||
btn_questionmark.enabled = false;
|
||||
await UIManager.Instance.ShowUI(UITypes.EventRankInfoPopupPanel);
|
||||
btn_questionmark.enabled = true;
|
||||
}).AddTo(disposables);
|
||||
|
||||
item.SetActive(false);
|
||||
itemHigh = item.GetComponent<RectTransform>().rect.height;
|
||||
scrollRect.loop = false;
|
||||
get_reward.onClick.AddListener(OnClose);
|
||||
SetState();
|
||||
}
|
||||
void OnClickReward(int index)
|
||||
{
|
||||
barItemTips[index].gameObject.SetActive(true);
|
||||
}
|
||||
void SetState()
|
||||
{
|
||||
bool isShowReward = _leadboardData.rankItemDatas != null && _leadboardData.rankItemDatas.Count > 0;
|
||||
text_time.gameObject.SetActive(!isShowReward);
|
||||
btn_close.gameObject.SetActive(!isShowReward);
|
||||
text_end.SetActive(isShowReward);
|
||||
rewardPanel.SetActive(isShowReward);
|
||||
isOpenRank = _fishingEventData.IsOpenRank() || isShowReward;
|
||||
IsRank();
|
||||
if (isShowReward)
|
||||
{
|
||||
InitReward();
|
||||
}
|
||||
else
|
||||
{
|
||||
Init();
|
||||
reward1.btn_click.onClick.AddListener(() => OnClickReward(0));
|
||||
reward2.btn_click.onClick.AddListener(() => OnClickReward(1));
|
||||
reward.btn_click.onClick.AddListener(() => OnClickReward(2));
|
||||
}
|
||||
}
|
||||
void OnCloseToprank()
|
||||
{
|
||||
CurRewardQCount curRewardQCount = new CurRewardQCount();
|
||||
GContext.Publish(curRewardQCount);
|
||||
if (curRewardQCount.count > 0)
|
||||
{
|
||||
ShowReward();
|
||||
}
|
||||
else
|
||||
UIManager.Instance.DestroyUI(UITypes.EventRankPopupPanel);
|
||||
}
|
||||
void SetToprank(List<ItemData> itemDatas)
|
||||
{
|
||||
get_reward.onClick.RemoveAllListeners();
|
||||
btn_close.onClick.RemoveAllListeners();
|
||||
btn_mask.onClick.RemoveAllListeners();
|
||||
text_continue.SetActive(false);
|
||||
p_text.SetActive(true);
|
||||
rank.SetActive(false);
|
||||
bar_layout.SetActive(false);
|
||||
toprank.SetActive(true);
|
||||
top_text_rank.text = LocalizationMgr.GetFormatTextValue("UI_EventChallengeCrocodilePanel_9", selfItem.data.rank);
|
||||
top_text_title.text = LocalizationMgr.GetFormatTextValue("UI_EventRankPopupPanel_20", SpecialShow);
|
||||
top_icon_head.SetData(GContext.container.Resolve<IUserService>().AvatarUrl);
|
||||
for (int i = 0; i < top_reward1.Length; i++)
|
||||
{
|
||||
if (i < itemDatas.Count)
|
||||
{
|
||||
top_reward1[i].gameObject.SetActive(true);
|
||||
top_reward1[i].SetData(itemDatas[i]);
|
||||
//top_reward1[i].text_num.text = $"x{ConvertTools.GetNumberString((int)itemDatas[i].count)}";
|
||||
}
|
||||
else
|
||||
{
|
||||
top_reward1[i].gameObject.SetActive(false);
|
||||
}
|
||||
}
|
||||
get_reward.onClick.AddListener(OnCloseToprank);
|
||||
btn_mask.onClick.AddListener(OnCloseToprank);
|
||||
}
|
||||
private void OnClose()
|
||||
{
|
||||
if (_leadboardData.rankItemDatas != null && _leadboardData.rankItemDatas.Count > 0)
|
||||
{
|
||||
var fishingStage = GContext.container.ResolveStage("FishingStage") as FishingStage;
|
||||
//目标奖励活动获得的奖励
|
||||
fishingStage.NextToQueue(LeadboardData.NextQueueKey);
|
||||
CurRewardQCount curRewardQCount = new CurRewardQCount();
|
||||
GContext.Publish(curRewardQCount);
|
||||
if (curRewardQCount.count > 0)
|
||||
{
|
||||
GContext.OnEvent<RewardPanelClose>().Subscribe(x =>
|
||||
{
|
||||
UIManager.Instance.DestroyUI(UITypes.EventRankPopupPanel);
|
||||
}).AddTo(disposables);
|
||||
if (selfItem.data != null && selfItem.data.rank <= SpecialShow)
|
||||
{
|
||||
SetToprank(_leadboardData.rankItemDatas);
|
||||
}
|
||||
else
|
||||
{
|
||||
ShowReward();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
UIManager.Instance.DestroyUI(UITypes.EventRankPopupPanel);
|
||||
}
|
||||
_leadboardData.rankItemDatas = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
UIManager.Instance.DestroyUI(UITypes.EventRankPopupPanel);
|
||||
}
|
||||
}
|
||||
|
||||
void ShowReward()
|
||||
{
|
||||
GContext.Publish(new ShowData());
|
||||
canvasGroup.alpha = 0;
|
||||
}
|
||||
|
||||
void IsRank()
|
||||
{
|
||||
rankRoot.SetActive(isOpenRank);
|
||||
unlock.gameObject.SetActive(!isOpenRank);
|
||||
}
|
||||
|
||||
private void Init()
|
||||
{
|
||||
selfItem.gameObject.SetActive(false);
|
||||
RankTargets rankTarget = _fishingEventData.rankTarget;
|
||||
if (rankTarget != null)
|
||||
{
|
||||
SetReward(rankTarget, _fishingEventData.GetCurRankTarget(), _fishingEventData.rankInit);
|
||||
|
||||
SetEndTime();
|
||||
|
||||
if (isOpenRank)
|
||||
{
|
||||
GContext.OnEvent<EventRankData>().Subscribe(x =>
|
||||
{
|
||||
SetRankData();
|
||||
}).AddTo(disposables);
|
||||
SetRankData();
|
||||
}
|
||||
}
|
||||
}
|
||||
bool isLoading = false;
|
||||
async void LoadBg(string BgTitle)
|
||||
{
|
||||
isLoading = true;
|
||||
ShowLoad();
|
||||
await GContext.container.Resolve<IUIService>().SetImageSprite(bg, BgTitle, "HomePanel");
|
||||
if (isLoading)
|
||||
{
|
||||
bgDownload.OnLoadSucceed();
|
||||
}
|
||||
isLoading = false;
|
||||
}
|
||||
async void ShowLoad()
|
||||
{
|
||||
bgDownload.gameObject.SetActive(false);
|
||||
await Awaiters.Seconds(1);
|
||||
if (isLoading)
|
||||
{
|
||||
bgDownload.gameObject.SetActive(true);
|
||||
}
|
||||
}
|
||||
void SetReward(RankTargets rankTarget, int curCount, RankInit rankInit)
|
||||
{
|
||||
var tables = GContext.container.Resolve<Tables>();
|
||||
Item item = tables.TbItem[rankInit.TokenID];
|
||||
GContext.container.Resolve<IUIService>().SetImageSprite(icon_unlock_conditions, item.Icon, "HomePanel");
|
||||
text_unlock_conditions.text = LocalizationMgr.GetFormatTextValue("UI_EventRankPopupPanel_1", rankInit.UnlockPoint);
|
||||
LoadBg(rankInit.BgTitle);
|
||||
PlayerItemData playerItemData = GContext.container.Resolve<PlayerItemData>();
|
||||
text_title.text = LocalizationMgr.GetText(rankInit.Title_l10n_key);
|
||||
|
||||
require.SetData(item, isCanClick: true);
|
||||
require.text_num.gameObject.SetActive(false);
|
||||
var TargetList = rankInit.TargetList;
|
||||
int curIndex = TargetList.IndexOf(rankTarget.TaskID);
|
||||
text_info.text = LocalizationMgr.GetFormatTextValue("UI_EventRankPopupPanel_2", curIndex, TargetList.Count);
|
||||
|
||||
if (rankTarget.NextTarget <= 0)
|
||||
{
|
||||
if (curCount >= rankTarget.TokenRequired)
|
||||
{
|
||||
layout_reward.SetActive(false);
|
||||
text_complete.SetActive(true);
|
||||
btn_reward.SetActive(false);
|
||||
bar.fillAmount = 1;
|
||||
text_info.text = LocalizationMgr.GetFormatTextValue("UI_EventRankPopupPanel_2", TargetList.Count, TargetList.Count);
|
||||
return;
|
||||
}
|
||||
//最后一个
|
||||
targetReward1 = tables.TbRankTargets.GetOrDefault(TargetList[^3]);
|
||||
targetReward2 = tables.TbRankTargets.GetOrDefault(TargetList[^2]);
|
||||
bar.fillAmount = curCount / ((float)rankTarget.TokenRequired * 3) + 0.666f;
|
||||
}
|
||||
else if (rankTarget.TaskID == TargetList[0])
|
||||
{
|
||||
//第一个
|
||||
targetReward1 = rankTarget;
|
||||
targetReward2 = tables.TbRankTargets.GetOrDefault(rankTarget.NextTarget);
|
||||
bar.fillAmount = curCount / ((float)rankTarget.TokenRequired * 3);
|
||||
}
|
||||
else
|
||||
{
|
||||
targetReward1 = tables.TbRankTargets.GetOrDefault(TargetList[curIndex - 1]);
|
||||
targetReward2 = rankTarget;
|
||||
bar.fillAmount = curCount / ((float)rankTarget.TokenRequired * 3) + 0.333f;
|
||||
}
|
||||
itemData1 = playerItemData.GetItemDataOne(targetReward1.DropID);
|
||||
reward1.SetData(itemData1);
|
||||
itemData2 = playerItemData.GetItemDataOne(targetReward2.DropID);
|
||||
reward2.SetData(itemData2);
|
||||
|
||||
var maxCollectingTarget = tables.TbRankTargets.GetOrDefault(TargetList[^1]);
|
||||
targetReward3 = maxCollectingTarget;
|
||||
itemData3 = playerItemData.GetItemDataOne(maxCollectingTarget.DropID);
|
||||
reward.SetData(itemData3);
|
||||
|
||||
if (rankTarget.TaskID != TargetList[0])
|
||||
{
|
||||
reward1.SetReceived(true);
|
||||
reward1.btn_click.enabled = false;
|
||||
}
|
||||
if (rankTarget.NextTarget <= 0)
|
||||
{
|
||||
reward2.SetReceived(true);
|
||||
reward2.btn_click.enabled = false;
|
||||
}
|
||||
|
||||
//设置tips
|
||||
int targetCount = 0;
|
||||
for (int i = 0; i < TargetList.Count; i++)
|
||||
{
|
||||
var targetReward = tables.TbRankTargets.GetOrDefault(TargetList[i]);
|
||||
if (targetReward != null)
|
||||
{
|
||||
targetCount += targetReward.TokenRequired;
|
||||
}
|
||||
if (targetReward.TaskID == targetReward1.TaskID)
|
||||
{
|
||||
targetCount1 = targetCount;
|
||||
}
|
||||
if (targetReward.TaskID == targetReward2.TaskID)
|
||||
{
|
||||
targetCount2 = targetCount;
|
||||
}
|
||||
if (targetReward.TaskID == targetReward3.TaskID)
|
||||
{
|
||||
targetCount3 = targetCount;
|
||||
}
|
||||
}
|
||||
reward1.id = 0;
|
||||
reward2.id = 0;
|
||||
reward.id = 0;
|
||||
int allCount = _fishingEventData.GetAllRankTarget();
|
||||
barItemTips[0].Init(itemData1, item.Icon, targetCount1, allCount);
|
||||
barItemTips[1].Init(itemData2, item.Icon, targetCount2, allCount);
|
||||
barItemTips[2].Init(itemData3, item.Icon, targetCount3, allCount);
|
||||
}
|
||||
void InitReward()
|
||||
{
|
||||
selfItem.gameObject.SetActive(false);
|
||||
var rankTarget = _leadboardData.rankTarget;
|
||||
if (rankTarget != null)
|
||||
{
|
||||
SpecialShow = _leadboardData.lastEventRank.SpecialShow;
|
||||
SetReward(rankTarget, _leadboardData.lastScore, _leadboardData.lastEventRank);
|
||||
|
||||
var userService = GContext.container.Resolve<IUserService>();
|
||||
List<RankFormula> rankFormulas = _tables.TbRankFormula.DataList;
|
||||
List<int> rewardList = new List<int>();
|
||||
RewardData curEventRank = _leadboardData.eventRankReward;
|
||||
for (int i = 0; i < rankFormulas.Count; i++)
|
||||
{
|
||||
if (rankFormulas[i].RankTier == curEventRank.rankLevel)
|
||||
{
|
||||
rewardList = rankFormulas[i].RewardList;
|
||||
break;
|
||||
}
|
||||
}
|
||||
int rewardCount = rewardList.Count;
|
||||
curSelfRank = -1;
|
||||
for (int i = 0; i < curEventRank.ranks.Length; i++)
|
||||
{
|
||||
EventLeadboardItemData leadboardItemData = new EventLeadboardItemData();
|
||||
leadboardItemData.value = new ItemData
|
||||
{
|
||||
id = _leadboardData.lastEventRank.TokenID,
|
||||
count = Mathf.FloorToInt(curEventRank.ranks[i].score),
|
||||
};
|
||||
leadboardItemData.playFabId = curEventRank.ranks[i].id;
|
||||
leadboardItemData.isMe = curEventRank.ranks[i].isMe;
|
||||
leadboardItemData.rank = curEventRank.ranks[i].rank;
|
||||
if (rewardCount > i)
|
||||
{
|
||||
RankReward rankReward = _tables.TbRankReward.GetOrDefault(rewardList[i]);
|
||||
if (rankReward != null)
|
||||
{
|
||||
leadboardItemData.itemDatas = GContext.container.Resolve<PlayerItemData>().GetItemDataByDropId(rankReward.DropID);
|
||||
}
|
||||
}
|
||||
if (curEventRank.ranks[i].isMe)
|
||||
{
|
||||
curSelfRank = i;
|
||||
leadboardItemData.playFabId = userService.UserId;
|
||||
leadboardItemData.value.count = _leadboardData.lastAllScore;
|
||||
selfItem.data = leadboardItemData;
|
||||
selfItem.OnInit();
|
||||
text_continue.SetActive(leadboardItemData.rank <= SpecialShow);
|
||||
p_text.SetActive(leadboardItemData.rank > SpecialShow);
|
||||
}
|
||||
|
||||
datas.Add(leadboardItemData);
|
||||
}
|
||||
scrollRect.Init<EventLeadboardItem, EventLeadboardItemData>(itemHigh, item, null, datas);
|
||||
SetSelfItem();
|
||||
}
|
||||
}
|
||||
public void SetRankData()
|
||||
{
|
||||
if (isOpenRank)
|
||||
{
|
||||
if (GContext.container.Resolve<LeadboardData>().curEventRank == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
var userService = GContext.container.Resolve<IUserService>();
|
||||
GetLeaderboardsResp curEventRank = GContext.container.Resolve<LeadboardData>().curEventRank;
|
||||
List<RankFormula> rankFormulas = _tables.TbRankFormula.DataList;
|
||||
List<int> rewardList = new List<int>();
|
||||
for (int i = 0; i < rankFormulas.Count; i++)
|
||||
{
|
||||
if (rankFormulas[i].RankTier == curEventRank.rankLevel)
|
||||
{
|
||||
rewardList = rankFormulas[i].RewardList;
|
||||
break;
|
||||
}
|
||||
}
|
||||
int rewardCount = rewardList.Count;
|
||||
curSelfRank = -1;
|
||||
datas.Clear();
|
||||
for (int i = 0; i < curEventRank.data.Length; i++)
|
||||
{
|
||||
EventLeadboardItemData leadboardItemData = new EventLeadboardItemData();
|
||||
leadboardItemData.value = new ItemData
|
||||
{
|
||||
id = _fishingEventData.rankInit.TokenID,
|
||||
count = Mathf.FloorToInt(curEventRank.data[i].score),
|
||||
};
|
||||
leadboardItemData.playFabId = curEventRank.data[i].id;
|
||||
leadboardItemData.isMe = curEventRank.data[i].isMe;
|
||||
leadboardItemData.rank = curEventRank.data[i].rank;
|
||||
if (rewardCount > i)
|
||||
{
|
||||
RankReward rankReward = _tables.TbRankReward.GetOrDefault(rewardList[i]);
|
||||
if (rankReward != null)
|
||||
{
|
||||
leadboardItemData.itemDatas = GContext.container.Resolve<PlayerItemData>().GetItemDataByDropId(rankReward.DropID);
|
||||
}
|
||||
}
|
||||
if (curEventRank.data[i].isMe)
|
||||
{
|
||||
curSelfRank = i;
|
||||
leadboardItemData.playFabId = userService.UserId;
|
||||
leadboardItemData.value.count = _fishingEventData.GetAllRankTarget();
|
||||
selfItem.data = leadboardItemData;
|
||||
selfItem.OnInit();
|
||||
}
|
||||
datas.Add(leadboardItemData);
|
||||
}
|
||||
if (datas.Count < 2)
|
||||
{
|
||||
ToastPanel.Show(LocalizationMgr.GetText("UI_ToastPanel_107"));
|
||||
}
|
||||
scrollRect.Init<EventLeadboardItem, EventLeadboardItemData>(itemHigh, item, null, datas);
|
||||
SetSelfItem();
|
||||
}
|
||||
}
|
||||
|
||||
void SetSelfItem()
|
||||
{
|
||||
float selfPos = itemHigh * curSelfRank - scrollRect.viewport.rect.height + itemHigh;
|
||||
selfItem.gameObject.SetActive(scrollRect.content.anchoredPosition.y < selfPos && curSelfRank >= 0);
|
||||
if (curSelfRank >= 0)
|
||||
{
|
||||
scrollRect.onValueChanged.AddListener((Vector2 v2) =>
|
||||
{
|
||||
selfItem.gameObject.SetActive(scrollRect.content.anchoredPosition.y < selfPos);
|
||||
});
|
||||
}
|
||||
}
|
||||
void SetEndTime()
|
||||
{
|
||||
//显示倒计时
|
||||
if (timer == null)
|
||||
{
|
||||
DateTime endTime = _fishingEventData.GetRankEndTime();
|
||||
TimeSpan all = endTime - ZZTimeHelper.UtcNow().UtcNowOffset();
|
||||
double seconds = all.TotalSeconds;
|
||||
timer = this.AttachTimer((float)seconds,
|
||||
() => { UIManager.Instance.DestroyUI(UITypes.EventRankPopupPanel); },
|
||||
(elapsed) =>
|
||||
{
|
||||
TimeSpan now = endTime - ZZTimeHelper.UtcNow().UtcNowOffset();
|
||||
|
||||
text_time.text = ConvertTools.ConvertTime2(now.Days, now.Hours, now.Minutes, now.Seconds);
|
||||
}, useRealTime: true);
|
||||
}
|
||||
}
|
||||
private void OnDestroy()
|
||||
{
|
||||
disposables?.Dispose();
|
||||
disposables = null;
|
||||
isLoading = false;
|
||||
}
|
||||
}
|
||||
11
Assets/Scripts/UI/Rank/EventRankPopupPanel.cs.meta
Normal file
11
Assets/Scripts/UI/Rank/EventRankPopupPanel.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2620c8466a93e364198d3e1662b531dc
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Reference in New Issue
Block a user