279 lines
8.7 KiB
C#
279 lines
8.7 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
using GCGame.Table;
|
|
using UnityEngine.EventSystems;
|
|
|
|
// 夺旗战右侧mini地图
|
|
public class CaptureFlagMiniMapCtr : MonoBehaviour {
|
|
|
|
private static CaptureFlagMiniMapCtr instance;
|
|
public static CaptureFlagMiniMapCtr Instance
|
|
{
|
|
get { return instance; }
|
|
}
|
|
|
|
private Dictionary<int, Image> itemDic = new Dictionary<int, Image>(); //
|
|
public Image prefab; // 地图图片
|
|
public float scale; // 3维 -> 2维 长度比
|
|
|
|
public Animator anim;
|
|
public Button switchBtn; // 切换至组队信息按钮
|
|
public Button showBtn; // 隐藏按钮
|
|
public Button hideBtn; // 显示按钮
|
|
|
|
#region new
|
|
|
|
private void Awake()
|
|
{
|
|
if (instance == null)
|
|
{
|
|
instance = this;
|
|
}
|
|
|
|
switchBtn.onClick.AddListener(OnSwitchOffBtnClick);
|
|
showBtn.onClick.AddListener(OnShowOrHideBtnClick);
|
|
hideBtn.onClick.AddListener(OnShowOrHideBtnClick);
|
|
|
|
MissionDialogAndLeftTabsLogic.SetSwitch(UIInfo.CaptureFlagMiniMap);
|
|
MissionDialogAndLeftTabsLogic.Instance().SetSwitchBtn();
|
|
}
|
|
|
|
public void Show(int id, int camp)
|
|
{
|
|
if(itemDic.ContainsKey(id))
|
|
{
|
|
LoadAssetBundle.Instance.SetImageSprite(itemDic[id], GetCampFlagSpriteName(camp));
|
|
}
|
|
}
|
|
|
|
private void OnDestroy()
|
|
{
|
|
if (instance != null)
|
|
{
|
|
instance = null;
|
|
}
|
|
|
|
MissionDialogAndLeftTabsLogic.m_SwitchIndex = null;
|
|
}
|
|
|
|
private void OnSwitchOffBtnClick()
|
|
{
|
|
//anim.Play("SwitchOff");
|
|
|
|
if (MissionDialogAndLeftTabsLogic.Instance() == null)
|
|
{
|
|
UIManager.ShowUI(UIInfo.MissionInfoController, delegate (bool bSuccess, object param)
|
|
{
|
|
if (bSuccess == false)
|
|
return;
|
|
MissionDialogAndLeftTabsLogic.SetSwitch(UIInfo.CaptureFlagMiniMap);
|
|
MissionDialogAndLeftTabsLogic.Instance().SetSwitchBtn();
|
|
});
|
|
}
|
|
else
|
|
{
|
|
MissionDialogAndLeftTabsLogic.Instance().HideMissionDialog(true);
|
|
MissionDialogAndLeftTabsLogic.SetSwitch(UIInfo.CaptureFlagMiniMap);
|
|
MissionDialogAndLeftTabsLogic.Instance().SetSwitchBtn();
|
|
}
|
|
|
|
UIManager.CloseUI(UIInfo.CaptureFlagMiniMap);
|
|
}
|
|
|
|
private void OnShowOrHideBtnClick()
|
|
{
|
|
var clipInfo = anim.GetCurrentAnimatorStateInfo(0);
|
|
if (clipInfo.IsName("SwitchOn") || clipInfo.IsName("Show"))
|
|
{
|
|
anim.Play("Hide");
|
|
}
|
|
else if (clipInfo.IsName("Hide"))
|
|
{
|
|
anim.Play("Show");
|
|
}
|
|
}
|
|
|
|
private string GetCampFlagSpriteName(int camp)
|
|
{
|
|
string result = "";
|
|
switch (camp)
|
|
{
|
|
case 0:
|
|
result = "flagZhong";
|
|
break;
|
|
case 1:
|
|
result = "flagTian";
|
|
break;
|
|
case 2:
|
|
result = "flagDi";
|
|
break;
|
|
case 3:
|
|
result = "flagRen";
|
|
break;
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
#endregion
|
|
|
|
public RawImage MapImage;
|
|
public GameObject m_pointMainPlayer;
|
|
public GameObject m_pointDot;
|
|
|
|
private MapInterface m_mapInterface = new MapInterface();
|
|
|
|
void OnEnable()
|
|
{
|
|
anim.Play("SwitchOn");
|
|
Games.Events.EventDispatcher.Instance.Add(Games.Events.EventId.OnChangeSceneOver, OnChangeScene);
|
|
if (MissionDialogAndLeftTabsLogic.Instance() != null)
|
|
{
|
|
MissionDialogAndLeftTabsLogic.Instance().HideMissionDialog(false);
|
|
MissionDialogAndLeftTabsLogic.SetSwitch(UIInfo.CaptureFlagMiniMap);
|
|
}
|
|
}
|
|
|
|
void OnDisable()
|
|
{
|
|
Games.Events.EventDispatcher.Instance.Remove(Games.Events.EventId.OnChangeSceneOver, OnChangeScene);
|
|
if (MissionDialogAndLeftTabsLogic.Instance() != null)
|
|
MissionDialogAndLeftTabsLogic.Instance().HideMissionDialog(true);
|
|
}
|
|
|
|
public void OnChangeScene(object param)
|
|
{
|
|
if (MissionDialogAndLeftTabsLogic.Instance() != null)
|
|
{
|
|
MissionDialogAndLeftTabsLogic.Instance().HideMissionDialog(false);
|
|
MissionDialogAndLeftTabsLogic.SetSwitch(UIInfo.CaptureFlagMiniMap);
|
|
}
|
|
}
|
|
|
|
public void OpenMissionLeftTab()
|
|
{
|
|
if (MissionDialogAndLeftTabsLogic.Instance() == null)
|
|
{
|
|
UIManager.ShowUI(UIInfo.MissionInfoController, delegate (bool bSuccess, object param)
|
|
{
|
|
if (bSuccess == false)
|
|
return;
|
|
MissionDialogAndLeftTabsLogic.SetSwitch(UIInfo.CaptureFlagMiniMap);
|
|
MissionDialogAndLeftTabsLogic.Instance().SetSwitchBtn();
|
|
UIManager.CloseUI(UIInfo.CaptureFlagMiniMap);
|
|
});
|
|
}
|
|
else
|
|
{
|
|
MissionDialogAndLeftTabsLogic.Instance().HideMissionDialog(true);
|
|
MissionDialogAndLeftTabsLogic.SetSwitch(UIInfo.CaptureFlagMiniMap);
|
|
MissionDialogAndLeftTabsLogic.Instance().SetSwitchBtn();
|
|
UIManager.CloseUI(UIInfo.CaptureFlagMiniMap);
|
|
}
|
|
}
|
|
|
|
//点击场景地图图片时的寻路
|
|
public void OnSceneMapClick(PointerEventData eventData)
|
|
{
|
|
if (m_mapInterface != null)
|
|
{
|
|
var mainPlayer = Singleton<ObjManager>.Instance.MainPlayer;
|
|
if (mainPlayer != null)
|
|
{
|
|
if (mainPlayer.isAutoCombat)
|
|
{
|
|
GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{9009}"));
|
|
return;
|
|
}
|
|
|
|
var movePos = m_mapInterface.ScreenPosToScenePos(eventData.position);
|
|
if (movePos == null)
|
|
mainPlayer.StopMove();
|
|
else
|
|
mainPlayer.MainPlayMoveToPos(movePos.Value);
|
|
}
|
|
}
|
|
}
|
|
|
|
void Start()
|
|
{
|
|
if (null == SceneMapFix.Instance())
|
|
{
|
|
ResourceManager.InstantiateResource("Prefab/Logic/SceneMapFix", "SceneMapFix");
|
|
}
|
|
|
|
Tab_SceneClass sceneInfo = TableManager.GetSceneClassByID(GameManager.gameManager.RunningScene, 0);
|
|
if (sceneInfo == null)
|
|
return;
|
|
if (m_mapInterface == null)
|
|
m_mapInterface = new MapInterface();
|
|
m_mapInterface.Init(MapImage.rectTransform, null, null, null, null);
|
|
m_mapInterface.InitNavPointPrefab(m_pointDot);
|
|
if (MapImage != null && string.IsNullOrEmpty(sceneInfo.SceneMapTexture) == false)
|
|
{
|
|
m_mapInterface.SetMapImage(sceneInfo.SceneMapTexture, MapImage);
|
|
}
|
|
|
|
mainPlayRect = m_pointMainPlayer.GetComponent<RectTransform>();
|
|
}
|
|
|
|
public void Update()
|
|
{
|
|
MainPlayerPos();
|
|
if (m_mapInterface != null)
|
|
{
|
|
m_mapInterface.UpdateNavPoint();
|
|
}
|
|
}
|
|
|
|
private void CaptureFlagInit()
|
|
{
|
|
var tab = TableManager.GetCrossSerFlagPoint().Values;
|
|
itemDic.Clear();
|
|
foreach (var kv in tab)
|
|
{
|
|
if (kv != null)
|
|
{
|
|
Image newOne = Instantiate<Image>(prefab);
|
|
newOne.transform.SetParent(MapImage.rectTransform);
|
|
newOne.transform.localScale = Vector3.one;
|
|
newOne.gameObject.SetActive(true);
|
|
|
|
Vector3 tabPos = new Vector3(kv.BornPosX, 0.0f, kv.BornPosZ);
|
|
var newPos = SceneMapFix.Instance().ScenePosToMapPosVec3(tabPos, MapImage.rectTransform);
|
|
newOne.GetComponent<RectTransform>().anchoredPosition = newPos;
|
|
|
|
itemDic[kv.Id] = newOne;
|
|
Show(kv.Id, kv.BornCampIndex);
|
|
}
|
|
}
|
|
}
|
|
|
|
private RectTransform mainPlayRect;
|
|
|
|
public void MainPlayerPos()
|
|
{
|
|
if (m_pointMainPlayer != null && Singleton<ObjManager>.Instance.MainPlayer != null && SceneMapFix.Instance() != null)
|
|
{
|
|
Vector3 newPos = SceneMapFix.Instance().ScenePosToMapPosVec3(Singleton<ObjManager>.Instance.MainPlayer.Position, MapImage.rectTransform);
|
|
mainPlayRect.anchoredPosition3D = newPos;
|
|
mainPlayRect.transform.SetAsLastSibling();
|
|
}
|
|
}
|
|
|
|
public void UpdateFlag(SynCrossSerFlagInfo info)
|
|
{
|
|
if (itemDic.Count == 0)
|
|
{
|
|
CaptureFlagInit();
|
|
}
|
|
|
|
for (int i = 0; i < info.pointInfo.Count; ++i)
|
|
{
|
|
Show(info.pointInfo[i].Index, info.pointInfo[i].CampIndex);
|
|
}
|
|
}
|
|
}
|