| //--------------------------------------------------------  | 
| //    [Author]:           第二世界  | 
| //    [  Date ]:           Thursday, May 03, 2018  | 
| //--------------------------------------------------------  | 
|   | 
| using System;  | 
| using System.Collections;  | 
| using System.Collections.Generic;  | 
| using UnityEngine;  | 
| using UnityEngine.UI;  | 
|   | 
|   | 
| namespace vnxbqy.UI  | 
| {  | 
|   | 
|     public class DungeonSuppliesLackWin : Window  | 
|     {  | 
|   | 
|         public static LackType lackType = LackType.PersonalBoss;  | 
|   | 
|         [SerializeField] ItemBehaviour m_Item;  | 
|         [SerializeField] TextEx m_TicketOwn;  | 
|         [SerializeField] TextEx m_TicketNeed;  | 
|         [SerializeField] Text m_LackContentTip;  | 
|         [SerializeField] Text m_LackMoneyTip;  | 
|         [SerializeField] Text m_ConfirmLabel;  | 
|         [SerializeField] Button m_Confirm;  | 
|         [SerializeField] Button m_Close;  | 
|         [SerializeField] Button m_TicketCompose;  | 
|   | 
|         DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }  | 
|         PackModel playerPack { get { return ModelCenter.Instance.GetModel<PackModel>(); } }  | 
|         ComposeWinModel composeModel { get { return ModelCenter.Instance.GetModel<ComposeWinModel>(); } }  | 
|         PersonalBossModel personalBossModel { get { return ModelCenter.Instance.GetModel<PersonalBossModel>(); } }  | 
|   | 
|         #region Built-in  | 
|         protected override void BindController()  | 
|         {  | 
|         }  | 
|   | 
|         protected override void AddListeners()  | 
|         {  | 
|             m_Confirm.AddListener(Confirm);  | 
|             m_Close.AddListener(CloseClick);  | 
|             m_TicketCompose.AddListener(TicketCompose);  | 
|         }  | 
|   | 
|         protected override void OnPreOpen()  | 
|         {  | 
|             var lackItem = GetLackItem(lackType);  | 
|             m_Item.showCount = false;  | 
|             m_Item.SetItem(lackItem);  | 
|   | 
|             var own = playerPack.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;  | 
|             if (lackType == LackType.PersonalBoss)  | 
|             {  | 
|                 m_TicketCompose.SetActive(true);  | 
|             }  | 
|             else  | 
|             {  | 
|                 m_TicketCompose.SetActive(own < lackItem.count && CanComposeTicket(lackType));  | 
|             }  | 
|   | 
|             m_LackContentTip.text = GetLackContentTip(lackType);  | 
|             m_LackMoneyTip.SetActive(own < lackItem.count);  | 
|             m_ConfirmLabel.text = GetConfirmLabel(lackType);  | 
|   | 
|             if (own < lackItem.count)  | 
|             {  | 
|                 var moneyNeed = GetUnitPrice(lackType) * (lackItem.count - own);  | 
|                 m_LackMoneyTip.text = GetLackMoneyTip(lackType, moneyNeed);  | 
|             }  | 
|   | 
|         }  | 
|   | 
|         protected override void OnAfterOpen()  | 
|         {  | 
|         }  | 
|   | 
|         protected override void OnPreClose()  | 
|         {  | 
|         }  | 
|   | 
|         protected override void OnAfterClose()  | 
|         {  | 
|         }  | 
|         #endregion  | 
|   | 
|         private void Confirm()  | 
|         {  | 
|             var lackItem = GetLackItem(lackType);  | 
|             var own = playerPack.GetItemCountByID(PackType.Item, lackItem.id);  | 
|             if (own < lackItem.count)  | 
|             {  | 
|                 var moneyNeed = GetUnitPrice(lackType) * (lackItem.count - own);  | 
|                 var moneyOwn = PlayerDatas.Instance.baseData.diamond;  | 
|                 if (moneyOwn < moneyNeed)  | 
|                 {  | 
|                     if (VersionConfig.Get().isBanShu)  | 
|                     {  | 
|                         SysNotifyMgr.Instance.ShowTip("GoldErr");  | 
|                         return;  | 
|                     }  | 
|   | 
|                     WindowCenter.Instance.Open<RechargeTipWin>();  | 
|                 }  | 
|                 else  | 
|                 {  | 
|                     ConfirmTodo(lackType);  | 
|                 }  | 
|             }  | 
|             else  | 
|             {  | 
|                 ConfirmTodo(lackType);  | 
|             }  | 
|         }  | 
|   | 
|         private void TicketCompose()  | 
|         {  | 
|             switch (lackType)  | 
|             {  | 
|                 case LackType.ElderGodArea:  | 
|                     WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.ComposeTicketGod);  | 
|                     break;  | 
|                 case LackType.PersonalBoss:  | 
|                     WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.VipRechargeFunc5);  | 
|                     break;  | 
|                 case LackType.FairyLand:  | 
|                     WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.ComposeTicketFairy);  | 
|                     break;  | 
|                 case LackType.SingleIceCrystal:  | 
|                     WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.ComposeTicketIce);  | 
|                     break;  | 
|             }  | 
|         }  | 
|   | 
|         private Dungeon GetDungeon(LackType _lackType)  | 
|         {  | 
|             switch (_lackType)  | 
|             {  | 
|                 case LackType.PersonalBoss:  | 
|                     return new Dungeon(PersonalBossModel.PERSONALBOSS_MAPID, 0);  | 
|                 case LackType.ElderGodArea:  | 
|                     return new Dungeon(ElderGodAreaModel.ELDERGODAREA_MAPID, 0);  | 
|                 case LackType.Kylin:  | 
|                     return dungeonModel.selectedKylinDungeon;  | 
|                 case LackType.IceCrystal:  | 
|                     return new Dungeon(31140, 0);  | 
|                 case LackType.FairyLand:  | 
|                     return new Dungeon(31080, 0);  | 
|                 case LackType.SingleIceCrystal:  | 
|                     return new Dungeon(31140, 0);  | 
|                 default:  | 
|                     return default(Dungeon);  | 
|             }  | 
|         }  | 
|   | 
|         private Item GetLackItem(LackType _lackType)  | 
|         {  | 
|             return dungeonModel.GetLackItem(_lackType);  | 
|         }  | 
|   | 
|         private int GetUnitPrice(LackType _lackType)  | 
|         {  | 
|             switch (_lackType)  | 
|             {  | 
|                 case LackType.PersonalBoss:  | 
|                     var dungeonId1 = dungeonModel.GetDungeonId(PersonalBossModel.PERSONALBOSS_MAPID, 0);  | 
|                     var config1 = DungeonConfig.Get(dungeonId1);  | 
|                     return config1.TicketPrice;  | 
|                 case LackType.ElderGodArea:  | 
|                     var dungeonId2 = dungeonModel.GetDungeonId(ElderGodAreaModel.ELDERGODAREA_MAPID, 0);  | 
|                     var config2 = DungeonConfig.Get(dungeonId2);  | 
|                     return config2.TicketPrice;  | 
|                 case LackType.Kylin:  | 
|                 case LackType.IceCrystal:  | 
|                     return GeneralDefine.autoBuyItemPrices[0];  | 
|                 case LackType.FairyLand:  | 
|                     var dungeonId3 = dungeonModel.GetDungeonId(31080, 0);  | 
|                     var config3 = DungeonConfig.Get(dungeonId3);  | 
|                     return config3.TicketPrice;  | 
|                 case LackType.SingleIceCrystal:  | 
|                     var dungeonId4 = dungeonModel.GetDungeonId(31140, 0);  | 
|                     var config4 = DungeonConfig.Get(dungeonId4);  | 
|                     return config4.TicketPrice;  | 
|                 default:  | 
|                     return 0;  | 
|             }  | 
|         }  | 
|   | 
|         private string GetLackContentTip(LackType _lackType)  | 
|         {  | 
|             switch (_lackType)  | 
|             {  | 
|                 case LackType.PersonalBoss:  | 
|                     return UIHelper.ReplaceNewLine(Language.Get("W_PersonalBossTickets"));  | 
|                 case LackType.ElderGodArea:  | 
|                     return Language.Get("W_ElderGodTickets");  | 
|                 case LackType.Kylin:  | 
|                 case LackType.IceCrystal:  | 
|                     var dungeonId = dungeonModel.GetDungeonId(GetDungeon(_lackType));  | 
|                     var config = DungeonConfig.Get(dungeonId);  | 
|                     return Language.Get("MultipleSweep_Text1", config.FBName, config.SweepCostCnt);  | 
|                 case LackType.FairyLand:  | 
|                     return Language.Get("W_XJMJGodTickets");  | 
|                 case LackType.SingleIceCrystal:  | 
|                     return Language.Get("W_BJKMGodTickets");  | 
|                 default:  | 
|                     return string.Empty;  | 
|             }  | 
|         }  | 
|   | 
|         private string GetLackMoneyTip(LackType _lackType, int _moneyLack)  | 
|         {  | 
|             switch (_lackType)  | 
|             {  | 
|                 case LackType.PersonalBoss:  | 
|                 case LackType.ElderGodArea:  | 
|                 case LackType.FairyLand:  | 
|                 case LackType.SingleIceCrystal:  | 
|                     return Language.Get("W_TicketJade", _moneyLack);  | 
|                 case LackType.Kylin:  | 
|                 case LackType.IceCrystal:  | 
|                     return Language.Get("MultipleSweep_Text2", _moneyLack);  | 
|                 default:  | 
|                     return string.Empty;  | 
|             }  | 
|         }  | 
|   | 
|         private string GetBindJadeLackTip(LackType _lackType, int _moneyNeed, int _moneyOwn)  | 
|         {  | 
|             switch (_lackType)  | 
|             {  | 
|                 case LackType.PersonalBoss:  | 
|                 case LackType.ElderGodArea:  | 
|                 case LackType.FairyLand:  | 
|                 case LackType.SingleIceCrystal:  | 
|                     return Language.Get("JadeChargeAgainst", _moneyNeed);  | 
|                 case LackType.Kylin:  | 
|                 case LackType.IceCrystal:  | 
|                     var lackItem = GetLackItem(_lackType);  | 
|                     var own = playerPack.GetItemCountByID(PackType.Item, lackItem.id);  | 
|                     return Language.Get("MultipleSweep_Text3", lackItem.count - own, _moneyNeed);  | 
|                 default:  | 
|                     return string.Empty;  | 
|             }  | 
|         }  | 
|   | 
|         private void ConfirmTodo(LackType _lackType)  | 
|         {  | 
|             switch (_lackType)  | 
|             {  | 
|                 case LackType.PersonalBoss:  | 
|                     personalBossModel.RequestGotoDungeon(personalBossModel.selectedBoss);  | 
|                     break;  | 
|                 case LackType.ElderGodArea:  | 
|                     dungeonModel.SingleChallenge(GetDungeon(_lackType));  | 
|                     break;  | 
|                 case LackType.Kylin:  | 
|                 case LackType.IceCrystal:  | 
|                     dungeonModel.RequestSweep(GetDungeon(_lackType));  | 
|                     break;  | 
|                 case LackType.FairyLand:  | 
|                     dungeonModel.SingleChallenge(GetDungeon(_lackType));  | 
|                     break;  | 
|                 case LackType.SingleIceCrystal:  | 
|                     dungeonModel.SingleChallenge(GetDungeon(_lackType));  | 
|                     break;  | 
|                 default:  | 
|                     break;  | 
|             }  | 
|         }  | 
|   | 
|         private string GetConfirmLabel(LackType _lackType)  | 
|         {  | 
|             switch (_lackType)  | 
|             {  | 
|                 case LackType.PersonalBoss:  | 
|                 case LackType.Kylin:  | 
|                 case LackType.IceCrystal:  | 
|                     return Language.Get("ConfirmTarget");  | 
|                 case LackType.ElderGodArea:  | 
|                 case LackType.FairyLand:  | 
|                 case LackType.SingleIceCrystal:  | 
|                     return Language.Get("W_CertainInto");  | 
|                 default:  | 
|                     return Language.Get("ConfirmTarget");  | 
|             }  | 
|         }  | 
|   | 
|         private bool CanComposeTicket(LackType _lackType)  | 
|         {  | 
|             if (_lackType == LackType.PersonalBoss)  | 
|             {  | 
|                 return true;  | 
|             }  | 
|             else  | 
|             {  | 
|                 var lackItem = GetLackItem(lackType);  | 
|                 ItemCompoundConfig itemCompound = null;  | 
|                 composeModel.TryGetItemCompoundByMakeId(lackItem.id, out itemCompound);  | 
|                 if (itemCompound != null)  | 
|                 {  | 
|                     return composeModel.IsComposeTicketByType(itemCompound.secondType);  | 
|                 }  | 
|                 return false;  | 
|             }  | 
|         }  | 
|   | 
|         public enum LackType  | 
|         {  | 
|             PersonalBoss,  | 
|             ElderGodArea,  | 
|             Kylin,  | 
|             IceCrystal,  | 
|             FairyLand,  | 
|             SingleIceCrystal,  | 
|             //后续IL开发添加预设  | 
|             default1,  | 
|             default2,  | 
|             default3,  | 
|             default4,  | 
|             default5,  | 
|             default6,  | 
|             default7,  | 
|             default8,  | 
|             default9,  | 
|             default10,  | 
|         }  | 
|   | 
|     }  | 
|   | 
| }  | 
|   | 
|   | 
|   | 
|   |