Ejemplo n.º 1
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IDataBase db, ICache cache)
        {
            if (env.EnvironmentName == "dev")
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Play/Error");
            }
            _db    = db;
            _cache = cache;


            app.UseDefaultFiles();
            app.UseStaticFiles();

            app.UseCors("client");
            app.UseMiddleware <JwtMiddleware>();

            // Forward headers for Ngnix

            app.UseForwardedHeaders(new ForwardedHeadersOptions
            {
                ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
            });

            app.UseRouting();


            app.UseAuthentication();
            app.UseAuthorization();
            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
                endpoints.MapHub <GameHub>("/Hubs/game");
            });


            _hubContext = app.ApplicationServices.GetService <IHubContext <GameHub> >();
            app.StartLoops();

            var watch = System.Diagnostics.Stopwatch.StartNew();

            var rooms = _db.GetList <Room>(DataBase.Collections.Room);

            foreach (var room in rooms)
            {
                AddSkillsToMobs(room);
                MapMobRoomId(room);
                _cache.AddRoom($"{room.AreaId}{room.Coords.X}{room.Coords.Y}{room.Coords.Z}", room);
            }


            if (!_db.DoesCollectionExist(DataBase.Collections.Alignment))
            {
                foreach (var data in new Alignment().SeedData())
                {
                    _db.Save(data, DataBase.Collections.Alignment);
                }
            }

            if (!_db.DoesCollectionExist(DataBase.Collections.Skill))
            {
                foreach (var data in new SeedCoreSkills().SeedData())
                {
                    _db.Save(data, DataBase.Collections.Skill);
                }
            }

            if (!_db.DoesCollectionExist(DataBase.Collections.AttackType))
            {
                foreach (var data in new AttackTypes().SeedData())
                {
                    _db.Save(data, DataBase.Collections.AttackType);
                }
            }

            if (!_db.DoesCollectionExist(DataBase.Collections.Race))
            {
                foreach (var data in new Race().SeedData())
                {
                    _db.Save(data, DataBase.Collections.Race);
                }
            }

            if (!_db.DoesCollectionExist(DataBase.Collections.Status))
            {
                foreach (var data in new CharacterStatus().SeedData())
                {
                    _db.Save(data, DataBase.Collections.Status);
                }
            }

            if (!_db.DoesCollectionExist(DataBase.Collections.Class))
            {
                foreach (var data in new Class().SeedData())
                {
                    _db.Save(data, DataBase.Collections.Class);
                }
            }

            var classes = _db.GetList <Class>(DataBase.Collections.Class);

            foreach (var pcClass in classes)
            {
                _cache.AddClass(pcClass.Name, pcClass);
            }



            if (!_db.DoesCollectionExist(DataBase.Collections.Config))
            {
                _db.Save(new Config(), DataBase.Collections.Config);
            }

            var config = _db.GetById <Config>(1, DataBase.Collections.Config);

            _cache.SetConfig(config);

            //add skills
            var skills = _db.GetList <Skill>(DataBase.Collections.Skill);

            foreach (var skill in skills)
            {
                _cache.AddSkill(skill.Id, skill);
            }

            var quests = _db.GetList <Quest>(DataBase.Collections.Quests);

            foreach (var quest in quests)
            {
                _cache.AddQuest(quest.Id, quest);
            }

            var areas = _db.GetList <Area>(DataBase.Collections.Area);

            //foreach (var area in areas)
            //{
            //    var roomList = rooms.FindAll(x => x.AreaId == area.Id);
            //    _cache.AddMap(area.Id, Map.DrawMap(roomList));
            //}

            foreach (var area in areas)
            {
                var roomList     = rooms.FindAll(x => x.AreaId == area.Id);
                var areaByZIndex = roomList.FindAll(x => x.Coords.Z != 0).Distinct();
                foreach (var zarea in areaByZIndex)
                {
                    var roomsByZ = new List <Room>();
                    foreach (var room in roomList.FindAll(x => x.Coords.Z == zarea.Coords.Z))
                    {
                        roomsByZ.Add(room);
                    }

                    _cache.AddMap($"{area.Id}{zarea.Coords.Z}", Map.DrawMap(roomsByZ));
                }

                var rooms0index = roomList.FindAll(x => x.Coords.Z == 0);
                _cache.AddMap($"{area.Id}0", Map.DrawMap(rooms0index));
            }

            var socials = new SocialSeedData().SeedData();

            foreach (var social in socials)
            {
                _cache.AddSocial(social.Key, social.Value);
            }


            if (!_db.DoesCollectionExist(DataBase.Collections.Socials))
            {
                foreach (var social in socials)
                {
                    _db.Save(social, DataBase.Collections.Socials);
                }
            }


            if (!_db.DoesCollectionExist(DataBase.Collections.Items))
            {
                foreach (var itemSeed in new ItemSeed().SeedData())
                {
                    _db.Save(itemSeed, DataBase.Collections.Items);
                }
            }
            else
            {
                var hasMoney = _db.GetList <Item>(DataBase.Collections.Items)
                               .FirstOrDefault(x => x.ItemType == Item.ItemTypes.Money);


                if (hasMoney == null)
                {
                    foreach (var itemSeed in new ItemSeed().SeedData())
                    {
                        _db.Save(itemSeed, DataBase.Collections.Items);
                    }
                }
            }

            if (!_db.DoesCollectionExist(DataBase.Collections.Help))
            {
                foreach (var seed in new HelpSeed().SeedData())
                {
                    _db.Save(seed, DataBase.Collections.Help);
                }
            }
            else
            {
                var helpList = _db.GetList <Help>(DataBase.Collections.Help);


                foreach (var seed in new HelpSeed().SeedData())
                {
                    if (helpList.FirstOrDefault(x => x.Title.Equals(seed.Title)) != null)
                    {
                        continue;
                    }

                    _db.Save(seed, DataBase.Collections.Help);
                }
            }
            var helpFiles = _db.GetList <Help>(DataBase.Collections.Help);

            foreach (var helpFile in helpFiles)
            {
                _cache.AddHelp(helpFile.Id, helpFile);
            }

            if (!_db.DoesCollectionExist(DataBase.Collections.Users))
            {
                var admin = new AdminUser()
                {
                    Username = "******", Password = "******", Role = "Admin", CanEdit = true, CanDelete = true
                };

                _db.Save(admin, DataBase.Collections.Users);
            }

            watch.Stop();
            var elapsedMs = watch.ElapsedMilliseconds;

            Console.WriteLine($"Start up completed in {elapsedMs}");
        }
