using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; //淘金中信息列表显示 public class GoldRushWorkCell : CellView { [SerializeField] Transform _cell; [SerializeField] ItemCell itemCell; [SerializeField] Text nameText; [SerializeField] Text timeText; [SerializeField] Slider slider; [SerializeField] UIHeroController[] heroModels; [SerializeField] CountControler countControler; [SerializeField] Button awardBtn; GoldRushItemConfig config; int campID; //派遣中的队列 + 完成的队列,动态变化的 //ID组成 // 派遣中类型1*100000 + campid*100 + 0 // 完成类型2*100000 + goldid*100 + 索引 public void Display(int missionID) { if (missionID == -1) { _cell.SetActive(false); return; } _cell.SetActive(true); int type = missionID / 100000; int targetID = missionID / 100 % 1000; int index = missionID % 100; campID = 0; int goldID = targetID; if (type == 1) { campID = targetID; goldID = GoldRushManager.Instance.GetCampGoldID(campID); } if (goldID == 0) { this.SetActive(false); return; } config = GoldRushItemConfig.Get(goldID); int itemID = config.ItemID; itemCell.Init(new ItemCellModel(itemID, false, config.ItemCount)); itemCell.button.AddListener(()=> { ItemTipUtility.Show(itemID); }); nameText.text = GoldRushManager.Instance.GetCampItemName(config); var endTime = GoldRushManager.Instance.GetCampEndTime(campID); if (type == 1) { if (endTime != 0) { timeText.text = TimeUtility.SecondsToHMS(endTime - TimeUtility.AllSeconds); //按原总时长当进度条 slider.value = (config.NeedSeconds - (endTime - TimeUtility.AllSeconds)) / (float)config.NeedSeconds; } countControler.SetActive(true);//此处调整+/-会实时发包 countControler.Init(ChangeWorkerCount, config.WorkerMax, GoldRushManager.Instance.GetCampWorkerCnt(campID), AddWorker, DecWorker); awardBtn.SetActive(false); var workCnt = GoldRushManager.Instance.GetCampWorkerCnt(campID); int skinCnt = GoldRushManager.Instance.skinIDs.Count; for (int i = 0; i < heroModels.Length; i++) { if (i < workCnt) { heroModels[i].SetActive(true); var skinID = GoldRushManager.Instance.GetWorkerSkinID(campID, i); heroModels[i].Create(skinID, 0.6f, motionName:"run"); } else { heroModels[i].SetActive(false); } } } else if (type == 2) { countControler.SetActive(false); awardBtn.SetActive(true); timeText.text = Language.Get("L1036"); slider.value = slider.maxValue; awardBtn.AddListener(() => { GoldRushManager.Instance.SendGoldRushWarehouseAward(index, 0); }); } } void ChangeWorkerCount(int count) { //重新调整监工 AssignWorker(count); } bool AddWorker(int count) { if (count >= config.WorkerMax) { return false; } //可派遣的监工: 空闲监工数+当前监工数 if (count + 1 > GoldRushManager.Instance.GetEmptyWorkerCount() + GoldRushManager.Instance.GetCampWorkerCnt(campID)) { SysNotifyMgr.Instance.ShowTip("GoldRush2"); return false; } return true; } bool DecWorker(int count) { if (count <= 1) { ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), Language.Get("GoldRush38"), (bool isOK) => { if (isOK) { //撤回监工 GoldRushManager.Instance.SendGoldRushOP(3, campID, 0); } }); return false; } return true; } void AssignWorker(int workerCount) { if (workerCount == 0) { return; } if (workerCount > config.WorkerMax) { return; } if (workerCount == GoldRushManager.Instance.GetCampWorkerCnt(campID)) { return; } GoldRushManager.Instance.SendGoldRushOP(2, campID, workerCount); SysNotifyMgr.Instance.ShowTip("GoldRush1"); } }