コード例 #1
0
        public async Task ProcessDisarmedTrap(string userId, string disarmedTrapId)
        {
            UserResult user = await AppBusiness.User.GetById(userId);

            ArmedTrapResult disarmedTrap = await AppRepository.Trap.GetArmedTrapById(disarmedTrapId);

            UserResult userInjured   = user;
            UserResult userOwnerTrap = await AppBusiness.User.GetById(disarmedTrap.UserId);

            if (userOwnerTrap != null)
            {
                TrapResult trap = await AppBusiness.Trap.GetByNameKey(disarmedTrap.NameKey);

                UserRequest userOwnerRequest   = Mapper.Map <UserRequest>(userOwnerTrap);
                UserRequest userInjuredRequest = Mapper.Map <UserRequest>(userInjured);

                await AppBusiness.User.AddPoints(userOwnerRequest, trap.Points);

                /* Deixar de forma dinamica futuramente */
                var trapOwned = await AppBusiness.Trap.GetByNameKey("BEAR_TRAP");

                var trapUserOwned = new UserTrapRequest();

                trapUserOwned.TrapId = trapOwned.Id.ToString();
                trapUserOwned.Amount = 5;

                AppBusiness.User.AddTrap(userOwnerRequest, trapUserOwned);

                await AppBusiness.User.Save(userOwnerRequest);

                await SendNotificationToUserInjured(userInjuredRequest, userOwnerRequest, disarmedTrap);

                await SendNotificationToUserOwnerTrap(userInjuredRequest, userOwnerRequest, disarmedTrap, trap.Points);
            }
        }
コード例 #2
0
    public static TrapResult PlayerTraped()
    {
        TrapResult result = new TrapResult();

        result.trapDam = Random.Range(3, 10);
        return(result);
    }
コード例 #3
0
    public void EventCaculate()
    {
        result = CaculateScript.PlayerTraped();
        string text = "그대는 " + result.trapDam + "의 데미지를 입었다.";

        _player.Damaged(result.trapDam);
        _gm.SetPlayerHPOnUI();
        _cardScript.SetFrontDesc(text);
        _gm.SetEnd();
        _cardScript.CardEnd("");
    }
コード例 #4
0
        private TrapResult Parse(Trap trap)
        {
            if (trap != null)
            {
                TrapResult response = new TrapResult();

                response.Active       = trap.Active;
                response.CreateDate   = trap.CreateDate;
                response.Id           = trap.Id.ToString();
                response.Name         = trap.NameResource;
                response.NameKey      = trap.NameKey;
                response.NameResource = trap.NameResource;
                response.Points       = trap.Points;

                return(response);
            }
            else
            {
                return(null);
            }
        }
コード例 #5
0
        public async Task <UserResult> ConfirmBuyIntent(BuyIntentRequest request)
        {
            UserResult response = null;

            BuyIntentResult actualIntent = await AppRepository.Purchase.GetById(request.Id);

            if (actualIntent != null)
            {
                request = Mapper.Map <BuyIntentRequest>(actualIntent);

                await AppRepository.Purchase.ConfirmBuyIntent(request);

                response = await AppBusiness.User.GetById(actualIntent.UserId);

                if (response != null)
                {
                    AvailableTrapResult availableTrap = await AppBusiness.Purchase.GetAvailableTrapById(actualIntent.AvailableTrapId);

                    if (availableTrap != null)
                    {
                        TrapResult trap = await AppBusiness.Trap.GetByNameKey(availableTrap.NameKey);

                        UserTrapRequest userTrap = new UserTrapRequest();

                        userTrap.TrapId = trap.Id.ToString();
                        userTrap.Amount = availableTrap.Amount;

                        UserRequest userRequest = Mapper.Map <UserRequest>(response);

                        AppBusiness.User.AddTrap(userRequest, userTrap);

                        await AppRepository.User.UpdateTraps(userRequest.Id, userRequest.Traps);

                        response = await AppBusiness.User.GetById(userRequest.Id);
                    }
                }
            }

            return(response);
        }
コード例 #6
0
        public async Task <List <ArmedTrapResult> > ListArmedTraps(UserRequest request)
        {
            List <ArmedTrapResult> response = await AppRepository.Trap.ListArmedTrapsByUser(request.Id);

            List <TrapResult> availableTraps = new List <TrapResult>();

            if (response != null)
            {
                foreach (ArmedTrapResult trap in response)
                {
                    TrapResult availableTrap = availableTraps.Where(obj => obj.NameKey == trap.NameKey).FirstOrDefault();

                    if (availableTrap == null)
                    {
                        availableTrap = await AppBusiness.Trap.GetByNameKey(trap.NameKey);

                        availableTraps.Add(availableTrap);
                    }
                }
            }

            return(response);
        }
コード例 #7
0
        public async Task <UserResult> ArmTrap(ArmedTrapRequest request)
        {
            bool isLocationValid = request.Latitude != 0 && request.Longitude != 0;

            UserResult user = null;

            if (isLocationValid)
            {
                TrapResult trap = await AppBusiness.Trap.GetByNameKey(request.NameKey);

                if (trap != null)
                {
                    user = await AppBusiness.User.GetById(request.UserId);

                    if (user != null)
                    {
                        if (user.Traps != null && user.Traps.Count > 0)
                        {
                            bool hasTrapToSet = false;

                            foreach (UserTrapResult userTrap in user.Traps)
                            {
                                if (userTrap.NameKey == request.NameKey && userTrap.Amount > 0)
                                {
                                    hasTrapToSet = true;
                                    break;
                                }
                            }

                            if (hasTrapToSet)
                            {
                                request.Date = DateTime.UtcNow;

                                await AppRepository.Trap.InsertArmedTrap(request);

                                UserRequest userRequest = Mapper.Map <UserRequest>(user);

                                await AppBusiness.User.RemoveTrap(userRequest, request.NameKey);

                                user = await AppBusiness.User.GetById(request.UserId);
                            }
                            else
                            {
                                throw new MyTrapBusinessException(Resources.trap_armed_user_no_has);
                            }
                        }
                        else
                        {
                            throw new MyTrapBusinessException(Resources.trap_armed_user_no_traps);
                        }
                    }
                }
            }

            if (!isLocationValid)
            {
                throw new MyTrapBusinessException(Resources.trap_armed_location_invalid);
            }

            return(user);
        }