Beispiel #1
0
 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()));
 }
Beispiel #3
0
 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())));
 }
Beispiel #4
0
        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);
            }
        }