/// <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; }
/// <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); }
/// <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); } } }
/// <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); }
/// <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); }
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); } } }
public static Location ConvertToLocation(DummyLocation dl) { return(new Location(dl.GetLocationID())); }