using UnityEngine;
|
using System.Collections.Generic;
|
using System.IO;
|
|
namespace H2Engine
|
{
|
public class Bhv_MapData : MonoBehaviour
|
{
|
[HideInInspector]
|
public int id;
|
public bool showTriggerList = false;
|
public bool showEventList = false;
|
public bool showTransferList = false;
|
[HideInInspector]
|
public List<Bhv_MapTrigger> triggerList = new List<Bhv_MapTrigger>();
|
[HideInInspector]
|
public List<Bhv_Evt> eventList = new List<Bhv_Evt>();
|
[HideInInspector]
|
public List<Bhv_Trasfer> transferList = new List<Bhv_Trasfer>();
|
|
#if UNITY_EDITOR
|
|
public const string NodeName_Root = "MapEditor";
|
public const string NodeName_TriggerList = "TriggerList";
|
public const string NodeName_EventList = "EventList";
|
public const string NodeName_TransferList = "TransferList";
|
public const string NodeName_Trigger = "Trigger_";
|
public const string NodeName_Event = "Event_";
|
public const string NodeName_Transfer = "Transfer_";
|
|
public void Save(BinaryWriter bw)
|
{
|
bw.Write(id);
|
bw.Write(triggerList.Count);
|
foreach (var _trigger in triggerList)
|
{
|
_trigger.Save(bw);
|
}
|
bw.Write(eventList.Count);
|
foreach (var _event in eventList)
|
{
|
_event.Save(bw);
|
}
|
bw.Write(transferList.Count);
|
foreach (var _transfer in transferList)
|
{
|
_transfer.Save(bw);
|
}
|
}
|
|
public void Export(BinaryWriter bw)
|
{
|
bw.Write(id);
|
Debug.LogFormat("id: {0}", id);
|
bw.Write(triggerList.Count);
|
Debug.LogFormat("triggerList.Count: {0}", triggerList.Count);
|
foreach (var _trigger in triggerList)
|
{
|
_trigger.Export(bw);
|
}
|
bw.Write(eventList.Count);
|
Debug.LogFormat("eventList.Count: {0}", eventList.Count);
|
foreach (var _event in eventList)
|
{
|
_event.Export(bw);
|
}
|
bw.Write(transferList.Count);
|
Debug.LogFormat("transferList.Count: {0}", transferList.Count);
|
foreach (var _transfer in transferList)
|
{
|
_transfer.Export(bw);
|
}
|
}
|
|
public void Load(BinaryReader br)
|
{
|
id = br.ReadInt32();
|
int _count = br.ReadInt32();
|
GameObject _go = null;
|
for (int i = 0; i < _count; ++i)
|
{
|
_go = new GameObject(NodeName_Trigger + i);
|
_go.transform.position = Vector3.zero;
|
_go.transform.eulerAngles = Vector3.zero;
|
_go.transform.localScale = Vector3.one;
|
var _triggerBhv = _go.AddComponent<Bhv_MapTrigger>();
|
_triggerBhv.boxCollider = _go.AddComponent<BoxCollider>();
|
_triggerBhv.transform.SetParent(transform.Find(NodeName_TriggerList));
|
triggerList.Add(_triggerBhv);
|
_triggerBhv.Load(br);
|
}
|
_count = br.ReadInt32();
|
for (int i = 0; i < _count; ++i)
|
{
|
_go = new GameObject(NodeName_Event + i);
|
_go.transform.position = Vector3.zero;
|
_go.transform.eulerAngles = Vector3.zero;
|
_go.transform.localScale = Vector3.one;
|
var _type = (Evt.E_EventType)br.ReadByte();
|
if (_type == Evt.E_EventType.Enemy)
|
{
|
var _eventBhv = _go.AddComponent<Bhv_Evt_RefreshMonster>();
|
_eventBhv.type = _type;
|
_eventBhv.transform.SetParent(transform.Find(NodeName_EventList));
|
eventList.Add(_eventBhv);
|
_eventBhv.Load(br);
|
}
|
else if (_type == Evt.E_EventType.SceneObject)
|
{
|
var _eventBhv = _go.AddComponent<Bhv_Evt_RefreshSceneObject>();
|
_eventBhv.type = _type;
|
_eventBhv.transform.SetParent(transform.Find(NodeName_EventList));
|
eventList.Add(_eventBhv);
|
_eventBhv.Load(br);
|
}
|
}
|
_count = br.ReadInt32();
|
for (int i = 0; i < _count; ++i)
|
{
|
_go = new GameObject(NodeName_Transfer + i);
|
_go.transform.position = Vector3.zero;
|
_go.transform.eulerAngles = Vector3.zero;
|
_go.transform.localScale = Vector3.one;
|
var _transferBhv = _go.AddComponent<Bhv_Trasfer>();
|
_transferBhv.transform.SetParent(transform.Find(NodeName_TransferList));
|
transferList.Add(_transferBhv);
|
_transferBhv.Load(br);
|
}
|
|
}
|
|
public void Clear()
|
{
|
showTriggerList = false;
|
showEventList = false;
|
showTriggerList = false;
|
|
triggerList.Clear();
|
eventList.Clear();
|
transferList.Clear();
|
|
for (int i = 0; i < transform.childCount; ++i)
|
{
|
for (int j = transform.GetChild(i).childCount - 1; j >= 0; --j)
|
{
|
DestroyImmediate(transform.GetChild(i).GetChild(j).gameObject);
|
}
|
}
|
}
|
#endif
|
}
|
}
|