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.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.GetWorkerSkinID(campID, i);
|
heroModels[i].Create(skinID, 0.5f);
|
}
|
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");
|
}
|
|
|
}
|