Exemplo n.º 1
0
        public async Task Parse(DirectoryInfo directory)
        {
            logger.Information("Parsing monsters");
            var monsterDirectory = directory.GetDirectories().FirstOrDefault(x => x.Name == "Monsters");

            if (monsterDirectory == null)
            {
                logger.Warning("Missing Monsters directory, skipping monster parsing");
                return;
            }

            var monsters = new List <MonsterDTO>();

            foreach (var file in monsterDirectory.EnumerateFiles("*.yml"))
            {
                using (var reader = file.OpenText())
                {
                    var parsed = serialization.Deserialize <MapMonsters>(reader);
                    if (parsed == null)
                    {
                        continue;
                    }

                    foreach (var monster in parsed.Monsters)
                    {
                        monsters.Add(new MonsterDTO
                        {
                            GameId = monster.GameId,
                            X      = monster.X,
                            Y      = monster.Y,
                            MapId  = parsed.MapId
                        });
                    }
                }
            }

            await monsterRepository.SaveAll(monsters);

            logger.Information($"Saved {monsters.Count} monsters");
        }