mirror of
https://github.com/kwsch/pkNX.git
synced 2026-09-11 20:15:41 -05:00
Made capture collision editable
This commit is contained in:
@@ -16,6 +16,7 @@ public class PokeEditor8a : IDataEditor
|
||||
public TableCache<PokeInfoList8a, PokeInfo8a> PokeResourceList { get; init; } = null!;
|
||||
public TableCache<PokeResourceTable8a, PokeModelConfig8a> PokeResourceTable { get; init; } = null!;
|
||||
public TableCache<EncounterMultiplierArchive8a, EncounterMultiplier8a> EncounterRateTable { get; init; } = null!;
|
||||
public TableCache<PokeCaptureCollisionArchive8a, PokeCaptureCollision8a> CaptureCollisionTable { get; init; } = null!;
|
||||
|
||||
public void CancelEdits() { }
|
||||
|
||||
@@ -34,5 +35,6 @@ public void Save()
|
||||
PokeResourceList.Save();
|
||||
PokeResourceTable.Save();
|
||||
EncounterRateTable.Save();
|
||||
CaptureCollisionTable.Save();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using FlatSharp.Attributes;
|
||||
|
||||
// ReSharper disable UnusedAutoPropertyAccessor.Global
|
||||
@@ -17,6 +19,54 @@ public class PokeCaptureCollisionArchive8a : IFlatBufferArchive<PokeCaptureColli
|
||||
public byte[] Write() => FlatBufferConverter.SerializeFrom(this);
|
||||
|
||||
[FlatBufferItem(00)] public PokeCaptureCollision8a[] Table { get; set; } = Array.Empty<PokeCaptureCollision8a>();
|
||||
|
||||
public PokeCaptureCollision8a GetEntry(ushort species, ushort form)
|
||||
{
|
||||
return Table.FirstOrDefault(x => x.Species == species && x.Form == form) ??
|
||||
new PokeCaptureCollision8a { };
|
||||
}
|
||||
|
||||
public bool HasEntry(ushort species, ushort form)
|
||||
{
|
||||
return Table.Any(x => x.Species == species && x.Form == form);
|
||||
}
|
||||
|
||||
public PokeCaptureCollision8a AddEntry(ushort species, ushort form)
|
||||
{
|
||||
Debug.Assert(!HasEntry(species, form), "The encounter rate table already contains an entry for the same species and form!");
|
||||
|
||||
var entry = new PokeCaptureCollision8a
|
||||
{
|
||||
Species = species,
|
||||
Form = form,
|
||||
Colliders = new PokeCaptureCollider[]
|
||||
{
|
||||
new() {
|
||||
Shape = "Capsule",
|
||||
ShapeParameters = new float[]{ 0.5f, 0.2f, 0, 0, 0, 0, 0, 0 },
|
||||
SocketName = "waist",
|
||||
Type = "Normal",
|
||||
},
|
||||
new() {
|
||||
Shape = "Capsule",
|
||||
ShapeParameters = new float[]{ 0.5f, 0.2f, 0, 0, 0, 0, 0, 0 },
|
||||
Type = "Pysics",
|
||||
},
|
||||
new() {
|
||||
Shape = "Capsule",
|
||||
ShapeParameters = new float[]{ 0.5f, 0.2f, 0, 0, 0, 0, 0, 0 },
|
||||
SocketName = "origin",
|
||||
Type = "Barrier",
|
||||
},
|
||||
}
|
||||
};
|
||||
|
||||
Table = Table.Append(entry)
|
||||
.OrderBy(x => x.Species)
|
||||
.ThenBy(x => x.Form)
|
||||
.ToArray();
|
||||
return entry;
|
||||
}
|
||||
}
|
||||
|
||||
[FlatBufferTable, TypeConverter(typeof(ExpandableObjectConverter))]
|
||||
@@ -37,5 +87,5 @@ public class PokeCaptureCollider
|
||||
[FlatBufferItem(04)] public float OffsetY { get; set; }
|
||||
[FlatBufferItem(05)] public float OffsetZ { get; set; }
|
||||
[FlatBufferItem(06)] public string Type { get; set; } = string.Empty;
|
||||
[FlatBufferItem(07)] public string Field_07 { get; set; } = string.Empty;
|
||||
[FlatBufferItem(07)] public string Field_07 { get; set; } = string.Empty; // Heatran has this on collider[1] (PM0485), some have it set to SemiLegendFlick. Something like a script tag maybe?
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user