Files
JJBB/Assets/Project/Script/GUI/StroyCopy/FinishTheCopyResultPanelCtr.cs
2024-08-23 15:49:34 +08:00

320 lines
9.2 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System.Collections.Generic;
using GCGame.Table;
using Games.Mission;
using Games.Item;
public class FinishTheCopyResultPanelCtr : MonoBehaviour {
public static FinishTheCopyResultPanelCtr Instance;
private void Awake()
{
Instance = this;
}
private void OnDestroy()
{
Instance = null;
}
private void OnEnable()
{
canClose = false;
StopAllCoroutines();
StartCoroutine("CountTime");
}
private IEnumerator CountTime()
{
yield return new WaitForSeconds(1.0f);
canClose = true;
}
public GameObject SimpleWnd;
public GameObject winPanel;
public GameObject defeatPanel;
public GameObject GuildWnd;
public GameObject GuildWarWin;
public GameObject GuildWarDefeat;
public GameObject rewItemPrefab;
public Transform rewItemPrefabParent;
public GameObject _ScorePanel;
private bool canClose = false; // 能否关闭UI现需要UI动画播放完毕后才可关闭。
public void OnReceivePacket(GC_RET_FINISH_COPY_INFO packet) //副本通用逻辑newcopybase中存在的才会弹奖励
{
Tab_NewCopyBase copyBase = TableManager.GetNewCopyBaseByID(GameManager.gameManager.PlayerDataPool.EnterSceneCache.EnterCopySceneID, 0);
if(copyBase != null)
{
SimpleWnd.SetActive(true);
GuildWnd.SetActive(false);
if (packet.IsSuccess == 0)
{
ShowDefeatPanel();
}
else
{
ShowWinPanel(packet);
}
}
else
{
SimpleWnd.SetActive(false);
GuildWnd.SetActive(true);
GuildWarWin.SetActive(packet.IsSuccess != 0);
GuildWarDefeat.SetActive(packet.IsSuccess == 0);
if (Singleton<ObjManager>.Instance.MainPlayer != null)
{
Singleton<ObjManager>.Instance.MainPlayer.LeveAutoCombat();
}
}
Invoke("Close", 3.0f);
}
public void OnReceivePacket(RetDailyCopyFinish packet) //副本通用逻辑newcopybase中存在的才会弹奖励
{
GuildWnd.SetActive(false);
SimpleWnd.SetActive(true);
if (packet.issuccess == 0)
{
ShowDefeatPanel();
}
else
{
ShowWinPanel(packet);
}
Invoke("Close", 3.0f);
}
private List<GameObject> rewItemList = new List<GameObject>();
public void ShowWinPanel(object packet)
{
winPanel.SetActive(true);
defeatPanel.SetActive(false);
CreateAndInitRewItem(packet);
//ShowScoreIcon(packet.Level);
//开始倒计时
StartExitCopyCount();
}
public void StartExitCopyCount()
{
if(TestingCopyInfoCtr.Instance && TestingCopyInfoCtr.Instance.gameObject.activeInHierarchy)
{
TestingCopyInfoCtr.Instance.CountExitTime();
}
}
// 取消评分
//public void ShowScoreIcon(int _Score)
//{
// if(_Score == -1)
// {
// _ScorePanel.SetActive(false);
// return;
// }
// _ScorePanel.SetActive(true);
// for(int index = 0; index < _ScoreObj.Count; index++)
// {
// _ScoreObj[index].SetActive(_Score - 1 == index);
// }
//}
public void CreateAndInitRewItem(object packet)
{
ClearAllRew();
StartCoroutine(CreateitemPrefabCoroutine(packet));
}
IEnumerator CreateitemPrefabCoroutine(object packet)
{
//按照品质排序
Dictionary<int, int> _RewItemDataDic = new Dictionary<int, int>();
List<int> _ItemDataIdList = new List<int>();
GC_RET_FINISH_COPY_INFO pack_1 = packet as GC_RET_FINISH_COPY_INFO;
if (pack_1 != null)
{
for (int index = 0; index < pack_1.itemsCount; index++)
{
Tab_CommonItem tab = TableManager.GetCommonItemByID(pack_1.GetItems(index).ItemId, 0);
if (tab == null)
{
continue;
}
if (tab.ClassID == (int)ItemClass.EQUIP && tab.Quality < (int)ItemQuality.QUALITY_BLUE)
{
continue;
}
if (!_ItemDataIdList.Contains(pack_1.GetItems(index).ItemId))
{
_ItemDataIdList.Add(pack_1.GetItems(index).ItemId);
}
if (_RewItemDataDic.ContainsKey(pack_1.GetItems(index).ItemId))
{
_RewItemDataDic[pack_1.GetItems(index).ItemId] += pack_1.GetItems(index).ItemNum;
}
else
{
_RewItemDataDic.Add(pack_1.GetItems(index).ItemId, pack_1.GetItems(index).ItemNum);
}
}
}
RetDailyCopyFinish pack_2 = packet as RetDailyCopyFinish;
if (pack_2 != null)
{
for (int index = 0; index < pack_2.itemid.Count; index++)
{
Tab_CommonItem tab = TableManager.GetCommonItemByID(pack_2.itemid[index], 0);
if (tab == null)
{
continue;
}
if (tab.ClassID == (int)ItemClass.EQUIP && tab.Quality < (int)ItemQuality.QUALITY_BLUE)
{
continue;
}
if (!_ItemDataIdList.Contains(pack_2.itemid[index]))
{
_ItemDataIdList.Add(pack_2.itemid[index]);
}
if (_RewItemDataDic.ContainsKey(pack_2.itemid[index]))
{
_RewItemDataDic[pack_2.itemid[index]] += pack_2.itemnum[index];
}
else
{
_RewItemDataDic.Add(pack_2.itemid[index], pack_2.itemnum[index]);
}
}
}
_ItemDataIdList.Sort(delegate (int idA, int idB) {
Tab_CommonItem commonItemA = TableManager.GetCommonItemByID(idA, 0);
Tab_CommonItem commonItemB = TableManager.GetCommonItemByID(idB, 0);
if (commonItemA == null || commonItemB == null)
{
return 0;
}
if (commonItemA.Quality == commonItemB.Quality)
{
return 0;
}
return commonItemA.Quality > commonItemB.Quality ? -1 : 1;
});
for (int index = 0; index < _ItemDataIdList.Count; index++)
{
GameObject item = GameObject.Instantiate(rewItemPrefab);
item.transform.SetParent(rewItemPrefabParent);
item.transform.localPosition = Vector3.zero;
item.transform.localScale = Vector3.one;
item.transform.localRotation = Quaternion.Euler(Vector3.zero);
rewItemList.Add(item);
item.GetComponent<CopyFinishRewItem>().InitItem(_ItemDataIdList[index], _RewItemDataDic.ContainsKey(_ItemDataIdList[index]) ? _RewItemDataDic[_ItemDataIdList[index]] : 1);
}
yield break;
}
private void DicSort(Dictionary<int, int> dic)
{
if(dic.Count > 0)
{
List<KeyValuePair<int, int>> lst = new List<KeyValuePair<int, int>>(dic);
lst.Sort(delegate (KeyValuePair<int, int> lstA, KeyValuePair<int, int> lstB)
{
Tab_CommonItem commonItemA = TableManager.GetCommonItemByID(lstA.Key, 0);
Tab_CommonItem commonItemB = TableManager.GetCommonItemByID(lstB.Key, 0);
if (commonItemA == null || commonItemB == null)
{
return 0;
}
if (commonItemA.Quality == commonItemB.Quality)
{
return 0;
}
return commonItemA.Quality > commonItemB.Quality ? -1 : 1;
});
}
}
public void ClearAllRew()
{
for(int index = 0; index < rewItemList.Count; index++)
{
GameObject.Destroy(rewItemList[index].gameObject);
}
rewItemList.Clear();
}
public void ShowDefeatPanel()
{
winPanel.SetActive(false);
defeatPanel.SetActive(true);
}
public void OnBackClick()
{
if(canClose)
{
Close();
}
}
private void Close()
{
UIManager.CloseUI(UIInfo.FinishTheCopyResultPanel);
}
public void OnDisable()
{
//暂时先硬处理一下,帮会联赛的需要出它自己的结算界面
if (GameManager.gameManager.PlayerDataPool.EnterSceneCache.EnterCopySceneID == (int)Games.GlobeDefine.GameDefine_Globe.SCENE_DEFINE.SCENE_GUILDWARMAIN)
{
UIManager.ShowUI(UIInfo.GuildWarInfo);
}
}
public void OnPetClick()
{
UIManager.ShowUI(UIInfo.PetMainWndPath, delegate (bool bSuccess, object param)
{
if (bSuccess && PetMainWnd.Instance != null)
{
PetMainWnd.Instance.ShowPage(0, 0);
}
});
}
public void OnSkillClick()
{
UIManager.ShowUI(UIInfo.SkillInfo);
}
public void OnMakeClick()
{
UIManager.ShowUI(UIInfo.EquipEnhance);
}
}