少年修仙传客户端代码仓库
client_linchunjie
2018-08-17 ac9d8041bba04644b56d9ec587c46369c56cb7f1
System/WorldMap/WorldMapAreaBehaviour.cs
@@ -1,179 +1,181 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Wednesday, September 06, 2017
//--------------------------------------------------------
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using TableConfig;
using System;
namespace Snxxz.UI
{
    public class WorldMapAreaBehaviour : MonoBehaviour
    {
        [SerializeField] GameObject m_Conainter;
        public GameObject container {
            get { return m_Conainter; }
        }
        [SerializeField] BoundedDrag m_BoundedDrag;
        [SerializeField] PointerDownUp m_MapButton;
        [SerializeField] ScaleTween m_ScaleTween;
        [SerializeField] Image m_MapBackGround;
        [SerializeField] Text m_AreaName;
        [SerializeField] Text m_AreaCamp;
        [SerializeField] Transform m_Locked;
        [SerializeField] Transform m_PlayerHead;
        [SerializeField] MaterialsContainer m_Materials;
        [SerializeField] PressTip m_PressTip;
        [SerializeField] WorldMapUnLockTip m_UnLockTip;
        [SerializeField] Transform m_NewUnLockArrowPoint;
        [SerializeField] RectTransform m_NewUnLockTip;
        public Transform newUnLockArrowPoint {
            get { return m_NewUnLockArrowPoint; }
        }
        public Transform playerHead {
            get {
                return m_PlayerHead;
            }
        }
        WorldMapArea m_MapArea;
        float downTime = 0f;
        MapModel model { get { return ModelCenter.Instance.GetModel<MapModel>(); } }
        TreasureModel treasureModel { get { return ModelCenter.Instance.GetModel<TreasureModel>(); } }
        private void Awake()
        {
            m_MapButton.AddPointerDownListener(OnPointerDown);
            m_MapButton.AddPointerUpListener(OnPointerUp);
            m_MapButton.AddPointerClickListener(OnPointerClick);
        }
        public void Init(WorldMapArea _area)
        {
            m_MapArea = _area;
            m_ScaleTween.SetStartState();
            DrawArea();
            m_PressTip.enabled = !model.IsMapUnLocked(m_MapArea.id);
            if (m_NewUnLockTip != null)
            {
                m_NewUnLockTip.gameObject.SetActive(m_MapArea.id != model.newUnLockedMap && model.newUnLockMapsTip == m_MapArea.id);
            }
            CheckAchievementGuide();
        }
        public void SetMaterial(string _materialName)
        {
            m_MapBackGround.material = m_Materials.GetMaterial(_materialName);
        }
        public void BeginUnLockShow()
        {
            StartCoroutine("Co_UnLockShow");
        }
        private void DrawArea()
        {
            try
            {
                var unLocked = model.IsMapUnLocked(m_MapArea.id);
                var mapConfig = ConfigManager.Instance.GetTemplate<MapConfig>(m_MapArea.id);
                m_AreaName.text = mapConfig.Name;
                m_Locked.gameObject.SetActive(!unLocked);
                m_MapBackGround.material = unLocked ? m_Materials.GetMaterial("Normal") : m_Materials.GetMaterial("Gray");
            }
            catch (Exception ex)
            {
                DesignDebug.Log(ex);
            }
        }
        private void OnDisable()
        {
            StopAllCoroutines();
        }
        private void OnPointerDown()
        {
            m_ScaleTween.Play(false);
            downTime = Time.time;
            var mapId = m_MapArea.id;
            if (!model.IsMapUnLocked(mapId))
            {
                m_UnLockTip.Display(mapId);
            }
        }
        private void OnPointerUp()
        {
            m_ScaleTween.Play(true);
        }
        private void OnPointerClick()
        {
            var isUnLocked = model.IsMapUnLocked(m_MapArea.id);
            if (isUnLocked || Time.time - downTime < 0.3f)
            {
                if (isUnLocked)
                {
                    if (m_MapArea.id == PlayerDatas.Instance.baseData.MapID)
                    {
                        SysNotifyMgr.Instance.ShowTip("NowWorldMap");
                    }
                    else
                    {
                        if (PlayerDatas.Instance.hero != null)
                        {
                            PlayerDatas.Instance.hero.StopAll();
                        }
                        MapTransferUtility.Instance.Clear();
                        model.RequestMapTransport(m_MapArea.id);
                        model.ConfirmNewMap(m_MapArea.id);
                    }
                }
            }
        }
        IEnumerator Co_UnLockShow()
        {
            m_MapBackGround.material = m_Materials.GetMaterial("Lerp");
            var timer = 0f;
            while (timer < 1f)
            {
                timer += Time.deltaTime;
                var t = Mathf.Clamp01(timer);
                m_MapBackGround.material.SetFloat("_GrayScale", t);
                yield return null;
            }
            m_MapBackGround.material = m_Materials.GetMaterial("Normal");
        }
        private void CheckAchievementGuide()
        {
            if (AchievementGoto.guideAchievementId != 0)
            {
                var config = ConfigManager.Instance.GetTemplate<SuccessConfig>(AchievementGoto.guideAchievementId);
                if (config.Type == 37 && config.Condition[0] == m_MapArea.id)
                {
                    var guideEffect = AchievementGuideEffectPool.Require(4);
                    guideEffect.transform.SetParentEx(m_MapButton.transform, Vector3.zero, Vector3.zero, Vector3.one);
                }
            }
        }
    }
}
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Wednesday, September 06, 2017
//--------------------------------------------------------
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using TableConfig;
using System;
namespace Snxxz.UI
{
    public class WorldMapAreaBehaviour : MonoBehaviour
    {
        [SerializeField] GameObject m_Conainter;
        public GameObject container {
            get { return m_Conainter; }
        }
        [SerializeField] BoundedDrag m_BoundedDrag;
        [SerializeField] PointerDownUp m_MapButton;
        [SerializeField] ScaleTween m_ScaleTween;
        [SerializeField] Image m_MapBackGround;
        [SerializeField] Text m_AreaName;
        [SerializeField] Text m_AreaLevel;
        [SerializeField] Text m_AreaCamp;
        [SerializeField] Transform m_Locked;
        [SerializeField] Transform m_PlayerHead;
        [SerializeField] MaterialsContainer m_Materials;
        [SerializeField] PressTip m_PressTip;
        [SerializeField] WorldMapUnLockTip m_UnLockTip;
        [SerializeField] Transform m_NewUnLockArrowPoint;
        [SerializeField] RectTransform m_NewUnLockTip;
        public Transform newUnLockArrowPoint {
            get { return m_NewUnLockArrowPoint; }
        }
        public Transform playerHead {
            get {
                return m_PlayerHead;
            }
        }
        WorldMapArea m_MapArea;
        float downTime = 0f;
        MapModel model { get { return ModelCenter.Instance.GetModel<MapModel>(); } }
        TreasureModel treasureModel { get { return ModelCenter.Instance.GetModel<TreasureModel>(); } }
        private void Awake()
        {
            m_MapButton.AddPointerDownListener(OnPointerDown);
            m_MapButton.AddPointerUpListener(OnPointerUp);
            m_MapButton.AddPointerClickListener(OnPointerClick);
        }
        public void Init(WorldMapArea _area)
        {
            m_MapArea = _area;
            m_ScaleTween.SetStartState();
            DrawArea();
            m_PressTip.enabled = !model.IsMapUnLocked(m_MapArea.id);
            if (m_NewUnLockTip != null)
            {
                m_NewUnLockTip.gameObject.SetActive(m_MapArea.id != model.newUnLockedMap && model.newUnLockMapsTip == m_MapArea.id);
            }
            CheckAchievementGuide();
        }
        public void SetMaterial(string _materialName)
        {
            m_MapBackGround.material = m_Materials.GetMaterial(_materialName);
        }
        public void BeginUnLockShow()
        {
            StartCoroutine("Co_UnLockShow");
        }
        private void DrawArea()
        {
            try
            {
                var unLocked = model.IsMapUnLocked(m_MapArea.id);
                var mapConfig = ConfigManager.Instance.GetTemplate<MapConfig>(m_MapArea.id);
                m_AreaName.text = mapConfig.Name;
                m_AreaLevel.text = mapConfig.LV.ToString();
                m_Locked.gameObject.SetActive(!unLocked);
                m_MapBackGround.material = unLocked ? m_Materials.GetMaterial("Normal") : m_Materials.GetMaterial("Gray");
            }
            catch (Exception ex)
            {
                DebugEx.Log(ex);
            }
        }
        private void OnDisable()
        {
            StopAllCoroutines();
        }
        private void OnPointerDown()
        {
            m_ScaleTween.Play(false);
            downTime = Time.time;
            var mapId = m_MapArea.id;
            if (!model.IsMapUnLocked(mapId))
            {
                m_UnLockTip.Display(mapId);
            }
        }
        private void OnPointerUp()
        {
            m_ScaleTween.Play(true);
        }
        private void OnPointerClick()
        {
            var isUnLocked = model.IsMapUnLocked(m_MapArea.id);
            if (isUnLocked || Time.time - downTime < 0.3f)
            {
                if (isUnLocked)
                {
                    if (m_MapArea.id == PlayerDatas.Instance.baseData.MapID)
                    {
                        SysNotifyMgr.Instance.ShowTip("NowWorldMap");
                    }
                    else
                    {
                        if (PlayerDatas.Instance.hero != null)
                        {
                            PlayerDatas.Instance.hero.StopAll();
                        }
                        MapTransferUtility.Instance.Clear();
                        model.RequestMapTransport(m_MapArea.id);
                        model.ConfirmNewMap(m_MapArea.id);
                    }
                }
            }
        }
        IEnumerator Co_UnLockShow()
        {
            m_MapBackGround.material = m_Materials.GetMaterial("Lerp");
            var timer = 0f;
            while (timer < 1f)
            {
                timer += Time.deltaTime;
                var t = Mathf.Clamp01(timer);
                m_MapBackGround.material.SetFloat("_GrayScale", t);
                yield return null;
            }
            m_MapBackGround.material = m_Materials.GetMaterial("Normal");
        }
        private void CheckAchievementGuide()
        {
            if (AchievementGoto.guideAchievementId != 0)
            {
                var config = ConfigManager.Instance.GetTemplate<SuccessConfig>(AchievementGoto.guideAchievementId);
                if (config.Type == 37 && config.Condition[0] == m_MapArea.id)
                {
                    var guideEffect = AchievementGuideEffectPool.Require(4);
                    guideEffect.transform.SetParentEx(m_MapButton.transform, Vector3.zero, Vector3.zero, Vector3.one);
                }
            }
        }
    }
}