public override string ToString() { foreach (ZoneStep step in ZoneSteps) { var startStep = step as FloorNameIDZoneStep; if (startStep != null) { return(LocalText.FormatLocalText(startStep.Name, FloorCount.ToString()).ToLocal().Replace('\n', ' ')); } } return(String.Format("[{0}] {1}F", this.GetType().Name, FloorCount)); }
private string getFloorString(ZoneSegmentBase segment, int floorID) { foreach (ZoneStep step in segment.ZoneSteps) { var startStep = step as FloorNameIDZoneStep; if (startStep != null) { return(LocalText.FormatLocalText(startStep.Name, (floorID + 1).ToString()).ToLocal().Replace('\n', ' ')); } } return(String.Format("[{0}] {1}F", segment.GetType().Name, (floorID + 1).ToString())); }
public override void Apply(ZoneGenContext zoneContext, IGenContext context, StablePriorityQueue <Priority, IGenStep> queue) { queue.Enqueue(Priority, new MapNameIDStep <BaseMapGenContext>(zoneContext.CurrentID, LocalText.FormatLocalText(Name, (zoneContext.CurrentID + 1).ToString()))); }
public static void PrintEncounterGuide(bool csv) { Dictionary <int, HashSet <(string, ZoneLoc)> > foundSpecies = DevHelper.GetAllAppearingMonsters(true); foreach ((MonsterID mon, string name)startchar in DataManager.Instance.StartChars) { DevHelper.AddEvoFamily(foundSpecies, startchar.mon.Species, "STARTER", ZoneLoc.Invalid); } List <string[]> stats = new List <string[]>(); stats.Add(new string[4] { "###", "Name", "Join %", "Found In" }); for (int ii = 1; ii < DataManager.Instance.DataIndices[DataManager.DataType.Monster].Count; ii++) { MonsterData data = DataManager.Instance.GetMonster(ii); if (DataManager.Instance.DataIndices[DataManager.DataType.Monster].Entries[ii].Released) { string encounterStr = "UNKNOWN"; if (foundSpecies.ContainsKey(ii)) { bool evolve = false; bool starter = false; // = new Dictionary<int, HashSet<int>>(); // = new Dictionary<int, Dictionary<int, HashSet<int>>>(); Dictionary <string, (Dictionary <int, HashSet <int> > specialDict, Dictionary <int, Dictionary <int, HashSet <int> > > floorDict)> foundDict = new Dictionary <string, (Dictionary <int, HashSet <int> > specialDict, Dictionary <int, Dictionary <int, HashSet <int> > > floorDict)>(); foreach ((string tag, ZoneLoc encounter) in foundSpecies[ii]) { if (!foundDict.ContainsKey(tag)) { foundDict[tag] = (new Dictionary <int, HashSet <int> >(), new Dictionary <int, Dictionary <int, HashSet <int> > >()); } Dictionary <int, HashSet <int> > specialDict = foundDict[tag].specialDict; Dictionary <int, Dictionary <int, HashSet <int> > > floorDict = foundDict[tag].floorDict; if (tag == "STARTER") { starter = true; } else if (tag == "EVOLVE") { evolve = true; } else if (encounter.StructID.ID == -1) { if (!specialDict.ContainsKey(encounter.ID)) { specialDict[encounter.ID] = new HashSet <int>(); } specialDict[encounter.ID].Add(encounter.StructID.Segment); } else { if (!floorDict.ContainsKey(encounter.ID)) { floorDict[encounter.ID] = new Dictionary <int, HashSet <int> >(); } if (!floorDict[encounter.ID].ContainsKey(encounter.StructID.Segment)) { floorDict[encounter.ID][encounter.StructID.Segment] = new HashSet <int>(); } floorDict[encounter.ID][encounter.StructID.Segment].Add(encounter.StructID.ID); } } List <string> encounterMsg = new List <string>(); foreach (string tag in foundDict.Keys) { Dictionary <int, HashSet <int> > specialDict = foundDict[tag].specialDict; Dictionary <int, Dictionary <int, HashSet <int> > > floorDict = foundDict[tag].floorDict; for (int zz = 0; zz < DataManager.Instance.DataIndices[DataManager.DataType.Zone].Count; zz++) { ZoneData mainZone = DataManager.Instance.GetZone(zz); for (int yy = 0; yy < mainZone.Segments.Count; yy++) { if (specialDict.ContainsKey(zz) && specialDict[zz].Contains(yy)) { string locString = String.Format("{0} {1}S", mainZone.Name.ToLocal(), yy + 1); foreach (var step in mainZone.Segments[yy].ZoneSteps) { var startStep = step as FloorNameIDZoneStep; if (startStep != null) { locString = LocalText.FormatLocalText(startStep.Name, "?").ToLocal().Replace('\n', ' '); break; } } if (tag != "") { locString = String.Format("[{0}] {1}", tag, locString); } encounterMsg.Add(locString); } if (floorDict.ContainsKey(zz) && floorDict[zz].ContainsKey(yy)) { List <string> ranges = combineFloorRanges(floorDict[zz][yy]); string rangeString = String.Join(",", ranges.ToArray()); string locString = String.Format("{0} {1}S {2}F", mainZone.Name.ToLocal(), yy + 1, rangeString); foreach (var step in mainZone.Segments[yy].ZoneSteps) { var startStep = step as FloorNameIDZoneStep; if (startStep != null) { locString = LocalText.FormatLocalText(startStep.Name, rangeString).ToLocal().Replace('\n', ' '); break; } } if (tag != "") { locString = String.Format("[{0}] {1}", tag, locString); } encounterMsg.Add(locString); } } } } if (evolve && encounterMsg.Count == 0) { encounterMsg.Add("Evolve"); } else if (starter && encounterMsg.Count == 0) { encounterMsg.Add("Starter"); } if (encounterMsg.Count > 0) { encounterStr = String.Join(", ", encounterMsg.ToArray()); } } stats.Add(new string[4] { ii.ToString("D3"), data.Name.ToLocal(), data.JoinRate.ToString() + "%", encounterStr }); } else { stats.Add(new string[4] { ii.ToString("D3"), data.Name.ToLocal(), "--%", "NO DATA" }); } } if (csv) { writeCSVGuide("Encounters", stats); } else { writeHTMLGuide("Encounters", stats); } }