Files
HX_MapEditor/Assets/Scripts/UI/UICellInfo.cs

152 lines
5.5 KiB
C#
Raw Normal View History

2025-06-14 13:46:24 +08:00
using System;
using System.Collections;
using System.Collections.Generic;
2025-08-22 16:02:14 +08:00
using System.Runtime.Remoting.Metadata.W3cXsd2001;
2025-06-14 13:46:24 +08:00
using UnityEngine;
using UnityEngine.UI;
2025-07-10 13:45:07 +08:00
using UnityEngine.VFX;
2025-07-31 10:52:46 +08:00
using static GridSelector;
2025-06-14 13:46:24 +08:00
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ - <20><>ɫ<EFBFBD><C9AB>
///<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD><D3A3><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD>ӣ<EFBFBD><D3A3><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD>
public class UICellInfo : MonoBehaviour
{
2025-06-17 00:23:38 +08:00
public static UICellInfo Instance;
2025-08-22 16:02:14 +08:00
public InputField txtMapWidth;
2025-06-14 13:46:24 +08:00
public Text txtMapHeight;
public Text txtTotalCells;
public Text txtMoveCells;
2025-07-10 13:45:07 +08:00
public InputField txtCellRows;
public InputField txtCellCols;
2025-06-14 13:46:24 +08:00
public InputField txtCellWidth;
public InputField txtCellHeight;
public bool bMapOpened;
2025-07-25 15:36:10 +08:00
public Text txtSelectInfo;
2025-06-14 13:46:24 +08:00
2025-06-17 00:23:38 +08:00
private void Awake()
{
Instance = this;
}
2025-06-14 13:46:24 +08:00
private void Start()
{
Cleanup();
}
2025-08-22 16:02:14 +08:00
public int CustomMapWidth => int.Parse(txtMapWidth.text);
2025-06-14 13:46:24 +08:00
void Cleanup()
{
txtMapWidth.text = string.Empty;
txtMapHeight.text = string.Empty;
txtTotalCells.text = string.Empty;
txtMoveCells.text = string.Empty;
txtCellRows.text = string.Empty;
txtCellCols.text = string.Empty;
txtCellWidth.text = string.Empty;
txtCellHeight.text = string.Empty;
bMapOpened = false;
}
public void CloseMap()
{
Cleanup();
UIWindow.Instance.uiCellEditor.togEdit.isOn = false;
UIWindow.Instance.uiCellEditor.togPathTest.isOn = false;
}
public void ShowCells()
{
2025-06-16 00:15:41 +08:00
MapManager.Instance.ShowMapGrid();
2025-06-14 13:46:24 +08:00
}
public void HideCells()
{
2025-06-16 00:15:41 +08:00
MapManager.Instance.HideMapGrid();
2025-06-14 13:46:24 +08:00
}
2025-06-17 00:23:38 +08:00
public void ShowMapCellInfo()
{
if (MapManager.Instance.map == null || MapManager.Instance.map.selector == null)
return;
2025-08-22 16:02:14 +08:00
if (MapManager.Instance._curMapRegions == null) return;
2025-06-27 01:08:56 +08:00
txtMapWidth.text = MapManager.Instance._curMapRegions.regionRowNum.ToString();
txtMapHeight.text = MapManager.Instance._curMapRegions.regionColNum.ToString();
2025-06-17 00:23:38 +08:00
txtCellRows.text = MapManager.Instance.map.selector.horizontalNumber.ToString();
txtCellCols.text = MapManager.Instance.map.selector.verticalNumber.ToString();
txtTotalCells.text = MapManager.Instance.map.selector.totalNumber.ToString();
txtCellWidth.text = MapManager.widthPixel.ToString();
txtCellHeight.text = MapManager.heightPixel.ToString();
txtMoveCells.text = MapManager.Instance.map.selector.moveNum.ToString();
}
2025-08-22 16:02:14 +08:00
public void ShowMapWidthAndHeight(int mapId)
{
if (!MapManager.Instance.allMaps.TryGetValue(mapId.ToString(), out var mapInfo))
{
UIWindow.Instance.ShowMessage("<22><>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>ڡ<EFBFBD><DAA1><EFBFBD><EFBFBD><EFBFBD>");
return;
}
txtMapWidth.text = mapInfo.maxRow.ToString();
txtMapHeight.text = mapInfo.maxCol.ToString();
}
2025-07-10 13:45:07 +08:00
/// <summary>
/// <20><><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD>
/// </summary>
public void LoadCell()
{
2025-07-30 15:22:56 +08:00
MapManager.Instance.LoadMapObs(MapManager.Instance._curOpenMapId);
2025-07-10 13:45:07 +08:00
ShowMapCellInfo();
}
/// <summary>
/// <20><><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// </summary>
public void ReCalculateCell()
{
2025-07-31 10:52:46 +08:00
int oldhorizontalNumber = MapManager.Instance.map?.selector?.horizontalNumber ?? 0;
int oldverticalNumber = MapManager.Instance.map?.selector?.verticalNumber ?? 0;
var oldRendData = MapManager.Instance.map?.selector?.GetGridData();
2025-07-10 13:45:07 +08:00
int width = int.Parse(txtCellRows.text);
int height = int.Parse(txtCellCols.text);
float cellW = int.Parse(txtCellWidth.text) / 100.0f;
float cellH = int.Parse(txtCellHeight.text) / 100.0f;
2025-07-30 15:22:56 +08:00
MapManager.Instance.GenerateMap(MapManager.Instance._curOpenMapId,width * cellW, height * cellH, cellW, cellH);
2025-07-31 10:52:46 +08:00
var newRendData = MapManager.Instance.map?.selector?.GetGridData();
for (int i = 0; i < MapManager.Instance.map?.selector.horizontalNumber; i++)
{
for (int j = 0; j < MapManager.Instance.map?.selector.verticalNumber; j++)
{
if (i < oldhorizontalNumber && j < oldverticalNumber)
{
int oldindex = i + j * oldhorizontalNumber;
//ȡ<><C8A1><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>
int index = MapManager.Instance.map.selector.GetIndexByXY(i, j);
newRendData[index] = oldRendData[oldindex];
}
else {//<2F>¸<EFBFBD><C2B8><EFBFBD>
int index = MapManager.Instance.map.selector.GetIndexByXY(i, j);
newRendData[index] = new RenderData();
newRendData[index].barrier = (int)CellType.Obstacle;
}
}
}
MapManager.Instance.map.selector.RefreshPlaneRender();
2025-07-10 13:45:07 +08:00
ShowMapCellInfo();
}
2025-07-25 15:36:10 +08:00
public void Update()
{
bool isOpen = false;
do {
if (MapManager.Instance.map == null) break;
if (MapManager.Instance.map.selector == null) break;
if (MapManager.Instance.map.selector.selectedGridIndex.Count == 1)
{
int beginIndex = MapManager.Instance.map.selector.selectedGridIndex[0];
MapManager.Instance.map.selector.GetXyByIndex(beginIndex, out int x, out int y);
txtSelectInfo.text = string.Format("<22><>ѡ<EFBFBD><D1A1>:{0},{1} <20><>Ϣ:{2}", x, y, CellTypeColors.GetAreaStr((MapManager.Instance.map.selector.dataArray[beginIndex].barrier)));
isOpen = true;
}
} while (false);
txtSelectInfo.transform.parent.gameObject.SetActive(isOpen);
}
2025-06-14 13:46:24 +08:00
}