public void Load() { using var dbContext = new MapleDbContext(); var skills = dbContext.Skills.Where(x => x.CharacterId == Parent.Id).ToList(); skills.ForEach(x => Add(new Skill(x))); }
private void InitializeDatabase() { _log.Information( $"Initializing Database Type={ServerConfig.Instance.DatabaseConnectionType} Connection={ServerConfig.Instance.DatabaseConnection}"); using var context = new MapleDbContext(); context.Database.EnsureCreated(); }
public bool CharacterExists(string name) { using var dbContext = new MapleDbContext(); return(dbContext.Characters .Where(x => x.WorldId == World.Id) .Any(x => x.Name == name)); }
// [TestMethod] public void FakeServerManager_GameServer_Succeeds() { Assert.IsNotNull(_server.Worlds[0][0]); var a = new MapleDbContext(); var accounts = a.Accounts.ToList(); var account = a.Accounts.FirstOrDefault(x => x.IsMaster); var aaa = a.Accounts.FirstOrDefault(x => x.Username == "a"); }
public void Load() { using var context = new MapleDbContext(); var rocks = context.TeleportRocks .Where(x => x.CharacterId == Parent.Id) .Take(5) .Select(x => x.MapId) .ToList(); Maps.AddRange(rocks); }
private static async Task LoadFromJson() { if (!File.Exists(InitialDataFile)) { Logger.Warning($"Cannot find {Path.GetFullPath(InitialDataFile)}"); return; } using var s = File.OpenRead(InitialDataFile); using var sr = new StreamReader(s); using var reader = new JsonTextReader(sr); using var context = new MapleDbContext(); try { var sw = Stopwatch.StartNew(); var serializer = new JsonSerializer(); var data = serializer.Deserialize <Dictionary <int, List <LootReference> > >(reader); foreach (var item in data.Values.SelectMany(x => x)) { if (!CachedData.Mobs.Data.ContainsKey(item.MobId)) { Logger.Warning($"Skipping loot - Cannot find Mob with ID={item.MobId} in DataProvider"); continue; } if (!item.IsMeso && !CachedData.Items.Data.ContainsKey(item.ItemId)) { Logger.Warning($"Skipping loot - Cannot find Item with ID={item.ItemId} in DataProvider"); continue; } context.Loots.Add(new LootEntity { Chance = item.Chance, IsMeso = item.IsMeso, ItemId = item.ItemId, MaximumQuantity = item.MaximumQuantity, MinimumQuantity = item.MinimumQuantity, MobId = item.MobId, QuestId = item.QuestId }); } await context.SaveChangesAsync(); Logger.Information("Populated database in {0}ms.", sw.ElapsedMilliseconds); } catch (Exception e) { Logger.Error(e, "Error while loading changes from JSON"); } }
public void Delete() { using var dbContext = new MapleDbContext(); var item = dbContext.Memos.Find(Id); if (item != null) { dbContext.Remove(item); dbContext.SaveChanges(); } }
public void Save() { using var context = new MapleDbContext(); var existing = context.TeleportRocks.Where(x => x.CharacterId == Parent.Id).ToArray(); context.TeleportRocks.RemoveRange(existing); context.TeleportRocks.AddRange(Maps.Select(x => new TeleportRockEntity { CharacterId = Parent.Id, MapId = x })); context.SaveChanges(); }
public void SetOnline(bool isOnline) { using var context = new MapleDbContext(); var account = context.Accounts.FirstOrDefault(x => x.Id == Account.Id); if (account == null) { return; } account.IsOnline = isOnline; context.SaveChanges(); }
private static async Task LoadFromDatabase(MapleDbContext context) { Logger.Information("Loading Loot from database"); var entities = context .Loots .ToList() .GroupBy(x => x.MobId) .ToList(); entities .ForEach(x => { if (!CachedData.Mobs?.Data?.ContainsKey(x.Key) ?? true) { Logger.Warning($"Removing loot - Cannot find Mob with ID={x.Key} in DataProvider"); context.Loots.RemoveRange(x); return; } var loots = CachedData.Mobs.Data[x.Key].Loots; loots.Clear(); x .ToList() .ForEach(item => { if (!item.IsMeso && !CachedData.Items.Data.ContainsKey(item.ItemId)) { Logger.Warning( $"Removing loot - Cannot find Item with ID={item.ItemId} in DataProvider"); context.Loots.Remove(item); return; } loots.Add(new LootReference { Chance = item.Chance, IsMeso = item.IsMeso, ItemId = item.ItemId, MaximumQuantity = item.MaximumQuantity, MinimumQuantity = item.MinimumQuantity, MobId = item.MobId, QuestId = item.QuestId }); }); }); await context.SaveChangesAsync(); }
public static async Task Initialize() { using var context = new MapleDbContext(); if (!context.Loots.Any()) { Logger.Information("Cannot find any loot in the database, attempting to load from JSON"); await LoadFromJson(); } var sw = Stopwatch.StartNew(); await LoadFromDatabase(context); Logger.Information("Data loaded in {0}ms.", sw.ElapsedMilliseconds); }
public void Load() { using var dbContext = new MapleDbContext(); var itemsEntities = dbContext.Items .Where(x => x.CharacterId == Parent.Id) .Where(x => x.AccountId == Parent.AccountId) .ToArray(); foreach (var itemEntity in itemsEntities) { var item = new Item(itemEntity); Add(item); if (item.PetId != null) { Parent.Pets.Add(new Pet(item)); } } }
public List <Character> GetCharacters(byte worldId, int accountId) { using var dbContext = new MapleDbContext(); var result = new List <Character>(); var characters = dbContext .Characters .Where(x => x.AccountId == accountId) .Where(x => x.WorldId == worldId); characters .ToList() .ForEach(x => { var c = new LoginCharacter() { Id = x.Id }; c.Load(); result.Add(c); }); return(result); }