using System; using System.Collections.Generic; using System.Linq; using Cysharp.Threading.Tasks; using UnityEngine; using UnityEngine.UI; /// /// 淘金派遣总管理 /// public class GoldRushWorkerWin : UIBase { [SerializeField] GroupButtonEx workMgrBtn; //派遣管理 [SerializeField] GroupButtonEx workersBtn; //监工人员管理 [SerializeField] Transform workMgrRect; [SerializeField] Transform workersRect; //派遣管理 [SerializeField] ScrollerController workMgrScroller; [SerializeField] Transform workMgrEmpty; [SerializeField] Text lazyWorkerCntText; //空闲监工数量 [SerializeField] Text warehouseCntText; //仓库数量 [SerializeField] Button getAllAwardBtn; //监工人员管理 [SerializeField] ScrollerController workersScroller; [SerializeField] Text unlockWorkerCntText; //解锁监工数量 [SerializeField] Text totalWorkFinishCount; //淘金完成总次数 [NonSerialized] public List goldRushMissionList = new List(); protected override void InitComponent() { workMgrBtn.AddListener(OnWorkMgrBtnClick); workersBtn.AddListener(OnWorkerBtnClick); getAllAwardBtn.AddListener(GetAllAward); } protected override void OnPreOpen() { CreateWorkersScroller(); GoldRushManager.Instance.OnGoldRushCampEvent += OnGoldRushCampEvent; GoldRushManager.Instance.OnGoldRushInfoEvent += OnGoldRushInfoEvent; workMgrScroller.OnRefreshCell += OnRefreshWorkMgrCell; workersScroller.OnRefreshCell += OnRefreshWorkersCell; GlobalTimeEvent.Instance.secondEvent += OnSecondEvent; PlayerDatas.Instance.playerDataRefreshEvent += OnPlayerDataRefreshEvent; if (functionOrder == 0) { workMgrBtn.SelectBtn(); } else { workersBtn.SelectBtn(); } Display(); } protected override void OnPreClose() { GoldRushManager.Instance.OnGoldRushCampEvent -= OnGoldRushCampEvent; GoldRushManager.Instance.OnGoldRushInfoEvent -= OnGoldRushInfoEvent; workMgrScroller.OnRefreshCell -= OnRefreshWorkMgrCell; workersScroller.OnRefreshCell -= OnRefreshWorkersCell; GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent; PlayerDatas.Instance.playerDataRefreshEvent -= OnPlayerDataRefreshEvent; } void OnPlayerDataRefreshEvent(PlayerDataType type) { if (type == GoldRushManager.Instance.unLockMoneyType) { workersScroller.m_Scorller.RefreshActiveCellViews(); } } void Display() { if (functionOrder == 0) { RefreshWorkingList(); CreateManagerScroller(); DispalyWorkMgr(); } else { DispalyWorkers(); } } //派遣中管理 void DispalyWorkMgr() { workMgrRect.SetActive(true); workersRect.SetActive(false); int workingCnt = GoldRushManager.Instance.GetWarehouseCnt(); if (workingCnt == 0) { workMgrScroller.SetActive(false); workMgrEmpty.SetActive(true); getAllAwardBtn.SetActive(false); } else { workMgrScroller.SetActive(true); workMgrEmpty.SetActive(false); getAllAwardBtn.SetActive(true); } lazyWorkerCntText.text = Language.Get("GoldRush20") + GoldRushManager.Instance.GetEmptyWorkerCount() + "/" + GoldRushManager.Instance.maxWorkerCount; warehouseCntText.text = Language.Get("GoldRush21") + workingCnt + "/" + GoldRushManager.Instance.warehouseMaxCnt; workMgrScroller.m_Scorller.RefreshActiveCellViews(); } //派遣中的队列 + 完成的队列,动态变化的 void CreateManagerScroller() { if (workMgrScroller.GetNumberOfCells(workMgrScroller.m_Scorller) == goldRushMissionList.Count) return; workMgrScroller.Refresh(); for (int i = 0; i < goldRushMissionList.Count; ++i) { workMgrScroller.AddCell(ScrollerDataType.Header, i); } workMgrScroller.Restart(); } //派遣中的队列 + 完成的队列,动态变化的 //ID组成 // 派遣中类型1*100000 + campid*100 + 0 // 完成类型2*100000 + goldid*100 + 索引 void RefreshWorkingList() { goldRushMissionList.Clear(); var keys = GoldRushManager.Instance.campInfoDict.Keys.ToList(); for (int i = 0; i < keys.Count; i++) { var campInfo = GoldRushManager.Instance.campInfoDict[keys[i]]; if (campInfo.GoldID == 0 || campInfo.EndTime == 0) { continue; } goldRushMissionList.Add(100000 * 1 + campInfo.CampID * 100 + 0); } for (int i = 0; i < GoldRushManager.Instance.warehouseIDList.Length; i++) { if (GoldRushManager.Instance.warehouseIDList[i] == 0) { continue; } goldRushMissionList.Add(100000 * 2 + GoldRushManager.Instance.warehouseIDList[i] * 100 + i); } } void OnRefreshWorkMgrCell(ScrollerDataType type, CellView cell) { var _cell = cell as GoldRushWorkCell; if (cell.index >= goldRushMissionList.Count) { _cell.Display(-1); } else { _cell.Display(goldRushMissionList[cell.index]); } } void OnSecondEvent() { if (functionOrder == 0) { workMgrScroller.m_Scorller.RefreshActiveCellViews(); } } void DispalyWorkers() { workMgrRect.SetActive(false); workersRect.SetActive(true); unlockWorkerCntText.text = Language.Get("GoldRush39") + GoldRushManager.Instance.maxWorkerCount + "/" + GoldRushManager.Instance.m_MaxWorkerCount; totalWorkFinishCount.text = Language.Get("GoldRush40") + GoldRushManager.Instance.panningCnt; workersScroller.m_Scorller.RefreshActiveCellViews(); } void CreateWorkersScroller() { workersScroller.Refresh(); var keys = GoldRushWorkerConfig.GetKeys().ToList(); for (int i = 0; i < keys.Count; ++i) { workersScroller.AddCell(ScrollerDataType.Header, keys[i]); } workersScroller.Restart(); } void OnRefreshWorkersCell(ScrollerDataType type, CellView cell) { var _cell = cell as GoldRushWorkerCell; _cell.Display(cell.index); } void OnWorkMgrBtnClick() { functionOrder = 0; Display(); } void OnWorkerBtnClick() { functionOrder = 1; Display(); } void GetAllAward() { if (GoldRushManager.Instance.GetFinishGoldRushCount() == 0) { return; } GoldRushManager.Instance.SendGoldRushWarehouseAward(0, 1); } void OnGoldRushCampEvent(int campID) { Display(); } void OnGoldRushInfoEvent() { Display(); } }