2025-06-14 13:46:24 +08:00
|
|
|
|
using System;
|
|
|
|
|
|
using System.Collections;
|
|
|
|
|
|
using System.Collections.Generic;
|
2025-06-19 01:31:00 +08:00
|
|
|
|
using System.Linq;
|
2025-06-14 13:46:24 +08:00
|
|
|
|
using UnityEngine;
|
|
|
|
|
|
using UnityEngine.Events;
|
|
|
|
|
|
using UnityEngine.EventSystems;
|
|
|
|
|
|
using UnityEngine.UI;
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// <20>༭<EFBFBD><E0BCAD><EFBFBD><EFBFBD> - <20><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>
|
|
|
|
|
|
/// <20><><EFBFBD>ܣ<EFBFBD><DCA3>༭<EFBFBD><E0BCAD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ѱ·<D1B0><C2B7><EFBFBD>ԣ<EFBFBD><D4A3><EFBFBD><EFBFBD>ӷֲ<D3B7><D6B2><EFBFBD>ʾ
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public class UICellEditor : MonoBehaviour
|
|
|
|
|
|
{
|
|
|
|
|
|
public Toggle togEdit;
|
|
|
|
|
|
public GameObject editPanel;
|
|
|
|
|
|
public InputField txtBrushRadius;
|
|
|
|
|
|
public Dropdown dropCellType;
|
|
|
|
|
|
public Button btnSetBrush;
|
|
|
|
|
|
public Button btnSaveCells;
|
|
|
|
|
|
|
2025-06-19 01:31:00 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// <20><><EFBFBD>ڱ༭<DAB1><E0BCAD><EFBFBD><EFBFBD>
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public CellType editorGrid { private set; get; }
|
|
|
|
|
|
|
|
|
|
|
|
public ToggleGroup editorAreaToggle;
|
|
|
|
|
|
public static UICellEditor Instance;
|
|
|
|
|
|
private void Awake()
|
|
|
|
|
|
{
|
|
|
|
|
|
Instance = this;
|
|
|
|
|
|
editorGrid = CellType.None;
|
|
|
|
|
|
}
|
2025-06-14 13:46:24 +08:00
|
|
|
|
#region <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѱ·
|
|
|
|
|
|
public Toggle togPathTest;
|
|
|
|
|
|
public GameObject pathTestPanel;
|
|
|
|
|
|
public InputField txtStartPos; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
public InputField txtEndPos; //<2F>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
[HideInInspector]
|
|
|
|
|
|
public InputField curActiveInput;
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
#region ͼ<EFBFBD><EFBFBD><EFBFBD>༭
|
|
|
|
|
|
public Toggle togLayer;
|
|
|
|
|
|
public GameObject layerPanel;
|
|
|
|
|
|
public Toggle[] showgLayers;
|
|
|
|
|
|
private int _layers;
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
public Toggle togEffects;
|
|
|
|
|
|
|
|
|
|
|
|
// Start is called before the first frame update
|
|
|
|
|
|
void Start()
|
|
|
|
|
|
{
|
|
|
|
|
|
_layers = 0;
|
|
|
|
|
|
editPanel.SetActive(false);
|
|
|
|
|
|
pathTestPanel.SetActive(false);
|
|
|
|
|
|
layerPanel.SetActive(false);
|
|
|
|
|
|
AddInputNameClickEvent(txtStartPos);
|
|
|
|
|
|
AddInputNameClickEvent(txtEndPos);
|
|
|
|
|
|
}
|
2025-06-23 00:30:11 +08:00
|
|
|
|
private void OnEnable()
|
|
|
|
|
|
{
|
|
|
|
|
|
MapManager.Instance.ResetCell();
|
|
|
|
|
|
}
|
2025-06-14 13:46:24 +08:00
|
|
|
|
|
|
|
|
|
|
private void AddInputNameClickEvent(InputField input) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Awake<6B>е<EFBFBD><D0B5><EFBFBD>
|
|
|
|
|
|
{
|
|
|
|
|
|
var eventTrigger = input.gameObject.AddComponent<EventTrigger>();
|
|
|
|
|
|
UnityAction<BaseEventData> selectEvent = OnInputFieldClicked;
|
|
|
|
|
|
EventTrigger.Entry onClick = new EventTrigger.Entry()
|
|
|
|
|
|
{
|
|
|
|
|
|
eventID = EventTriggerType.PointerClick
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
onClick.callback.AddListener(selectEvent);
|
|
|
|
|
|
eventTrigger.triggers.Add(onClick);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void OnInputFieldClicked(BaseEventData data)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (data.selectedObject.name.Equals("InputStartCell"))
|
|
|
|
|
|
{
|
|
|
|
|
|
curActiveInput = data.selectedObject.GetComponent<InputField>();
|
|
|
|
|
|
MapManager.Instance.SetCurPathNodePointIdx(-1);
|
|
|
|
|
|
MapManager.Instance.SetEditCellType(MapManager.EditCellType.PathNodeCell);
|
|
|
|
|
|
}
|
|
|
|
|
|
else if (data.selectedObject.name.Equals("InputEndCell"))
|
|
|
|
|
|
{
|
|
|
|
|
|
curActiveInput = data.selectedObject.GetComponent<InputField>();
|
|
|
|
|
|
MapManager.Instance.SetCurPathNodePointIdx(-100);
|
|
|
|
|
|
MapManager.Instance.SetEditCellType(MapManager.EditCellType.PathNodeCell);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void FindPath()
|
|
|
|
|
|
{
|
|
|
|
|
|
if(string.IsNullOrEmpty(txtStartPos.text))
|
|
|
|
|
|
{
|
|
|
|
|
|
UIWindow.Instance.ShowMessage("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч");
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
string[] tmp = txtStartPos.text.Split(',');
|
|
|
|
|
|
if(tmp.Length != 2)
|
|
|
|
|
|
{
|
|
|
|
|
|
UIWindow.Instance.ShowMessage("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч");
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
if(!APIs.IsUInt(tmp[0]))
|
|
|
|
|
|
{
|
|
|
|
|
|
UIWindow.Instance.ShowMessage("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч");
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (!APIs.IsUInt(tmp[1]))
|
|
|
|
|
|
{
|
|
|
|
|
|
UIWindow.Instance.ShowMessage("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч");
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
Vector2Int startPos = new Vector2Int(Convert.ToInt32(tmp[0]), Convert.ToInt32(tmp[1]));
|
|
|
|
|
|
|
|
|
|
|
|
if (string.IsNullOrEmpty(txtEndPos.text))
|
|
|
|
|
|
{
|
|
|
|
|
|
UIWindow.Instance.ShowMessage("<22>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч");
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
tmp = txtEndPos.text.Split(',');
|
|
|
|
|
|
if (tmp.Length != 2)
|
|
|
|
|
|
{
|
|
|
|
|
|
UIWindow.Instance.ShowMessage("<22>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч");
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (!APIs.IsUInt(tmp[0]))
|
|
|
|
|
|
{
|
|
|
|
|
|
UIWindow.Instance.ShowMessage("<22>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч");
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (!APIs.IsUInt(tmp[1]))
|
|
|
|
|
|
{
|
|
|
|
|
|
UIWindow.Instance.ShowMessage("<22>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч");
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
Vector2Int endPos = new Vector2Int(Convert.ToInt32(tmp[0]), Convert.ToInt32(tmp[1]));
|
|
|
|
|
|
|
|
|
|
|
|
MapManager.Instance.FindPath(startPos, endPos);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F>༭<EFBFBD><E0BCAD><EFBFBD><EFBFBD>
|
|
|
|
|
|
public void OnEditToggleChange()
|
|
|
|
|
|
{
|
|
|
|
|
|
if (togEdit.isOn)
|
|
|
|
|
|
{
|
2025-06-18 00:12:58 +08:00
|
|
|
|
if (MapManager.Instance.map == null)
|
2025-06-14 13:46:24 +08:00
|
|
|
|
{
|
|
|
|
|
|
UIWindow.Instance.ShowMessage("<22><><EFBFBD>ȴ<C8B4>ͼ");
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
editPanel.SetActive(true);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
editPanel.SetActive(false);
|
|
|
|
|
|
MapManager.Instance.CloseEditor();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//Ѱ·<D1B0><C2B7><EFBFBD><EFBFBD>
|
|
|
|
|
|
public void OnPathTestToggleChange()
|
|
|
|
|
|
{
|
|
|
|
|
|
if (togPathTest.isOn)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (!UIWindow.Instance.uiCellInfo.bMapOpened)
|
|
|
|
|
|
{
|
|
|
|
|
|
UIWindow.Instance.ShowMessage("<22><><EFBFBD>ȴ<C8B4>ͼ");
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
pathTestPanel.SetActive(true);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
pathTestPanel.SetActive(false);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//ͼ<><CDBC><EFBFBD>༭
|
|
|
|
|
|
public void OnLayerToggleChange()
|
|
|
|
|
|
{
|
|
|
|
|
|
if (togLayer.isOn)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (!UIWindow.Instance.uiCellInfo.bMapOpened)
|
|
|
|
|
|
{
|
|
|
|
|
|
UIWindow.Instance.ShowMessage("<22><><EFBFBD>ȴ<C8B4>ͼ");
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
layerPanel.SetActive(true);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
layerPanel.SetActive(false);
|
|
|
|
|
|
MapManager.Instance.ShowCells();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//ͼ<><CDBC><EFBFBD>༭
|
|
|
|
|
|
public void OnShowLayerToggleChange()
|
|
|
|
|
|
{
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F>༭<EFBFBD><E0BCAD>Ч
|
|
|
|
|
|
public void OnShowEffectsToggleChange()
|
|
|
|
|
|
{
|
|
|
|
|
|
MapManager.Instance.HideCells();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-06-19 01:31:00 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public void CleanSelectArea()
|
2025-06-14 13:46:24 +08:00
|
|
|
|
{
|
2025-06-19 01:31:00 +08:00
|
|
|
|
if (editorGrid == CellType.None)
|
|
|
|
|
|
{
|
|
|
|
|
|
UIWindow.Instance.ShowMessage("<22><>ǰû<C7B0>пɱ༭<C9B1><E0BCAD><EFBFBD><EFBFBD>");
|
2025-06-14 13:46:24 +08:00
|
|
|
|
return;
|
|
|
|
|
|
}
|
2025-06-19 01:31:00 +08:00
|
|
|
|
if (!MapManager.Instance.isOpenMap())
|
|
|
|
|
|
return;
|
|
|
|
|
|
MapManager.Instance.map.selector.ClearSelectArea();
|
2025-06-14 13:46:24 +08:00
|
|
|
|
}
|
2025-06-19 01:31:00 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public void FullSelectArea()
|
|
|
|
|
|
{
|
|
|
|
|
|
if (editorGrid == CellType.None)
|
|
|
|
|
|
{
|
|
|
|
|
|
UIWindow.Instance.ShowMessage("<22><>ǰû<C7B0>пɱ༭<C9B1><E0BCAD><EFBFBD><EFBFBD>");
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (!MapManager.Instance.isOpenMap())
|
|
|
|
|
|
return;
|
|
|
|
|
|
MapManager.Instance.map.selector.FullAllArea();
|
|
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public void SaveObs()
|
|
|
|
|
|
{
|
|
|
|
|
|
if (!MapManager.Instance.isOpenMap())
|
|
|
|
|
|
return;
|
|
|
|
|
|
MapManager.Instance.SaveMapObs();
|
2025-06-14 13:46:24 +08:00
|
|
|
|
}
|
2025-06-22 18:50:47 +08:00
|
|
|
|
private void OnDisable()
|
|
|
|
|
|
{
|
|
|
|
|
|
foreach(var toggle in editorAreaToggle.ActiveToggles())
|
|
|
|
|
|
{
|
|
|
|
|
|
toggle.isOn = false;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-06-14 13:46:24 +08:00
|
|
|
|
}
|