180 lines
6.1 KiB
C#
180 lines
6.1 KiB
C#
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using Module.Log;
|
|
using Games.GlobeDefine;
|
|
using GCGame.Table;
|
|
|
|
public class WorldMapItemInfo : MonoBehaviour
|
|
{
|
|
public Transform Child;
|
|
public GameObject Fog;
|
|
|
|
private Transform OPenObj;
|
|
private Transform LockObj;
|
|
private Text Name;
|
|
private Text Level;
|
|
|
|
private int m_SceneID = -1;
|
|
public int ScenID {
|
|
get { return m_SceneID; }
|
|
private set { m_SceneID = value; }
|
|
}
|
|
|
|
public void UpdateInfo()
|
|
{
|
|
Tab_Fuben Fuben = TableManager.GetFubenByID(m_SceneID, 0);
|
|
if (Fuben == null)
|
|
return;
|
|
Tab_SceneClass SceneClass = TableManager.GetSceneClassByID(m_SceneID, 0);
|
|
if (SceneClass == null)
|
|
return;
|
|
int level = GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Level;
|
|
if (Fuben != null && Fuben.PlayerLevelMin <= level)
|
|
{
|
|
Fog.SetActive(false);
|
|
if (OPenObj != null)
|
|
OPenObj.gameObject.SetActive(true);
|
|
if(LockObj != null)
|
|
LockObj.gameObject.SetActive(false);
|
|
if(Name != null)
|
|
Name.text = string.Format("<color=#42385cff>{0}</color>", SceneClass.Name);
|
|
if(Level!=null)
|
|
Level.text = string.Format("<color=#bdc3d5ff>{0}</color>", SceneClass.MapLevel);
|
|
}
|
|
else
|
|
{
|
|
Fog.SetActive(true);
|
|
if (OPenObj != null)
|
|
OPenObj.gameObject.SetActive(false);
|
|
if (LockObj != null)
|
|
LockObj.gameObject.SetActive(true);
|
|
if (Name != null)
|
|
Name.text = string.Format("<color=#1c1c2bff>{0}</color>", SceneClass.Name);
|
|
if (Level != null)
|
|
Level.text = string.Format("<color=#9ea0a5ff>{0}</color>", SceneClass.MapLevel);
|
|
}
|
|
}
|
|
|
|
public void Init(int SceneId,GameObject MapInfoObj)
|
|
{
|
|
m_SceneID = SceneId;
|
|
Tab_SceneClass SceneClass = TableManager.GetSceneClassByID(SceneId, 0);
|
|
if (SceneClass == null)
|
|
return;
|
|
|
|
Button clickBtn = GetComponentInChildren<Button>();
|
|
if(clickBtn!=null)
|
|
{
|
|
clickBtn.onClick.AddListener(OnMapItemClick);
|
|
}
|
|
|
|
if(Child!=null)
|
|
{
|
|
MapInfoObj.SetActive(true);
|
|
MapInfoObj.transform.SetParent(Child);
|
|
MapInfoObj.transform.localPosition = Vector3.zero;
|
|
MapInfoObj.transform.localScale = Vector3.one;
|
|
|
|
OPenObj = MapInfoObj.transform.Find("OPen");
|
|
LockObj = MapInfoObj.transform.Find("Lock");
|
|
Transform NameObj = MapInfoObj.transform.Find("Name");
|
|
if(NameObj!=null)
|
|
{
|
|
Name = NameObj.GetComponent<Text>();
|
|
}
|
|
Transform LevelObj = MapInfoObj.transform.Find("Level");
|
|
if (LevelObj != null)
|
|
{
|
|
Level = LevelObj.GetComponent<Text>();
|
|
}
|
|
}
|
|
UpdateInfo();
|
|
}
|
|
|
|
public void OnMapItemClick()
|
|
{
|
|
//组队跟随,不响应
|
|
if (GameManager.gameManager.PlayerDataPool.IsFollowTeam)
|
|
{
|
|
GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{5128}"));
|
|
return;
|
|
}
|
|
|
|
Tab_Fuben scene = TableManager.GetFubenByID(m_SceneID, 0);
|
|
if (scene != null)
|
|
{
|
|
if (Singleton<ObjManager>.Instance.MainPlayer != null && GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Level < scene.PlayerLevelMin)
|
|
{
|
|
GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{5327}"));
|
|
return;
|
|
}
|
|
}
|
|
|
|
if (m_SceneID >= 0 && Singleton<ObjManager>.GetInstance().MainPlayer != null && m_SceneID != GameManager.gameManager.RunningScene)
|
|
{
|
|
|
|
if (GCGame.Utils.IsCanPK(m_SceneID) && !GCGame.Utils.IsIncPKValue(m_SceneID))
|
|
{
|
|
MessageBoxLogic.OpenOKCancelBox(StrDictionary.GetClientDictionaryString("#{2672}"), "", EnterNonePKValueSceneOK);
|
|
}
|
|
else
|
|
{
|
|
EnterNonePKValueSceneOK();
|
|
}
|
|
}
|
|
}
|
|
|
|
void EnterNonePKValueSceneOK()
|
|
{
|
|
Tab_SceneClass tabSceneClass = TableManager.GetSceneClassByID(m_SceneID, 0);
|
|
if (null == tabSceneClass)
|
|
{
|
|
return;
|
|
}
|
|
|
|
MessageBoxLogic.OpenOKCancelBox(StrDictionary.GetClientDictionaryString("#{1644}", tabSceneClass.Name), "", DoTeleport);
|
|
}
|
|
|
|
void ChangeScene()
|
|
{
|
|
Tab_SceneClass tabSceneClass = TableManager.GetSceneClassByID(m_SceneID, 0);
|
|
if (null == tabSceneClass)
|
|
{
|
|
return;
|
|
}
|
|
// 传送时,停止主角移动并停止自动寻路
|
|
var mainPlayer = ObjManager.Instance.MainPlayer;
|
|
if (mainPlayer != null)
|
|
mainPlayer.StopMove();
|
|
GameManager.gameManager.AutoSearch.Stop();
|
|
if (Singleton<ObjManager>.Instance.MainPlayer.IsInPaoShang())
|
|
{
|
|
GUIData.AddNotifyData(GCGame.Table.StrDictionary.GetClientDictionaryString("{#3937}"));
|
|
return;
|
|
}
|
|
SceneData.RequestChangeScene((int)CG_REQ_CHANGE_SCENE.CHANGETYPE.WORLDMAP, 0, m_SceneID, -1, (int)tabSceneClass.SafeX, (int)tabSceneClass.SafeZ);
|
|
UIManager.CloseUI(UIInfo.WorldMapWindow);
|
|
}
|
|
|
|
void DoTeleport()
|
|
{
|
|
if (GameManager.gameManager.ActiveScene.IsCopyScene())
|
|
{
|
|
string strDic = StrDictionary.GetClientDictionaryString("#{2345}");
|
|
Tab_Fuben fuben = TableManager.GetFubenByID(GameManager.gameManager.PlayerDataPool.EnterSceneCache.EnterCopySceneID, 0);
|
|
if (fuben != null && fuben.PositiveLeave > 1)
|
|
{
|
|
Tab_StrDictionary pDictionary = TableManager.GetStrDictionaryByID(fuben.PositiveLeave, 0);
|
|
if (pDictionary != null)
|
|
{
|
|
strDic = pDictionary.StrDictionary;
|
|
}
|
|
}
|
|
MessageBoxLogic.OpenOKCancelBox(strDic, "", ChangeScene);
|
|
return;
|
|
}
|
|
ChangeScene();
|
|
}
|
|
} |