예제 #1
0
        public static uint GetTerrainMapId(PhaseShift phaseShift, Map map, float x, float y)
        {
            if (phaseShift.VisibleMapIds.Empty())
            {
                return(map.GetId());
            }

            if (phaseShift.VisibleMapIds.Count == 1)
            {
                return(phaseShift.VisibleMapIds.First().Key);
            }

            GridCoord gridCoord = GridDefines.ComputeGridCoord(x, y);
            uint      gx        = ((MapConst.MaxGrids - 1) - gridCoord.X_coord);
            uint      gy        = ((MapConst.MaxGrids - 1) - gridCoord.Y_coord);

            foreach (var visibleMap in phaseShift.VisibleMapIds)
            {
                if (map.HasChildMapGridFile(visibleMap.Key, gx, gy))
                {
                    return(visibleMap.Key);
                }
            }

            return(map.GetId());
        }
예제 #2
0
        public bool ExistMapAndVMap(uint mapid, float x, float y)
        {
            GridCoord p = GridDefines.ComputeGridCoord(x, y);

            uint gx = (MapConst.MaxGrids - 1) - p.X_coord;
            uint gy = (MapConst.MaxGrids - 1) - p.Y_coord;

            return(Map.ExistMap(mapid, gx, gy) && Map.ExistVMap(mapid, gx, gy));
        }
예제 #3
0
        public bool ExistMapAndVMap(uint mapid, float x, float y)
        {
            GridCoord p = GridDefines.ComputeGridCoord(x, y);

            uint gx = 63 - p.x_coord;
            uint gy = 63 - p.y_coord;

            return(Map.ExistMap(mapid, gx, gy) && Map.ExistVMap(mapid, gx, gy));
        }
예제 #4
0
        public static uint GetTerrainMapId(PhaseShift phaseShift, Map map, float x, float y)
        {
            if (phaseShift.VisibleMapIds.Empty())
            {
                return(map.GetId());
            }

            if (phaseShift.VisibleMapIds.Count == 1)
            {
                return(phaseShift.VisibleMapIds.First().Key);
            }

            GridCoord gridCoord = GridDefines.ComputeGridCoord(x, y);
            uint      gx        = (uint)((MapConst.MaxGrids - 1) - gridCoord.x_coord);
            uint      gy        = (uint)((MapConst.MaxGrids - 1) - gridCoord.y_coord);

            uint gxbegin = Math.Max(gx - 1, 0);
            uint gxend   = Math.Min(gx + 1, MapConst.MaxGrids);
            uint gybegin = Math.Max(gy - 1, 0);
            uint gyend   = Math.Min(gy + 1, MapConst.MaxGrids);

            foreach (var itr in phaseShift.VisibleMapIds)
            {
                for (uint gxi = gxbegin; gxi < gxend; ++gxi)
                {
                    for (uint gyi = gybegin; gyi < gyend; ++gyi)
                    {
                        if (map.HasGridMap(itr.Key, gxi, gyi))
                        {
                            return(itr.Key);
                        }
                    }
                }
            }

            return(map.GetId());
        }