using System.Collections.Generic; using System.Linq; using UnityEngine; using UnityEngine.UI; namespace vnxbqy.UI { public class FamilyZBGWin : Window { [SerializeField] Button close; [SerializeField] Text talkText; [SerializeField] ScaleTween talkTween; [SerializeField] List items = new List(); [SerializeField] Text orgPrice; [SerializeField] Image orgIcon; [SerializeField] Transform cutObj; [SerializeField] Text price; [SerializeField] Text totalInfo; [SerializeField] Button memberOnlineBtn; [SerializeField] ScrollerController scroller; [SerializeField] Button cutBtn; [SerializeField] Text cutText; [SerializeField] Image cutState; FairyNewModel familyModel { get { return ModelCenter.Instance.GetModel(); } } PackModel packModel { get { return ModelCenter.Instance.GetModel(); } } protected override void BindController() { } protected override void AddListeners() { close.AddListener(CloseClick); memberOnlineBtn.AddListener(() => { WindowCenter.Instance.Open(); }); cutBtn.AddListener(OnCut); } protected override void OnPreOpen() { talkTween.Stop(); familyModel.UpdateFamilyActionEvent += OnFamilyActionInfoEvent; scroller.OnRefreshCell += OnRefreshCell; familyModel.UpdateZhenbaogeEvent += OnPlayerZBGEvent; Display(); CreateScroller(); } protected override void OnAfterOpen() { DisplayTalk(); } protected override void OnPreClose() { familyModel.UpdateFamilyActionEvent -= OnFamilyActionInfoEvent; scroller.OnRefreshCell -= OnRefreshCell; familyModel.UpdateZhenbaogeEvent -= OnPlayerZBGEvent; } protected override void OnAfterClose() { } void OnRefreshCell(ScrollerDataType type, CellView cell) { var _cell = cell as FamilyZBGCell; _cell.Display(cell.index); } void CreateScroller() { scroller.Refresh(); var keys = familyModel.sortPlayerCut; for (int i = 0; i < keys.Count; i++) { scroller.AddCell(ScrollerDataType.Header, i); } scroller.Restart(); } void Display() { var awards = familyModel.GetZBGItems(); for (int i = 0; i < items.Count; i++) { if (i < awards.Length) { items[i].SetActive(true); int itemID = awards[i][0]; items[i].Init(new ItemCellModel(itemID, false, (ulong)awards[i][1])); items[i].button.AddListener(() => { ItemTipUtility.Show(itemID); }); } else { items[i].SetActive(false); } } orgPrice.text = familyModel.zbgOrgPriceValue.ToString(); orgIcon.SetSmallIconWithMoneyType(familyModel.zbgPriceType); DisplayFamilyCutInfo(); DisplayBtnState(); } void DisplayFamilyCutInfo() { int cutPrice = 0; if (familyModel.familyZBGActions[1].Value3 > 0) { price.text = "-" + familyModel.familyZBGActions[1].Value2; cutPrice = familyModel.zbgOrgPriceValue + (int)familyModel.familyZBGActions[1].Value2; } else { price.text = familyModel.familyZBGActions[1].Value2.ToString(); cutPrice = familyModel.zbgOrgPriceValue - (int)familyModel.familyZBGActions[1].Value2; } totalInfo.text = Language.Get("FairyZBG2", familyModel.familyZBGActions.Count - 1, PlayerDatas.Instance.fairyData.fairy.Member.Count, "SmallMoney" + familyModel.zbgPriceType, cutPrice); cutObj.SetActive(familyModel.familyZBGActions.Count > 1); } void DisplayBtnState() { if (familyModel.zhenbaogeCutState == 0) { cutText.text = Language.Get("FairyZBG3"); cutBtn.SetActive(true); cutState.SetActive(false); } else if (familyModel.zhenbaogeBuyState == 0) { cutText.text = Language.Get("FairyZBG4"); cutBtn.SetActive(true); cutState.SetActive(false); } else { cutBtn.SetActive(false); cutState.SetActive(true); } } void DisplayTalk() { talkTween.SetStartState(); talkTween.Play(); talkText.text = Language.Get("FairyZBGTalk" + familyModel.GetTalkState()); } private void OnDisable() { } private void OnFamilyActionInfoEvent(bool restart) { if (restart) { Display(); } else { DisplayFamilyCutInfo(); } DisplayTalk(); if (familyModel.sortPlayerCut.Count != scroller.GetNumberOfCells(scroller.m_Scorller)) { CreateScroller(); } else { scroller.m_Scorller.RefreshActiveCellViews(); } DisplayBtnState(); } void OnCut() { //退盟的cd限制 if (familyModel.needCheckCutCD && (TimeUtility.AllSeconds - PlayerDatas.Instance.baseData.leaveFamilyTime) / 60 < familyModel.zbgChangFamilyCD ) { SysNotifyMgr.Instance.ShowTip("ZhenbaogeCut1", familyModel.zbgChangFamilyCD - (TimeUtility.AllSeconds - PlayerDatas.Instance.baseData.leaveFamilyTime) / 60); return; } if (familyModel.zhenbaogeCutState == 0) { familyModel.OnZhenbaogeOP(0); } else if (familyModel.zhenbaogeBuyState == 0) { if (packModel.GetEmptyGridCount(PackType.Item) < items.Count) { SysNotifyMgr.Instance.ShowTip("GeRen_lhs_202580"); return; } if (familyModel.familyZBGActions[1].Value3 == 0 && UIHelper.GetMoneyCnt(familyModel.zbgPriceType) < familyModel.familyZBGActions[1].Value2) { SysNotifyMgr.Instance.ShowTip("LackMoney", familyModel.zbgPriceType); return; } familyModel.OnZhenbaogeOP(1); } } void OnPlayerZBGEvent() { DisplayBtnState(); } } }