public IEnumerable <IConversationTemplate> GetConversationTemplates() { if (currentCoreVersion.Current.DatabaseFeatures.UnsupportedTables.Contains(typeof(IConversationTemplate))) { return(new List <IConversationTemplate>()); } using var model = new SkyFireDatabase(); return((from t in model.ConversationTemplate orderby t.Id select t).ToList <IConversationTemplate>()); }
public async Task <List <IConversationTemplate> > GetConversationTemplatesAsync() { if (currentCoreVersion.Current.DatabaseFeatures.UnsupportedTables.Contains(typeof(IConversationTemplate))) { return(new List <IConversationTemplate>()); } await using var model = new SkyFireDatabase(); return(await(from t in model.ConversationTemplate orderby t.Id select t).ToListAsync <IConversationTemplate>()); }
public IEnumerable <ICreatureClassLevelStat> GetCreatureClassLevelStats() { if (currentCoreVersion.Current.DatabaseFeatures.UnsupportedTables.Contains(typeof(ICreatureClassLevelStat))) { return(Enumerable.Empty <ICreatureClassLevelStat>()); } using var model = new SkyFireDatabase(); return((from t in model.CreatureClassLevelStats select t).ToList <ICreatureClassLevelStat>()); }
public async Task <List <ICreatureClassLevelStat> > GetCreatureClassLevelStatsAsync() { if (currentCoreVersion.Current.DatabaseFeatures.UnsupportedTables.Contains(typeof(ICreatureClassLevelStat))) { return(new List <ICreatureClassLevelStat>()); } await using var model = new SkyFireDatabase(); return(await(from t in model.CreatureClassLevelStats select t).ToListAsync <ICreatureClassLevelStat>()); }
public async Task <List <INpcText> > GetNpcTextsAsync() { if (currentCoreVersion.Current.DatabaseFeatures.UnsupportedTables.Contains(typeof(INpcText))) { return(new List <INpcText>()); } await using var model = new SkyFireDatabase(); return(await(from t in model.NpcTexts orderby t.Id select t).ToListAsync <INpcText>()); }
public IEnumerable <INpcText> GetNpcTexts() { if (currentCoreVersion.Current.DatabaseFeatures.UnsupportedTables.Contains(typeof(INpcText))) { return(new List <INpcText>()); } using var model = new SkyFireDatabase(); return((from t in model.NpcTexts orderby t.Id select t).ToList <INpcText>()); }
public async Task InstallConditions(IEnumerable <IConditionLine> conditionLines, IDatabaseProvider.ConditionKeyMask keyMask, IDatabaseProvider.ConditionKey?manualKey = null) { using var writeLock = await DatabaseLock.WriteLock(); await using var model = new SkyFireDatabase(); var conditions = conditionLines?.ToList() ?? new List <IConditionLine>(); List <(int SourceType, int?SourceGroup, int?SourceEntry, int?SourceId)> keys = conditions.Select(c => (c.SourceType, keyMask.HasFlag(IDatabaseProvider.ConditionKeyMask.SourceGroup) ? (int?)c.SourceGroup : null, keyMask.HasFlag(IDatabaseProvider.ConditionKeyMask.SourceEntry) ? (int?)c.SourceEntry : null, keyMask.HasFlag(IDatabaseProvider.ConditionKeyMask.SourceId) ? (int?)c.SourceId : null)) .Union(manualKey.HasValue ? new[]
public IEnumerable <IGossipMenu> GetGossipMenus() { using var model = new SkyFireDatabase(); List <MySqlGossipMenuLine> gossips; if (currentCoreVersion.Current.DatabaseFeatures.UnsupportedTables.Contains(typeof(INpcText))) { gossips = model.GossipMenus.ToList(); } else { gossips = (from gossip in model.GossipMenus join p in model.NpcTexts on gossip.TextId equals p.Id into lj from lp in lj.DefaultIfEmpty() select gossip.SetText(lp)).ToList(); } return(gossips.GroupBy(g => g.MenuId) .Select(t => new MySqlGossipMenu(t.Key, t.Where(t => t.Text != null).Select(t => t.Text !).ToList())) .ToList <IGossipMenu>()); }
public IEnumerable <IGameObjectTemplate> GetGameObjectTemplates() { using var model = new SkyFireDatabase(); return((from t in model.GameObjectTemplate orderby t.Entry select t).ToList <IGameObjectTemplate>()); }
public async Task InstallScriptFor(int entryOrGuid, SmartScriptType type, IEnumerable <ISmartScriptLine> script) { using var writeLock = await DatabaseLock.WriteLock(); await using var model = new SkyFireDatabase(); await model.BeginTransactionAsync(IsolationLevel.ReadCommitted); await model.SmartScript.Where(x => x.EntryOrGuid == entryOrGuid && x.ScriptSourceType == (int)type).DeleteAsync(); switch (type) { case SmartScriptType.Creature: { uint entry = 0; if (entryOrGuid < 0) { var template = await model.Creature.Where(p => p.Guid == (uint)-entryOrGuid).FirstOrDefaultAsync(); if (template == null) { throw new Exception( $"Trying to install creature script for guid {-entryOrGuid}, but this guid doesn't exist in creature table, so entry cannot be determined."); } entry = template.Entry; } else { entry = (uint)entryOrGuid; } await model.CreatureTemplate.Where(p => p.Entry == entry) .Set(p => p.AIName, currentCoreVersion.Current.SmartScriptFeatures.CreatureSmartAiName) .Set(p => p.ScriptName, "") .UpdateAsync(); break; } case SmartScriptType.GameObject: { uint entry = 0; if (entryOrGuid < 0) { var template = await model.GameObject.Where(p => p.Guid == (uint)-entryOrGuid).FirstOrDefaultAsync(); if (template == null) { throw new Exception( $"Trying to install gameobject script for guid {-entryOrGuid}, but this guid doesn't exist in gameobject table, so entry cannot be determined."); } entry = template.Entry; } else { entry = (uint)entryOrGuid; } await model.GameObjectTemplate.Where(p => p.Entry == entry) .Set(p => p.AIName, currentCoreVersion.Current.SmartScriptFeatures.GameObjectSmartAiName) .Set(p => p.ScriptName, "") .UpdateAsync(); break; } case SmartScriptType.AreaTrigger: await model.AreaTriggerScript.Where(p => p.Id == entryOrGuid).DeleteAsync(); await model.AreaTriggerScript.InsertAsync(() => new MySqlAreaTriggerScript() { Id = entryOrGuid, ScriptName = "SmartTrigger" }); break; case SmartScriptType.AreaTriggerEntity: await model.AreaTriggerTemplate.Where(p => p.Id == (uint)entryOrGuid && p.IsServerSide == false) .Set(p => p.ScriptName, "SmartAreaTriggerAI") .UpdateAsync(); break; case SmartScriptType.AreaTriggerEntityServerSide: await model.AreaTriggerTemplate.Where(p => p.Id == (uint)entryOrGuid && p.IsServerSide == true) .Set(p => p.ScriptName, "SmartAreaTriggerAI") .UpdateAsync(); break; } await model.SmartScript.BulkCopyAsync(script.Select(l => new MySqlSmartScriptLine(l))); await model.CommitTransactionAsync(); }
public async Task <List <IGameEvent> > GetGameEventsAsync() { await using var model = new SkyFireDatabase(); return(await(from t in model.GameEvents orderby t.Entry select t).ToListAsync <IGameEvent>()); }
private IQueryable <MySqlQuestTemplate> GetQuestsQuery(SkyFireDatabase model) { return(from t in model.QuestTemplate select t); }
public IEnumerable <ISmartScriptLine> GetScriptFor(int entryOrGuid, SmartScriptType type) { using var model = new SkyFireDatabase(); return(model.SmartScript.Where(line => line.EntryOrGuid == entryOrGuid && line.ScriptSourceType == (int)type).ToList()); }
public IEnumerable <IGameEvent> GetGameEvents() { using var model = new SkyFireDatabase(); return((from t in model.GameEvents orderby t.Entry select t).ToList <IGameEvent>()); }
public IEnumerable <ICreatureTemplate> GetCreatureTemplates() { using var model = new SkyFireDatabase(); return(model.CreatureTemplate.OrderBy(t => t.Entry).ToList <ICreatureTemplate>()); }
public async Task <List <ICreatureTemplate> > GetCreatureTemplatesAsync() { await using var model = new SkyFireDatabase(); return(await model.CreatureTemplate.OrderBy(t => t.Entry).ToListAsync <ICreatureTemplate>()); }
public ICreatureTemplate?GetCreatureTemplate(uint entry) { using var model = new SkyFireDatabase(); return(model.CreatureTemplate.FirstOrDefault(ct => ct.Entry == entry)); }
public IEnumerable <IQuestTemplate> GetQuestTemplates() { using var model = new SkyFireDatabase(); return(GetQuestsQuery(model).ToList <IQuestTemplate>()); }
public async Task <List <IQuestTemplate> > GetQuestTemplatesAsync() { await using var model = new SkyFireDatabase(); return(await GetQuestsQuery(model).ToListAsync <IQuestTemplate>()); }
public IQuestTemplate?GetQuestTemplate(uint entry) { using var model = new SkyFireDatabase(); return(model.QuestTemplate.FirstOrDefault(q => q.Entry == entry)); }
public IGameObjectTemplate?GetGameObjectTemplate(uint entry) { using var model = new SkyFireDatabase(); return(model.GameObjectTemplate.FirstOrDefault(g => g.Entry == entry)); }