using UnityEngine;
|
namespace vnxbqy.UI
|
{
|
//福地-福地详情
|
public class BlessedLandDetailsWin : Window
|
{
|
[SerializeField] ImageEx imgItemIcon;
|
[SerializeField] ImageEx imgMy;
|
[SerializeField] ImageEx imgLeftDownArrow;
|
[SerializeField] ImageEx imgRightDownArrow;
|
[SerializeField] ImageEx imgLeftSpriteAnimation;
|
[SerializeField] ImageEx imgRightSpriteAnimation;
|
[SerializeField] ImageEx imgLeftWorkersCountBG;
|
[SerializeField] ImageEx imgRightWorkersCountBG;
|
[SerializeField] AvatarCell rightHead;
|
[SerializeField] AvatarCell leftHead;
|
[SerializeField] TextEx txtLeftCount;
|
[SerializeField] TextEx txtRightCount;
|
[SerializeField] TextEx txtLeftHostCollectionFlag;
|
[SerializeField] TextEx txtRightHostCollectionFlag;
|
[SerializeField] TextEx txtLeftName;
|
[SerializeField] TextEx txtRightName;
|
[SerializeField] TextEx txtLeftCollectionFlag;
|
[SerializeField] TextEx txtRightCollectionFlag;
|
[SerializeField] TextEx txtChooseWorkerCount;
|
[SerializeField] TextEx txtCollectionTime;
|
[SerializeField] TextEx txtTime;
|
[SerializeField] TextEx txtItemCount;
|
[SerializeField] TextEx txtItemMaxWorkerCount;
|
[SerializeField] TextEx txtCollectionByOther;
|
[SerializeField] ButtonEx btnClose;
|
[SerializeField] ButtonEx btnReduce;
|
[SerializeField] ButtonEx btnAdd;
|
[SerializeField] ButtonEx btnRecall1;
|
[SerializeField] ButtonEx btnRecall2;
|
[SerializeField] ButtonEx btnCollection1;
|
[SerializeField] ButtonEx btnCollection2;
|
[SerializeField] ButtonEx btnCollection3;
|
[SerializeField] ButtonEx btnPK1;
|
[SerializeField] ButtonEx btnPK2;
|
[SerializeField] ItemCell itemCell;
|
|
MineItemInfo itemInfos;
|
int state;
|
int itemMaxWorkerCount;
|
int needSeconds;
|
|
int nowDispatchCount; //当前已经派遣了多少人 没派遣是0
|
int nowFreeWorkerCount; //当前空闲人数
|
int maxDispatchCount; //当前最大还能派遣多少人
|
int realDispatchCount; //当前实际还能派遣多少人
|
int chooseWorkerCount; //当前派遣人数
|
BlessedLandModel blessedLandModel { get { return ModelCenter.Instance.GetModel<BlessedLandModel>(); } }
|
RoleParticularModel roleParticularModel { get { return ModelCenter.Instance.GetModel<RoleParticularModel>(); } }
|
|
protected override void BindController()
|
{
|
|
}
|
|
protected override void AddListeners()
|
{
|
btnCollection1.SetListener(() => TryCollection());
|
btnCollection2.SetListener(() => TryCollection());
|
btnCollection3.SetListener(() => TryCollection());
|
btnRecall1.SetListener(() => TryRecall());
|
btnRecall2.SetListener(() => TryRecall());
|
btnPK1.SetListener(() => TryPK());
|
btnPK2.SetListener(() => TryPK());
|
|
btnAdd.SetListener(() =>
|
{
|
//派遣的工人数不能超过物品派遣工人上限
|
if (chooseWorkerCount >= itemMaxWorkerCount)
|
return;
|
//派遣的工人数超过当前最大可以调配的工人数
|
if (chooseWorkerCount >= maxDispatchCount)
|
return;
|
if (chooseWorkerCount < itemMaxWorkerCount)
|
chooseWorkerCount += 1;
|
txtChooseWorkerCount.text = StringUtility.Contact(chooseWorkerCount, "/", realDispatchCount);
|
blessedLandModel.SendCB030Pack(blessedLandModel.showPlayerId, blessedLandModel.detailsIndex, (byte)chooseWorkerCount, 1);
|
});
|
|
btnReduce.SetListener(() =>
|
{
|
//派遣的工人数不能小于0
|
if (chooseWorkerCount <= 0)
|
return;
|
//有可派遣的工人 最小能减到显示1 没有可派遣的工人时 最小能减到0
|
if (realDispatchCount > 0)
|
{
|
if (chooseWorkerCount > 1)
|
chooseWorkerCount -= 1;
|
}
|
else
|
{
|
if (chooseWorkerCount >= 1)
|
chooseWorkerCount -= 1;
|
}
|
txtChooseWorkerCount.text = StringUtility.Contact(chooseWorkerCount, "/", realDispatchCount);
|
blessedLandModel.SendCB030Pack(blessedLandModel.showPlayerId, blessedLandModel.detailsIndex, (byte)chooseWorkerCount, 1);
|
});
|
|
btnClose.SetListener(() =>
|
{
|
WindowCenter.Instance.Close<BlessedLandDetailsWin>();
|
});
|
}
|
|
protected override void OnPreOpen()
|
{
|
blessedLandModel.UpdatePullPreviewMine += OnUpdatePullPreviewMine;
|
GlobalTimeEvent.Instance.secondEvent += OnSecondEvent;
|
DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitialize;
|
needSeconds = blessedLandModel.WorkerCount == blessedLandModel.GetWorkingCount() ? 0 : (int)ModelCenter.Instance.GetModel<BlessedLandModel>().NeedSeconds;
|
//是自己的福地资源还是别人的
|
if (blessedLandModel.showPlayerId == blessedLandModel.myPlayerId)
|
{
|
itemInfos = blessedLandModel.newAreaDataDict[blessedLandModel.myPlayerId].MineItems[blessedLandModel.detailsIndex];
|
|
itemMaxWorkerCount = blessedLandModel.itemLevelMaxWorkersArr[MineAreaItemConfig.Get(itemInfos.MineID).ItemLV - 1];
|
nowDispatchCount = blessedLandModel.GetItemWorkingCount(blessedLandModel.showPlayerId, blessedLandModel.detailsIndex);
|
nowFreeWorkerCount = blessedLandModel.WorkerCount - blessedLandModel.GetWorkingCount();
|
maxDispatchCount = nowFreeWorkerCount + nowDispatchCount;
|
realDispatchCount = Mathf.Min(maxDispatchCount, itemMaxWorkerCount);
|
chooseWorkerCount = nowDispatchCount > 0 ? (byte)nowDispatchCount : realDispatchCount > 0 ? (byte)1 : (byte)0;
|
|
state = blessedLandModel.GetMyBlessedLandCellState(blessedLandModel.detailsIndex);
|
//0 无物品 1 有物品-超级物品-无人拉 2 有物品-超级物品-自己拉
|
//3 有物品-普通物品-无人拉 4 有物品-普通物品-自己拉 5 有物品-普通物品-对方拉
|
//6 有物品-普通物品-双方拉-向自己移动 7 有物品-普通物品-双方拉-向对方移动
|
//在自己福地 左边是抢夺者 右边是房主
|
bool isMy = state == 2 || state == 4 || state == 6 || state == 7;
|
bool isEnemy = state == 5 || state == 6 || state == 7;
|
bool isMoveToMine = state == 2 || state == 4 || state == 6;
|
bool isMoveToEnemy = state == 5 || state == 7;
|
imgLeftWorkersCountBG.SetActive(isEnemy);
|
imgRightWorkersCountBG.SetActive(isMy);
|
txtLeftName.SetActive(isEnemy);
|
imgRightDownArrow.SetActive(isMoveToMine);
|
imgLeftDownArrow.SetActive(isMoveToEnemy);
|
txtLeftCollectionFlag.SetActive(state == 3 || state == 4);
|
txtRightCollectionFlag.SetActive(state == 3 || state == 5);
|
imgLeftSpriteAnimation.SetActive(state == 3 || state == 4 || state == 5 || state == 6 || state == 7);
|
txtLeftHostCollectionFlag.SetActive(false);
|
txtRightHostCollectionFlag.SetActive(state == 1);
|
imgMy.SetActive(isMy);
|
txtCollectionByOther.SetActive(false);
|
txtRightName.SetActive(false);
|
txtCollectionTime.SetActive(true);
|
btnRecall1.SetActive(state == 2 || state == 4);
|
btnRecall2.SetActive(state == 6 || state == 7);
|
btnCollection1.SetActive(state == 1 || state == 3);
|
btnCollection2.SetActive(state == 2 || state == 4 || state == 5);
|
btnCollection3.SetActive(state == 6 || state == 7);
|
btnPK1.SetActive(state == 6 || state == 7);
|
btnPK2.SetActive(state == 5);
|
ItemCellShow();
|
imgRightSpriteAnimation.sprite = isMy ? UILoader.LoadSprite("BlessedLand02") : UILoader.LoadSprite("BlessedLand01");
|
imgLeftSpriteAnimation.sprite = isEnemy ? UILoader.LoadSprite("BlessedLand02") : UILoader.LoadSprite("BlessedLand01");
|
txtRightCount.text = itemInfos.WorkerCount.ToString();
|
txtLeftCount.text = itemInfos.RobWorkerCount.ToString();
|
txtLeftName.text = itemInfos.RobPlayerID < 10000 ? blessedLandModel.GetNameForPlayerId((int)itemInfos.RobPlayerID) : UIHelper.ServerStringTrim(itemInfos.RobPlayerName);
|
imgItemIcon.SetSprite(ItemConfig.Get(MineAreaItemConfig.Get(itemInfos.MineID).ItemID).IconKey);
|
txtItemCount.text = MineAreaItemConfig.Get(itemInfos.MineID).ItemCount.ToString();
|
txtChooseWorkerCount.text = StringUtility.Contact(chooseWorkerCount, "/", realDispatchCount);
|
txtChooseWorkerCount.colorType = realDispatchCount > 0 ? TextColType.White : TextColType.Red;
|
txtItemMaxWorkerCount.text = Language.Get("BlessedLand047", itemMaxWorkerCount);
|
ChangeCollectionTime(needSeconds);
|
leftHead.InitUI(itemInfos.RobPlayerID < 10000 ? blessedLandModel.GetModelForPlayerId((int)itemInfos.RobPlayerID) : AvatarHelper.GetAvatarModel((int)itemInfos.RobPlayerID, (int)itemInfos.RobFace, (int)itemInfos.RobFacePic, (int)itemInfos.RobJob));
|
rightHead.InitUI(AvatarHelper.GetMyAvatarModel());
|
}
|
else
|
{
|
itemInfos = blessedLandModel.newAreaDataDict[blessedLandModel.showPlayerId].MineItems[blessedLandModel.detailsIndex];
|
|
itemMaxWorkerCount = blessedLandModel.itemLevelMaxWorkersArr[MineAreaItemConfig.Get(itemInfos.MineID).ItemLV - 1];
|
nowDispatchCount = blessedLandModel.GetItemWorkingCount(blessedLandModel.showPlayerId, blessedLandModel.detailsIndex);
|
nowFreeWorkerCount = blessedLandModel.WorkerCount - blessedLandModel.GetWorkingCount();
|
maxDispatchCount = nowFreeWorkerCount + nowDispatchCount;
|
realDispatchCount = Mathf.Min(maxDispatchCount, itemMaxWorkerCount);
|
chooseWorkerCount = nowDispatchCount > 0 ? (byte)nowDispatchCount : realDispatchCount > 0 ? (byte)1 : (byte)0;
|
|
state = blessedLandModel.GetOtherBlessedLandCellState(blessedLandModel.detailsIndex);
|
//0 无物品 1 有物品-超级物品-无人拉 2 有物品-超级物品-房主拉
|
//3 有物品-普通物品-无人拉 4 有物品-普通物品-房主拉 5 有物品-普通物品-玩家拉 6 有物品-普通物品-别人拉
|
//7 有物品-普通物品-房主和玩家抢-向房主移动 8 有物品-普通物品-房主和玩家抢-向玩家移动
|
//9 有物品-普通物品-房主和别人抢-向房主移动 10 有物品-普通物品-房主和别人抢-向别人移动
|
//在别人福地 左边是房主 右面是抢夺者
|
bool isHost = state == 2 || state == 4 || state == 7 || state == 8 || state == 9 || state == 10;
|
bool isTheft = state == 5 || state == 6 || state == 7 || state == 8 || state == 9 || state == 10;
|
bool isPlayer = state == 5 || state == 7 || state == 8;
|
bool isMoveTosHost = state == 2 || state == 4 || state == 7 || state == 9;
|
bool isMoveToTheft = state == 5 || state == 6 || state == 8 || state == 10;
|
imgLeftWorkersCountBG.SetActive(isHost);
|
imgRightWorkersCountBG.SetActive(isTheft);
|
txtLeftName.SetActive(isHost);
|
txtRightName.SetActive(state == 6 || state == 9 || state == 10);
|
imgRightDownArrow.SetActive(isMoveToTheft);
|
imgLeftDownArrow.SetActive(isMoveTosHost);
|
txtLeftHostCollectionFlag.SetActive(state == 3 || state == 5 || state == 6);
|
txtRightHostCollectionFlag.SetActive(false);
|
txtLeftCollectionFlag.SetActive(false);
|
txtRightCollectionFlag.SetActive(state == 3 || state == 4);
|
txtCollectionByOther.SetActive(state == 6 || state == 9 || state == 10);
|
txtCollectionTime.SetActive(state == 3 || state == 4 || state == 5 || state == 7 || state == 8);
|
imgMy.SetActive(isPlayer);
|
imgLeftSpriteAnimation.SetActive(true);
|
btnRecall1.SetActive(isPlayer);
|
btnRecall2.SetActive(false);
|
btnCollection1.SetActive(state == 3 || state == 4);
|
btnCollection2.SetActive(isPlayer);
|
btnCollection3.SetActive(false);
|
btnPK1.SetActive(false);
|
btnPK2.SetActive(false);
|
ItemCellShow();
|
imgLeftSpriteAnimation.sprite = isHost ? UILoader.LoadSprite("BlessedLand02") : UILoader.LoadSprite("BlessedLand01");
|
imgRightSpriteAnimation.sprite = isTheft ? UILoader.LoadSprite("BlessedLand02") : UILoader.LoadSprite("BlessedLand01");
|
txtLeftCount.text = itemInfos.WorkerCount.ToString();
|
txtRightCount.text = itemInfos.RobWorkerCount.ToString();
|
txtLeftName.text = blessedLandModel.newAreaDataDict[blessedLandModel.showPlayerId].PlayerName;
|
txtRightName.text = itemInfos.RobPlayerID < 10000 ? blessedLandModel.GetNameForPlayerId((int)itemInfos.RobPlayerID) : UIHelper.ServerStringTrim(itemInfos.RobPlayerName);
|
itemMaxWorkerCount = blessedLandModel.itemLevelMaxWorkersArr[MineAreaItemConfig.Get(itemInfos.MineID).ItemLV - 1];
|
txtChooseWorkerCount.text = StringUtility.Contact(chooseWorkerCount, "/", realDispatchCount);
|
txtChooseWorkerCount.colorType = realDispatchCount > 0 ? TextColType.White : TextColType.Red;
|
imgItemIcon.SetSprite(ItemConfig.Get(MineAreaItemConfig.Get(itemInfos.MineID).ItemID).IconKey);
|
txtItemCount.text = MineAreaItemConfig.Get(itemInfos.MineID).ItemCount.ToString();
|
txtItemMaxWorkerCount.text = Language.Get("BlessedLand047", itemMaxWorkerCount);
|
ChangeCollectionTime(needSeconds);
|
MineAreaInfo mineAreaInfo = blessedLandModel.newAreaDataDict[blessedLandModel.showPlayerId];
|
leftHead.InitUI(itemInfos.RobPlayerID < 10000 ? blessedLandModel.GetModelForPlayerId((int)blessedLandModel.showPlayerId) : AvatarHelper.GetAvatarModel((int)mineAreaInfo.PlayerID, (int)mineAreaInfo.Face, (int)mineAreaInfo.FacePic, (int)mineAreaInfo.Job));
|
rightHead.InitUI(itemInfos.RobPlayerID < 10000 ? blessedLandModel.GetModelForPlayerId((int)itemInfos.RobPlayerID) : AvatarHelper.GetAvatarModel((int)itemInfos.RobPlayerID, (int)itemInfos.RobFace, (int)itemInfos.RobFacePic, (int)itemInfos.RobJob));
|
blessedLandModel.SendCB030Pack(blessedLandModel.showPlayerId, blessedLandModel.detailsIndex, itemInfos.RobPlayerID == blessedLandModel.myPlayerId ? (byte)Mathf.Max(itemInfos.RobWorkerCount, 1) : (byte)1, 1);
|
|
}
|
}
|
|
protected override void OnAfterOpen()
|
{
|
|
}
|
|
protected override void OnAfterClose()
|
{
|
|
}
|
|
protected override void OnPreClose()
|
{
|
GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent;
|
blessedLandModel.UpdatePullPreviewMine -= OnUpdatePullPreviewMine;
|
DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= OnBeforePlayerDataInitialize;
|
}
|
|
private void OnBeforePlayerDataInitialize()
|
{
|
if (WindowCenter.Instance.IsOpen<BlessedLandDetailsWin>())
|
{
|
WindowJumpMgr.Instance.ClearJumpData();
|
WindowCenter.Instance.CloseAll();
|
}
|
}
|
|
private void OnSecondEvent()
|
{
|
if (state == 0 || state == 1 || state == 3)
|
return;
|
if (needSeconds == 0)
|
return;
|
needSeconds -= 1;
|
ChangeCollectionTime(needSeconds);
|
if (needSeconds == 0 && WindowCenter.Instance.IsOpen<BlessedLandDetailsWin>())
|
WindowCenter.Instance.Close<BlessedLandDetailsWin>();
|
}
|
|
private void OnUpdatePullPreviewMine()
|
{
|
needSeconds = (int)ModelCenter.Instance.GetModel<BlessedLandModel>().NeedSeconds;
|
ChangeCollectionTime(needSeconds);
|
}
|
|
void ChangeCollectionTime(int needSeconds)
|
{
|
string time = TimeUtility.SecondsToDHMS(needSeconds);
|
if (blessedLandModel.showPlayerId == blessedLandModel.myPlayerId)
|
{
|
txtCollectionTime.text = state == 1 || state == 3 || state == 5 ? Language.Get("BlessedLand032") : Language.Get("BlessedLand033");
|
txtTime.text = time.ToString();
|
}
|
else
|
{
|
txtCollectionTime.text = state == 3 || state == 4 ? Language.Get("BlessedLand032") : Language.Get("BlessedLand033");
|
txtTime.text = time.ToString();
|
}
|
}
|
|
void ItemCellShow()
|
{
|
int mineID = itemInfos.MineID;
|
int itemID = MineAreaItemConfig.Get(mineID).ItemID;
|
int itemLV = MineAreaItemConfig.Get(mineID).ItemLV;
|
itemCell.Init(new ItemCellModel(itemID, false, (ulong)itemLV));
|
itemCell.countText.SetActive(true);
|
itemCell.countText.text = Language.Get("FashionDress106", itemLV);
|
itemCell.button.SetListener(() =>
|
{
|
ItemTipUtility.Show(itemID);
|
});
|
}
|
|
void TryCollection()
|
{
|
//工人体力耗尽
|
if (blessedLandModel.EnergyUsed >= blessedLandModel.GetTotalEnergy())
|
{
|
SysNotifyMgr.Instance.ShowTip("BlessedLand01");
|
return;
|
}
|
//同时采集同一个人的多个资源
|
if (blessedLandModel.showPlayerId != blessedLandModel.myPlayerId && blessedLandModel.IsSnatchItem())
|
{
|
SysNotifyMgr.Instance.ShowTip("BlessedLand02");
|
return;
|
}
|
//当前资源正在被别人采
|
if (blessedLandModel.showPlayerId != blessedLandModel.myPlayerId && itemInfos.RobWorkerCount > 0 && itemInfos.RobPlayerID != blessedLandModel.myPlayerId)
|
{
|
SysNotifyMgr.Instance.ShowTip("BlessedLand03");
|
return;
|
}
|
//没有空闲工人
|
if (realDispatchCount <= 0)
|
{
|
SysNotifyMgr.Instance.ShowTip("BlessedLand04");
|
return;
|
}
|
blessedLandModel.SendCB030Pack(blessedLandModel.showPlayerId, blessedLandModel.detailsIndex, (byte)chooseWorkerCount, 0);
|
WindowCenter.Instance.Close<BlessedLandDetailsWin>();
|
}
|
|
void TryRecall()
|
{
|
ConfirmCancel.ShowPopConfirm(
|
Language.Get("L1003"),
|
Language.Get("BlessedLand020"),
|
(bool isOk) =>
|
{
|
if (isOk)
|
{
|
blessedLandModel.SendCB030Pack(blessedLandModel.showPlayerId, blessedLandModel.detailsIndex, 0, 0);
|
WindowCenter.Instance.Close<BlessedLandDetailsWin>();
|
}
|
});
|
return;
|
}
|
|
void TryPK()
|
{
|
blessedLandModel.helpType = 0;
|
blessedLandModel.robPlayerId = itemInfos.RobPlayerID;
|
roleParticularModel.ViewCrossPlayerCacheData((int)blessedLandModel.robPlayerId, (int)ViewPlayerType.viewCrossPlayerDataBlessedLand);
|
}
|
|
}
|
}
|
|