//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Wednesday, September 06, 2017
|
//--------------------------------------------------------
|
using UnityEngine;
|
using System.Collections;
|
using UnityEngine.UI;
|
|
using System;
|
|
namespace vnxbqy.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;
|
|
MapAssetDownLoadProgress mapAssetDownLoadProgress;
|
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.SetActive(m_MapArea.id != model.newUnlockedMap && model.newUnlockMapTip == 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 = MapConfig.Get(m_MapArea.id);
|
m_AreaName.text = mapConfig.Name;
|
m_AreaLevel.text = mapConfig.LV.ToString();
|
m_Locked.SetActive(!unLocked);
|
m_MapBackGround.material = unLocked ? m_Materials.GetMaterial("Normal") : m_Materials.GetMaterial("Gray");
|
}
|
catch (Exception ex)
|
{
|
DebugEx.Log(ex);
|
}
|
}
|
|
private void OnDisable()
|
{
|
if (mapAssetDownLoadProgress != null)
|
{
|
mapAssetDownLoadProgress.OnComplete(null);
|
InGameDownLoad.Instance.RegisterMapAssetDownLoadOk(this.m_MapArea.id, () =>
|
{
|
var config = MapConfig.Get(this.m_MapArea.id);
|
ConfirmCancel.ShowPopConfirm(
|
Language.Get("Mail101"),
|
Language.Get("LoadMap1", config.Name),
|
() => { model.RequestMapTransport(this.m_MapArea.id); }
|
);
|
});
|
}
|
|
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();
|
|
var assetDownLoadProgress = InGameDownLoad.Instance.GetMapAssetDownLoadProgress(m_MapArea.id);
|
if (assetDownLoadProgress < 1f)
|
{
|
if (mapAssetDownLoadProgress == null)
|
{
|
var behaviour = UIUtility.CreateWidget("MapAssetDownLoadProgress", "MapAssetDownLoadProgress");
|
mapAssetDownLoadProgress = behaviour.GetComponent<MapAssetDownLoadProgress>();
|
behaviour.transform.SetParentEx(m_Conainter.transform, Vector3.zero, Vector3.zero, Vector3.one);
|
}
|
|
InGameDownLoad.Instance.UnRegisterMapAssetDownLoadOk();
|
mapAssetDownLoadProgress.mapId = m_MapArea.id;
|
mapAssetDownLoadProgress.OnComplete(() =>
|
{
|
model.RequestMapTransport(m_MapArea.id);
|
});
|
|
if (InGameDownLoad.Instance.state == InGameDownLoad.State.DownLoad)
|
{
|
SysNotifyMgr.Instance.ShowTip("MapAssetDowning");
|
}
|
else
|
{
|
InGameDownLoad.Instance.TryDownLoad(InGameDownLoad.Dominant.Whole);
|
}
|
}
|
else
|
{
|
model.RequestMapTransport(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 = SuccessConfig.Get(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);
|
}
|
}
|
}
|
|
}
|
|
}
|
|
|
|