using vnxbqy.UI;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
using LitJson;
|
|
class WeddingProposeWin : ILWindow
|
{
|
|
Button closeBtn;
|
AvatarCell myHead;
|
Text myName;
|
AvatarCell otherHead;
|
Text tagName;
|
Button listButton;
|
Transform playerList;
|
ScrollerController scroll;
|
List<Text> prices = new List<Text>();
|
List<List<ItemCell>> itemLists = new List<List<ItemCell>>();
|
List<Text> counts = new List<Text>();
|
Button marryBtn;
|
Text marryBtnTxt;
|
List<Image> selectImgs = new List<Image>();
|
List<Button> giftBtns = new List<Button>();
|
|
List<int> bridePriceIDs = new List<int>() { 1, 2, 3 };
|
int selectGiftIndex = 0;
|
|
RoleParticularModel rolePModel { get { return ModelCenter.Instance.GetModel<RoleParticularModel>(); } }
|
|
uint coupleID = 0;
|
|
#region Built-in
|
protected override void BindController()
|
{
|
closeBtn = proxy.GetWidgtEx<Button>("CloseButton");
|
myHead = proxy.GetWidgtEx<AvatarCell>("myhead");
|
myName = proxy.GetWidgtEx<Text>("myname");
|
otherHead = proxy.GetWidgtEx<AvatarCell>("otherHead");
|
tagName = proxy.GetWidgtEx<Text>("tagname");
|
listButton = proxy.GetWidgtEx<Button>("ListButton");
|
playerList = proxy.GetWidgtEx<Transform>("playerlist");
|
scroll = proxy.GetWidgtEx<ScrollerController>("scroll");
|
marryBtnTxt = proxy.GetWidgtEx<Text>("marryBtnTxt");
|
|
for (int i = 1; i <= 3; i++)
|
{
|
prices.Add(proxy.GetWidgtEx<Text>("price" + i));
|
counts.Add(proxy.GetWidgtEx<Text>("count" + i));
|
|
itemLists.Add(new List<ItemCell>() {
|
proxy.GetWidgtEx<ItemCell>("itemcell1_" + i),
|
proxy.GetWidgtEx<ItemCell>("itemcell2_" + i)
|
});
|
selectImgs.Add(proxy.GetWidgtEx<Image>("selectImage" + i));
|
giftBtns.Add(proxy.GetWidgtEx<Button>("gift" + i));
|
}
|
|
marryBtn = proxy.GetWidgtEx<Button>("marryBtn");
|
}
|
|
protected override void AddListeners()
|
{
|
closeBtn.SetListener(()=> {
|
if (Time.time - WeddingModel.Instance.marryReqOkTime < WeddingModel.Instance.waitTime)
|
{
|
SysNotifyMgr.Instance.ShowTip("Marry4");
|
return;
|
}
|
WindowCenter.Instance.CloseIL<WeddingProposeWin>();
|
});
|
|
listButton.SetListener(()=> {
|
if (playerList.gameObject.activeSelf)
|
{
|
playerList.SetActiveIL(false);
|
}
|
else
|
{
|
playerList.SetActiveIL(true);
|
WeddingModel.Instance.GetPlayerList();
|
CreatPlayerList();
|
}
|
});
|
|
marryBtn.SetListener(Marry);
|
|
for (int i = 0; i < giftBtns.Count; i++)
|
{
|
int index = i;
|
giftBtns[i].SetListener(()=> {
|
selectGiftIndex = index;
|
ShowSelectImg();
|
|
});
|
}
|
}
|
|
protected override void OnPreOpen()
|
{
|
scroll.OnRefreshCell += OnRefreshCell;
|
GlobalTimeEvent.Instance.secondEvent += OnSecondEvent;
|
WeddingModel.Instance.OnSelectPlayer += OnSelectPlayerEvent;
|
WeddingModel.Instance.OnCoupleInfo += OnCoupleInfo;
|
RoleParticularModel.OnRevPackage += OnPlayerCacheResultEvent;
|
|
if (WeddingModel.Instance.m_CoupleID != 0)
|
{
|
coupleID = WeddingModel.Instance.m_CoupleID;
|
var viewPlayerData = rolePModel.GetViewPlayerData((int)WeddingModel.Instance.m_CoupleID);
|
var job = 1;
|
int face = 0;
|
int facePic = 0;
|
if (viewPlayerData != null)
|
{
|
job = viewPlayerData.rolePropData.Job;
|
}
|
//已有伴侣
|
WeddingModel.Instance.selectPlayer = new WeddingModel.SelectPlayer() {
|
playerID = (int)WeddingModel.Instance.m_CoupleID,
|
name = WeddingModel.Instance.m_CoupleName,
|
closeCnt = FlowerGiftModel.Instance.GetCloseCnt((int)WeddingModel.Instance.m_CoupleID),
|
job = job,
|
face = face,
|
facePic = facePic,
|
};
|
|
}
|
else
|
{
|
WeddingModel.Instance.GetPlayerList();
|
if (WeddingModel.Instance.playerList.Count > 0)
|
{
|
WeddingModel.Instance.selectPlayer = WeddingModel.Instance.playerList[0];
|
}
|
else
|
{
|
//没有好友和仙盟的情况
|
WeddingModel.Instance.selectPlayer = new WeddingModel.SelectPlayer();
|
}
|
}
|
Display();
|
}
|
protected override void OnPreClose()
|
{
|
scroll.OnRefreshCell -= OnRefreshCell;
|
WeddingModel.Instance.OnSelectPlayer -= OnSelectPlayerEvent;
|
GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent;
|
WeddingModel.Instance.OnCoupleInfo -= OnCoupleInfo;
|
RoleParticularModel.OnRevPackage -= OnPlayerCacheResultEvent;
|
}
|
|
#endregion
|
|
void OnPlayerCacheResultEvent(int viewType, int playerID, RoleParticularModel.ViewPlayerData data)
|
{
|
var viewPlayerData = rolePModel.GetViewPlayerData((int)WeddingModel.Instance.m_CoupleID);
|
if (viewPlayerData != null)
|
{
|
WeddingModel.Instance.selectPlayer = new WeddingModel.SelectPlayer()
|
{
|
playerID = (int)WeddingModel.Instance.m_CoupleID,
|
name = WeddingModel.Instance.m_CoupleName,
|
closeCnt = FlowerGiftModel.Instance.GetCloseCnt((int)WeddingModel.Instance.m_CoupleID),
|
job = viewPlayerData.rolePropData.Job,
|
face = viewPlayerData.rolePropData.Face,
|
facePic = viewPlayerData.rolePropData.FacePic,
|
};
|
Display();
|
}
|
}
|
|
|
void OnCoupleInfo()
|
{
|
if (coupleID == 0 && WeddingModel.Instance.m_CoupleID != 0)
|
{
|
coupleID = WeddingModel.Instance.m_CoupleID;
|
rolePModel.ViewPlayerCacheData((int)WeddingModel.Instance.m_CoupleID);
|
}
|
}
|
|
void Display()
|
{
|
myHead.InitUI(AvatarHelper.GetMyAvatarModel());
|
myName.text = PlayerDatas.Instance.baseData.PlayerName;
|
playerList.SetActiveIL(false);
|
listButton.SetActiveIL(WeddingModel.Instance.m_CoupleID == 0);
|
ShowTagPlayer();
|
ShowSelectImg();
|
|
for (int i = 0; i < bridePriceIDs.Count; i++)
|
{
|
var config = ILMarryConfig.Get(bridePriceIDs[i]);
|
prices[i].text = config.CostMoneyInfo[1].ToString();
|
counts[i].text = WeddingModel.Instance.m_BridePriceState[i].ToString();
|
var items = JsonMapper.ToObject<int[][]>(config.BrideGiftItemInfo);
|
|
for (int j = 0; j < itemLists[i].Count; j++)
|
{
|
if (j < items.Length)
|
{
|
itemLists[i][j].SetActiveIL(true);
|
int itemID = items[j][0];
|
var model = new ItemCellModel(itemID, false, (ulong)items[j][1]);
|
itemLists[i][j].Init(model);
|
itemLists[i][j].button.SetListener(() =>
|
{
|
ItemTipUtility.Show(itemID);
|
});
|
|
}
|
else
|
{
|
itemLists[i][j].SetActiveIL(false);
|
}
|
}
|
}
|
}
|
|
void OnRefreshCell(ScrollerDataType type, CellView cell)
|
{
|
var _cell = cell.GetILBehaviour<WeddingPlayerCell>();
|
_cell?.Display(cell.index);
|
}
|
|
void CreatPlayerList()
|
{
|
scroll.Refresh();
|
|
for (int i = 0; i < WeddingModel.Instance.playerList.Count; i++)
|
{
|
scroll.AddCell(ScrollerDataType.Header, i);
|
}
|
|
scroll.Restart();
|
scroll.m_Scorller.RefreshActiveCellViews();
|
}
|
|
void Marry()
|
{
|
if (WeddingModel.Instance.selectPlayer.playerID == 0)
|
{
|
SysNotifyMgr.Instance.ShowTip("Marry1");
|
return;
|
}
|
|
var config = ILMarryConfig.Get(bridePriceIDs[selectGiftIndex]);
|
if (WeddingModel.Instance.m_BridePriceState[selectGiftIndex] >= config.CanBuyCount)
|
{
|
SysNotifyMgr.Instance.ShowTip("Marry7");
|
return;
|
}
|
|
if ((int)HeroControler.Instance.GetMoneyCntIL(config.CostMoneyInfo[0]) < config.CostMoneyInfo[1])
|
{
|
WindowCenter.Instance.Open<RechargeTipWin>();
|
return;
|
}
|
if (WeddingModel.Instance.marryCloseCnt != 0 &&
|
FlowerGiftModel.Instance.GetCloseCnt(WeddingModel.Instance.selectPlayer.playerID) < WeddingModel.Instance.marryCloseCnt)
|
{
|
SysNotifyMgr.Instance.ShowTip("Marry3", WeddingModel.Instance.marryCloseCnt);
|
return;
|
}
|
|
var pack = new IL_CB311_tagCMMarryReq();
|
pack.BridePriceID = (byte)bridePriceIDs[selectGiftIndex];
|
pack.TagPlayerID = (uint)WeddingModel.Instance.selectPlayer.playerID;
|
GameNetSystem.Instance.SendInfo(pack);
|
}
|
|
void ShowSelectImg()
|
{
|
for (int i = 0; i < selectImgs.Count; i++)
|
{
|
selectImgs[i].SetActiveIL(false);
|
}
|
selectImgs[selectGiftIndex].SetActiveIL(true);
|
}
|
|
void OnSelectPlayerEvent()
|
{
|
playerList.SetActiveIL(false);
|
ShowTagPlayer();
|
}
|
|
void ShowTagPlayer()
|
{
|
if (WeddingModel.Instance.selectPlayer.playerID == 0)
|
{
|
otherHead.SetActiveIL(false);
|
tagName.text = Language.Get("ChatPanel_AddFriendName_1");
|
}
|
else
|
{
|
otherHead.SetActiveIL(true);
|
WeddingModel.SelectPlayer selectPlayer = WeddingModel.Instance.selectPlayer;
|
otherHead.InitUI(AvatarHelper.GetAvatarModel(selectPlayer.playerID, selectPlayer.face, selectPlayer.facePic, selectPlayer.job));
|
tagName.text = WeddingModel.Instance.selectPlayer.name;
|
}
|
}
|
|
void ShowMarryBtnText()
|
{
|
if (Time.time - WeddingModel.Instance.marryReqOkTime > WeddingModel.Instance.waitTime)
|
{
|
marryBtnTxt.text = Language.Get("Marry4");
|
marryBtn.interactable = true;
|
if (WeddingModel.Instance.marryReqOkTime > 0)
|
{
|
WeddingModel.Instance.marryReqOkTime = 0;
|
SysNotifyMgr.Instance.ShowTip("Marry5");
|
}
|
}
|
else
|
{
|
marryBtnTxt.text = Language.Get("Marry5", (int)(WeddingModel.Instance.waitTime - (Time.time - WeddingModel.Instance.marryReqOkTime)));
|
marryBtn.interactable = false;
|
}
|
}
|
|
void OnSecondEvent()
|
{
|
ShowMarryBtnText();
|
}
|
}
|