Example #1
0
        //[SerializeField]
        //private LJTestDict testDict;
        //public LJTestDict TestDict
        //{
        //    get { return testDict; }
        //}


        //public Dictionary<Vector3Int, LJGridObject> PositionProperties
        //{
        //    get { return serializationDictionary.ToDictionary(); }
        //}

        ////[SerializeField]
        //public List<Vector3Int> _keys = new List<Vector3Int> { };
        ////[SerializeField]
        //public List<LJGridObject> _values = new List<LJGridObject> { };

        //public void OnBeforeSerialize()
        //{
        //    _keys.Clear();
        //    _values.Clear();

        //    foreach (var kvp in m_PositionProperties)
        //    {
        //        _keys.Add(kvp.Key);
        //        _values.Add(kvp.Value);
        //    }
        //}

        //public void OnAfterDeserialize()
        //{
        //    m_PositionProperties.Clear();
        //    for (int i = 0; i != Math.Min(_keys.Count, _values.Count); i++)
        //    {
        //        m_PositionProperties[_keys[i]] = _values[i];
        //    }
        //}


        public bool SetPositionProperty(SerVector2Int position, LJMapObject positionProperty)
        {
            //Grid grid = GetComponentInParent<Grid>();
            //if (grid != null && positionProperty != null)
            //{
            if (positionProperty != null)
            {
                m_PositionProperties[position] = positionProperty;
                return(true);
            }
            return(false);
        }
Example #2
0
        private void DrawAllGirdObjectMainId(LJMapObjLayerData mapObjLayerData, LJMapObject currentGirdObject, List <Vector3Int> allLocations, ref bool isChanged)
        {
            //EditorGUILayout.BeginHorizontal();
            //EditorGUILayout.PrefixLabel("组id : ");
            //int mainId = EditorGUILayout.DelayedIntField(currentGirdObject.MainId);
            //EditorGUILayout.EndHorizontal();

            //if (mainId != currentGirdObject.MainId) {
            //    EnsureCreateAllGirdObject(gridMapData, allLocations);
            //    for (int i = 0, imax = allLocations.Count; i < imax; i++)
            //    {
            //        Vector3Int location = allLocations[i];
            //        LJGridObject gridObject = gridMapData.GetPositionProperty(MapUtil.ConvertVec3Int2SerVec3Int(allLocations[i]));
            //        gridObject.MainId = mainId;
            //    }
            //}
        }
Example #3
0
        private int DrawInspectorEnableGirdObject(LJMapObjLayerData mapObjLayerData, LJMapObject currentGirdObject, List <Vector3Int> allLocations)
        {
            bool enableGridObject    = currentGirdObject != null;
            bool guiEnableGridObject = enableGridObject;

            if (!enableGridObject)
            {
                EditorGUILayout.BeginHorizontal();
                EditorGUILayout.PrefixLabel("开启图块属性");
                guiEnableGridObject = EditorGUILayout.Toggle(enableGridObject);
                EditorGUILayout.EndHorizontal();
            }
            else
            {
                EditorGUILayout.BeginHorizontal();
                EditorGUILayout.PrefixLabel("关闭图块属性");
                guiEnableGridObject = EditorGUILayout.Toggle(enableGridObject);
                EditorGUILayout.EndHorizontal();
            }


            if (guiEnableGridObject != enableGridObject)
            {
                if (!guiEnableGridObject)
                {// clear data
                    ClearAllGirdObject(mapObjLayerData, allLocations);
                    return(1);
                }
                else
                {
                    EnsureCreateAllGirdObject(mapObjLayerData, allLocations);
                    return(2);
                }
            }
            else
            {
                if (!guiEnableGridObject)
                {
                    return(3);
                }
            }
            return(4);
        }
