少年修仙传客户端代码仓库
client_Hale
2019-03-29 33dcb7324103300e8e35b02056b8e80e9e0e1e58
382 地图数据Json格式保存
8个文件已修改
357 ■■■■ 已修改文件
Core/MapEditor/Behavior/Bhv_Evt.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/MapEditor/Behavior/Bhv_Evt_RefreshMonster.cs 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/MapEditor/Behavior/Bhv_Evt_RefreshSceneObject.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/MapEditor/Behavior/Bhv_MapData.cs 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/MapEditor/Behavior/Bhv_MapTrigger.cs 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/MapEditor/Behavior/Bhv_MonsterData.cs 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/MapEditor/Behavior/Bhv_SceneObjectData.cs 150 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/MapEditor/Editor/MapEditor.cs 46 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/MapEditor/Behavior/Bhv_Evt.cs
@@ -31,6 +31,9 @@
            bw.Write((float)System.Math.Round(transform.position.z, 2));
        }
        public abstract void SaveJson(System.Text.StringBuilder stringBuilder);
        public abstract void LoadJson(LitJson.JsonData json);
        public virtual void Load(BinaryReader br)
        {
            id = br.ReadInt32();
Core/MapEditor/Behavior/Bhv_Evt_RefreshMonster.cs
@@ -1,6 +1,8 @@
using System.Collections.Generic;
using UnityEngine;
using System.IO;
using LitJson;
using System.Text;
#if UNITY_EDITOR
using UnityEditor;
@@ -45,6 +47,42 @@
            }
        }
        public override void SaveJson(StringBuilder stringBuilder)
        {
            // bw.Write((byte)type);
            // bw.Write(id);
            // 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));
            stringBuilder.Append("{");
            stringBuilder.Append("\"type\":").Append((byte)type).Append(",");
            stringBuilder.Append("\"id\":").Append((byte)type).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)).Append(",");
            stringBuilder.Append("\"overCondition\":").Append((byte)overCondition).Append(",");
            stringBuilder.Append("\"refreshType\":").Append((byte)refreshType).Append(",");
            stringBuilder.Append("\"conditionParam\":").Append(conditionParam).Append(",");
            stringBuilder.Append("\"overParam\":").Append(overParam).Append(",");
            stringBuilder.Append("\"nextEventID\":").Append(nextEventID).Append(",");
            stringBuilder.Append("\"monsterList\":[");
            if (monsterList.Count > 0)
            {
                monsterList[0].SaveJson(stringBuilder);
                for (int i = 1; i < monsterList.Count; ++i)
                {
                    stringBuilder.Append(",");
                    monsterList[i].SaveJson(stringBuilder);
                }
            }
            stringBuilder.Append("]");
            stringBuilder.Append("}");
        }
        public override void LoadJson(JsonData json)
        {
        }
        public override void Export(BinaryWriter bw)
        {
            base.Export(bw);
Core/MapEditor/Behavior/Bhv_Evt_RefreshSceneObject.cs
@@ -1,6 +1,8 @@
using System.Collections.Generic;
using UnityEngine;
using System.IO;
using LitJson;
using System.Text;
#if UNITY_EDITOR
using UnityEditor;
@@ -182,6 +184,16 @@
            }
            return null;
        }
        public override void SaveJson(StringBuilder stringBuilder)
        {
            throw new System.NotImplementedException();
        }
        public override void LoadJson(JsonData json)
        {
            throw new System.NotImplementedException();
        }
#endif
    }
