//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Thursday, November 01, 2018 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace vnxbqy.UI { public class TeamDungeonTicketLackWin : Window { public static LackType lackType = LackType.FairyLand; [SerializeField] ItemBehaviour m_Item; [SerializeField] TextEx m_TicketOwn; [SerializeField] TextEx m_TicketNeed; [SerializeField] Text m_LackContentTip; [SerializeField] Text m_LackMoneyTip; [SerializeField] Button m_Buy; [SerializeField] Button m_Close; [SerializeField] Button m_TicketCompose; [SerializeField] Toggle m_RemindToggle; DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel(); } } PackModel packModel { get { return ModelCenter.Instance.GetModel(); } } ComposeWinModel composeModel { get { return ModelCenter.Instance.GetModel(); } } StoreModel storeModel { get { return ModelCenter.Instance.GetModel(); } } #region Built-in protected override void BindController() { } protected override void AddListeners() { m_Buy.onClick.AddListener(Buy); m_Close.onClick.AddListener(CloseClick); m_TicketCompose.onClick.AddListener(TicketCompose); } protected override void OnPreOpen() { var lackItem = GetLackItem(lackType); m_Item.showCount = false; m_Item.SetItem(lackItem); var own = packModel.GetItemCountByID(PackType.Item, lackItem.id); m_TicketOwn.text = own.ToString(); m_TicketNeed.text = StringUtility.Contact("/", lackItem.count); m_TicketOwn.colorType = own >= lackItem.count ? TextColType.White : TextColType.Red; m_TicketCompose.SetActive(own < lackItem.count && SatisfyComposeTicket(lackItem)); m_LackContentTip.text = GetLackContentTip(lackType); m_LackMoneyTip.SetActive(own < lackItem.count); if (own < lackItem.count) { var moneyNeed = GetUnitPrice(lackType) * (lackItem.count - own); m_LackMoneyTip.text = GetLackMoneyTip(lackType, moneyNeed); } m_RemindToggle.isOn = false; } protected override void OnAfterOpen() { } protected override void OnPreClose() { DayRemind.Instance.SetDayRemind(GetDayRemindKey(lackType), m_RemindToggle.isOn); } protected override void OnAfterClose() { } #endregion private Item GetLackItem(LackType _lackType) { switch (_lackType) { case LackType.FairyLand: return dungeonModel.GetLackItem(DungeonSuppliesLackWin.LackType.FairyLand); default: return default(Item); } } private string GetLackContentTip(LackType _lackType) { switch (_lackType) { case LackType.FairyLand: return Language.Get("TeamLostItem1"); default: return string.Empty; } } private bool SatisfyComposeTicket(Item lackItem) { ItemCompoundConfig itemCompound = null; composeModel.TryGetItemCompoundByMakeId(lackItem.id,out itemCompound); if(itemCompound != null) { return composeModel.IsComposeTicketByType(itemCompound.secondType); } return false; } private int GetUnitPrice(LackType _lackType) { switch (_lackType) { case LackType.FairyLand: var dungeonId3 = dungeonModel.GetDungeonId(31080, 0); var config3 = DungeonConfig.Get(dungeonId3); return config3.TicketPrice; default: return 0; } } private void TicketCompose() { switch (lackType) { case LackType.FairyLand: CloseImmediately(); WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.ComposeTicketFairy); break; } } private string GetLackMoneyTip(LackType _lackType, int _moneyLack) { switch (_lackType) { case LackType.FairyLand: return Language.Get("W_TicketJade", _moneyLack); default: return string.Empty; } } private string GetBindJadeLackTip(LackType _lackType, int _moneyNeed, int _moneyOwn) { switch (_lackType) { case LackType.FairyLand: return Language.Get("JadeChargeAgainst", _moneyNeed); default: return string.Empty; } } private StoreConfig GetStoreConfig(Item lackItem, int moneyType) { var config = StoreConfig.GetStoreCfg(lackItem.id, moneyType); return config; } private void Buy() { var lackItem = GetLackItem(lackType); var own = packModel.GetItemCountByID(PackType.Item, lackItem.id); if (own < lackItem.count) { var moneyNeed = GetUnitPrice(lackType) * (lackItem.count - own); if (PlayerDatas.Instance.baseData.diamond < moneyNeed) { if (VersionConfig.Get().isBanShu) { SysNotifyMgr.Instance.ShowTip("GoldErr"); return; } WindowCenter.Instance.Open(); } else { ConfirmTodo(lackType, 1); } } } private void ConfirmTodo(LackType _lackType,int moneyType) { switch (_lackType) { case LackType.FairyLand: var lackItem = GetLackItem(_lackType); var config = GetStoreConfig(lackItem, moneyType); if (config != null) { var own = packModel.GetItemCountByID(PackType.Item, lackItem.id); if (moneyType == 1) { ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), GetConfirmLabel(_lackType), (bool isOk) => { if (isOk) { storeModel.SendBuyShopItem(config, lackItem.count - own); CloseImmediately(); } }); return; } else { storeModel.SendBuyShopItem(config, lackItem.count - own); } } CloseImmediately(); break; default: break; } } string GetConfirmLabel(LackType _lackType) { switch (_lackType) { case LackType.FairyLand: return Language.Get("TeamLostItem2", GetUnitPrice(_lackType)); default: return string.Empty; } } public static string GetDayRemindKey(LackType _lackType) { switch (_lackType) { case LackType.FairyLand: return DayRemind.TEAM_TICKET_FAIRYLAND; default: return string.Empty; } } public enum LackType { FairyLand, } } }