Example #4
0
        void OnDrawSceneGUI(SceneView sceneView)
        {
            LJMapObjLayerHolder mapObjLayerHolder = prefabBrush.LJMapObjLayerHolder;

            if (mapObjLayerHolder == null)
            {
                return;
            }
            Grid grid = mapObjLayerHolder.GetComponent <Grid>();

            if (grid == null)
            {
                return;
            }

            LJMapObjLayerData mapObjLayerData = mapObjLayerHolder.mapObjLayerData;

            if (mapObjLayerData == null)
            {
                return;
            }

            if (!prefabBrush.showObjLayerBorder && !prefabBrush.showObjLayerInfo)
            {
                return;
            }

            Vector3 cellSize = grid.cellSize;
            //Debug.Log("we got cellSize : "+ cellSize);
            LJMapObjDict  dict          = mapObjLayerData.PositionProperties;
            StringBuilder stringBuilder = new StringBuilder();

            foreach (KeyValuePair <SerVector2Int, LJMapObject> kvp in dict)
            {
                SerVector2Int serCellPosInt = kvp.Key;
                Vector2Int    cellPosInt    = MapUtil.ConvertSerVec2Int2Vec2Int(serCellPosInt);
                LJMapObject   ljGridObject  = kvp.Value;
                Vector3[]     cellCorners   = MapUtil.GetMapWorldCorners(new Vector3Int(cellPosInt.x, cellPosInt.y, 0), grid);
                Handles.color = Color.cyan;
                if (prefabBrush.showObjLayerBorder)
                {
                    Handles.DrawLines(new Vector3[] { cellCorners[0], cellCorners[2], cellCorners[2], cellCorners[1], cellCorners[1], cellCorners[3], cellCorners[3], cellCorners[0], });
                }
                //switch (ljGridObject.d)
                if (ljGridObject == null)
                {
                    continue;
                }

                if (!prefabBrush.showObjLayerInfo)
                {
                    continue;
                }

                stringBuilder.Remove(0, stringBuilder.Length);

                switch (ljGridObject.MainType)
                {
                case LJTilemaps.LJMapConst.MAP_OBJ_MAIN_TYPE.UNDEFINE:
                    stringBuilder.Append("未定义");
                    break;

                case LJTilemaps.LJMapConst.MAP_OBJ_MAIN_TYPE.WONDER:
                    stringBuilder.Append("域都");
                    break;

                case LJTilemaps.LJMapConst.MAP_OBJ_MAIN_TYPE.CITY:
                    stringBuilder.Append("卫都");

                    break;

                case LJTilemaps.LJMapConst.MAP_OBJ_MAIN_TYPE.GATE:
                    stringBuilder.Append("关隘");

                    break;

                case LJTilemaps.LJMapConst.MAP_OBJ_MAIN_TYPE.TOWN:
                    stringBuilder.Append("城镇");
                    break;

                case LJTilemaps.LJMapConst.MAP_OBJ_MAIN_TYPE.RESOURCE:
                    stringBuilder.Append("资源区");
                    break;

                case LJTilemaps.LJMapConst.MAP_OBJ_MAIN_TYPE.TREASURE:
                    stringBuilder.Append("讨伐区");
                    break;
                }

                switch (ljGridObject.MainType)
                {
                case LJTilemaps.LJMapConst.MAP_OBJ_MAIN_TYPE.UNDEFINE:
                    break;

                case LJTilemaps.LJMapConst.MAP_OBJ_MAIN_TYPE.WONDER:
                case LJTilemaps.LJMapConst.MAP_OBJ_MAIN_TYPE.CITY:
                case LJTilemaps.LJMapConst.MAP_OBJ_MAIN_TYPE.GATE:
                    switch (ljGridObject.SubType)
                    {
                    case LJMapConst.MAP_OBJ_SUB_TYPE.UNDEFINE:
                        stringBuilder.Append(" 未定义 ");

                        break;

                    case LJMapConst.MAP_OBJ_SUB_TYPE.WONDER_PART_OUTSIDE:
                        stringBuilder.Append(" 外层 ");
                        break;

                    case LJMapConst.MAP_OBJ_SUB_TYPE.WONDER_PART_INNER:
                        stringBuilder.Append(" 内层 ");
                        break;

                    case LJMapConst.MAP_OBJ_SUB_TYPE.WONDER_PART_KERNEL:
                        stringBuilder.Append(" 核心 ");
                        break;

                    case LJMapConst.MAP_OBJ_SUB_TYPE.WONDER_PART_UNUSERD:
                        stringBuilder.Append(" 阻塞 ");
                        break;

                    case LJMapConst.MAP_OBJ_SUB_TYPE.PART:

                        break;
                    }

                    break;

                case LJTilemaps.LJMapConst.MAP_OBJ_MAIN_TYPE.TOWN:
                    //stringBuilder.AppendFormat("id : {0}", ljGridObject.GetGridObjectId());
                    break;

                case LJTilemaps.LJMapConst.MAP_OBJ_MAIN_TYPE.RESOURCE:
                    //stringBuilder.AppendFormat("id : {0}", ljGridObject.MainId);
                    break;

                case LJTilemaps.LJMapConst.MAP_OBJ_MAIN_TYPE.TREASURE:
                    //stringBuilder.AppendFormat("id : {0}", ljGridObject.MainId);
                    break;
                }
                stringBuilder.AppendFormat("id : {0}", ljGridObject.GetGridObjectId());
                Handles.color = Color.green;
                Handles.Label(cellCorners[4], stringBuilder.ToString(), GUI.skin.customStyles[4]);
            }
        }
