using UnityEngine; using System.IO; namespace H2Engine { public class Bhv_MonsterData : MonoBehaviour { [HideInInspector] public uint npcID; [HideInInspector] public string resName; [HideInInspector] public byte ai; [HideInInspector] public int faceDir; #if UNITY_EDITOR public void Save(BinaryWriter bw) { bw.Write(resName); bw.Write(npcID); bw.Write(ai); bw.Write((float)System.Math.Round(transform.position.x, 2)); bw.Write((float)System.Math.Round(transform.position.y, 2)); bw.Write((float)System.Math.Round(transform.position.z, 2)); } public void SaveJson(System.Text.StringBuilder stringBuilder) { stringBuilder.Append("{"); stringBuilder.Append("\"resName\":\"").Append(resName).Append("\","); stringBuilder.Append("\"npcID\":").Append(npcID).Append(","); stringBuilder.Append("\"ai\":").Append(npcID).Append(","); stringBuilder.Append("\"faceDir\":").Append(faceDir).Append(","); stringBuilder.Append("\"px\":").Append((float)System.Math.Round(transform.position.x, 2)).Append(","); stringBuilder.Append("\"py\":").Append((float)System.Math.Round(transform.position.y, 2)).Append(","); stringBuilder.Append("\"pz\":").Append((float)System.Math.Round(transform.position.z, 2)); stringBuilder.Append("}"); } public void LoadJson(LitJson.JsonData jsonData) { resName = jsonData["resName"].ToString(); npcID = (uint)(int)jsonData["npcID"]; ai = (byte)jsonData["ai"]; faceDir = (int)jsonData["faceDir"]; float _pX = Bhv_MapData.GetJsonFloat(jsonData["px"]); float _pY = Bhv_MapData.GetJsonFloat(jsonData["py"]); float _pZ = Bhv_MapData.GetJsonFloat(jsonData["pz"]); transform.position = new Vector3(_pX, _pY, _pZ); name = "RefreshMonster_" + npcID; } public void Load(BinaryReader br) { npcID = br.ReadUInt32(); ai = br.ReadByte(); float _x = br.ReadSingle(); float _y = br.ReadSingle(); float _z = br.ReadSingle(); transform.position = new Vector3(_x, _y, _z); name = "RefreshMonster_" + npcID; } public void Export(BinaryWriter bw) { bw.Write(npcID); bw.Write(ai); bw.Write(faceDir); bw.Write((float)System.Math.Round(transform.position.x, 2)); bw.Write((float)System.Math.Round(transform.position.y, 2)); bw.Write((float)System.Math.Round(transform.position.z, 2)); } #endif } }