113 lines
3.1 KiB
C#
113 lines
3.1 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.x, t.pos.y, MapManager.EditCellType.TriggerCell);
|
|
}
|
|
|
|
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 = Convert.ToInt32(UIWindow.Instance.uiCreateMap.txtMapID.text);
|
|
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);
|
|
}
|
|
}
|
|
}
|