mirror of
https://github.com/kwsch/pkNX.git
synced 2026-04-25 15:26:55 -05:00
Fix map viewer
Closes #336 -- BinarySearchByFlatBufferKey only works if the array is sorted... nice job gamefreak with O(n) search instead of O(logn). Closes #351 via previous commit for fbs defaults.
This commit is contained in:
parent
377f3ae6f5
commit
a3f53c3a63
|
|
@ -1,5 +1,4 @@
|
|||
using System.ComponentModel;
|
||||
using FlatSharp;
|
||||
|
||||
// ReSharper disable UnusedAutoPropertyAccessor.Global
|
||||
// ReSharper disable ClassNeverInstantiated.Global
|
||||
|
|
@ -20,7 +19,7 @@ public partial class PlacementZoneStaticObjectSpawn
|
|||
{
|
||||
public IEnumerable<string> GetSummary(IList<EncounterStatic> statics, IReadOnlyList<string> species)
|
||||
{
|
||||
var enc = statics.BinarySearchByFlatBufferKey(SpawnID)!;
|
||||
var enc = statics.First(z => z.EncounterID == SpawnID);
|
||||
var index = statics.IndexOf(enc);
|
||||
yield return $"{species[enc.Species]}{(enc.Form == 0 ? string.Empty : "-" + enc.Form)} Lv. {enc.Level}";
|
||||
yield return $"Index: {index}";
|
||||
|
|
|
|||
|
|
@ -440,6 +440,7 @@ public void DumpWilds()
|
|||
var allUnown = new List<PlacementUnnnEntry>();
|
||||
var allMkrg = new List<PlacementMkrgEntry>();
|
||||
var allSearchItem = new List<PlacementSearchItem>();
|
||||
var allEncounters = new List<EncounterTable>();
|
||||
foreach (var areaNameList in ResidentAreaSet.AreaNames)
|
||||
{
|
||||
var instance = AreaInstance.Create(resident, areaNameList, settings);
|
||||
|
|
@ -472,6 +473,7 @@ public void DumpWilds()
|
|||
allUnown.AddRange(instance.Unown);
|
||||
allMkrg.AddRange(instance.Mikaruge);
|
||||
allSearchItem.AddRange(instance.SearchItem);
|
||||
allEncounters.AddRange(instance.Encounters);
|
||||
|
||||
foreach (var subArea in instance.SubAreas)
|
||||
{
|
||||
|
|
@ -484,6 +486,7 @@ public void DumpWilds()
|
|||
allUnown.AddRange(subArea.Unown);
|
||||
allMkrg.AddRange(subArea.Mikaruge);
|
||||
allSearchItem.AddRange(subArea.SearchItem);
|
||||
allEncounters.AddRange(subArea.Encounters);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -493,6 +496,7 @@ public void DumpWilds()
|
|||
File.WriteAllLines(GetPath(wild, "Unown_All.txt"), allUnownLines);
|
||||
File.WriteAllLines(GetPath(wild, $"Unown_All_Bias_{bias}.txt"), allUnownLinesBias);
|
||||
|
||||
File.WriteAllText(GetPath(wild, "allEncounters.csv"), TableUtil.GetTable(allEncounters));
|
||||
File.WriteAllText(GetPath(wild, "allMultipliers.csv"), TableUtil.GetTable(multipliers.Table));
|
||||
File.WriteAllText(GetPath(wild, "PokeMisc.csv"), TableUtil.GetTable(misc.Table));
|
||||
File.WriteAllText(GetPath(wild, "allSlotTable.csv"), TableUtil.GetTable(allSlots));
|
||||
|
|
|
|||
|
|
@ -164,7 +164,7 @@ private static List<AreaDef> GetSpawnerInfo(int species, AreaInstance area)
|
|||
foreach (var s in area.Spawners.Concat(area.SubAreas.SelectMany(z => z.Spawners)))
|
||||
{
|
||||
var table = s.Field20Value.EncounterTableID;
|
||||
var slots = area.Encounters.BinarySearchByFlatBufferKey(table);
|
||||
var slots = area.Encounters.FirstOrDefault(z => z.TableID == table);
|
||||
if (slots == null)
|
||||
continue;
|
||||
|
||||
|
|
@ -177,7 +177,7 @@ private static List<AreaDef> GetSpawnerInfo(int species, AreaInstance area)
|
|||
foreach (var s in area.Wormholes.Concat(area.SubAreas.SelectMany(z => z.Wormholes)))
|
||||
{
|
||||
var table = s.Field20Value.EncounterTableID;
|
||||
var slots = area.Encounters.BinarySearchByFlatBufferKey(table);
|
||||
var slots = area.Encounters.FirstOrDefault(z => z.TableID == table);
|
||||
if (slots == null)
|
||||
continue;
|
||||
|
||||
|
|
@ -195,7 +195,7 @@ private static List<AreaDef> GetSpawnerInfo(int species, AreaInstance area)
|
|||
if (l.LandmarkItemSpawnTableID != table)
|
||||
continue;
|
||||
var st = l.EncounterTableID;
|
||||
var slots = area.Encounters.BinarySearchByFlatBufferKey(st);
|
||||
var slots = area.Encounters.FirstOrDefault(z => z.TableID == st);
|
||||
if (slots == null)
|
||||
continue;
|
||||
|
||||
|
|
@ -212,7 +212,7 @@ private static List<AreaDef> GetSpawnerInfo(int species, AreaInstance area)
|
|||
foreach (var u in area.Unown.Concat(area.SubAreas.SelectMany(z => z.Unown)))
|
||||
{
|
||||
var slots = Unown;
|
||||
result.Add(new("Unown", 1, 1, u.Parameters.Coordinates, SpawnerType.Unown, slots, u.Number * 2));
|
||||
result.Add(new("Unown", 1, 1, u.Parameters.Coordinates, SpawnerType.Unown, slots, u.Number * 2)); // arbitrary size
|
||||
}
|
||||
|
||||
return result;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user