示例#1
0
        /// <summary>
        /// Initializes Location Model
        /// </summary>
        /// <param name="totalLocations">Total number of locations</param>
        public void InitializeLocationModel(int total)
        {
            List <DummyLocation> newLocations = CreateDummyLocations(total);

            foreach (var loc in newLocations)
            {
                unvisitedLocation.Add(loc.GetLocationID(), loc);
            }

            DummyLocation loc0 = new DummyLocation(0);

            unvisitedLocation.Add(0, loc0);
            var wm = new WorldMap(unvisitedLocation.Values);

            worldMap    = wm.tmpBitmap;
            buttonAreas = wm.buttonAreas;
            unvisitedLocation.Remove(0);

            Location startLocation = new Location(0);

            startLocation.GenerateSubLocations(2);
            visitedLocation.Add(0, startLocation);
            currentLocation    = startLocation;
            currentSublocation = null;
        }
示例#2
0
        /// <summary>
        /// Replace a dummy location with an actual location
        /// </summary>
        /// <param name="dummy">Dummy location to replace</param>
        /// <param name="minSize">Minimum size of the location</param>
        /// <param name="maxSize">Max size of the location</param>
        /// <param name="maxItems">Max items for the location</param>
        /// <param name="maxAmount">Max amount of each item</param>
        /// <returns>A location with the values specified</returns>
        public Location ReplaceDummyLocation(DummyLocation dummy, int minSize, int maxSize, int maxItems, int maxAmount)
        {
            Location location = Location.ConvertToLocation(dummy);

            location.GenerateSubLocations(minSize, maxSize, maxItems, maxAmount);
            return(location);
        }
示例#3
0
        /// <summary>
        /// Constructor for loading a game from save data
        /// </summary>
        /// <param name="visitedLocs">Visisted locations string</param>
        /// <param name="unvisitedLocs">Unvisited locations string</param>
        /// <param name="currLoc">Current location string</param>
        /// <param name="currSLoc">Current sublocation string</param>
        public LocationModel(String visitedLocs, String unvisitedLocs, String currLoc, String currSLoc, String buttonAreas, Bitmap worldMap)
        {
            visitedLocation   = new SortedList <int, Location>();
            unvisitedLocation = new SortedList <int, DummyLocation>();
            this.buttonAreas  = new SortedList <int, System.Windows.Point>();
            this.worldMap     = worldMap;

            String[] visitedElem = visitedLocs.Split('#');
            for (int i = 1; i < visitedElem.Length; i++)
            {
                Location temp = new Location(visitedElem[i]);
                visitedLocation.Add(temp.GetLocationID(), temp);
            }

            String[] unvisitedElem = unvisitedLocs.Split('#');
            for (int j = 1; j < unvisitedElem.Length; j++)
            {
                DummyLocation temp = new DummyLocation(unvisitedElem[j]);
                unvisitedLocation.Add(temp.GetLocationID(), temp);
            }

            String[] areasElem = buttonAreas.Split('#');
            for (int k = 1; k < areasElem.Length; k++)
            {
                String[] kvPair = areasElem[k].Split(':');
                double   xCoord, yCoord;
                int      id;
                if (int.TryParse(kvPair[0], out id) && double.TryParse(kvPair[1], out xCoord) && double.TryParse(kvPair[2], out yCoord))
                {
                    var point = new System.Windows.Point(xCoord, yCoord);
                    this.buttonAreas.Add(id, point);
                }
            }

            int currID;

            if (int.TryParse(currLoc, out currID))
            {
                visitedLocation.TryGetValue(currID, out currentLocation);
            }

            int currSub;

            if (int.TryParse(currSLoc, out currSub))
            {
                if (currSub == 0)
                {
                    currentSublocation = null;
                }
                else
                {
                    currentSublocation = currentLocation.GetSublocationByID(currSub);
                }
            }
        }
示例#4
0
        /// <summary>
        /// Creates a number of dummy locations
        /// Always rounds these to the next multiple of 4.
        /// </summary>
        /// <param name="numberOfLocations">Number of locations to generate (rounded to the next multiple of 4)</param>
        public List <DummyLocation> CreateDummyLocations(int numberOfLocations)
        {
            List <DummyLocation> newLocations = new List <DummyLocation>();

            if (numberOfLocations % 4 != 0)
            {
                numberOfLocations = numberOfLocations + (4 - numberOfLocations % 4);
            }
            for (int i = 1; i < numberOfLocations + 1; i++)
            {
                DummyLocation temp = new DummyLocation(i);
                newLocations.Add(temp);
                //unvisitedLocation.Add(i,temp);
            }
            return(newLocations);
        }
示例#5
0
 /// <summary>
 /// Checks if string is a valid unvisited locations list
 /// </summary>
 /// <param name="toTest">String to check</param>
 /// <returns>If they are valid</returns>
 public static bool IsValidUnvisitedLocations(String toTest)
 {
     String[] visitedElem = toTest.Split('#');
     if (visitedElem[0] != UNVISITED_TAG)
     {
         return(false);
     }
     for (int i = 1; i < visitedElem.Length; i++)
     {
         if (!DummyLocation.IsValidDummyLocation(visitedElem[i]))
         {
             return(false);
         }
     }
     return(true);
 }
示例#6
0
        public LocationModel(String visitedLocs, String unvisitedLocs, String currLoc, String currSLoc)
        {
            visitedLocation   = new SortedList <int, Location>();
            unvisitedLocation = new SortedList <int, DummyLocation>();
            this.buttonAreas  = new SortedList <int, System.Windows.Point>();

            String[] visitedElem = visitedLocs.Split('#');
            for (int i = 1; i < visitedElem.Length; i++)
            {
                Location temp = new Location(visitedElem[i]);
                visitedLocation.Add(temp.GetLocationID(), temp);
            }

            String[] unvisitedElem = unvisitedLocs.Split('#');
            for (int j = 1; j < unvisitedElem.Length; j++)
            {
                DummyLocation temp = new DummyLocation(unvisitedElem[j]);
                unvisitedLocation.Add(temp.GetLocationID(), temp);
            }

            int currID;

            if (int.TryParse(currLoc, out currID))
            {
                visitedLocation.TryGetValue(currID, out currentLocation);
            }

            int currSub;

            if (int.TryParse(currSLoc, out currSub))
            {
                if (currSub == 0)
                {
                    currentSublocation = null;
                }
                else
                {
                    currentSublocation = currentLocation.GetSublocationByID(currSub);
                }
            }
        }
示例#7
0
 public static Location ConvertToLocation(DummyLocation dl)
 {
     return(new Location(dl.GetLocationID()));
 }