| | |
| | | [XLua.Hotfix]
|
| | | public class AllianceBossEntranceWin : Window
|
| | | {
|
| | | [SerializeField] Text m_ActivityName;
|
| | | [SerializeField] Image m_Background;
|
| | | [SerializeField] AllianceBossBehaviour[] m_AllianceBosses;
|
| | | [SerializeField] Text m_OpenTime;
|
| | | [SerializeField] Text m_EnterTimes;
|
| | | [SerializeField] Text m_LimitLevel;
|
| | | [SerializeField] Text m_Description;
|
| | | [SerializeField] ItemBehaviour[] m_Items;
|
| | | [SerializeField] Button m_Goto;
|
| | | [SerializeField] Button m_Close;
|
| | |
|
| | | float timer = 0f;
|
| | |
|
| | | AllianceBossModel allianceBossModel { get { return ModelCenter.Instance.GetModel<AllianceBossModel>(); } }
|
| | | DailyQuestModel dailyQuestModel { get { return ModelCenter.Instance.GetModel<DailyQuestModel>(); } }
|
| | | DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
|
| | |
|
| | | public static int dailyQuestId = 0;
|
| | | MapModel mapModel { get { return ModelCenter.Instance.GetModel<MapModel>(); } }
|
| | | |
| | | #region Built-in
|
| | | protected override void BindController()
|
| | | {
|
| | | }
|
| | |
|
| | | |
| | | protected override void AddListeners()
|
| | | {
|
| | | m_Goto.AddListener(GotoAllianceBoss);
|
| | | m_Close.AddListener(CloseClick);
|
| | | }
|
| | |
|
| | | |
| | | protected override void OnPreOpen()
|
| | | {
|
| | | Display();
|
| | | }
|
| | | for (int i = 0; i < m_AllianceBosses.Length; i++)
|
| | | {
|
| | | m_AllianceBosses[i].Display(i);
|
| | | }
|
| | | DisplayTime();
|
| | |
|
| | | mapModel.RequestQueryMapLineState(AllianceBossModel.DATAMAPID);
|
| | |
|
| | | GlobalTimeEvent.Instance.secondEvent += PerSecond;
|
| | | }
|
| | | |
| | | protected override void OnAfterOpen()
|
| | | {
|
| | | }
|
| | |
|
| | | |
| | | protected override void OnPreClose()
|
| | | {
|
| | | for (int i = 0; i < m_AllianceBosses.Length; i++)
|
| | | {
|
| | | m_AllianceBosses[i].Dispose();
|
| | | }
|
| | | GlobalTimeEvent.Instance.secondEvent -= PerSecond;
|
| | | }
|
| | |
|
| | | protected override void OnAfterClose()
|
| | | {
|
| | | }
|
| | |
|
| | | protected override void LateUpdate()
|
| | | {
|
| | | timer += Time.deltaTime;
|
| | | if (timer >= 5f)
|
| | | {
|
| | | timer = 0f;
|
| | | mapModel.RequestQueryMapLineState(AllianceBossModel.DATAMAPID);
|
| | | }
|
| | | }
|
| | | #endregion
|
| | |
|
| | | void Display()
|
| | | private void PerSecond()
|
| | | {
|
| | | DisplayBase();
|
| | | DisplayEnterTimes();
|
| | | DisplayTime();
|
| | | }
|
| | |
|
| | | void DisplayBase()
|
| | | void DisplayTime()
|
| | | {
|
| | | var config = DailyQuestConfig.Get(dailyQuestId);
|
| | | m_ActivityName.text = config.Title;
|
| | |
|
| | | DailyQuestOpenTime openTime;
|
| | | if (dailyQuestModel.TryGetOpenTime(dailyQuestId, out openTime))
|
| | | DailyQuestOpenTime dailyQuestOpenTime;
|
| | | if (dailyQuestModel.TryGetOpenTime((int)DailyQuestType.AllianceBoss, out dailyQuestOpenTime))
|
| | | {
|
| | | if (openTime.always)
|
| | | if (dailyQuestOpenTime.InOpenTime())
|
| | | {
|
| | | m_OpenTime.text = Language.Get("DailyQuest_NoTimeLimit");
|
| | | var seconds = 0;
|
| | | HourMinute hourMinute;
|
| | | if (dailyQuestOpenTime.TryGetTodayNearestOpenTime(out hourMinute))
|
| | | {
|
| | | var endTime = new DateTime(TimeUtility.Year, TimeUtility.Month, TimeUtility.Day,
|
| | | hourMinute.hourEnd, hourMinute.minuteEnd, 0);
|
| | | seconds = Mathf.CeilToInt((float)(endTime - TimeUtility.ServerNow).TotalSeconds);
|
| | | seconds = Mathf.Max(0, seconds);
|
| | | }
|
| | | m_OpenTime.text = Language.Get("AllianceBoss_3", TimeUtility.SecondsToHMS(seconds));
|
| | | }
|
| | | else
|
| | | {
|
| | | var week = (int)TimeUtility.ServerNow.DayOfWeek;
|
| | | var openTimes = openTime.GetHourMinuteByWeek(week);
|
| | | if (openTimes != null)
|
| | | {
|
| | | var stringArray = new string[openTimes.Count];
|
| | | for (int i = 0; i < openTimes.Count; i++)
|
| | | {
|
| | | stringArray[i] = openTimes[i].ToString();
|
| | | }
|
| | | m_OpenTime.text = string.Join(",", stringArray);
|
| | | }
|
| | | var seconds = dailyQuestOpenTime.GetNextSessionSurplusTime();
|
| | | m_OpenTime.text = Language.Get("AllianceBoss_2", TimeUtility.SecondsToHMS(seconds));
|
| | | }
|
| | | }
|
| | |
|
| | | switch ((DailyQuestType)dailyQuestId)
|
| | | {
|
| | | case DailyQuestType.AllianceBoss1:
|
| | | m_Background.SetSprite("AllianceBossBG1");
|
| | | break;
|
| | | case DailyQuestType.AllianceBoss2:
|
| | | m_Background.SetSprite("AllianceBossBG2");
|
| | | break;
|
| | | }
|
| | |
|
| | | var dungeon = dungeonModel.currentDungeon;
|
| | | var dungeonId = dungeonModel.GetDungeonId(dungeon);
|
| | | var dungeonConfig = DungeonConfig.Get(dungeonId);
|
| | | if (dungeonConfig != null)
|
| | | {
|
| | | var levelLimitMin = dungeonConfig.LVLimitMin;
|
| | | var playerLevel = PlayerDatas.Instance.baseData.LV;
|
| | | m_LimitLevel.text = levelLimitMin.ToString();
|
| | | m_LimitLevel.color = playerLevel >= levelLimitMin ? UIHelper.GetUIColor(TextColType.NavyBrown) : UIHelper.GetUIColor(TextColType.Red, true);
|
| | | m_Description.text = dungeonConfig.Description;
|
| | |
|
| | | for (int i = 0; i < m_Items.Length; i++)
|
| | | {
|
| | | var behaviour = m_Items[i];
|
| | | if (i < dungeonConfig.Rewards.Length)
|
| | | {
|
| | | behaviour.gameObject.SetActive(true);
|
| | | behaviour.showCount = false;
|
| | | behaviour.SetItem(dungeonConfig.Rewards[i], 0);
|
| | | }
|
| | | else
|
| | | {
|
| | | behaviour.gameObject.SetActive(false);
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | void DisplayEnterTimes()
|
| | | {
|
| | | var enterTimes = dailyQuestModel.GetDailyQuestCompletedTimes(dailyQuestId);
|
| | | var totalTimes = dailyQuestModel.GetDailyQuestTotalTimes(dailyQuestId);
|
| | | m_EnterTimes.text = StringUtility.Contact(totalTimes - enterTimes, "/", totalTimes);
|
| | | m_EnterTimes.color = (totalTimes - enterTimes) > 0 ? UIHelper.GetUIColor(TextColType.NavyBrown) : UIHelper.GetUIColor(TextColType.Red);
|
| | | }
|
| | |
|
| | | private void GotoAllianceBoss()
|
| | | {
|
| | | var error = 0;
|
| | | if (TestEnterAllianceBoss(dailyQuestId, out error))
|
| | | {
|
| | | if ((DailyQuestType)dailyQuestId == DailyQuestType.AllianceBoss1)
|
| | | {
|
| | | dungeonModel.SingleChallenge(AllianceBossModel.DATAMAPID, 0);
|
| | | }
|
| | | else
|
| | | {
|
| | | dungeonModel.SingleChallenge(AllianceBossModel.DATAMAPID, 1);
|
| | | }
|
| | | }
|
| | | else
|
| | | {
|
| | | DisplayErrorTip(error);
|
| | | }
|
| | | }
|
| | |
|
| | | bool TestEnterAllianceBoss(int id, out int error)
|
| | | {
|
| | | error = 0;
|
| | | var lineId = 0;
|
| | | var dungeonId = 0;
|
| | | switch ((DailyQuestType)id)
|
| | | {
|
| | | case DailyQuestType.AllianceBoss1:
|
| | | lineId = 0;
|
| | | break;
|
| | | case DailyQuestType.AllianceBoss2:
|
| | | lineId = 1;
|
| | | break;
|
| | | }
|
| | | dungeonId = dungeonModel.GetDungeonId(AllianceBossModel.DATAMAPID, lineId);
|
| | |
|
| | | var dungeonConfig = DungeonConfig.Get(dungeonId);
|
| | | if (dungeonConfig != null)
|
| | | {
|
| | | var playerLevel = PlayerDatas.Instance.baseData.LV;
|
| | | if (playerLevel < dungeonConfig.LVLimitMin)
|
| | | {
|
| | | error = 1;
|
| | | return false;
|
| | | }
|
| | | }
|
| | |
|
| | | if (CrossServerUtility.IsCrossServerBoss())
|
| | | {
|
| | | error = 3;
|
| | | return false;
|
| | | }
|
| | |
|
| | | if (allianceBossModel.isActivityOver)
|
| | | {
|
| | | error = 4;
|
| | | return false;
|
| | | }
|
| | |
|
| | | var dailyQuestState = dailyQuestModel.GetQuestState(dailyQuestId);
|
| | | if (dailyQuestState != DailyQuestModel.DailyQuestState.Normal)
|
| | | {
|
| | | error = 5;
|
| | | return false;
|
| | | }
|
| | |
|
| | | return true;
|
| | | }
|
| | |
|
| | | void DisplayErrorTip(int error)
|
| | | {
|
| | | switch (error)
|
| | | {
|
| | | case 1:
|
| | | SysNotifyMgr.Instance.ShowTip("DemonJar_Text2");
|
| | | break;
|
| | | case 2:
|
| | | SysNotifyMgr.Instance.ShowTip("GeRen_chenxin_268121", AllianceBossModel.DATAMAPID);
|
| | | break;
|
| | | case 3:
|
| | | SysNotifyMgr.Instance.ShowTip("CrossMap10");
|
| | | break;
|
| | | case 4:
|
| | | SysNotifyMgr.Instance.ShowTip("AllianceBossDead");
|
| | | break;
|
| | | case 5:
|
| | | SysNotifyMgr.Instance.ShowTip("Join_Space_Lost");
|
| | | break;
|
| | | }
|
| | | }
|
| | | }
|