Core/MapEditor/Behavior/Bhv_MapData.cs
@@ -75,6 +75,38 @@
            }
        }
        public string SaveJson()
        {
            var _stringBuilder = new System.Text.StringBuilder();
            _stringBuilder.Append("{");
            _stringBuilder.Append("\"id\":").Append(id).Append(",");
            _stringBuilder.Append("\"triggerList\": [");
            if (triggerList.Count > 0)
            {
                triggerList[0].SaveJson(_stringBuilder);
                for (int i = 1; i < triggerList.Count; ++i)
                {
                    _stringBuilder.Append(",");
                    triggerList[i].SaveJson(_stringBuilder);
                }
            }
            _stringBuilder.Append("]");
            _stringBuilder.Append("},");
            _stringBuilder.Append("\"eventList\": [");
            if (eventList.Count > 0)
            {
                eventList[0].SaveJson(_stringBuilder);
                for (int i = 1; i < eventList.Count; ++i)
                {
                    _stringBuilder.Append(",");
                    eventList[i].SaveJson(_stringBuilder);
                }
            }
            _stringBuilder.Append("]");
            _stringBuilder.Append("}");
            return _stringBuilder.ToString();
        }
        public void Export(BinaryWriter bw)
        {
            bw.Write(id);
Core/MapEditor/Behavior/Bhv_MapTrigger.cs
@@ -51,6 +51,58 @@
            }
        }
        public void SaveJson(System.Text.StringBuilder stringBuilder)
        {
            stringBuilder.Append("{");
            stringBuilder.Append("\"id\":").Append(id).Append(",");
            stringBuilder.Append("\"triggerType\":").Append((byte)triggerType).Append(",");
            stringBuilder.Append("\"type\":").Append((byte)type).Append(",");
            stringBuilder.Append("\"prevID\":").Append(prevID).Append(",");
            stringBuilder.Append("\"nextID\":").Append(nextID).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)).Append(",");
            stringBuilder.Append("\"sx\":").Append((float)System.Math.Round(boxCollider.size.x, 2)).Append(",");
            stringBuilder.Append("\"sz\":").Append((float)System.Math.Round(boxCollider.size.z, 2)).Append(",");
            stringBuilder.Append("\"ey\":").Append((float)System.Math.Round(transform.eulerAngles.y, 2)).Append(",");
            stringBuilder.Append("\"eventIDList\":[");
            if (eventIDList.Count > 0)
            {
                stringBuilder.Append(eventIDList[0]);
                for (int i = 1; i < eventIDList.Count; ++i)
                {
                    stringBuilder.Append(",").Append(eventIDList[i]);
                }
            }
            stringBuilder.Append("]");
            stringBuilder.Append("}");
        }
        public void LoadJson(LitJson.JsonData json)
        {
            eventIDList.Clear();
            id = (int)json["id"];
            triggerType = (MapTrigger.E_TriggerType)(byte)json["triggerType"];
            type = (Evt.E_EventType)(byte)json["type"];
            prevID = (int)json["prevID"];
            nextID = (int)json["nextID"];
            float _pX = (float)json["px"];
            float _pY = (float)json["py"];
            float _pZ = (float)json["pz"];
            float _x = (float)json["sx"];
            float _z = (float)json["sz"];
            float _eY = (float)json["ey"];
            transform.position = new Vector3(_pX, _pY, _pZ);
            boxCollider.size = new Vector3(_x, 1, _z);
            transform.eulerAngles = new Vector3(0, _eY, 0);
            var _jsonData = json["eventIDList"];
            for (int i = 0; i < _jsonData.Count; ++i)
            {
                eventIDList.Add((int)_jsonData[i]);
            }
        }
        public void Export(BinaryWriter bw)
        {
            Save(bw);
Core/MapEditor/Behavior/Bhv_MonsterData.cs
@@ -24,6 +24,30 @@
            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("\"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"];
            float _pX = (float)jsonData["px"];
            float _pY = (float)jsonData["py"];
            float _pZ = (float)jsonData["pz"];
            transform.position = new Vector3(_pX, _pY, _pZ);
            name = "RefreshMonster_" + npcID;
        }
        public void Load(BinaryReader br)
        {
            npcID = br.ReadUInt32();
Core/MapEditor/Behavior/Bhv_SceneObjectData.cs
@@ -4,83 +4,87 @@
#endif
using UnityEngine;
public class Bhv_SceneObjectData : MonoBehaviour
namespace H2Engine
{
    [HideInInspector]
    public string resName;
    public bool isObstacle = false;
    public class Bhv_SceneObjectData : MonoBehaviour
    {
        [HideInInspector]
        public string resName;
        public bool isObstacle = false;
#if UNITY_EDITOR
    public void Save(BinaryWriter bw)
    {
        bw.Write(resName);
        Debug.LogFormat("resName: {0}", resName);
        bw.Write(isObstacle);
        Debug.LogFormat("isObstacle: {0}", isObstacle);
        bw.Write((float)System.Math.Round(transform.position.x, 2));
        Debug.LogFormat("x: {0}", (float)System.Math.Round(transform.position.x, 2));
        bw.Write((float)System.Math.Round(transform.position.y, 2));
        Debug.LogFormat("y: {0}", (float)System.Math.Round(transform.position.y, 2));
        bw.Write((float)System.Math.Round(transform.position.z, 2));
        Debug.LogFormat("z: {0}", (float)System.Math.Round(transform.position.z, 2));
        bw.Write((float)System.Math.Round(transform.eulerAngles.y, 2));
        Debug.LogFormat("angle: {0}", transform.eulerAngles.y);
    }
    public void Load(BinaryReader br)
    {
        // 加载逻辑原因在父节点进行读取
        // resName = br.ReadString();
        isObstacle = br.ReadBoolean();
        float _x = br.ReadSingle();
        float _y = br.ReadSingle();
        float _z = br.ReadSingle();
        float _eurlerAngle = br.ReadSingle();
        name = "RefreshSceneObject_" + resName;
        transform.position = new Vector3(_x, _y, _z);
        transform.eulerAngles = new Vector3(0, _eurlerAngle, 0);
    }
    public void Export(BinaryWriter bw)
    {
        Save(bw);
    }
    private Bhv_SceneObjectData CreateSceneObject(string sceneName = null)
    {
        if (!string.IsNullOrEmpty(sceneName))
        public void Save(BinaryWriter bw)
        {
            string _path = "Assets/ResourcesOut/Mob/Prefab_Race_" + sceneName + ".prefab";
            var _obj = AssetDatabase.LoadAssetAtPath<GameObject>(_path);
            if (!_obj)
            {
                Debug.LogError("所要创建的资源不存在: " + _path);
                return null;
            }
            _obj = Instantiate(_obj);
            var _sceneObjData = _obj.AddComponent<Bhv_SceneObjectData>();
            _sceneObjData.resName = sceneName;
            RaycastHit _hit;
            Ray _ray = SceneView.lastActiveSceneView.camera.ViewportPointToRay(new Vector3(.5f, .5f, 0));
            if (Physics.Raycast(_ray, out _hit, 1000f, LayerUtility.WalkbleMask))
            {
                _sceneObjData.transform.position = _hit.point;
            }
            _sceneObjData.transform.SetParent(transform);
            _sceneObjData.transform.eulerAngles = Vector3.zero;
            _sceneObjData.transform.localScale = Vector3.one;
            Selection.activeGameObject = _sceneObjData.gameObject;
            if (Selection.activeGameObject)
            {
                SceneView.lastActiveSceneView.LookAt(Selection.activeGameObject.transform.position);
            }
            return _sceneObjData;
            bw.Write(resName);
            Debug.LogFormat("resName: {0}", resName);
            bw.Write(isObstacle);
            Debug.LogFormat("isObstacle: {0}", isObstacle);
            bw.Write((float)System.Math.Round(transform.position.x, 2));
            Debug.LogFormat("x: {0}", (float)System.Math.Round(transform.position.x, 2));
            bw.Write((float)System.Math.Round(transform.position.y, 2));
            Debug.LogFormat("y: {0}", (float)System.Math.Round(transform.position.y, 2));
            bw.Write((float)System.Math.Round(transform.position.z, 2));
            Debug.LogFormat("z: {0}", (float)System.Math.Round(transform.position.z, 2));
            bw.Write((float)System.Math.Round(transform.eulerAngles.y, 2));
            Debug.LogFormat("angle: {0}", transform.eulerAngles.y);
        }
        return null;
    }
        public void Load(BinaryReader br)
        {
            // 加载逻辑原因在父节点进行读取
            // resName = br.ReadString();
            isObstacle = br.ReadBoolean();
            float _x = br.ReadSingle();
            float _y = br.ReadSingle();
            float _z = br.ReadSingle();
            float _eurlerAngle = br.ReadSingle();
            name = "RefreshSceneObject_" + resName;
            transform.position = new Vector3(_x, _y, _z);
            transform.eulerAngles = new Vector3(0, _eurlerAngle, 0);
        }
        public void Export(BinaryWriter bw)
        {
            Save(bw);
        }
        private Bhv_SceneObjectData CreateSceneObject(string sceneName = null)
        {
            if (!string.IsNullOrEmpty(sceneName))
            {
                string _path = "Assets/ResourcesOut/Mob/Prefab_Race_" + sceneName + ".prefab";
                var _obj = AssetDatabase.LoadAssetAtPath<GameObject>(_path);
                if (!_obj)
                {
                    Debug.LogError("所要创建的资源不存在: " + _path);
                    return null;
                }
                _obj = Instantiate(_obj);
                var _sceneObjData = _obj.AddComponent<Bhv_SceneObjectData>();
                _sceneObjData.resName = sceneName;
                RaycastHit _hit;
                Ray _ray = SceneView.lastActiveSceneView.camera.ViewportPointToRay(new Vector3(.5f, .5f, 0));
                if (Physics.Raycast(_ray, out _hit, 1000f, LayerUtility.WalkbleMask))
                {
                    _sceneObjData.transform.position = _hit.point;
                }
                _sceneObjData.transform.SetParent(transform);
                _sceneObjData.transform.eulerAngles = Vector3.zero;
                _sceneObjData.transform.localScale = Vector3.one;
                Selection.activeGameObject = _sceneObjData.gameObject;
                if (Selection.activeGameObject)
                {
                    SceneView.lastActiveSceneView.LookAt(Selection.activeGameObject.transform.position);
                }
                return _sceneObjData;
            }
            return null;
        }
#endif
}
    }
}
Core/MapEditor/Editor/MapEditor.cs
@@ -107,10 +107,10 @@
            {
                MapData.LoadFormFile(10010);
            }
            // if (GUILayout.Button("保存1", gUISkin.button, GUILayout.Width(60), GUILayout.Height(22)))
            // {
            //     SaveJson();
            // }
            if (GUILayout.Button("保存1", gUISkin.button, GUILayout.Width(60), GUILayout.Height(22)))
            {
                SaveJson();
            }
            EditorGUILayout.EndHorizontal();
            /// --------------------------------------------------------------------------------
