少年修仙传客户端代码仓库
client_Wu Xijin
2018-10-27 45c82c513c67130bb52cb5e7f2f10c957e463cf1
System/Dungeon/DungeonMultipleTaskWin.cs
@@ -1,228 +1,228 @@
//--------------------------------------------------------
//    [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<DungeonRankBehaviour>();
                        if (dungeonRankBehaviour != null)
                            dungeonRankBehaviour.Init(PlayerDatas.Instance.baseData.MapID);
                    }
                    break;
                case 31160:
                    {
                        AchieveTargetBehaviour achieveTargetBehaviour = secondaryTaskTarget.GetComponent<AchieveTargetBehaviour>();
                        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<DungeonTargetBehaviour>();
                    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;
        }
    }
}
//--------------------------------------------------------
//    [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<DungeonRankBehaviour>();
                        if (dungeonRankBehaviour != null)
                            dungeonRankBehaviour.Init(PlayerDatas.Instance.baseData.MapID);
                    }
                    break;
                case 31160:
                    {
                        AchieveTargetBehaviour achieveTargetBehaviour = secondaryTaskTarget.GetComponent<AchieveTargetBehaviour>();
                        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<DungeonTargetBehaviour>();
                    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;
        }
    }
}