示例#1
0
    /// <summary>
    /// 8方向检索所有相邻格子数据
    /// </summary>
    /// <param name="ljGridDict"></param>
    /// <param name="searchCellDict"></param>
    private static void SearchRangePositions(LJMapObjDict ljGridDict, Dictionary <SerVector2Int, int> searchCellDict)
    {
        while (MapUtil.CheckSearchCellDictHaveNoneSearch(searchCellDict))
        {
            List <KeyValuePair <SerVector2Int, int> > tempList = new
                                                                 List <KeyValuePair <SerVector2Int, int> >(); //仅用于搜索一遍没搜索过的格子的列表
            foreach (KeyValuePair <SerVector2Int, int> kvp in searchCellDict)                                 // 将所有未搜索过的格子加入待搜索列表
            {
                if (kvp.Value == LJMapConst.MAP_SEARCH_STATE.OK)
                {
                    continue;
                }
                tempList.Add(kvp);
            }

            for (int i = 0, imax = tempList.Count; i < imax; i++)
            {
                SerVector2Int serVector2Int = tempList[i].Key;
                for (int j = 0, jmax = MapUtil.GRID_POSITION_OFFSETS.Length; j < jmax; j++)
                {
                    SerVector2Int offsetSerVector2Int = new SerVector2Int(serVector2Int.X + MapUtil.GRID_POSITION_OFFSETS[j].x,
                                                                          serVector2Int.Y + MapUtil.GRID_POSITION_OFFSETS[j].y
                                                                          );


                    if (!ljGridDict.ContainsKey(offsetSerVector2Int))
                    { // 没有这个格子 不做处理
                        continue;
                    }

                    //有格子数据 不做处理
                    if (searchCellDict.ContainsKey(offsetSerVector2Int))
                    {
                        continue;
                    }
                    searchCellDict.Add(offsetSerVector2Int, LJMapConst.MAP_SEARCH_STATE.NONE);
                }

                searchCellDict[serVector2Int] = LJMapConst.MAP_SEARCH_STATE.OK;
            }
        }
        //搜索完毕
    }
示例#2
0
    /// <summary>
    /// 给定一个坐标和格子数据表,搜索相邻格子
    /// </summary>
    /// <param name="ljGridDict"></param>
    /// <param name="serVector3Int"></param>
    /// <returns></returns>
    public static Dictionary <SerVector2Int, int> GetRangePositionsByInSidePosition(LJMapObjDict mapObjDict, SerVector2Int serVector2Int)
    {
        if (mapObjDict == null)
        {
            return(null);
        }
        LJMapObject tempGridObject = null;

        mapObjDict.TryGetValue(serVector2Int, out tempGridObject);
        if (tempGridObject == null)
        {
            return(null);
        }

        Dictionary <SerVector2Int, int> searchGroup = new Dictionary <SerVector2Int, int>();//搜索出来的结果

        searchGroup.Add(serVector2Int, LJMapConst.MAP_SEARCH_STATE.NONE);
        SearchRangePositions(mapObjDict, searchGroup);
        return(searchGroup);
    }
示例#3
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]);
            }
        }
示例#4
0
 public LJMapObjLayerData()
 {
     m_PositionProperties = new LJMapObjDict();
     //testDict = new LJTestDict();
 }