@@ -334,8 +334,42 @@
            // {
            //     return;
            // }
            var _jsonData = JsonUtility.ToJson(_mapData);
            Debug.Log(_jsonData);
            // LitJson.JsonMapper.RegisterExporter<System.Type>((v, w) =>
            // {
            //     w.Write(v.FullName);
            // });
            // LitJson.JsonMapper.RegisterImporter<string, System.Type>((s) =>
            // {
            //     return System.Type.GetType(s);
            // });
            // System.Action<Vector3, LitJson.JsonWriter> writeVector3 = (v, w) =>
            // {
            //     w.WriteObjectStart();
            //     w.WritePropertyName("x");
            //     w.Write((float)v.x);
            //     w.WritePropertyName("y");
            //     w.Write((float)v.y);
            //     w.WritePropertyName("z");
            //     w.Write((float)v.z);
            //     w.WriteObjectEnd();
            // };
            // LitJson.JsonMapper.RegisterExporter<Vector3>((v, w) =>
            // {
            //     writeVector3(v, w);
            // });
            // LitJson.UnityTypeBindings.Register();
            // var _json = LitJson.JsonMapper.ToJson(_mapData);
            Debug.Log(_mapData.SaveJson());
        }
        private class _JsonWritter : LitJson.JsonWriter
        {
        }
        private void Export()