| //-------------------------------------------------------- | 
| //    [Author]:           玩个游戏 | 
| //    [  Date ]:           Tuesday, July 24, 2018 | 
| //-------------------------------------------------------- | 
|   | 
| using System; | 
| using System.Collections; | 
| using System.Collections.Generic; | 
| using UnityEngine; | 
| using UnityEngine.UI; | 
|   | 
|   | 
| public class MainBossEnterWin : UIBase | 
| { | 
|     [SerializeField] Text fbNameText; | 
|     [SerializeField] Button CloseBtn; | 
|     [SerializeField] Text bossNameText; | 
|     [SerializeField] Image bossBG; | 
|     [SerializeField] SkillWordCell[] skillWordCells; | 
|     [SerializeField] UIHeroController bossModel; | 
|     [SerializeField] Text fightPowerText; | 
|     [SerializeField] Button rankBtn; | 
|     [SerializeField] ItemCell[] passAwards; | 
|     [SerializeField] Button fightBtn; | 
|     [SerializeField] Image fightIcon; | 
|     [SerializeField] ScrollerController dropItemScroller; | 
|   | 
|   | 
|     protected override void InitComponent() | 
|     { | 
|         CloseBtn.AddListener(CloseWindow); | 
|         rankBtn.AddListener(() => | 
|         { | 
|             RankModel.Instance.ResetQueryParam(); | 
|             RankModel.Instance.QueryRankByPage(0, watchID: (int)PlayerDatas.Instance.baseData.PlayerID); | 
|             var win = UIManager.Instance.OpenWindow<PlayerRankWin>(); | 
|             win.rankType = 0; | 
|   | 
|         }); | 
|   | 
|         fightBtn.AddListener(FightBoss); | 
|     } | 
|   | 
|     protected override void OnPreOpen() | 
|     { | 
|         PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefresh; | 
|         dropItemScroller.OnRefreshCell += OnRefreshCell; | 
|         MainLevelManager.Instance.OnUpdateDayBooty += UpdateDayBooty; | 
|         Display(); | 
|         CreateScroller(); | 
|     } | 
|   | 
|   | 
|     protected override void OnPreClose() | 
|     { | 
|         PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefresh; | 
|         dropItemScroller.OnRefreshCell -= OnRefreshCell; | 
|         MainLevelManager.Instance.OnUpdateDayBooty -= UpdateDayBooty; | 
|     } | 
|   | 
|     void Display() | 
|     { | 
|         var value = PlayerDatas.Instance.baseData.ExAttr2; | 
|         var chapterID = value / 10000; | 
|         var levelNum = value % 10000 / 100; | 
|   | 
|         var chapterConfig = MainChapterConfig.Get(chapterID); | 
|   | 
|         //【普通】关卡名字1-6 | 
|         fbNameText.text = Language.Get("mainui7", chapterConfig.Level, chapterConfig.ChapterName, chapterID, levelNum); | 
|   | 
|         var levelConfig = MainLevelConfig.GetMainLevelConfig(chapterID, levelNum); | 
|         var lineUPID = levelConfig.BossLineupIDList[levelConfig.BossLineupIDList.Length - 1]; | 
|         var lineUPConfig = NPCLineupConfig.Get(lineUPID); | 
|         var npcConfig = NPCConfig.Get(lineUPConfig.BossID); | 
|         if (npcConfig == null) | 
|         { | 
|             Debug.LogErrorFormat("NPC未配置 : {0}", lineUPConfig.BossID); | 
|             return; | 
|         } | 
|   | 
|   | 
|         bossNameText.text = npcConfig.NPCName; | 
|   | 
|         for (int i = 0; i < skillWordCells.Length; i++) | 
|         { | 
|             if (i < lineUPConfig.SkillIDExList.Length) | 
|             { | 
|                 skillWordCells[i].SetActive(true); | 
|                 int skillID = lineUPConfig.SkillIDExList[i]; | 
|                 skillWordCells[i].Init(skillID, () => | 
|                 { | 
|                     SmallTipWin.showText = Language.Get("SmallTipFomat",SkillConfig.Get(skillID)?.SkillName, SkillConfig.Get(skillID)?.Description) ; | 
|                     SmallTipWin.worldPos = CameraManager.uiCamera.ScreenToWorldPoint(Input.mousePosition); | 
|                     SmallTipWin.isDownShow = true; | 
|                     UIManager.Instance.OpenWindow<SmallTipWin>(); | 
|                 }); | 
|             } | 
|             else | 
|             { | 
|                 skillWordCells[i].SetActive(false); | 
|             } | 
|         } | 
|   | 
|         bossModel.Create(npcConfig.SkinID, npcConfig.ModelScale); | 
|   | 
|         fightPowerText.text = UIHelper.ReplaceLargeArtNum(levelConfig.FightPower); | 
|   | 
|         var canChallengeBoss = MainLevelManager.Instance.CanChallengeBoss(); | 
|   | 
|         fightBtn.SetInteractable(canChallengeBoss); | 
|         fightIcon.SetActive(canChallengeBoss); | 
|   | 
|         for (int i = 0; i < passAwards.Length; i++) | 
|         { | 
|             if (i < levelConfig.AwardItemList.Length) | 
|             { | 
|                 passAwards[i].SetActive(true); | 
|                 int id = levelConfig.AwardItemList[i][0]; | 
|                 passAwards[i].Init(new ItemCellModel(id, false, levelConfig.AwardItemList[i][1])); | 
|                 passAwards[i].button.AddListener(() => | 
|                 { | 
|                     ItemTipUtility.Show(id); | 
|                 }); | 
|             } | 
|             else | 
|             { | 
|                 passAwards[i].SetActive(false); | 
|             } | 
|         } | 
|         bossBG.SetOrgSprite(chapterConfig.BG, "MainLevel"); | 
|     } | 
|   | 
|   | 
|     void FightBoss() | 
|     { | 
|         if (MainLevelManager.Instance.CanChallengeBoss()) | 
|         { | 
|             var pack = new CB410_tagCMTurnFight(); | 
|             pack.MapID = 2; | 
|             // pack.FuncLineID = (uint)PlayerDatas.Instance.baseData.ExAttr1 + 1; | 
|             GameNetSystem.Instance.SendInfo(pack); | 
|   | 
|             AutoFightModel.Instance.isPause = true; | 
|         } | 
|         CloseWindow(); | 
|     } | 
|   | 
|   | 
|     void PlayerDataRefresh(PlayerDataType type) | 
|     { | 
|         switch (type) | 
|         { | 
|             case PlayerDataType.ExAttr1: | 
|             case PlayerDataType.ExAttr2: | 
|                 var canChallengeBoss = MainLevelManager.Instance.CanChallengeBoss(); | 
|   | 
|                 fightBtn.SetInteractable(canChallengeBoss); | 
|                 fightIcon.SetActive(canChallengeBoss); | 
|                 break; | 
|         } | 
|   | 
|     } | 
|   | 
|     void OnRefreshCell(ScrollerDataType type, CellView cell) | 
|     { | 
|         var _cell = cell as MainLevelDropCell; | 
|         _cell.Display(cell.index); | 
|     } | 
|   | 
|     void UpdateDayBooty() | 
|     { | 
|         dropItemScroller.m_Scorller.RefreshActiveCellViews(); | 
|     } | 
|   | 
|   | 
|     void CreateScroller() | 
|     { | 
|         dropItemScroller.Refresh(); | 
|         foreach (DictionaryEntry item in MainChapterConfig.unLockedChapterDict) | 
|         { | 
|             dropItemScroller.AddCell(ScrollerDataType.Header, (int)item.Key); | 
|         } | 
|         dropItemScroller.Restart(); | 
|     } | 
| } |