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); } }
//private Dictionary<Point2D, TileOverride> xyOverrides; #endregion /// <summary> /// Build a large map. There are essentially two choices - Overworld and Underworld /// </summary> /// <param name="u5Directory"></param> /// <param name="mapChoice"></param> public LargeMap(string u5Directory, Maps mapChoice, TileOverrides tileOverrides) : base(u5Directory, tileOverrides, SmallMapReferences.SingleMapReference.GetLargeMapSingleInstance(mapChoice)) { this._mapChoice = mapChoice; switch (mapChoice) { case Maps.Overworld: TheMap = BuildGenericMap(Path.Combine(u5Directory, FileConstants.BRIT_DAT), Path.Combine(u5Directory, FileConstants.DATA_OVL), false); //xyOverrides = tileOverrides.GetTileXYOverridesBySingleMap(mapRef.GetSingleMapByLocation(SmallMapReferences.SingleMapReference._location.Britannia_Underworld, 0)); break; case Maps.Underworld: TheMap = BuildGenericMap(Path.Combine(u5Directory, FileConstants.UNDER_DAT), "", true); //xyOverrides = tileOverrides.GetTileXYOverridesBySingleMap(mapRef.GetSingleMapByLocation(SmallMapReferences.SingleMapReference._location.Britannia_Underworld, -1)); break; case Maps.Small: throw new Ultima5ReduxException("tried to create a largemap with the .Small map enum"); } }
public SmallMaps(SmallMapReferences smallMapRef, string u5Directory, TileReferences spriteTileReferences, TileOverrides tileOverrides) { this._smallMapRef = smallMapRef; this._spriteTileReferences = spriteTileReferences; foreach (SmallMapReferences.SingleMapReference mapRef in smallMapRef.MapReferenceList) { // now I can go through each and every reference SmallMap smallMap = new SmallMap(u5Directory, mapRef, spriteTileReferences, tileOverrides); _smallMaps.Add(smallMap); // we make a map that allows us to map the _location and Floor number to the small map with // details such as the grid if (!_mapLocationDictionary.ContainsKey(mapRef.MapLocation)) { _mapLocationDictionary.Add(mapRef.MapLocation, new Dictionary <int, SmallMap>()); } _mapLocationDictionary[mapRef.MapLocation].Add(mapRef.Floor, smallMap); } }
/// <summary> /// Create the individual Combat Map object /// </summary> /// <param name="u5Directory">Directory of data files</param> /// <param name="mapRef">specific combat map reference</param> public CombatMap(string u5Directory, CombatMapReference.SingleCombatMapReference mapRef, TileOverrides tileOverrides) : base(u5Directory, tileOverrides, null) { string dataFilenameAndPath = Path.Combine(u5Directory, mapRef.MapFilename); _mapRef = mapRef; // TOOD: reads in the data from the file - should read file into memory once and leave it there so quicker reference List <byte> mapList = Utils.GetFileAsByteList(dataFilenameAndPath, mapRef.FileOffset, CombatMapReference.SingleCombatMapReference.MAP_BYTE_COUNT); TheMap = ReadCombatBytesIntoByteArray(mapList); // initialize the legacy structures that describe the map details InitializeCombatMapStructures(dataFilenameAndPath, mapRef.FileOffset); }
/// <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); }