Files
HX_MapEditor/Assets/Scripts/UI/UITriggerPanel.cs
2025-07-18 22:28:40 +08:00

113 lines
3.0 KiB
C#

using HxGame.Data;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class UITriggerPanel : MonoBehaviour
{
[HideInInspector]
public InputField curActiveInput;
public Transform itemParent;
public Button btnAdd;
// Start is called before the first frame update
void Start()
{
btnAdd.onClick.AddListener(AddItem);
}
void AddItem()
{
UnityEngine.Object obj = Resources.Load("Prefabs/triggerItem");
if (obj == null)
{
UIWindow.Instance.ShowMessage("triggerItem.prefabʧ°Ü");
return;
}
GameObject go = Instantiate(obj) as GameObject; ;
go.transform.SetParent(itemParent, false);
var item = go.GetComponent<UITriggerItem>();
item.itemIdx = itemParent.childCount;
}
public void AddItem(TriggerConfig t)
{
UnityEngine.Object obj = Resources.Load("Prefabs/triggerItem");
if (obj == null)
{
UIWindow.Instance.ShowMessage("teleportItem.prefabʧ°Ü");
return;
}
GameObject go = Instantiate(obj) as GameObject; ;
go.transform.SetParent(itemParent, false);
var item = go.GetComponent<UITriggerItem>();
item.itemIdx = itemParent.childCount;
MapManager.Instance.SetCurTriggerCenterPoint(item.itemIdx, t.radius, t.mode);
item.txtPos.text = $"{t.pos.x},{t.pos.y}";
item.txtRadius.text = t.radius.ToString();
item.txtEvent.text = t.eventId.ToString();
item.dropMode.value = (int)t.mode;
MapManager.Instance.CreateSpecialPoint(t.pos, item);
}
public void SaveTriggersConfig()
{
int x, y;
var ts = new TriggersConfig();
for (int i = 0; i < itemParent.childCount; i++)
{
var item = itemParent.GetChild(i).GetComponent<UITriggerItem>();
if (!item.CheckValid())
return;
var t = new TriggerConfig();
t.mode = (TriggerMode)item.dropMode.value;
string[] tmp = item.txtPos.text.Split(',');
if (tmp.Length != 2)
return;
x = Convert.ToInt32(tmp[0]);
y = Convert.ToInt32(tmp[1]);
t.pos = new Vector2Int(x, y);
t.radius = Convert.ToInt32(item.txtRadius.text);
t.eventId = Convert.ToInt32(item.txtEvent.text);
ts.triggersConfig.Add(t);
}
int mapId = MapManager.Instance._curOpenMapId;
ts.SaveXML(mapId);
}
public void LoadTriggersConfig(int mapId)
{
var ts = new TriggersConfig();
if (!ts.LoadXML(mapId))
return;
for(int i=0; i<ts.triggersConfig.Count; i++)
{
AddItem(ts.triggersConfig[i]);
}
}
public void RemoveAll()
{
int count = itemParent.childCount;
for (int i = 0; i < count; i++)
{
DestroyImmediate(itemParent.GetChild(0).gameObject);
}
}
}