예제 #1
0
        /// <summary>
        /// Creates a small map object using a pre-defined map reference
        /// </summary>
        /// <param name="u5Directory"></param>
        /// <param name="mapRef"></param>
        /// <param name="spriteTileReferences"></param>
        /// <param name="tileOverrides"></param>
        public SmallMap(string u5Directory, SmallMapReferences.SingleMapReference mapRef, TileReferences spriteTileReferences, TileOverrides tileOverrides) : base(u5Directory, tileOverrides, mapRef)
        {
            _mapRef = mapRef;

            // load the map into memory
            TheMap = LoadSmallMapFile(Path.Combine(u5Directory, mapRef.MapFilename), mapRef.FileOffset);


            InitializeAStarMap(spriteTileReferences);
        }
예제 #2
0
        public Map(string u5Directory, TileOverrides tileOverrides, SmallMapReferences.SingleMapReference mapRef)
        {
            this.U5Directory          = u5Directory;
            this.TileOverrides        = tileOverrides;
            CurrentSingleMapReference = mapRef;

            // for now combat maps don't have overrides
            if (mapRef != null)
            {
                XYOverrides = tileOverrides.GetTileXYOverridesBySingleMap(mapRef);
            }
        }
예제 #3
0
        /// <summary>
        /// Gets all tile overrides by a single map location (which includes a single floor)
        /// </summary>
        /// <param name="singleMapReference"></param>
        /// <returns>a list of TileOverride object, can be empty, but never null</returns>
        public List <TileOverride> GetTileOverridesBySingleMap(SmallMapReferences.SingleMapReference singleMapReference)
        {
            List <TileOverride> tileOverrideList = new List <TileOverride>();

            if (!_tileOverrides.ContainsKey((int)singleMapReference.MapLocation))
            {
                return(null);
            }

            foreach (TileOverride tileOverride in _tileOverrides[(int)singleMapReference.MapLocation])
            {
                if (singleMapReference.Floor == tileOverride.Position.Floor)
                {
                    tileOverrideList.Add(tileOverride);
                }
            }

            return(tileOverrideList);
        }
예제 #4
0
        public Dictionary <Point2D, TileOverride> GetTileXYOverridesBySingleMap(SmallMapReferences.SingleMapReference singleMapReference)
        {
            Dictionary <Point2D, TileOverride> tileOverrideList = new Dictionary <Point2D, TileOverride>();

            if (!_tileOverrides.ContainsKey((int)singleMapReference.MapLocation))
            {
                return(null);
            }

            foreach (TileOverride tileOverride in _tileOverrides[(int)singleMapReference.MapLocation])
            {
                if (singleMapReference.Floor == tileOverride.Position.Floor)
                {
                    Point2D xy = new Point2D(tileOverride.X, tileOverride.Y);
                    if (tileOverrideList.ContainsKey(xy))
                    {
                        throw new Ultima5ReduxException("You have a duplicate record in TileOverrides: " + singleMapReference.MapLocation + " " + xy);
                    }
                    tileOverrideList.Add(xy, tileOverride);
                }
            }

            return(tileOverrideList);
        }