//-------------------------------------------------------- 
 | 
//    [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(); 
 | 
    } 
 | 
} 
 |