| | |
| | | //淘金中信息列表显示 |
| | | 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.SecondsToMS(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.skinIDs[(goldID % skinCnt + i) % skinCnt]; |
| | | heroModels[i].Create(skinID, 0.4f); |
| | | } |
| | | 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"); |
| | | } |
| | | |
| | | |
| | | } |