Files
HX_MapEditor/Assets/Scripts/Map/SceneArea.cs
2025-11-18 10:11:56 +08:00

131 lines
4.6 KiB
C#

using TMPro;
using UnityEngine;
using static MapManager;
public class SceneArea : MonoBehaviour
{
public int Idx;
public UIBaseItem baseItem { get; set; }
public EditCellType editCellType { get; set; }
public void SetSceneAreaData(EditCellType editCellType,int idx)
{
this.editCellType = editCellType;
Idx = idx;
}
public void OnPointerClick()
{
Debug.Log($"Ñ¡ÖÐÎÒÁË...");
baseItem?.SetSelectPosItem();
}
public void OnPointerDrag(Vector3 mousePosition)
{
Vector2Int pos = MapManager.Instance.map.selector.GetMouseByCell();
SetAreaPos(pos);
baseItem?.SetItemPos(pos);
}
public void OnPointerUp()
{
Debug.Log($"ËÉ¿ªÎÒÁË...");
}
public void SetAreaPos(Vector2Int pos)
{
Vector3 realpos = MapManager.Instance.map.selector.getPosByGrid(pos);
transform.position = realpos;
}
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>();
if (area == null)
{
Debug.LogError($" {obj.name} ´íÎó...");
}
area.editCellType = baseItem.editCellType;
area.baseItem = baseItem;
baseItem.sceneArea = area;
area.RefSAreaInfo();
return area;
}
/// <summary>
/// Ë¢ÐÂÐÅÏ¢
/// </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)
{
transform.Find("Name").GetComponent<TextMeshPro>().text = $"¹ÖÎïÇø{monsterItem.monster.itemIdx}";
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:
if(baseItem is UITeleportItem teleportItem)
{
transform.Find("Txt").GetComponent<TextMeshPro>().text = "map:" + teleportItem.txtNextMapID.text;
}
break;
}
}
}