using System.Collections.Generic;
|
using UnityEngine;
|
|
//我的福地
|
namespace vnxbqy.UI
|
{
|
public class BlessedLandWin : Window
|
{
|
|
[SerializeField] ScrollerController itemScroller;
|
[SerializeField] ButtonEx btnClose;
|
[SerializeField] ButtonEx btnRecord;
|
[SerializeField] ButtonEx btnRefresh;
|
[SerializeField] ButtonEx btnAutoCollect;
|
[SerializeField] UIEffect uiEffectAutoCollectStart;
|
|
[SerializeField] ButtonEx btnRreasureBowl;
|
[SerializeField] ButtonEx btnSearch;
|
[SerializeField] ButtonEx btnManage;
|
[SerializeField] ImageEx imgRefresh;
|
|
[SerializeField] TextEx txtFreeWorkerCount;
|
[SerializeField] TextEx txtAllWorkerCount;
|
|
[SerializeField] TextEx txtBlessedLandName;
|
[SerializeField] RectTransform rectBlessedLandNameImage;
|
[SerializeField] RectTransform rectBlessedLandNameText;
|
//超级刷新相关
|
[SerializeField] ImageEx imgMoney;
|
[SerializeField] ButtonEx btnSuperRefresh;
|
[SerializeField] Transform transSuperRefresh;
|
[SerializeField] TextEx txtSuperRefreshCount;
|
[SerializeField] TextEx txtSuperRefreshFree;
|
|
[SerializeField] UIEffect uiEffectRefresh;
|
BlessedLandModel blessedLandModel { get { return ModelCenter.Instance.GetModel<BlessedLandModel>(); } }
|
BlessedLandManageMouseModel blessedLandManageMouseModel { get { return ModelCenter.Instance.GetModel<BlessedLandManageMouseModel>(); } }
|
PackModel playerPack { get { return ModelCenter.Instance.GetModel<PackModel>(); } }
|
bool isClickSeek = false;
|
bool isFirst = true;
|
protected override void BindController()
|
{
|
|
}
|
|
protected override void AddListeners()
|
{
|
btnClose.SetListener(() =>
|
{
|
WindowCenter.Instance.Close<BlessedLandWin>();
|
});
|
|
btnRecord.SetListener(() =>
|
{
|
blessedLandModel.SendCB033Pack(5);
|
});
|
|
btnRefresh.SetListener(() =>
|
{
|
TryRefresh();
|
});
|
|
btnSuperRefresh.SetListener(() =>
|
{
|
TrySuperRefresh();
|
});
|
|
btnRreasureBowl.SetListener(() =>
|
{
|
WindowCenter.Instance.Open<BlessedLandCornucopiaWin>();
|
});
|
|
btnSearch.SetListener(() =>
|
{
|
blessedLandModel.SendCB033Pack(3);
|
blessedLandModel.SendCB033Pack(2);
|
isClickSeek = true;
|
});
|
|
btnManage.SetListener(() =>
|
{
|
WindowJumpMgr.Instance.WindowJumpToEx("BlessedLandManageWin");
|
});
|
btnAutoCollect.SetListener(() =>
|
{
|
if (TimeUtility.OpenDay < blessedLandManageMouseModel.isServerRunningLongEnough)
|
{
|
SysNotifyMgr.Instance.ShowTip("BlessedLandManageMouse02", blessedLandManageMouseModel.isServerRunningLongEnough + 1);
|
return;
|
}
|
WindowCenter.Instance.Open<BlessedLandManageMouseWin>();
|
});
|
}
|
|
protected override void OnPreOpen()
|
{
|
isClickSeek = false;
|
itemScroller.OnRefreshCell += OnItemCellScrollerRefreshCell;
|
blessedLandModel.UpdateNewAreaData += OnUpdateAreaData;
|
blessedLandModel.UpdateFellowAndSurroundAreaData += OnUpdateFellowAndSurroundAreaData;
|
blessedLandModel.UpdateRecordInfo += OnUpdateRecordInfo;
|
WindowCenter.Instance.windowBeforeOpenEvent += OnWindowBeforeOpenEvent;
|
WindowCenter.Instance.windowBeforeCloseEvent += OnWindowBeforeCloseEvent;
|
DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitialize;
|
blessedLandManageMouseModel.StartStateChangeEvent += OnStartStateChangeEvent;
|
blessedLandModel.PlayRefreshUIEffect += OnPlayRefreshUIEffect;
|
uiEffectRefresh.OnComplete += OnUIEffectRefreshComplete;
|
ModelCenter.Instance.GetModel<BlessedLandModel>().showPlayerId = blessedLandModel.myPlayerId;
|
//第一次进入时发包,避免鼠管没有敌对和周围福地的数据
|
if (isFirst)
|
{
|
isFirst = false;
|
blessedLandModel.SendCB033Pack(3);
|
blessedLandModel.SendCB033Pack(2);
|
}
|
if (blessedLandModel.AwardType == 0)
|
blessedLandModel.SendCB034Pack();
|
Display();
|
uiEffectAutoCollectStart.SetActive(blessedLandManageMouseModel.startState);
|
uiEffectRefresh.SetActive(false);
|
}
|
|
private void OnStartStateChangeEvent()
|
{
|
uiEffectAutoCollectStart.SetActive(blessedLandManageMouseModel.startState);
|
}
|
|
void Display()
|
{
|
//txtSuperRefreshFree.SetActive()
|
btnSuperRefresh.SetActive(false);
|
bool isLimit = blessedLandModel.TryGetRefreshTypeDailyLimitValue(1, out int maxLimit);
|
if (isLimit)
|
{
|
if (blessedLandModel.RefreshCountSuper < maxLimit)
|
{
|
btnSuperRefresh.SetActive(true);
|
txtSuperRefreshFree.SetActive(true);
|
transSuperRefresh.SetActive(false);
|
txtSuperRefreshFree.text = Language.Get("BlessedLand056", maxLimit - blessedLandModel.RefreshCountSuper, maxLimit);
|
}
|
else
|
{
|
if (blessedLandModel.WorkerCount < blessedLandModel.hiredWorkerItemQuantityArr.Length)
|
{
|
btnSuperRefresh.SetActive(false);
|
}
|
else
|
{
|
btnSuperRefresh.SetActive(true);
|
txtSuperRefreshFree.SetActive(false);
|
transSuperRefresh.SetActive(true);
|
string iconKey = ItemConfig.Get(blessedLandModel.hiredWorkerItemID).IconKey;
|
|
imgMoney.SetSprite(iconKey);
|
int toolCnt = playerPack.GetItemCountByID(PackType.Item, blessedLandModel.hiredWorkerItemID);
|
txtSuperRefreshCount.text = Language.Get("BlessedLand036", toolCnt, blessedLandModel.refreshByHiredWorkerItemCount);
|
txtSuperRefreshCount.colorType = toolCnt >= blessedLandModel.refreshByHiredWorkerItemCount ? TextColType.DarkGreen : TextColType.Red;
|
}
|
}
|
}
|
else
|
{
|
btnSuperRefresh.SetActive(true);
|
txtSuperRefreshFree.SetActive(false);
|
transSuperRefresh.SetActive(false);
|
}
|
|
imgRefresh.sprite = blessedLandModel.IsRefresh(0) ? UILoader.LoadSprite("BlessedLand03") : UILoader.LoadSprite("BlessedLand04");
|
btnRefresh.SetColorful(null, blessedLandModel.IsRefresh(0));
|
txtAllWorkerCount.text = Language.Get("BlessedLand072", blessedLandModel.WorkerCount);
|
txtFreeWorkerCount.text = Language.Get("BlessedLand071", blessedLandModel.WorkerCount - blessedLandModel.GetWorkingCount());
|
txtBlessedLandName.text = Language.Get("BlessedLand042", Language.Get("BlessedLand012"));
|
}
|
|
protected override void OnAfterOpen()
|
{
|
|
if (!blessedLandModel.newAreaDataDict.ContainsKey(blessedLandModel.myPlayerId))
|
return;
|
itemScroller.Refresh();
|
for (int i = 0; i < blessedLandModel.newAreaDataDict[blessedLandModel.myPlayerId].MineItems.Count; i++)
|
{
|
itemScroller.AddCell(ScrollerDataType.Header, i);
|
}
|
itemScroller.Restart();
|
}
|
|
protected override void OnAfterClose()
|
{
|
|
}
|
|
protected override void OnPreClose()
|
{
|
itemScroller.OnRefreshCell -= OnItemCellScrollerRefreshCell;
|
blessedLandModel.UpdateNewAreaData -= OnUpdateAreaData;
|
blessedLandModel.UpdateFellowAndSurroundAreaData -= OnUpdateFellowAndSurroundAreaData;
|
|
blessedLandModel.UpdateRecordInfo -= OnUpdateRecordInfo;
|
WindowCenter.Instance.windowBeforeOpenEvent -= OnWindowBeforeOpenEvent;
|
WindowCenter.Instance.windowBeforeCloseEvent -= OnWindowBeforeCloseEvent;
|
DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= OnBeforePlayerDataInitialize;
|
blessedLandManageMouseModel.StartStateChangeEvent -= OnStartStateChangeEvent;
|
blessedLandModel.PlayRefreshUIEffect -= OnPlayRefreshUIEffect;
|
uiEffectRefresh.OnComplete -= OnUIEffectRefreshComplete;
|
}
|
|
private void OnUIEffectRefreshComplete()
|
{
|
uiEffectRefresh.SetActive(false);
|
}
|
|
private void OnPlayRefreshUIEffect(int obj)
|
{
|
uiEffectRefresh.SetActive(true);
|
}
|
|
private void OnWindowBeforeOpenEvent(Window window)
|
{
|
if (window.name == "BlessedLandDetailsWin" || window.name == "BlessedLandCornucopiaWin"
|
|| window.name == "BlessedLandManageWin" || window.name == "BlessedLandOtherWin"
|
|| window.name == "BlessedLandRecordWin" || window.name == "BlessedLandSeekWin"
|
|| window.name == "BatchWin" || window.name == "BlessedLandFightWin" || window.name == "BlessedLandVictoryWin" || window.name == "BlessedLandDefeatedWin")
|
{
|
itemScroller.SetActive(false);
|
}
|
}
|
|
private void OnWindowBeforeCloseEvent(Window window)
|
{
|
if (window.name == "BlessedLandDetailsWin" || window.name == "BlessedLandCornucopiaWin"
|
|| window.name == "BlessedLandManageWin" || window.name == "BlessedLandOtherWin"
|
|| window.name == "BlessedLandRecordWin" || window.name == "BlessedLandSeekWin"
|
|| window.name == "BatchWin" || window.name == "BlessedLandFightWin" || window.name == "BlessedLandVictoryWin" || window.name == "BlessedLandDefeatedWin")
|
{
|
itemScroller.SetActive(true);
|
itemScroller.Refresh();
|
if (!blessedLandModel.newAreaDataDict.ContainsKey(blessedLandModel.myPlayerId))
|
return;
|
for (int i = 0; i < blessedLandModel.newAreaDataDict[blessedLandModel.myPlayerId].MineItems.Count; i++)
|
{
|
itemScroller.AddCell(ScrollerDataType.Header, i);
|
}
|
itemScroller.Restart();
|
}
|
}
|
|
private void OnUpdateRecordInfo()
|
{
|
WindowJumpMgr.Instance.WindowJumpToEx("BlessedLandRecordWin");
|
}
|
|
private void OnUpdateFellowAndSurroundAreaData()
|
{
|
if (isClickSeek)
|
{
|
WindowJumpMgr.Instance.WindowJumpToEx("BlessedLandSeekWin");
|
isClickSeek = false;
|
}
|
|
}
|
|
private void OnUpdateAreaData(List<uint> list)
|
{
|
itemScroller.m_Scorller.RefreshActiveCellViews();
|
Display();
|
}
|
|
private void OnItemCellScrollerRefreshCell(ScrollerDataType type, CellView cell)
|
{
|
var _cell = cell as BlessedLandCell;
|
_cell.Display(_cell.index);
|
}
|
|
void TryRefresh()
|
{
|
if (blessedLandModel.isSkipRefreshTip)
|
{
|
TrySkipLv4Tip();
|
}
|
else
|
{
|
bool isPiad = blessedLandModel.TryGetRefreshTypeCostCurrencyValue(0, out int moneyType, out int moneyValue);
|
if (isPiad)
|
{
|
ulong moneyCnt = UIHelper.GetMoneyCnt(moneyType);
|
//货币不足
|
if (moneyCnt < (ulong)moneyValue)
|
{
|
SysNotifyMgr.Instance.ShowTip("XianXiaMJ32");
|
return;
|
}
|
|
ConfirmCancel.MoneyIconToggleConfirm(
|
Language.Get("TeamListRefresh"),
|
Language.Get("BlessedLand034"),
|
Language.Get("TeamListRefresh"),
|
moneyType,
|
moneyValue,
|
moneyCnt,
|
(bool isOk, bool isToggle) =>
|
{
|
ModelCenter.Instance.GetModel<BlessedLandModel>().isSkipRefreshTip = isToggle;
|
if (isOk)
|
TrySkipLv4Tip();
|
},
|
true,
|
Language.Get("FlyShoseConfirmwin_Text2")
|
);
|
return;
|
}
|
else
|
{
|
TrySkipLv4Tip();
|
}
|
}
|
}
|
|
void TrySuperRefresh()
|
{
|
bool isLimit = blessedLandModel.TryGetRefreshTypeDailyLimitValue(1, out int maxLimit);
|
if (isLimit)
|
{
|
if (blessedLandModel.RefreshCountSuper < maxLimit)
|
{
|
ShowSuperRefreshPop();
|
}
|
else
|
{
|
int toolCnt = playerPack.GetItemCountByID(PackType.Item, blessedLandModel.hiredWorkerItemID);
|
//货币不足
|
if (toolCnt < blessedLandModel.refreshByHiredWorkerItemCount)
|
{
|
SysNotifyMgr.Instance.ShowTip("XianXiaMJ32");
|
return;
|
}
|
ShowSuperRefreshPop();
|
}
|
}
|
else
|
{
|
ShowSuperRefreshPop();
|
}
|
}
|
|
void ShowSuperRefreshPop()
|
{
|
ConfirmCancel.ShowPopConfirm(
|
Language.Get("BlessedLand035"),
|
Language.Get("BlessedLand019"),
|
() =>
|
{
|
blessedLandModel.SendCB031Pack(1);
|
});
|
return;
|
}
|
void showToggleConfirmCancel()
|
{
|
ConfirmCancel.ToggleConfirmCancel(
|
Language.Get("L1003"),
|
Language.Get("BlessedLand018"),
|
Language.Get("FlyShoseConfirmwin_Text2"),
|
(bool isOk, bool isToggle) =>
|
{
|
ModelCenter.Instance.GetModel<BlessedLandModel>().isSkipLv4Tip = isToggle;
|
if (isOk)
|
blessedLandModel.SendCB031Pack(0);
|
}
|
);
|
return;
|
}
|
|
void TrySkipLv4Tip()
|
{
|
if (blessedLandModel.isSkipLv4Tip == true)
|
{
|
TrySendCB031Pack();
|
}
|
else
|
{
|
if (blessedLandModel.IsGreaterLv4Item())
|
{
|
showToggleConfirmCancel();
|
}
|
else
|
{
|
TrySendCB031Pack();
|
}
|
}
|
}
|
|
void TrySendCB031Pack()
|
{
|
bool isPiad = blessedLandModel.TryGetRefreshTypeCostCurrencyValue(0, out int moneyType, out int moneyValue);
|
if (isPiad)
|
{
|
if (UIHelper.GetMoneyCnt(moneyType) < (ulong)moneyValue)
|
{
|
SysNotifyMgr.Instance.ShowTip("XianXiaMJ32");
|
return;
|
}
|
}
|
blessedLandModel.SendCB031Pack(0);
|
}
|
|
public void OnBeforePlayerDataInitialize()
|
{
|
if (WindowCenter.Instance.IsOpen<BlessedLandWin>())
|
{
|
WindowJumpMgr.Instance.ClearJumpData();
|
WindowCenter.Instance.CloseAll();
|
}
|
}
|
|
}
|
}
|
|