using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using UnityEngine;
|
using UnityEngine.UI;
|
namespace vnxbqy.UI
|
{
|
//福地-管理
|
public class BlessedLandManageWin : Window
|
{
|
[SerializeField] ScrollerController itemScroller;
|
[SerializeField] Slider slider;
|
[SerializeField] RectTransform sliderRectTransform;
|
[SerializeField] ButtonEx btnClose;
|
[SerializeField] ButtonEx btnEmploy;
|
[SerializeField] ButtonEx btnSeek;
|
[SerializeField] ImageEx imgItem;
|
[SerializeField] List<RectTransform> imgWokerStateList;
|
[SerializeField] TextEx txtFreeWorkerCount;
|
[SerializeField] TextEx txtAllWorkerCount;
|
[SerializeField] TextEx txtNeedAndHaveCount;
|
[SerializeField] TextEx txtNoCollect;
|
[SerializeField] TextEx txtMaxWorker;
|
bool isClickSeek = false;
|
BlessedLandModel blessedLandModel { get { return ModelCenter.Instance.GetModel<BlessedLandModel>(); } }
|
PackModel packModel { get { return ModelCenter.Instance.GetModelEx<PackModel>(); } }
|
|
protected override void BindController()
|
{
|
|
}
|
|
private void OnUpdateNewAreaData(List<uint> list)
|
{
|
Display();
|
CreateScroller();
|
}
|
|
private void OnUpdateMineAreaData()
|
{
|
Display();
|
CreateScroller();
|
}
|
|
protected override void AddListeners()
|
{
|
btnClose.SetListener(() =>
|
{
|
WindowCenter.Instance.Close<BlessedLandManageWin>();
|
});
|
|
btnEmploy.SetListener(() =>
|
{
|
//拥有的工人数大于表中配的最大数量
|
if (blessedLandModel.WorkerCount + 1 > blessedLandModel.hiredWorkerItemQuantityArr.Length)
|
return;
|
LimitedTimeLuxuryGiftModel.Instance.IsItemIdShow(28, blessedLandModel.hiredWorkerItemID, blessedLandModel.hiredWorkerItemQuantityArr[Mathf.Min(blessedLandModel.WorkerCount, blessedLandModel.hiredWorkerItemQuantityArr.Length - 1)], 1, 0);
|
//雇佣工人所需的资源不够
|
if (packModel.GetItemCountByID(PackType.Item, blessedLandModel.hiredWorkerItemID) < blessedLandModel.hiredWorkerItemQuantityArr[blessedLandModel.WorkerCount])
|
{
|
SysNotifyMgr.Instance.ShowTip("NotEnoughMaterial");
|
ItemTipUtility.Show(blessedLandModel.hiredWorkerItemID);
|
return;
|
}
|
blessedLandModel.SendCB032Pack();
|
});
|
|
btnSeek.SetListener(() =>
|
{
|
blessedLandModel.SendCB033Pack(3);
|
blessedLandModel.SendCB033Pack(2);
|
isClickSeek = true;
|
});
|
}
|
|
protected override void OnPreOpen()
|
{
|
isClickSeek = false;
|
itemScroller.OnRefreshCell += OnItemCellScrollerRefreshCell;
|
blessedLandModel.UpdateNewAreaData += OnUpdateNewAreaData;
|
blessedLandModel.UpdateMineAreaData += OnUpdateMineAreaData;
|
blessedLandModel.UpdateFindAreaData += OnUpdateFindAreaData;
|
blessedLandModel.UpdateFellowAndSurroundAreaData += OnUpdateFellowAndSurroundAreaData;
|
DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitialize;
|
Display();
|
}
|
|
private void OnUpdateFindAreaData()
|
{
|
WindowJumpMgr.Instance.WindowJumpToEx("BlessedLandOtherWin");
|
}
|
|
void Display()
|
{
|
PackModel packModel = ModelCenter.Instance.GetModel<PackModel>();
|
int allWorkerCount = blessedLandModel.WorkerCount;
|
int freeWorkerCount = allWorkerCount - blessedLandModel.GetWorkingCount();
|
string iconKey = ItemConfig.Get(blessedLandModel.hiredWorkerItemID).IconKey;
|
//计算文字在进度条的位置
|
float leftX = sliderRectTransform.anchoredPosition.x;
|
float rightX = sliderRectTransform.sizeDelta.x;
|
float gridSpacing = (float)Math.Round(rightX / 100, 1);
|
int totalEnergy = blessedLandModel.GetTotalEnergy();
|
//元素的显隐
|
txtNoCollect.SetActive(blessedLandModel.GetWorkingCount() == 0);
|
btnSeek.SetActive(blessedLandModel.GetWorkingCount() == 0);
|
btnEmploy.SetActive(allWorkerCount < blessedLandModel.hiredWorkerItemQuantityArr.Length);
|
txtMaxWorker.SetActive(allWorkerCount >= blessedLandModel.hiredWorkerItemQuantityArr.Length);
|
txtNeedAndHaveCount.SetActive(allWorkerCount < blessedLandModel.hiredWorkerItemQuantityArr.Length);
|
imgItem.SetActive(allWorkerCount < blessedLandModel.hiredWorkerItemQuantityArr.Length);
|
//元素的变更
|
imgItem.SetSprite(IconConfig.Get(iconKey).id);
|
txtFreeWorkerCount.text = freeWorkerCount.ToString();
|
txtAllWorkerCount.text = allWorkerCount.ToString();
|
int haveCount = packModel.GetItemCountByID(PackType.Item, blessedLandModel.hiredWorkerItemID);
|
int needCount = allWorkerCount > blessedLandModel.hiredWorkerItemQuantityArr.Length - 1 ? blessedLandModel.hiredWorkerItemQuantityArr.Length - 1 : blessedLandModel.hiredWorkerItemQuantityArr[allWorkerCount];
|
txtNeedAndHaveCount.text = StringUtility.Contact(haveCount, " / ", needCount);
|
txtNeedAndHaveCount.colorType = haveCount >= needCount ? TextColType.DarkGreen : TextColType.Red;
|
int nowEnergy = 0;
|
for (int i = 0; i < imgWokerStateList.Count; i++)
|
{
|
nowEnergy += blessedLandModel.workerFatigueStaminaArr[i];
|
float nowX = (float)nowEnergy / (float)totalEnergy * 100 * gridSpacing;
|
imgWokerStateList[i].anchoredPosition = new Vector2(nowX, imgWokerStateList[i].anchoredPosition.y);
|
}
|
slider.value = 100 - (float)blessedLandModel.EnergyUsed / (float)totalEnergy * 100;
|
|
}
|
|
protected override void OnAfterOpen()
|
{
|
CreateScroller();
|
}
|
|
void CreateScroller()
|
{
|
itemScroller.Refresh();
|
List<uint> keyList = blessedLandModel.newAreaDataDict.Keys.ToList();
|
for (int i = 0; i < keyList.Count; i++)
|
{
|
var newAreaDataDict = blessedLandModel.newAreaDataDict[keyList[i]];
|
if (newAreaDataDict.PlayerID == blessedLandModel.myPlayerId)
|
{
|
List<int> keyItemsList = newAreaDataDict.MineItems.Keys.ToList();
|
for (int j = 0; j < keyItemsList.Count; j++)
|
{
|
var mineItems = newAreaDataDict.MineItems[keyItemsList[j]];
|
if (mineItems.WorkerCount > 0)
|
{
|
int combinedValue = (int)blessedLandModel.myPlayerId * 100;
|
combinedValue += mineItems.Index;
|
itemScroller.AddCell(ScrollerDataType.Header, combinedValue);
|
}
|
}
|
}
|
else
|
{
|
List<int> keyItemsList = newAreaDataDict.MineItems.Keys.ToList();
|
for (int j = 0; j < keyItemsList.Count; j++)
|
{
|
var mineItems = newAreaDataDict.MineItems[keyItemsList[j]];
|
if (mineItems.RobPlayerID == blessedLandModel.myPlayerId)
|
{
|
int combinedValue = (int)newAreaDataDict.PlayerID * 100;
|
combinedValue += mineItems.Index;
|
itemScroller.AddCell(ScrollerDataType.Header, combinedValue);
|
}
|
}
|
}
|
}
|
itemScroller.Restart();
|
}
|
|
protected override void OnAfterClose()
|
{
|
|
}
|
|
protected override void OnPreClose()
|
{
|
itemScroller.OnRefreshCell -= OnItemCellScrollerRefreshCell;
|
blessedLandModel.UpdateNewAreaData -= OnUpdateNewAreaData;
|
blessedLandModel.UpdateMineAreaData -= OnUpdateMineAreaData;
|
blessedLandModel.UpdateFindAreaData -= OnUpdateFindAreaData;
|
blessedLandModel.UpdateFellowAndSurroundAreaData -= OnUpdateFellowAndSurroundAreaData;
|
DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= OnBeforePlayerDataInitialize;
|
}
|
|
private void OnBeforePlayerDataInitialize()
|
{
|
if (WindowCenter.Instance.IsOpen<BlessedLandManageWin>())
|
{
|
WindowJumpMgr.Instance.ClearJumpData();
|
WindowCenter.Instance.CloseAll();
|
}
|
}
|
|
private void OnUpdateFellowAndSurroundAreaData()
|
{
|
if (isClickSeek)
|
{
|
WindowJumpMgr.Instance.WindowJumpToEx("BlessedLandSeekWin");
|
isClickSeek = false;
|
}
|
}
|
|
private void OnItemCellScrollerRefreshCell(ScrollerDataType type, CellView cell)
|
{
|
var _cell = cell as BlessedLandManageCell;
|
_cell.Display(_cell.index);
|
}
|
}
|
}
|
|