Exemplo n.º 1
0
        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)));
        }
Exemplo n.º 2
0
 private void InitializeDatabase()
 {
     _log.Information(
         $"Initializing Database Type={ServerConfig.Instance.DatabaseConnectionType} Connection={ServerConfig.Instance.DatabaseConnection}");
     using var context = new MapleDbContext();
     context.Database.EnsureCreated();
 }
Exemplo n.º 3
0
 public bool CharacterExists(string name)
 {
     using var dbContext = new MapleDbContext();
     return(dbContext.Characters
            .Where(x => x.WorldId == World.Id)
            .Any(x => x.Name == name));
 }
Exemplo n.º 4
0
//        [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");
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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");
            }
        }
Exemplo n.º 7
0
        public void Delete()
        {
            using var dbContext = new MapleDbContext();
            var item = dbContext.Memos.Find(Id);

            if (item != null)
            {
                dbContext.Remove(item);
                dbContext.SaveChanges();
            }
        }
Exemplo n.º 8
0
        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();
        }
Exemplo n.º 9
0
        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();
        }
Exemplo n.º 10
0
        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();
        }
Exemplo n.º 11
0
        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);
        }
Exemplo n.º 12
0
        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));
                }
            }
        }
Exemplo n.º 13
0
        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);
        }