using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using System.Linq;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace vnxbqy.UI
|
{
|
public class FairyBoss : Window, SecondWindowInterface
|
{
|
[SerializeField] Text textBossName;
|
[SerializeField] Text textChallengeTime;
|
[SerializeField] Text textBossState;
|
[SerializeField] Button beginBtn;
|
[SerializeField] RawImage model;
|
[SerializeField] FunctionButton personalHurtBtn;
|
[SerializeField] FunctionButton familyHurtBtn;
|
[SerializeField] FunctionButtonGroup fbGroup;
|
[SerializeField] ScrollerController scroller;
|
|
FairyBossModel m_Model;
|
FairyBossModel fairyBossModel {
|
get {
|
return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<FairyBossModel>());
|
}
|
}
|
|
|
public Button close { get; set; }
|
protected override void OnActived()
|
{
|
if (fairyBossModel.redpoint2.state == RedPointState.Simple)
|
{
|
functionOrder = 1;
|
}
|
fbGroup.TriggerByOrder(functionOrder);
|
}
|
|
protected override void BindController()
|
{
|
if (this is SecondWindowInterface)
|
{
|
var frame = this.GetComponentInChildren<SecondFrameLoader>();
|
frame.Create();
|
close = frame.GetComponentInChildren<Button>();
|
}
|
}
|
|
protected override void AddListeners()
|
{
|
close.onClick.AddListener(OnClose);
|
beginBtn.onClick.AddListener(OnBeginBtn);
|
personalHurtBtn.AddListener(ShowPersonnalHurt);
|
familyHurtBtn.AddListener(ShowFamilyHurt);
|
}
|
|
protected override void OnPreOpen()
|
{
|
PlayerDatas.Instance.fairyData.OnRefreshFairyMine += OnRefreshFairyMine;
|
fairyBossModel.OnUpdateFamilyBossFBInfoEvent += OnUpdateFamilyBossFBInfoEvent;
|
fairyBossModel.OnUpdateFamilyBossFBPlayerInfoEvent += OnUpdateFamilyBossFBPlayerInfoEvent;
|
scroller.OnRefreshCell += OnRefreshCell;
|
Display();
|
|
}
|
|
|
|
protected override void OnAfterOpen()
|
{
|
|
}
|
|
protected override void OnPreClose()
|
{
|
|
}
|
|
protected override void OnAfterClose()
|
{
|
UI3DModelExhibition.Instance.StopShow();
|
PlayerDatas.Instance.fairyData.OnRefreshFairyMine -= OnRefreshFairyMine;
|
fairyBossModel.OnUpdateFamilyBossFBInfoEvent -= OnUpdateFamilyBossFBInfoEvent;
|
fairyBossModel.OnUpdateFamilyBossFBPlayerInfoEvent -= OnUpdateFamilyBossFBPlayerInfoEvent;
|
scroller.OnRefreshCell -= OnRefreshCell;
|
}
|
|
void OnRefreshCell(ScrollerDataType type, CellView cell)
|
{
|
var sortCell = cell as FairyBossHurtCell;
|
sortCell.Display(cell.index);
|
}
|
|
private void OnClose()
|
{
|
Close();
|
}
|
|
|
private void OnBeginBtn()
|
{
|
if (TimeUtility.Hour == 4 || TimeUtility.Hour == 5)
|
{
|
SysNotifyMgr.Instance.ShowTip("FamilyBoss1");
|
return;
|
}
|
if (fairyBossModel.m_FightTimes >= fairyBossModel.challengeTimes)
|
{
|
SysNotifyMgr.Instance.ShowTip("ChallengeFinish");
|
return;
|
}
|
|
if (fairyBossModel.IsFairyBossOpen())
|
{
|
ModelCenter.Instance.GetModel<DungeonModel>().SingleChallenge(FairyBossModel.MapId);
|
}
|
|
}
|
|
private void Display()
|
{
|
textBossState.text = Language.Get("UnionLiven114", fairyBossModel.hurtBuffInfo[0], fairyBossModel.m_FightMemCount);
|
textChallengeTime.text = Language.Get("UnionLiven115", TimeUtility.SecondsToMS(Math.Max(fairyBossModel.challengeTimes - fairyBossModel.m_FightTimes, 0)));
|
OnShowFairyBossModel();
|
OnCreateScroller();
|
}
|
|
private void OnRefreshFairyMine()
|
{
|
if (!PlayerDatas.Instance.fairyData.HasFairy)
|
{
|
CloseImmediately();
|
}
|
}
|
|
|
|
void OnShowFairyBossModel()
|
{
|
textBossName.text = fairyBossModel.fairyBossInfo;
|
UI3DModelExhibition.Instance.ShowNPC(fairyBossModel.fairyBossNpcId, Vector3.zero, model);
|
}
|
|
void OnUpdateFamilyBossFBInfoEvent()
|
{
|
textBossState.text = Language.Get("UnionLiven114", fairyBossModel.hurtBuffInfo[0], fairyBossModel.m_FightMemCount);
|
if (functionOrder == 1)
|
{
|
List<int> keys = new List<int>();
|
keys = FamilyBossHurtAwardConfig.familyHurtAwards.Keys.ToList();
|
for (int i = 0; i < keys.Count; i++)
|
{
|
if (fairyBossModel.GetAwardState(keys[i]) == 1 || fairyBossModel.GetAwardState(keys[i]) == 0)
|
{
|
scroller.JumpIndex(i);
|
break;
|
}
|
}
|
scroller.m_Scorller.RefreshActiveCellViews();
|
}
|
}
|
|
void OnUpdateFamilyBossFBPlayerInfoEvent()
|
{
|
textChallengeTime.text = Language.Get("UnionLiven115", TimeUtility.SecondsToMS(Math.Max(fairyBossModel.challengeTimes - fairyBossModel.m_FightTimes, 0)));
|
if (functionOrder == 0)
|
{
|
List<int> keys = new List<int>();
|
keys = FamilyBossHurtAwardConfig.personalHurtAwards.Keys.ToList();
|
for (int i = 0; i < keys.Count; i++)
|
{
|
if (fairyBossModel.GetAwardState(keys[i]) == 1 || fairyBossModel.GetAwardState(keys[i]) == 0)
|
{
|
scroller.JumpIndex(i);
|
break;
|
}
|
}
|
scroller.m_Scorller.RefreshActiveCellViews();
|
}
|
else
|
{
|
List<int> keys = new List<int>();
|
keys = FamilyBossHurtAwardConfig.familyHurtAwards.Keys.ToList();
|
for (int i = 0; i < keys.Count; i++)
|
{
|
if (fairyBossModel.GetAwardState(keys[i]) == 1 || fairyBossModel.GetAwardState(keys[i]) == 0)
|
{
|
scroller.JumpIndex(i);
|
break;
|
}
|
}
|
scroller.m_Scorller.RefreshActiveCellViews();
|
}
|
}
|
|
void OnCreateScroller()
|
{
|
List<int> keys = new List<int>();
|
if (functionOrder == 0)
|
{
|
keys = FamilyBossHurtAwardConfig.personalHurtAwards.Keys.ToList();
|
}
|
else
|
{
|
keys = FamilyBossHurtAwardConfig.familyHurtAwards.Keys.ToList();
|
}
|
scroller.Refresh();
|
int jumpIndex = -1;
|
for (int i = 0; i < keys.Count; i++)
|
{
|
scroller.AddCell(ScrollerDataType.Header, keys[i]);
|
if (jumpIndex == -1 && (fairyBossModel.GetAwardState(keys[i]) == 1 || fairyBossModel.GetAwardState(keys[i]) == 0))
|
{
|
jumpIndex = i;
|
}
|
}
|
scroller.Restart();
|
scroller.JumpIndex(jumpIndex);
|
scroller.m_Scorller.RefreshActiveCellViews();
|
}
|
|
void ShowPersonnalHurt()
|
{
|
functionOrder = personalHurtBtn.order;
|
OnCreateScroller();
|
}
|
|
void ShowFamilyHurt()
|
{
|
functionOrder = familyHurtBtn.order;
|
OnCreateScroller();
|
}
|
}
|
}
|
|
|