Example #5
0
        private void DrawAllGirdObjectType(LJMapObjLayerData mapObjLayerData, LJMapObject currentGirdObject, List <Vector3Int> allLocations, ref bool isChanged)
        {
            int mainType = EditorGUILayout.IntPopup("组类型 : ", currentGirdObject.MainType, MAIN_NAMES, MAIN_INDEXS);

            if (currentGirdObject.MainType != mainType) //改变主类型
            {
                isChanged = true;
                EnsureCreateAllGirdObject(mapObjLayerData, allLocations);
                for (int i = 0, imax = allLocations.Count; i < imax; i++)
                {
                    Vector3Int    location      = allLocations[i];
                    SerVector2Int serVector2Int = new SerVector2Int(location.x, location.y);
                    LJMapObject   gridObject    = mapObjLayerData.GetPositionProperty(serVector2Int);
                    gridObject.MainType = mainType;
                    switch (mainType)
                    {
                    case LJMapConst.MAP_OBJ_MAIN_TYPE.UNDEFINE:
                        gridObject.SubType = LJMapConst.MAP_OBJ_SUB_TYPE.UNDEFINE;
                        break;

                    case LJMapConst.MAP_OBJ_MAIN_TYPE.WONDER:
                    case LJMapConst.MAP_OBJ_MAIN_TYPE.CITY:
                    case LJMapConst.MAP_OBJ_MAIN_TYPE.GATE:
                        if (gridObject.SubType == LJMapConst.MAP_OBJ_SUB_TYPE.UNDEFINE)
                        {
                            gridObject.SubType = LJMapConst.MAP_OBJ_SUB_TYPE.WONDER_PART_OUTSIDE;
                        }
                        else if (gridObject.SubType == LJMapConst.MAP_OBJ_SUB_TYPE.PART)
                        {
                            gridObject.SubType = LJMapConst.MAP_OBJ_SUB_TYPE.WONDER_PART_OUTSIDE;
                        }
                        break;

                    case LJMapConst.MAP_OBJ_MAIN_TYPE.TOWN:
                    case LJMapConst.MAP_OBJ_MAIN_TYPE.RESOURCE:
                    case LJMapConst.MAP_OBJ_MAIN_TYPE.TREASURE:
                        gridObject.SubType = LJMapConst.MAP_OBJ_SUB_TYPE.PART;
                        break;
                    }
                }
            }

            switch (mainType)
            {
            case LJMapConst.MAP_OBJ_MAIN_TYPE.UNDEFINE:
                EditorGUILayout.LabelField("请先定义地块类型!");
                break;

            case LJMapConst.MAP_OBJ_MAIN_TYPE.WONDER:
            case LJMapConst.MAP_OBJ_MAIN_TYPE.CITY:
            case LJMapConst.MAP_OBJ_MAIN_TYPE.GATE:
                int subType = EditorGUILayout.IntPopup("二级类型 : ", currentGirdObject.SubType, SUB_NAMES, SUB_INDEXS);
                if (currentGirdObject.SubType != subType)
                {    //改变主类型
                    EnsureCreateAllGirdObject(mapObjLayerData, allLocations);
                    for (int i = 0, imax = allLocations.Count; i < imax; i++)
                    {
                        Vector3Int    location      = allLocations[i];
                        SerVector2Int serVector2Int = new SerVector2Int(location.x, location.y);
                        LJMapObject   gridObject    = mapObjLayerData.GetPositionProperty(serVector2Int);
                        gridObject.SubType  = subType;
                        gridObject.MainType = mainType;
                    }
                }
                break;

            case LJMapConst.MAP_OBJ_MAIN_TYPE.TOWN:
            case LJMapConst.MAP_OBJ_MAIN_TYPE.RESOURCE:
            case LJMapConst.MAP_OBJ_MAIN_TYPE.TREASURE:

                break;
            }
        }
