Files
HX_MapEditor/Assets/Scripts/Map/SceneArea.cs

128 lines
4.3 KiB
C#
Raw Normal View History

2025-07-18 22:28:40 +08:00
using TMPro;
2025-06-22 15:21:25 +08:00
using UnityEngine;
using static MapManager;
public class SceneArea : MonoBehaviour
{
public int Idx;
2025-07-18 22:28:40 +08:00
public UIBaseItem baseItem { get; set; }
public EditCellType editCellType { get; set; }
2025-06-22 15:21:25 +08:00
public void SetSceneAreaData(EditCellType editCellType,int idx)
{
this.editCellType = editCellType;
Idx = idx;
}
public void OnPointerClick()
{
Debug.Log($"ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>...");
2025-07-18 22:28:40 +08:00
baseItem?.SetSelectPosItem();
2025-06-22 15:21:25 +08:00
}
public void OnPointerDrag(Vector3 mousePosition)
{
Vector2Int pos = MapManager.Instance.map.selector.GetMouseByCell();
SetAreaPos(pos);
2025-07-18 22:28:40 +08:00
baseItem?.SetItemPos(pos);
2025-06-22 15:21:25 +08:00
}
public void OnPointerUp()
{
Debug.Log($"<22>ɿ<EFBFBD><C9BF><EFBFBD><EFBFBD><EFBFBD>...");
}
public void SetAreaPos(Vector2Int pos)
{
Vector3 realpos = MapManager.Instance.map.selector.getPosByGrid(pos);
transform.position = realpos;
}
2025-07-18 22:28:40 +08:00
public void SetAreaSize(int radius)
{
float scaleX = MapManager.Instance.map.sideWidth * radius * 2;
float scaleY = MapManager.Instance.map.sideHeight * radius * 2;
transform.localScale = new Vector3(scaleX, scaleY, 1);
}
public static SceneArea CreateSceneArea(UIBaseItem baseItem)
{
UnityEngine.GameObject obj = null;
Transform parentTrans = null;
switch (baseItem.editCellType)
{
case EditCellType.AudioTrigger:
obj = Resources.Load<GameObject>("Prefabs/audioTriggerCenterPoint");
parentTrans = MapManager.Instance.mapAudioTrigger;
break;
case EditCellType.MonsterArea:
obj = Resources.Load<GameObject>("Prefabs/monsterPoint");
parentTrans = MapManager.Instance.mapMonsterArea;
break;
case EditCellType.TriggerCell:
obj = Resources.Load<GameObject>("Prefabs/audioTriggerCenterPoint");
parentTrans = MapManager.Instance.mapAudioTrigger;
break;
case EditCellType.NpcCell:
obj = Resources.Load<GameObject>("Prefabs/npcPoint");
parentTrans = MapManager.Instance.mapNPCArea;
break;
case EditCellType.ReliveCell:
obj = Resources.Load<GameObject>("Prefabs/reliveCenterPoint");
parentTrans = MapManager.Instance.mapReliveArea;
break;
case EditCellType.TeleportCell:
obj = Resources.Load<GameObject>("Prefabs/teleportPoint");
parentTrans = MapManager.Instance.mapTeleportArea;
break;
}
if (obj == null) return null;
GameObject cellObj = GameObject.Instantiate(obj,parentTrans);
var area = cellObj.GetComponent<SceneArea>();
2025-07-30 15:22:56 +08:00
if (area == null)
{
Debug.LogError($" {obj.name} <20><><EFBFBD><EFBFBD>...");
}
2025-07-18 22:28:40 +08:00
area.editCellType = baseItem.editCellType;
area.baseItem = baseItem;
baseItem.sceneArea = area;
area.RefSAreaInfo();
return area;
}
/// <summary>
/// ˢ<><CBA2><EFBFBD><EFBFBD>Ϣ
/// </summary>
public void RefSAreaInfo()
{
if (baseItem == null)
{
Debug.LogError($"SceneArea Error {editCellType}");
return;
}
switch (editCellType)
{
case EditCellType.AudioTrigger:
break;
case EditCellType.MonsterArea:
if (baseItem is UIMonsterItem monsterItem)
{
2025-07-19 01:21:40 +08:00
transform.Find("Name").GetComponent<TextMeshPro>().text = $"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{monsterItem.monster.itemIdx}";
2025-07-18 22:28:40 +08:00
transform.Find("ID").GetComponent<TextMeshPro>().text = "ID:" + monsterItem.monster.id;
transform.Find("Num").GetComponent<TextMeshPro>().text = "Num:" + monsterItem.monster.num;
SetAreaSize(monsterItem.monster.radius);
}
break;
case EditCellType.TriggerCell:
break;
case EditCellType.NpcCell:
if (baseItem is UINpcItem npcItem)
{
transform.Find("ID").GetComponent<TextMeshPro>().text = "ID:" + npcItem.txtID.text;
}
break;
case EditCellType.ReliveCell:
break;
case EditCellType.TeleportCell:
break;
}
}
2025-06-22 15:21:25 +08:00
}