Attempt to fix startup crash

The crash happened because the ModelTable was looking for the frontsprites / pokepalettes, which it couldn't find.
This commit is contained in:
Benjamin Popp 2020-05-05 21:22:20 -05:00
parent dd0e2f89aa
commit 5545e2eb70
4 changed files with 12 additions and 9 deletions

View File

@ -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);
}
}

View File

@ -15,8 +15,7 @@ namespace HavenSoft.HexManiac.Core.ViewModels {
public class DexReorderTab : ViewModelCore, ITabContent {
private readonly ChangeHistory<ModelDelta> history;
private readonly IDataModel model;
private readonly ITableRun dexOrder;
private readonly ITableRun dexInfo;
private readonly string dexOrder, dexInfo;
private readonly bool isNational;
public ObservableCollection<SortablePokemon> Elements { get; } = new ObservableCollection<SortablePokemon>();
@ -45,7 +44,7 @@ namespace HavenSoft.HexManiac.Core.ViewModels {
public event EventHandler RequestMenuClose;
public event PropertyChangedEventHandler PropertyChanged;
public DexReorderTab(ChangeHistory<ModelDelta> history, IDataModel model, ITableRun dexOrder, ITableRun dexInfo, bool isNational) {
public DexReorderTab(ChangeHistory<ModelDelta> 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<int>();
for (int i = dexOrder.Start; i < dexOrder.Start + dexOrder.Length; i += dexOrder.ElementLength) {

View File

@ -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) {

View File

@ -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);
}