Example #6
0
        public override void OnPaintInspectorGUI()
        {
            base.OnPaintInspectorGUI();
            bool isChanged = false;

            EditorGUILayout.LabelField("蓝鲸图块编辑");
            List <Vector3Int> allLocations     = new List <Vector3Int>();
            Vector3Int        lastCellposition = lastBoundsInt.position;

            allLocations.Add(lastCellposition);
            foreach (Vector3Int location in lastBoundsInt.allPositionsWithin)
            {
                if (lastCellposition.Equals(location))
                {
                    continue;
                }
                allLocations.Add(location);
            }
            DrawInspectorAllLocation(allLocations);

            LJMapObjLayerHolder mapObjLayerHolder = prefabBrush.LJMapObjLayerHolder;

            if (mapObjLayerHolder == null)
            {
                EditorGUILayout.LabelField("未绑定 LJ Map Obj Layer Holder!");
                return;
            }

            LJMapObjLayerData mapObjLayerData = mapObjLayerHolder.mapObjLayerData;

            if (mapObjLayerData == null)
            {
                EditorGUILayout.LabelField("未加载地图!");
                return;
            }
            SerVector2Int lastCellVectPosition = new SerVector2Int(allLocations[0].x, allLocations[0].y);
            //SerVector3Int lastCellVectPosition = MapUtil.ConvertVec3Int2SerVec3Int(allLocations[0]);
            LJMapObject currentGirdObject = mapObjLayerData.GetPositionProperty(lastCellVectPosition);
            int         drawSt            = DrawInspectorEnableGirdObject(mapObjLayerData, currentGirdObject, allLocations);

            switch (drawSt)
            {
            case 1:    //有修改 已关闭
                SaveLJMapObjLayerData(mapObjLayerData);
                return;

            case 2:    //有修改 已开启
                currentGirdObject = mapObjLayerData.GetPositionProperty(lastCellVectPosition);
                isChanged         = true;
                break;

            case 3:     // 无修改 关闭
                return;

            case 4:     // 无修改 开启
                break;
            }

            DrawAllGirdObjectType(mapObjLayerData, currentGirdObject, allLocations, ref isChanged);
            //switch (currentGirdObject.MainType)
            //{
            //    case LJMapConst.MAP_OBJ_MAIN_TYPE.UNDEFINE:
            //        break;
            //    case LJMapConst.MAP_OBJ_MAIN_TYPE.WONDER:
            //    case LJMapConst.MAP_OBJ_MAIN_TYPE.CITY:
            //    case LJMapConst.MAP_OBJ_MAIN_TYPE.GATE:
            //    case LJMapConst.MAP_OBJ_MAIN_TYPE.TOWN:
            //    case LJMapConst.MAP_OBJ_MAIN_TYPE.RESOURCE:
            //    case LJMapConst.MAP_OBJ_MAIN_TYPE.TREASURE:
            //        //DrawAllGirdObjectMainId(gridMapData, currentGirdObject, allLocations,ref isChanged);
            //        break;
            //}


            //switch (currentGirdObject.MainType)
            //{
            //    case LJMapConst.MAP_OBJ_MAIN_TYPE.UNDEFINE:
            //        break;
            //    case LJMapConst.MAP_OBJ_MAIN_TYPE.WONDER:
            //    case LJMapConst.MAP_OBJ_MAIN_TYPE.CITY:
            //    case LJMapConst.MAP_OBJ_MAIN_TYPE.GATE:
            //        DrawAllGirdObjectSubId(gridMapData, currentGirdObject, allLocations,ref isChanged);
            //        break;
            //    case LJMapConst.MAP_OBJ_MAIN_TYPE.TOWN:
            //    case LJMapConst.MAP_OBJ_MAIN_TYPE.RESOURCE:
            //    case LJMapConst.MAP_OBJ_MAIN_TYPE.TREASURE:

            //        break;
            //}



            //EditorGUILayout.BeginHorizontal();
            //EditorGUILayout.PrefixLabel("扩展信息 : ");
            //ljGridObject.ExtendMsg = EditorGUILayout.DelayedTextField(ljGridObject.ExtendMsg);
            //EditorGUILayout.EndHorizontal();

            //EditorGUILayout.BeginHorizontal();
            //EditorGUILayout.PrefixLabel("名字 : ");
            //ljGridObject.Name = EditorGUILayout.DelayedTextField(ljGridObject.Name);
            //EditorGUILayout.EndHorizontal();

            //EditorGUILayout.BeginHorizontal();
            //EditorGUILayout.PrefixLabel("备注 : ");
            //ljGridObject.Info = EditorGUILayout.DelayedTextField(ljGridObject.Info);
            //EditorGUILayout.EndHorizontal();
            if (isChanged)
            {
                SaveLJMapObjLayerData(mapObjLayerData);
            }
        }
Example #7
0
 public bool TryGetPositionProperty(SerVector2Int position, out LJMapObject positionValue)
 {
     return(m_PositionProperties.TryGetValue(position, out positionValue));
 }