Exemplo n.º 1
0
        //-------------------------------------------------------------------------------------------------------

        /**
         * @brief 查找地图间连接点
         * @param srcMapID 源地图
         * @param destMapID 目标地图
         * @return 地图中连接传送点位置
         */
        public bool FindMapLinkPoint(uint srcMapID, uint destMapID, out Vector3 pos)
        {
            pos = Vector3.zero;

            // 查找路径
            MapConnex connex = null;

            if (!m_dicMapConnex.TryGetValue(srcMapID, out connex))
            {
                return(false);
            }

            MapPath mp = null;

            if (!connex.connex.TryGetValue(destMapID, out mp))
            {
                return(false);
            }

            if (mp.links.Count < 2)
            {
                return(false);
            }

            // 根据路径上的点,查找传送点坐标
            List <MapDeliverPoint> lstPoint = null;

            if (!m_dicMapDeliver.TryGetValue(srcMapID, out lstPoint))
            {
                return(false);
            }

            for (int i = 0; i < lstPoint.Count; ++i)
            {
                if (lstPoint[i].destmapid == mp.links[1])
                {
                    pos.x = lstPoint[i].pos.x;
                    pos.y = 0;
                    pos.z = lstPoint[i].pos.y;
                    return(true);
                }
            }

            return(false);
        }
Exemplo n.º 2
0
        //-------------------------------------------------------------------------------------------------------

        /**
         * @brief 是否有缓存的路径
         * @param
         */
        MapPath IsCachePath(uint srcMapID, uint descMapID)
        {
            MapConnex mc = null;

            if (!m_dicMapConnex.TryGetValue(srcMapID, out mc))
            {
                return(null);
            }

            MapPath mp = null;

            if (!mc.connex.TryGetValue(descMapID, out mp))
            {
                return(null);
            }

            return(mp);
        }
Exemplo n.º 3
0
        //-------------------------------------------------------------------------------------------------------
        void AddMapPath(uint srcMapID, uint descMapID, float fDistance, List <uint> mapPaths)
        {
            MapConnex connex = null;

            if (!m_dicMapConnex.TryGetValue(srcMapID, out connex))
            // 添加已经找到的路径
            {
                connex = new MapConnex();
                m_dicMapConnex.Add(srcMapID, connex);
            }
            connex.mapid = srcMapID;
            if (!connex.connex.ContainsKey(descMapID))
            {
                MapPath mapPath = new MapPath();
                mapPath.fDistance = fDistance;
                mapPath.links     = mapPaths;
                connex.connex.Add(descMapID, mapPath);
            }
        }
Exemplo n.º 4
0
        /////////////////////////////////////////////////////////////////////////////////////////////////////////
        void BuildMapConnex()
        {
            // 创建地图传送点
            BuildMapDeliverPoint();

            uint[] mapids = m_dicMapDeliver.Keys.ToArray();
            for (int i = 0; i < mapids.Length; ++i)
            {
                MapConnex connex = new MapConnex();
                connex.mapid = mapids[i];

                for (int j = 0; j < mapids.Length; ++j)
                {
                    if (j == i)
                    {
                        continue;
                    }

                    List <uint> map = null;

                    float fDistance = 0.0f;
                    if (!FindMapConnex(mapids[i], mapids[j], ref fDistance, out map))
                    {
                        //Engine.Utility.Log.Error("找不到地图{0}到{1}通路", mapids[i], mapids[j]);
                        continue;
                    }

                    MapPath mp = new MapPath();
                    mp.fDistance = fDistance;
                    mp.links     = map;
                    connex.mapid = mapids[j];
                    connex.connex.Add(mapids[j], mp);
                }

                m_dicMapConnex.Add(mapids[i], connex);
            }
        }