Ejemplo n.º 2
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IDataBase db, ICache cache)
        {
            if (env.EnvironmentName == "dev")
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Play/Error");
            }
            _db    = db;
            _cache = cache;


            app.UseDefaultFiles();
            app.UseStaticFiles();

            app.UseCors("client");
            app.UseMiddleware <JwtMiddleware>();

            // Forward headers for Ngnix

            app.UseForwardedHeaders(new ForwardedHeadersOptions
            {
                ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
            });

            app.UseRouting();


            app.UseAuthentication();
            app.UseAuthorization();
            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
                endpoints.MapHub <GameHub>("/Hubs/game");
            });


            _hubContext = app.ApplicationServices.GetService <IHubContext <GameHub> >();
            app.StartLoops();

            var rooms = _db.GetList <Room>(DataBase.Collections.Room);

            foreach (var room in rooms)
            {
                AddSkillsToMobs(room);
                MapMobRoomId(room);
                _cache.AddRoom($"{room.AreaId}{room.Coords.X}{room.Coords.Y}{room.Coords.Z}", room);
            }


            if (!_db.DoesCollectionExist(DataBase.Collections.Alignment))
            {
                foreach (var data in new Alignment().SeedData())
                {
                    _db.Save(data, DataBase.Collections.Alignment);
                }
            }

            if (!_db.DoesCollectionExist(DataBase.Collections.Skill))
            {
                foreach (var data in new SeedCoreSkills().SeedData())
                {
                    _db.Save(data, DataBase.Collections.Skill);
                }
            }

            if (!_db.DoesCollectionExist(DataBase.Collections.AttackType))
            {
                foreach (var data in new AttackTypes().SeedData())
                {
                    _db.Save(data, DataBase.Collections.AttackType);
                }
            }

            if (!_db.DoesCollectionExist(DataBase.Collections.Race))
            {
                foreach (var data in new Race().SeedData())
                {
                    _db.Save(data, DataBase.Collections.Race);
                }
            }

            if (!_db.DoesCollectionExist(DataBase.Collections.Status))
            {
                foreach (var data in new CharacterStatus().SeedData())
                {
                    _db.Save(data, DataBase.Collections.Status);
                }
            }

            if (!_db.DoesCollectionExist(DataBase.Collections.Class))
            {
                foreach (var data in new Class().SeedData())
                {
                    _db.Save(data, DataBase.Collections.Class);
                }
            }

            if (!_db.DoesCollectionExist(DataBase.Collections.Config))
            {
                _db.Save(new Config(), DataBase.Collections.Config);
            }

            var config = _db.GetById <Config>(1, DataBase.Collections.Config);

            _cache.SetConfig(config);

            //add skills
            var skills = _db.GetList <Skill>(DataBase.Collections.Skill);

            foreach (var skill in skills)
            {
                _cache.AddSkill(skill.Id, skill);
            }

            var quests = _db.GetList <Quest>(DataBase.Collections.Quests);

            foreach (var quest in quests)
            {
                _cache.AddQuest(quest.Id, quest);
            }

            var areas = _db.GetList <Area>(DataBase.Collections.Area);

            foreach (var area in areas)
            {
                var roomList = rooms.FindAll(x => x.AreaId == area.Id);
                _cache.AddMap(area.Id, Map.DrawMap(roomList));
            }


            var socials = new SocialSeedData().SeedData();

            foreach (var social in socials)
            {
                _cache.AddSocial(social.Key, social.Value);
            }


            if (!_db.DoesCollectionExist(DataBase.Collections.Socials))
            {
                foreach (var social in socials)
                {
                    _db.Save(social, DataBase.Collections.Socials);
                }
            }

            if (!_db.DoesCollectionExist(DataBase.Collections.Users))
            {
                var admin = new AdminUser()
                {
                    Username = "******", Password = "******", Role = "Admin", CanEdit = true, CanDelete = true
                };

                _db.Save(admin, DataBase.Collections.Users);
            }
        }