//--------------------------------------------------------
|
// [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 = Config.Instance.Get<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 = Config.Instance.Get<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);
|
}
|
}
|
}
|
|
}
|
|
}
|
|
|
|