//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Wednesday, October 18, 2017
|
//--------------------------------------------------------
|
using UnityEngine;
|
using System.Collections;
|
using UnityEngine.UI;
|
using System.Collections.Generic;
|
|
|
namespace vnxbqy.UI
|
{
|
|
public class TeamMissionBehaviour : MonoBehaviour
|
{
|
[SerializeField] Text m_Mission;
|
[SerializeField] FontColorSizeConfig m_FontColorSize;
|
[SerializeField] Image m_Arrow;
|
[SerializeField] ToggleButton m_MissionButton;
|
public ToggleButton missionButton {
|
get { return m_MissionButton; }
|
}
|
|
[SerializeField] TeamMissionGroup m_Group;
|
public TeamMissionGroup group {
|
get { return m_Group; }
|
set {
|
m_Group = value;
|
}
|
}
|
|
int subMissionCount = 0;
|
bool isShowSubMission = false;
|
|
int dataMapId = 0;
|
int mapEx = 0;
|
List<int> mapExs;
|
|
List<TeamSubMissionBehaviour> subMissionBehaviours = new List<TeamSubMissionBehaviour>();
|
|
TeamModel m_Model;
|
TeamModel model { get { return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<TeamModel>()); } }
|
|
public void SetMission(int _dataMapId, int _mapEx)
|
{
|
dataMapId = _dataMapId;
|
mapEx = _mapEx;
|
mapExs = null;
|
subMissionCount = 0;
|
isShowSubMission = false;
|
|
if (_dataMapId == TeamModel.NONE_MISSION)
|
{
|
m_Mission.text = Language.Get("No_Target");
|
}
|
else if (_dataMapId == TeamModel.CURRENTMAP_MISSION)
|
{
|
m_Mission.text = Language.Get("RightHereMap");
|
}
|
else
|
{
|
var config = TeamTargetConfig.Get(_dataMapId);
|
m_Mission.text = config != null ? config.FBName : "";
|
}
|
|
if (model.missionBuf.mapId == dataMapId)
|
{
|
SelectMission();
|
}
|
else
|
{
|
m_MissionButton.isOn = false;
|
OnSelected(false);
|
}
|
|
m_MissionButton.RemoveListener();
|
m_MissionButton.AddListener(SelectMission);
|
m_MissionButton.RemoveOnValueChange();
|
m_MissionButton.OnValueChange(OnSelected);
|
m_Arrow.SetActive(false);
|
}
|
|
public void SetMission(int _dataMapId, List<int> _mapExs)
|
{
|
dataMapId = _dataMapId;
|
mapEx = 0;
|
mapExs = _mapExs;
|
subMissionCount = mapExs.Count;
|
isShowSubMission = false;
|
|
var config = TeamTargetConfig.Get(_dataMapId);
|
m_Mission.text = config != null ? config.FBName : "";
|
CreateSubMissionBehaviours(this.transform.parent, subMissionCount);
|
|
for (int i = 0; i < subMissionBehaviours.Count; i++)
|
{
|
var behaviour = subMissionBehaviours[i];
|
if (i < subMissionCount)
|
{
|
var show = model.IsMissionUnLock(dataMapId, mapExs[i]);
|
behaviour.SetActive(show);
|
behaviour.SetMission(dataMapId, mapExs[i]);
|
}
|
else
|
{
|
behaviour.SetActive(false);
|
}
|
}
|
|
m_Arrow.SetActive(true);
|
if (model.missionBuf.mapId == dataMapId)
|
{
|
SelectMission();
|
}
|
else
|
{
|
m_MissionButton.isOn = false;
|
OnSelected(false);
|
}
|
|
m_MissionButton.RemoveListener();
|
m_MissionButton.AddListener(SelectMission);
|
m_MissionButton.RemoveOnValueChange();
|
m_MissionButton.OnValueChange(OnSelected);
|
}
|
|
private void CreateSubMissionBehaviours(Transform _container, int _needCount)
|
{
|
var toggleButtonGroup = _container.AddMissingComponent<ToggleButtonGroup>();
|
var nowCount = subMissionBehaviours.Count;
|
if (nowCount < _needCount)
|
{
|
var dif = _needCount - nowCount;
|
var prefab = UILoader.LoadPrefab(StringUtility.Contact("TeamSubMissionBehaviour_", group.pattern));
|
var mySibling = this.transform.GetSiblingIndex();
|
for (int i = 0; i < dif; i++)
|
{
|
var instance = Instantiate<GameObject>(prefab);
|
var behaviour = instance.AddMissingComponent<TeamSubMissionBehaviour>();
|
subMissionBehaviours.Add(behaviour);
|
behaviour.transform.SetParentEx(_container, Vector3.zero, Quaternion.identity, Vector3.one);
|
behaviour.group = this.group;
|
behaviour.missionButton.group = toggleButtonGroup;
|
behaviour.missionButton.isOn = false;
|
behaviour.SetActive(false);
|
behaviour.transform.SetSiblingIndex(++mySibling);
|
}
|
}
|
}
|
|
private void SelectMission()
|
{
|
if (subMissionCount > 0)
|
{
|
OnSelected(!isShowSubMission);
|
}
|
|
m_MissionButton.isOn = true;
|
if (group != null)
|
{
|
switch (m_Group.pattern)
|
{
|
case TeamMissionGroup.Pattern.Pattern1:
|
group.NotifySelectMission(dataMapId, mapExs == null ? mapEx : -1);
|
break;
|
case TeamMissionGroup.Pattern.Pattern2:
|
group.NotifySelectMission(dataMapId, mapEx);
|
break;
|
}
|
}
|
|
if (subMissionCount > 0)
|
{
|
for (int i = 0; i < subMissionBehaviours.Count; i++)
|
{
|
var behaviour = subMissionBehaviours[i];
|
if (behaviour.mapId == model.missionBuf.mapId)
|
{
|
if (behaviour.mapEx == model.missionBuf.mapEx)
|
{
|
behaviour.SelectMission();
|
break;
|
}
|
}
|
else
|
{
|
if (m_Group.pattern == TeamMissionGroup.Pattern.Pattern2)
|
{
|
behaviour.SelectMission();
|
break;
|
}
|
}
|
}
|
}
|
}
|
|
private void OnSelected(bool _show)
|
{
|
m_Mission.color = m_FontColorSize.GetColorSize(_show ? "Selected" : "UnSelected").color;
|
if (subMissionCount > 0)
|
{
|
isShowSubMission = _show;
|
m_Arrow.transform.localEulerAngles = isShowSubMission ? new Vector3(0, 0, 270) : Vector3.zero;
|
for (int i = 0; i < subMissionBehaviours.Count; i++)
|
{
|
var behaviour = subMissionBehaviours[i];
|
behaviour.missionButton.isOn = false;
|
behaviour.SetActive(_show && i < subMissionCount);
|
}
|
}
|
|
}
|
|
}
|
|
}
|