Files
JJBB/Assets/Project/Script/GUI/StroyCopy/FinishTheCopyResultPanelCtr.cs

320 lines
9.2 KiB
C#
Raw Normal View History

2024-08-23 15:49:34 +08:00
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);
}
}