Files
JJBB/Assets/Project/Script/GUI/Map/WorldMapItemInfo.cs
2024-08-23 15:49:34 +08:00

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();
}
}