Beispiel #1
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);
            }
        }
Beispiel #2
0
        //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");
            }
        }
Beispiel #3
0
        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);
            }
        }
Beispiel #4
0
        /// <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);
        }
Beispiel #5
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);
        }