diff --git a/src/HexManiac.Core/Models/ModelTable.cs b/src/HexManiac.Core/Models/ModelTable.cs index 5bd76b4d..6489acc2 100644 --- a/src/HexManiac.Core/Models/ModelTable.cs +++ b/src/HexManiac.Core/Models/ModelTable.cs @@ -11,7 +11,6 @@ namespace HavenSoft.HexManiac.Core.Models { public ModelArrayElement this[int value] { get { - var table = model.GetNextRun(arrayAddress) as ITableRun; return new ModelArrayElement(model, arrayAddress, value); } } diff --git a/src/HexManiac.Core/ViewModels/DexReorderTab.cs b/src/HexManiac.Core/ViewModels/DexReorderTab.cs index 6268c7c2..e403e35e 100644 --- a/src/HexManiac.Core/ViewModels/DexReorderTab.cs +++ b/src/HexManiac.Core/ViewModels/DexReorderTab.cs @@ -15,8 +15,7 @@ namespace HavenSoft.HexManiac.Core.ViewModels { public class DexReorderTab : ViewModelCore, ITabContent { private readonly ChangeHistory history; private readonly IDataModel model; - private readonly ITableRun dexOrder; - private readonly ITableRun dexInfo; + private readonly string dexOrder, dexInfo; private readonly bool isNational; public ObservableCollection Elements { get; } = new ObservableCollection(); @@ -45,7 +44,7 @@ namespace HavenSoft.HexManiac.Core.ViewModels { public event EventHandler RequestMenuClose; public event PropertyChangedEventHandler PropertyChanged; - public DexReorderTab(ChangeHistory history, IDataModel model, ITableRun dexOrder, ITableRun dexInfo, bool isNational) { + public DexReorderTab(ChangeHistory history, IDataModel model, string dexOrder, string dexInfo, bool isNational) { this.history = history; this.model = model; this.dexOrder = dexOrder; @@ -64,6 +63,9 @@ namespace HavenSoft.HexManiac.Core.ViewModels { history.ChangeCompleted(); Elements.Clear(); + var dexOrder = (ITableRun)model.GetNextRun(model.GetAddressFromAnchor(new NoDataChangeDeltaModel(), -1, this.dexOrder)); + var dexInfo = (ITableRun)model.GetNextRun(model.GetAddressFromAnchor(new NoDataChangeDeltaModel(), -1, this.dexInfo)); + var elementCount = dexOrder.ElementCount; var dexOrderTable = new ModelTable(model, dexOrder.Start); var indexName = dexOrder.ElementContent[0].Name; @@ -100,6 +102,9 @@ namespace HavenSoft.HexManiac.Core.ViewModels { // Elements is in the new desired pokedex order // update dexOrder / dexInfo to match + var dexOrder = (ITableRun)model.GetNextRun(model.GetAddressFromAnchor(new NoDataChangeDeltaModel(), -1, this.dexOrder)); + var dexInfo = (ITableRun)model.GetNextRun(model.GetAddressFromAnchor(new NoDataChangeDeltaModel(), -1, this.dexInfo)); + // maps from canonical order to previous desired dex order var oldOrder = new List(); for (int i = dexOrder.Start; i < dexOrder.Start + dexOrder.Length; i += dexOrder.ElementLength) { diff --git a/src/HexManiac.Core/ViewModels/QuickEditItems/ReorderDex.cs b/src/HexManiac.Core/ViewModels/QuickEditItems/ReorderDex.cs index a8be4da1..4985361e 100644 --- a/src/HexManiac.Core/ViewModels/QuickEditItems/ReorderDex.cs +++ b/src/HexManiac.Core/ViewModels/QuickEditItems/ReorderDex.cs @@ -21,7 +21,9 @@ namespace HavenSoft.HexManiac.Core.ViewModels.QuickEditItems { var model = viewPort.Model; var dexOrder = GetTable(model, dexTableName); var dexInfo = GetTable(model, HardcodeTablesModel.DexInfoTableName); - return dexOrder != null && dexInfo != null; + var frontSprites = GetTable(model, SortablePokemon.FrontSpritesTable); + var pokepalettes = GetTable(model, SortablePokemon.PokePalettesTable); + return dexOrder != null && dexInfo != null && frontSprites != null && pokepalettes != null; } public ErrorInfo Run(IViewPort viewPortInterface) { diff --git a/src/HexManiac.Core/ViewModels/ViewPort.cs b/src/HexManiac.Core/ViewModels/ViewPort.cs index 5fb9495f..7dd92b04 100644 --- a/src/HexManiac.Core/ViewModels/ViewPort.cs +++ b/src/HexManiac.Core/ViewModels/ViewPort.cs @@ -1374,10 +1374,7 @@ namespace HavenSoft.HexManiac.Core.ViewModels { } public void OpenDexReorderTab(string dexTableName) { - var dexOrder = ReorderDex.GetTable(Model, dexTableName); - var dexInfo = ReorderDex.GetTable(Model, HardcodeTablesModel.DexInfoTableName); - - var newTab = new DexReorderTab(history, Model, dexOrder, dexInfo, dexTableName == HardcodeTablesModel.NationalDexTableName); + var newTab = new DexReorderTab(history, Model, dexTableName, HardcodeTablesModel.DexInfoTableName, dexTableName == HardcodeTablesModel.NationalDexTableName); RequestTabChange(this, newTab); }