Exemplo n.º 1
0
 public GameController(UserManager <ApplicationUser> userManager,
                       IWorkRepository workRepository, ITavernRepository tavernRepository,
                       IMailRepository mailRepository, IItemRepository itemRepository,
                       IInventoryRepository inventoryRepository, ILocationRepository locationRepository,
                       ITripRepository tripRepository)
 {
     _userManager         = userManager;
     _workRepository      = workRepository;
     _tavernRepository    = tavernRepository;
     _mailRepository      = mailRepository;
     _itemRepository      = itemRepository;
     _inventoryRepository = inventoryRepository;
     _locationRepository  = locationRepository;
     _tripRepository      = tripRepository;
 }
Exemplo n.º 2
0
        public async Task InvokeAsync(HttpContext context, UserManager <ApplicationUser> userManager,
                                      IWorkRepository workRepository, ITavernRepository tavernRepository,
                                      ITripRepository tripRepository, ILocationRepository locationRepository)
        {
            if (context.User.Identity.IsAuthenticated)
            {
                var user = await userManager.GetUserAsync(context.User);

                //Check Work
                if (user.Status == UserStatus.Work)
                {
                    var work = workRepository.GetWork(user.Id);

                    if (DateTime.UtcNow >= work.End)
                    {
                        var location = locationRepository.GetLocations()
                                       .Where(loc => loc.X == user.PositionX)
                                       .Where(loc => loc.Y == user.PositionY)
                                       .SingleOrDefault();

                        user.ExperiencePoints += work.Hours * location.Experience;
                        user.AllExperience    += work.Hours * location.Experience;
                        user.ActionPoints     -= work.Hours;
                        user.Gold             += work.Hours * location.Gold;
                        user.Status            = UserStatus.Stays;
                        await userManager.UpdateAsync(user);

                        workRepository.Delete(user.Id);
                    }
                }

                //Check Tavern
                if (user.Status == UserStatus.Tavern)
                {
                    var tavern = tavernRepository.GetTavern(user.Id);

                    if (DateTime.UtcNow >= tavern.End)
                    {
                        user.ActionPoints += (int)(tavern.Hours * 2);
                        user.Gold         -= (int)(tavern.Hours * 10);
                        user.Status        = UserStatus.Stays;
                        await userManager.UpdateAsync(user);

                        tavernRepository.Delete(user.Id);
                    }
                }

                //Check Trip
                if (user.Status == UserStatus.Trip)
                {
                    var trip = tripRepository.GetTrip(user.Id);

                    if (DateTime.UtcNow >= trip.End)
                    {
                        user.PositionX = trip.X;
                        user.PositionY = trip.Y;
                        user.Status    = UserStatus.Stays;
                        await userManager.UpdateAsync(user);

                        tripRepository.Delete(user.Id);
                    }
                }

                //Add Level
                if (user.ExperiencePoints >= user.MaxExperiencePoints && user.Level < 100)
                {
                    user.ExperiencePoints   -= user.MaxExperiencePoints;
                    user.MaxExperiencePoints = (int)(user.MaxExperiencePoints * 1.2);
                    user.Level++;
                    user.SkillPoints += 3;
                    user.HealthPoints = user.MaxHealthPoints;
                    await userManager.UpdateAsync(user);
                }
            }

            await _next(context);
        }