Leave empty item slots for gen7+

game depends on an existing value to check for if the item is truly
"New"
Closes #1670

Don't clear count=0 slots for gen7+
For sorting, put all the count=0 at the near top (any feedback on how
this actually works?)
This commit is contained in:
Kurt 2017-11-29 19:47:27 -08:00
parent 36894a588d
commit 4a898b0829
2 changed files with 17 additions and 21 deletions

View file

@ -246,30 +246,27 @@ namespace PKHeX.Core
public void SortByCount(bool reverse = false)
{
if (reverse)
Items = Items.Where(item => item.Index != 0).OrderBy(item => item.Count)
.Concat(Items.Where(item => item.Index == 0)).ToArray();
else
Items = Items.Where(item => item.Index != 0).OrderByDescending(item => item.Count)
.Concat(Items.Where(item => item.Index == 0)).ToArray();
var list = Items.Where(item => item.Index != 0).OrderBy(item => item.Count == 0);
list = reverse
? list.ThenByDescending(item => item.Count)
: list.ThenBy(item => item.Count);
Items = list.Concat(Items.Where(item => item.Index == 0)).ToArray();
}
public void SortByIndex(bool reverse = false)
{
if (reverse)
Items = Items.Where(item => item.Index != 0).OrderByDescending(item => item.Index)
.Concat(Items.Where(item => item.Index == 0)).ToArray();
else
Items = Items.Where(item => item.Index != 0).OrderBy(item => item.Index)
.Concat(Items.Where(item => item.Index == 0)).ToArray();
var list = Items.Where(item => item.Index != 0).OrderBy(item => item.Count == 0);
list = reverse
? list.ThenByDescending(item => item.Index)
: list.ThenBy(item => item.Index);
Items = list.Concat(Items.Where(item => item.Index == 0)).ToArray();
}
public void SortByName(string[] names, bool reverse = false)
{
if (reverse)
Items = Items.Where(item => item.Index != 0 && item.Index < names.Length).OrderByDescending(item => names[item.Index])
.Concat(Items.Where(item => item.Index == 0 || item.Index >= names.Length)).ToArray();
else
Items = Items.Where(item => item.Index != 0).OrderBy(item => names[item.Index])
.Concat(Items.Where(item => item.Index == 0 || item.Index >= names.Length)).ToArray();
var list = Items.Where(item => item.Index != 0 && item.Index < names.Length).OrderBy(item => item.Count == 0);
list = reverse
? list.ThenByDescending(item => names[item.Index])
: list.ThenBy(item => names[item.Index]);
Items = list.Concat(Items.Where(item => item.Index == 0 || item.Index >= names.Length)).ToArray();
}
public void Sanitize(bool HaX, int MaxItemID)

View file

@ -197,9 +197,8 @@ namespace PKHeX.WinForms
int c = 0;
string item = dgv.Rows[i].Cells[c++].Value.ToString();
int itemindex = Array.IndexOf(itemlist, item);
bool roto = pouch.Type == InventoryType.BattleItems && Legal.Pouch_Roto_USUM.Contains((ushort) itemindex);
if (itemindex <= 0 && !roto) // Compression of Empty Slots
if (itemindex <= 0 && !HasNew) // Compression of Empty Slots
continue;
int.TryParse(dgv.Rows[i].Cells[c++].Value?.ToString(), out int itemcnt);
@ -219,7 +218,7 @@ namespace PKHeX.WinForms
else
itemcnt = pouch.MaxCount; // Cap at pouch maximum
}
else if (itemcnt <= 0 && !roto)
else if (itemcnt <= 0 && !HasNew)
continue; // ignore item
pouch.Items[ctr] = new InventoryItem { Index = itemindex, Count = itemcnt };