//-------------------------------------------------------- // [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] 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(); 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(); }); } else { skillWordCells[i].SetActive(false); } } bossModel.Create(npcConfig.SkinID, npcConfig.ModelScale); fightPowerText.text = UIHelper.ReplaceLargeArtNum(levelConfig.FightPower); var canChallengeBoss = AutoFightModel.Instance.CanChallengeBoss(); fightBtn.SetInteractable(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 (AutoFightModel.Instance.CanChallengeBoss()) { var pack = new CB410_tagCMTurnFight(); pack.MapID = 2; GameNetSystem.Instance.SendInfo(pack); AutoFightModel.Instance.isPause = true; } CloseWindow(); } void PlayerDataRefresh(PlayerDataType type) { switch (type) { case PlayerDataType.ExAttr1: case PlayerDataType.ExAttr2: var canChallengeBoss = AutoFightModel.Instance.CanChallengeBoss(); fightBtn.interactable = canChallengeBoss; fightBtn.SetColorful(null, 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(); } }