//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Wednesday, October 18, 2017 //-------------------------------------------------------- using UnityEngine; using System.Collections; using System.Collections.Generic; using UnityEngine.UI; using System; using TableConfig; namespace Snxxz.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 missionSelectCallBack; List missionBehaviours = new List(); TeamModel model { get { return ModelCenter.Instance.GetModel(); } } DailyQuestModel dailyQuestModel { get { return ModelCenter.Instance.GetModel(); } } public void Init() { m_ToggleButtonGroup = this.AddMissingComponent(); CreateMissionBehaviours(m_ScrollRect.content, model.teammissions.Count); var teammissionKeys = new List(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.gameObject.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.gameObject.SetActive(false); } } } public void OnMissionSelected(Action _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(prefab); var behaviour = instance.AddMissingComponent(); 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.IsValidServerOpenTime() && openTime.InOpenTime(); } else { return true; } } public enum Pattern { Pattern1, Pattern2, } } }