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 triggerList = new List(); [HideInInspector] public List eventList = new List(); [HideInInspector] public List transferList = new List(); #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(); _triggerBhv.boxCollider = _go.AddComponent(); _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(); _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(); _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(); _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 } }