//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Wednesday, October 18, 2017
|
//--------------------------------------------------------
|
using UnityEngine;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine.UI;
|
using System;
|
|
|
namespace vnxbqy.UI
|
{
|
|
public class TeamMissionGroup : MonoBehaviour
|
{
|
|
[SerializeField] Pattern m_Pattern;
|
public Pattern pattern { get { return m_Pattern; } }
|
|
[SerializeField] ScrollRect m_ScrollRect;
|
|
[SerializeField] ToggleButtonGroup m_ToggleButtonGroup;
|
public ToggleButtonGroup toggleButtonGroup
|
{
|
get { return m_ToggleButtonGroup; }
|
}
|
|
Action<int, int> missionSelectCallBack;
|
List<TeamMissionBehaviour> missionBehaviours = new List<TeamMissionBehaviour>();
|
|
TeamModel model { get { return ModelCenter.Instance.GetModel<TeamModel>(); } }
|
DailyQuestModel dailyQuestModel { get { return ModelCenter.Instance.GetModel<DailyQuestModel>(); } }
|
|
public void Init()
|
{
|
m_ToggleButtonGroup = this.AddMissingComponent<ToggleButtonGroup>();
|
CreateMissionBehaviours(m_ScrollRect.content, model.teammissions.Count);
|
|
var teammissionKeys = new List<int>(model.teammissions.Keys);
|
for (int i = 0; i < missionBehaviours.Count; i++)
|
{
|
var behaviour = missionBehaviours[i];
|
if (i < teammissionKeys.Count)
|
{
|
behaviour.group = this;
|
var teammissionGroup = model.teammissions[teammissionKeys[i]];
|
var isUnLock = model.IsMissionUnLock(teammissionKeys[i], teammissionGroup[0]);
|
var isDuringEvent = IsDuringTheEvent(teammissionKeys[i]);
|
var show = isDuringEvent && isUnLock && (pattern == Pattern.Pattern2 || teammissionKeys[i] != TeamModel.NONE_MISSION);
|
behaviour.SetActive(show);
|
|
if (teammissionGroup.Count > 1)
|
{
|
behaviour.SetMission(teammissionKeys[i], teammissionGroup);
|
}
|
else if (teammissionGroup.Count == 1)
|
{
|
behaviour.SetMission(teammissionKeys[i], teammissionGroup[0]);
|
}
|
else
|
{
|
behaviour.SetMission(teammissionKeys[i], 0);
|
}
|
}
|
else
|
{
|
behaviour.SetActive(false);
|
}
|
}
|
|
}
|
|
public void OnMissionSelected(Action<int, int> _missionSelectCallBack)
|
{
|
missionSelectCallBack = _missionSelectCallBack;
|
}
|
|
public void NotifySelectMission(int _mapId)
|
{
|
if (missionSelectCallBack != null)
|
{
|
missionSelectCallBack(_mapId, -1);
|
}
|
}
|
|
public void NotifySelectMission(int _mapId, int _mapEx)
|
{
|
if (missionSelectCallBack != null)
|
{
|
missionSelectCallBack(_mapId, _mapEx);
|
}
|
}
|
|
private void CreateMissionBehaviours(Transform _container, int _needCount)
|
{
|
var needCount = _needCount;
|
var nowCount = missionBehaviours.Count;
|
|
if (needCount > nowCount)
|
{
|
var dif = needCount - nowCount;
|
var prefab = UILoader.LoadPrefab(StringUtility.Contact("TeamMissionBehaviour_", pattern));
|
for (int i = 0; i < dif; i++)
|
{
|
var instance = Instantiate<GameObject>(prefab);
|
var behaviour = instance.AddMissingComponent<TeamMissionBehaviour>();
|
behaviour.missionButton.group = toggleButtonGroup;
|
behaviour.missionButton.isOn = false;
|
missionBehaviours.Add(behaviour);
|
instance.name = "TeamMissionBehaviour";
|
instance.transform.SetParentEx(_container, Vector3.zero, Quaternion.identity, Vector3.one);
|
}
|
}
|
}
|
|
private bool IsDuringTheEvent(int _dataMapId)
|
{
|
var dailyQuestId = dailyQuestModel.GetDailyQuestIdByDataMapId(_dataMapId);
|
DailyQuestOpenTime openTime;
|
if (dailyQuestModel.TryGetOpenTime(dailyQuestId, out openTime))
|
{
|
return openTime.InOpenTime();
|
}
|
else
|
{
|
return true;
|
}
|
}
|
|
public enum Pattern
|
{
|
Pattern1,
|
Pattern2,
|
}
|
|
}
|
|
}
|