//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Friday, March 08, 2019
|
//--------------------------------------------------------
|
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace Snxxz.UI
|
{
|
[XLua.Hotfix]
|
public class AllianceBossEntranceWin : Window
|
{
|
[SerializeField] Text m_ActivityName;
|
[SerializeField] Image m_Background;
|
[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;
|
|
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;
|
#region Built-in
|
protected override void BindController()
|
{
|
}
|
|
protected override void AddListeners()
|
{
|
m_Goto.AddListener(GotoAllianceBoss);
|
m_Close.AddListener(CloseClick);
|
}
|
|
protected override void OnPreOpen()
|
{
|
Display();
|
}
|
|
protected override void OnAfterOpen()
|
{
|
}
|
|
protected override void OnPreClose()
|
{
|
}
|
|
protected override void OnAfterClose()
|
{
|
}
|
#endregion
|
|
void Display()
|
{
|
DisplayBase();
|
DisplayEnterTimes();
|
}
|
|
void DisplayBase()
|
{
|
var config = DailyQuestConfig.Get(dailyQuestId);
|
m_ActivityName.text = config.Title;
|
|
DailyQuestOpenTime openTime;
|
if (dailyQuestModel.TryGetOpenTime(dailyQuestId, out openTime))
|
{
|
if (openTime.always)
|
{
|
m_OpenTime.text = Language.Get("DailyQuest_NoTimeLimit");
|
}
|
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);
|
}
|
}
|
}
|
|
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;
|
}
|
}
|
}
|
}
|
|
|
|
|