Skip to content

Commit 3cb863d

Browse files
committed
[Database] Quest template fix
1 parent b6427a3 commit 3cb863d

File tree

5 files changed

+79
-5
lines changed

5 files changed

+79
-5
lines changed

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -264,17 +264,17 @@ public virtual async Task<List<IQuestTemplate>> GetQuestTemplatesAsync()
264264
return await GetQuestsQuery(model).ToListAsync<IQuestTemplate>();
265265
}
266266

267-
public IGameObjectTemplate? GetGameObjectTemplate(uint entry)
267+
public virtual IQuestTemplate? GetQuestTemplate(uint entry)
268268
{
269269
using var model = Database();
270-
return model.GameObjectTemplate.FirstOrDefault(g => g.Entry == entry);
270+
MySqlQuestTemplateAddon? addon = model.QuestTemplateAddon.FirstOrDefault(addon => addon.Entry == entry);
271+
return model.QuestTemplate.FirstOrDefault(q => q.Entry == entry)?.SetAddon(addon);
271272
}
272273

273-
public IQuestTemplate? GetQuestTemplate(uint entry)
274+
public IGameObjectTemplate? GetGameObjectTemplate(uint entry)
274275
{
275276
using var model = Database();
276-
MySqlQuestTemplateAddon? addon = model.QuestTemplateAddon.FirstOrDefault(addon => addon.Entry == entry);
277-
return model.QuestTemplate.FirstOrDefault(q => q.Entry == entry)?.SetAddon(addon);
277+
return model.GameObjectTemplate.FirstOrDefault(g => g.Entry == entry);
278278
}
279279

280280
public async Task InstallScriptFor(int entryOrGuid, SmartScriptType type, IList<ISmartScriptLine> script)

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

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,4 +173,34 @@ public override async Task<IList<IGameObject>> GetGameObjectsByMapAsync(uint map
173173
await using var model = Database();
174174
return await model.GameObject.Where(c => c.Map == map).ToListAsync<IGameObject>();
175175
}
176+
177+
protected virtual IQueryable<MySqlCataQuestTemplate> GetQuestsQuery(TrinityCataDatabase model)
178+
{
179+
return (from t in model.CataQuestTemplate
180+
join addon in model.CataQuestTemplateAddon on t.Entry equals addon.Entry into adn
181+
from subaddon in adn.DefaultIfEmpty()
182+
orderby t.Entry
183+
select t.SetAddon(subaddon));
184+
}
185+
186+
public override IEnumerable<IQuestTemplate> GetQuestTemplates()
187+
{
188+
using var model = Database();
189+
190+
return GetQuestsQuery(model).ToList<IQuestTemplate>();
191+
}
192+
193+
public override async Task<List<IQuestTemplate>> GetQuestTemplatesAsync()
194+
{
195+
await using var model = Database();
196+
return await GetQuestsQuery(model).ToListAsync<IQuestTemplate>();
197+
}
198+
199+
public override IQuestTemplate? GetQuestTemplate(uint entry)
200+
{
201+
using var model = Database();
202+
MySqlCataQuestTemplateAddon? addon = model.CataQuestTemplateAddon.FirstOrDefault(addon => addon.Entry == entry);
203+
return model.CataQuestTemplate.FirstOrDefault(q => q.Entry == entry)?.SetAddon(addon);
204+
}
205+
176206
}

WoWDatabaseEditor.Common/WDE.TrinityMySqlDatabase/Models/Databases/TrinityCataDatabase.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,6 @@ public class TrinityCataDatabase : BaseTrinityDatabase
1212
public ITable<TrinityString> Strings => GetTable<TrinityString>();
1313
public ITable<TrinityMySqlSpellDbc> SpellDbc => GetTable<TrinityMySqlSpellDbc>();
1414
public ITable<MySqlGameObjectCata> GameObject => GetTable<MySqlGameObjectCata>();
15+
public ITable<MySqlCataQuestTemplate> CataQuestTemplate => GetTable<MySqlCataQuestTemplate>();
16+
public ITable<MySqlCataQuestTemplateAddon> CataQuestTemplateAddon => GetTable<MySqlCataQuestTemplateAddon>();
1517
}

WoWDatabaseEditor.Common/WDE.TrinityMySqlDatabase/Models/MySqlQuestTemplate.cs

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,40 @@ public MySqlQuestTemplate SetAddon(MySqlQuestTemplateAddon? addon)
3939
}
4040
}
4141

42+
[Table(Name = "quest_template")]
43+
public class MySqlCataQuestTemplate : IQuestTemplate
44+
{
45+
private MySqlCataQuestTemplateAddon? addon;
46+
47+
[PrimaryKey]
48+
[Column(Name = "ID")]
49+
public uint Entry { get; set; }
50+
51+
[Column(Name = "LogTitle")]
52+
public string Name { get; set; } = "";
53+
54+
public CharacterClasses AllowableClasses => addon == null ? CharacterClasses.None : (CharacterClasses)addon.AllowableClasses;
55+
56+
public CharacterRaces AllowableRaces => addon?.AllowableRaces ?? CharacterRaces.All;
57+
58+
public int PrevQuestId => addon == null ? 0 : addon.PrevQuestId;
59+
60+
public int NextQuestId => addon == null ? 0 : addon.NextQuestId;
61+
62+
public int ExclusiveGroup => addon == null ? 0 : addon.ExclusiveGroup;
63+
64+
public int BreadcrumbForQuestId => addon?.BreadcrumbForQuest ?? 0;
65+
66+
[Column(Name = "RewardNextQuest")]
67+
public uint NextQuestInChain { get; set; }
68+
69+
public MySqlCataQuestTemplate SetAddon(MySqlCataQuestTemplateAddon? addon)
70+
{
71+
this.addon = addon;
72+
return this;
73+
}
74+
}
75+
4276
[Table(Name = "quest_template")]
4377
public class MySqlMasterQuestTemplate : IQuestTemplate
4478
{

WoWDatabaseEditor.Common/WDE.TrinityMySqlDatabase/Models/MySqlQuestTemplateAddon.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using LinqToDB.Mapping;
2+
using WDE.Common.Database;
23

34
namespace WDE.TrinityMySqlDatabase.Models
45
{
@@ -25,6 +26,13 @@ public class MySqlQuestTemplateAddon
2526
public uint AllowableClasses { get; set; }
2627
}
2728

29+
[Table(Name = "quest_template_addon")]
30+
public class MySqlCataQuestTemplateAddon : MySqlQuestTemplateAddon
31+
{
32+
[Column(Name="AllowableRaces")]
33+
public CharacterRaces AllowableRaces { get; set; }
34+
}
35+
2836
[Table(Name = "quest_template_addon")]
2937
public class MySqlQuestTemplateAddonWithScriptName : MySqlQuestTemplateAddon
3038
{

0 commit comments

Comments
 (0)