//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Wednesday, November 22, 2017 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { public class DungeonMultipleTaskWin : Window { [SerializeField] RectTransform m_ContainerTitle; [SerializeField] Text m_TitleTxt; [SerializeField] Button firstlyTaskBtn; [SerializeField] Button secondaryTaskBtn; [SerializeField] Text firstlyTaskBtnText; [SerializeField] Text secondaryTaskBtnText; [SerializeField] RectTransform contentRt; [SerializeField] RectTransform m_ImgBGRt; GameObject firstlyTaskTarget; GameObject secondaryTaskTarget; string firstlyTaskPrefabName; string secondaryTaskPrefabName; [SerializeField] SelectEffect m_SelectEffect; [Serializable] public struct SelectEffect { [Header("选中时字体颜色")] public Color selectTextColor; [Header("未选中时字体颜色")] public Color unSelectTextColor; [Header("选中时按钮透明度"), Range(0, 1.0f)] public float selectAlpha; [Header("未选中时按钮透明度"), Range(0, 1.0f)] public float unselectAlpha; } #region Built-in protected override void BindController() { } protected override void AddListeners() { firstlyTaskBtn.onClick.AddListener(OnFirstlyTask); secondaryTaskBtn.onClick.AddListener(OnSecondaryTask); } private void OnSecondaryTask() { if (secondaryTaskTarget != null) return; var _sizeDelta = m_ImgBGRt.sizeDelta; secondaryTaskTarget = LoadTaskTarget(secondaryTaskPrefabName); switch (PlayerDatas.Instance.baseData.MapID) { case 31170: { DungeonRankBehaviour dungeonRankBehaviour = secondaryTaskTarget.GetComponent(); if (dungeonRankBehaviour != null) dungeonRankBehaviour.Init(PlayerDatas.Instance.baseData.MapID); } break; case 31160: { AchieveTargetBehaviour achieveTargetBehaviour = secondaryTaskTarget.GetComponent(); if (achieveTargetBehaviour != null) achieveTargetBehaviour.Init(PlayerDatas.Instance.baseData.MapID); _sizeDelta.y = 204; } break; case FairyLeagueModel.FAIRY_LEAGUE_DUNGEON: break; } var _color = firstlyTaskBtn.targetGraphic.color; _color.a = m_SelectEffect.unselectAlpha; firstlyTaskBtn.targetGraphic.color = _color; firstlyTaskBtnText.color = m_SelectEffect.unSelectTextColor; _color = secondaryTaskBtn.targetGraphic.color; _color.a = m_SelectEffect.selectAlpha; secondaryTaskBtn.targetGraphic.color = _color; secondaryTaskBtnText.color = m_SelectEffect.selectTextColor; ReleaseFirstlyTask(); m_ImgBGRt.sizeDelta = _sizeDelta; } private void OnFirstlyTask() { if (firstlyTaskTarget != null) return; var _sizeDelta = m_ImgBGRt.sizeDelta; firstlyTaskTarget = LoadTaskTarget(firstlyTaskPrefabName); switch (PlayerDatas.Instance.baseData.MapID) { case 31160: case 31170: DungeonTargetBehaviour dungeonTargetBehaviour = firstlyTaskTarget.GetComponent(); if (dungeonTargetBehaviour != null) dungeonTargetBehaviour.Init(PlayerDatas.Instance.baseData.MapID); _sizeDelta.y = 233; break; case FairyLeagueModel.FAIRY_LEAGUE_DUNGEON: break; } var _color = firstlyTaskBtn.targetGraphic.color; _color.a = m_SelectEffect.selectAlpha; firstlyTaskBtn.targetGraphic.color = _color; firstlyTaskBtnText.color = m_SelectEffect.selectTextColor; _color = secondaryTaskBtn.targetGraphic.color; _color.a = m_SelectEffect.unselectAlpha; secondaryTaskBtn.targetGraphic.color = _color; secondaryTaskBtnText.color = m_SelectEffect.unSelectTextColor; ReleaseSecondaryTask(); m_ImgBGRt.sizeDelta = _sizeDelta; } protected override void OnPreOpen() { m_ContainerTitle.gameObject.SetActive(false); m_ImgBGRt.gameObject.SetActive(false); switch (PlayerDatas.Instance.baseData.MapID) { case 31170: { firstlyTaskPrefabName = "Container_DungeonTarget"; secondaryTaskPrefabName = "Container_DamageRank"; firstlyTaskBtnText.text = Language.Get("GuardTheEmperor1"); secondaryTaskBtnText.text = Language.Get("GuardSkyRankTitle"); } break; case 31160: { m_ImgBGRt.gameObject.SetActive(true); firstlyTaskPrefabName = "Container_DungeonTarget"; secondaryTaskPrefabName = "Container_AchieveTarget"; firstlyTaskBtnText.text = Language.Get("AncientBattle"); secondaryTaskBtnText.text = Language.Get("AncientTarget"); } break; case FairyLeagueModel.FAIRY_LEAGUE_DUNGEON: { firstlyTaskPrefabName = "Container_FairyLeagueResource"; secondaryTaskPrefabName = "Container_IntegralRank"; firstlyTaskBtnText.text = Language.Get("FairyLeagueResourceTitle"); secondaryTaskBtnText.text = Language.Get("IntergralRankTitle"); m_ContainerTitle.gameObject.SetActive(true); m_TitleTxt.text = Language.Get("FamilyMatchName"); } break; } OnFirstlyTask(); } protected override void OnAfterOpen() { } protected override void OnPreClose() { ReleaseFirstlyTask(); ReleaseSecondaryTask(); } protected override void OnAfterClose() { } #endregion private void ReleaseFirstlyTask() { if (firstlyTaskTarget != null) { var prefab = UILoader.LoadPrefab(firstlyTaskPrefabName); var pool = GameObjectPoolManager.Instance.RequestPool(prefab); firstlyTaskTarget.SetActive(false); pool.Release(firstlyTaskTarget); firstlyTaskTarget = null; } } private void ReleaseSecondaryTask() { if (secondaryTaskTarget != null) { var prefab = UILoader.LoadPrefab(secondaryTaskPrefabName); var pool = GameObjectPoolManager.Instance.RequestPool(prefab); secondaryTaskTarget.SetActive(false); pool.Release(secondaryTaskTarget); secondaryTaskTarget = null; } } private GameObject LoadTaskTarget(string prefabName) { var prefab = UILoader.LoadPrefab(prefabName); var pool = GameObjectPoolManager.Instance.RequestPool(prefab); GameObject target = null; if (pool != null) { target = pool.Request(); if (target != null) { target.transform.SetParent(contentRt); target.transform.localScale = Vector3.one; target.transform.localPosition = Vector3.zero; target.gameObject.SetActive(true); } } return target; } } }