/// <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); }
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); } }
/// <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); }
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); }