Skip to content

Commit 6eeb298

Browse files
committed
[Loot] Reference loot fix
1 parent 44aba84 commit 6eeb298

File tree

4 files changed

+29
-15
lines changed

4 files changed

+29
-15
lines changed

Modules/WDE.LootEditor/Picker/ViewModels/LootPickerService.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public LootPickerService(IWindowManager windowManager,
4545
if (!await windowManager.ShowDialog(vm))
4646
return null;
4747

48-
return vm.FocusedGroup?.LootEntry ?? vm.Items.FirstOrDefault()?.LootEntry;
48+
return vm.AcceptedLootEntry;
4949
}
5050

5151
public async Task<IReadOnlyList<uint>> PickLoots(LootSourceType lootType)

Modules/WDE.LootEditor/Picker/ViewModels/LootPickerViewModel.cs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,9 @@ public partial class LootPickerViewModel : ObservableBase, IDialog
4545

4646
private List<LootGroupViewModel> allItems = new();
4747
public ObservableCollection<LootGroupViewModel> Items { get; } = new();
48-
48+
49+
public uint? AcceptedLootEntry { get; private set; }
50+
4951
public List<TableTableColumnHeader> Columns { get; } = new()
5052
{
5153
new ("Item or currency", 60),
@@ -70,6 +72,18 @@ public LootPickerViewModel(IDatabaseProvider databaseProvider,
7072
this.lootType = type;
7173
Accept = new DelegateCommand(() =>
7274
{
75+
if (FocusedGroup != null)
76+
{
77+
AcceptedLootEntry = FocusedGroup.LootEntry;
78+
}
79+
else if (uint.TryParse(SearchText, out var lootEntry))
80+
{
81+
AcceptedLootEntry = lootEntry;
82+
}
83+
else
84+
{
85+
AcceptedLootEntry = Items.FirstOrDefault()?.LootEntry;
86+
}
7387
CloseOk?.Invoke();
7488
});
7589
Cancel = new DelegateCommand(() =>

WDE.DatabaseEditors/Loaders/DatabaseTableDataProvider.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -466,7 +466,7 @@ IEnumerator IEnumerable.GetEnumerator()
466466

467467
public Type ColumnType(int index) => typeof(int);
468468

469-
public object? Value(int row, int column) => Value<int>(row, column);
469+
public object? Value(int row, int column) => Value<long>(row, column);
470470

471471
public T? Value<T>(int row, int column)
472472
{

WoWDatabaseEditor.Common/WDE.TrinityMySqlDatabase/Database/TrinityMasterMySqlDatabaseProvider.cs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -621,18 +621,18 @@ public override async Task<IReadOnlyList<ILootEntry>> GetReferenceLootCrossRefer
621621
await using var database = Database();
622622
var loot = new[]
623623
{
624-
await database.CreatureMasterLootTemplate.Where(x => x.Reference == lootId).ToListAsync<ILootEntry>(),
625-
await database.GameObjectMasterLootTemplate.Where(x => x.Reference == lootId).ToListAsync<ILootEntry>(),
626-
await database.ItemMasterLootTemplate.Where(x => x.Reference == lootId).ToListAsync<ILootEntry>(),
627-
await database.FishingMasterLootTemplate.Where(x => x.Reference == lootId).ToListAsync<ILootEntry>(),
628-
await database.PickpocketingMasterLootTemplate.Where(x => x.Reference == lootId).ToListAsync<ILootEntry>(),
629-
await database.SkinningMasterLootTemplate.Where(x => x.Reference == lootId).ToListAsync<ILootEntry>(),
630-
await database.DisenchantMasterLootTemplate.Where(x => x.Reference == lootId).ToListAsync<ILootEntry>(),
631-
await database.ProspectingMasterLootTemplate.Where(x => x.Reference == lootId).ToListAsync<ILootEntry>(),
632-
await database.MillingMasterLootTemplate.Where(x => x.Reference == lootId).ToListAsync<ILootEntry>(),
633-
await database.MailMasterLootTemplate.Where(x => x.Reference == lootId).ToListAsync<ILootEntry>(),
634-
await database.SpellMasterLootTemplate.Where(x => x.Reference == lootId).ToListAsync<ILootEntry>(),
635-
await database.ReferenceLootTemplate.Where(x => x.Reference == lootId).ToListAsync<ILootEntry>(),
624+
await database.CreatureMasterLootTemplate.Where(x => x.ItemOrCurrencyId == lootId && x.LootType == LootType.Reference).ToListAsync<ILootEntry>(),
625+
await database.GameObjectMasterLootTemplate.Where(x => x.ItemOrCurrencyId == lootId && x.LootType == LootType.Reference).ToListAsync<ILootEntry>(),
626+
await database.ItemMasterLootTemplate.Where(x => x.ItemOrCurrencyId == lootId && x.LootType == LootType.Reference).ToListAsync<ILootEntry>(),
627+
await database.FishingMasterLootTemplate.Where(x => x.ItemOrCurrencyId == lootId && x.LootType == LootType.Reference).ToListAsync<ILootEntry>(),
628+
await database.PickpocketingMasterLootTemplate.Where(x => x.ItemOrCurrencyId == lootId && x.LootType == LootType.Reference).ToListAsync<ILootEntry>(),
629+
await database.SkinningMasterLootTemplate.Where(x => x.ItemOrCurrencyId == lootId && x.LootType == LootType.Reference).ToListAsync<ILootEntry>(),
630+
await database.DisenchantMasterLootTemplate.Where(x => x.ItemOrCurrencyId == lootId && x.LootType == LootType.Reference).ToListAsync<ILootEntry>(),
631+
await database.ProspectingMasterLootTemplate.Where(x => x.ItemOrCurrencyId == lootId && x.LootType == LootType.Reference).ToListAsync<ILootEntry>(),
632+
await database.MillingMasterLootTemplate.Where(x => x.ItemOrCurrencyId == lootId && x.LootType == LootType.Reference).ToListAsync<ILootEntry>(),
633+
await database.MailMasterLootTemplate.Where(x => x.ItemOrCurrencyId == lootId && x.LootType == LootType.Reference).ToListAsync<ILootEntry>(),
634+
await database.SpellMasterLootTemplate.Where(x => x.ItemOrCurrencyId == lootId && x.LootType == LootType.Reference).ToListAsync<ILootEntry>(),
635+
await database.ReferenceLootTemplate.Where(x => x.ItemOrCurrencyId == lootId && x.LootType == LootType.Reference).ToListAsync<ILootEntry>(),
636636
};
637637
return loot.SelectMany(x => x).ToList();
638638
}

0 commit comments

Comments
 (0)