コード例 #1
0
        public static async Task <IActionResult> updatetokblitzteam([HttpTrigger(AuthorizationLevel.Function, "put", Route = Constants.Version + "/" + "updatetokblitzteam/" + "{id}")] HttpRequest req, ILogger log,
                                                                    ExecutionContext context, string id)
        {
            string            requestBody = await new StreamReader(req.Body).ReadToEndAsync();
            tokblitzTeamClass newItem     = JsonConvert.DeserializeObject <tokblitzTeamClass>(requestBody);

            try {
                tokblitzTeamClass game = await Api <tokblitzTeamClass> .GetItemAsync(id, Constants.PkRequest(id));

                tokblitzTeamClass holder = new tokblitzTeamClass();

                if (newItem.Id != null || newItem.Id != "")
                {
                    tokblitzTeamClass itemtoupdate = TeamClassUpdater <tokblitzTeamClass> .TeamUpdater(newItem, game);


                    var result = await Api <tokblitzTeamClass> .UpdateItemAsyncSaveGames(game.Id, itemtoupdate, Constants.PkRequest(game.Id));

                    return(new OkObjectResult(result));
                }
                else
                {
                    return(new BadRequestResult());
                }
            }
            catch (Exception e)
            {
                return(new BadRequestObjectResult(e.Message));
            }
        }
コード例 #2
0
        public static async Task <IActionResult> insertTeam([HttpTrigger(AuthorizationLevel.Function, "post", Route = Constants.Version + "/" + "insertteam")] HttpRequest req, ILogger log,
                                                            ExecutionContext context)
        {
            string            requestBody = await new StreamReader(req.Body).ReadToEndAsync();
            tokblitzTeamClass getrequest  = JsonConvert.DeserializeObject <tokblitzTeamClass>(requestBody);

            getrequest.UserId = getrequest.Id + "-tokblitzteam";
            getrequest.Id     = getrequest.Id + Guid.NewGuid();

            var item = await Api <tokblitzTeamClass> .CreateItemAsyncGames(getrequest, Constants.PkRequest(getrequest.Id));

            return(new OkResult());
        }
コード例 #3
0
        // updates the value of team fields
        public static tokblitzTeamClass TeamUpdater(tokblitzTeamClass newItem, tokblitzTeamClass oldItem)
        {
            if (newItem.Country == null || newItem.Country == "")
            {
                newItem.Country = oldItem.Country;
            }

            if (newItem.State == null || newItem.State == "")
            {
                newItem.State = oldItem.State;
            }


            if (newItem.Name == null || newItem.Name.Equals(""))
            {
                newItem.Name = oldItem.Name;
            }

            if (newItem.TeamImage == null || newItem.TeamImage.Equals(""))
            {
                newItem.TeamImage = oldItem.TeamImage;
            }

            if (newItem.UserId == null || newItem.UserId.Equals(""))
            {
                newItem.UserId = oldItem.UserId;
            }
            // updates points if not null or 0
            if (newItem.TeamPoints.Equals(null) || newItem.TeamPoints == 0)
            {
                newItem.TeamPoints = oldItem.TeamPoints;
            }
            else
            {
                newItem.TeamPoints = (oldItem.TeamPoints + newItem.TeamPoints);
            }
            // calculates wins
            if (newItem.Wins.Equals(null) || newItem.Wins == 0)
            {
                newItem.Wins = oldItem.Wins;
            }
            else
            {
                newItem.Wins = (oldItem.Wins + newItem.Wins);
            }

            // calculates losses
            if (newItem.Losses.Equals(null) || newItem.Losses == 0)
            {
                newItem.Losses = oldItem.Losses;
            }
            else
            {
                newItem.Losses = (oldItem.Losses + newItem.Losses);
            }

            // calculates strikes used
            if (newItem.StrikesUsed.Equals(null) || newItem.StrikesUsed == 0)
            {
                newItem.StrikesUsed = oldItem.StrikesUsed;
            }
            else
            {
                newItem.StrikesUsed = (oldItem.StrikesUsed + newItem.StrikesUsed);
            }
            //calculates  and update total seconds
            if (newItem.TotalSeconds.Equals(null) || newItem.TotalSeconds == 0)
            {
                newItem.TotalSeconds = oldItem.TotalSeconds;
            }
            else
            {
                newItem.TotalSeconds = (oldItem.TotalSeconds + newItem.TotalSeconds);
            }

            //calculates  and update total  games played
            if (newItem.GamesPlayed.Equals(null) || newItem.GamesPlayed == 0)
            {
                newItem.GamesPlayed = oldItem.GamesPlayed;
            }
            else
            {
                newItem.GamesPlayed = (oldItem.GamesPlayed + newItem.GamesPlayed);
            }

            return(newItem);
        }
コード例 #4
0
        public static async Task <IActionResult> TokBlitzRaceGameOver(
            [HttpTrigger(AuthorizationLevel.Function, "post", Route = Constants.Version + "/tokblitzracegameover")] HttpRequest req,
            [SignalR(HubName = "multiplayer")] IAsyncCollector <SignalRMessage> signalRMessages, ILogger log)
        {
            //Read query info
            string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
            var    info        = JsonConvert.DeserializeObject <TokBlitzRace>(requestBody);

            bool forfeit = false;

            if (info.ForfeitingPlayer != null)
            {
                info.Loser    = info.ForfeitingPlayer;
                info.LoserId  = info.ForfeiterId;
                info.Winner   = (info.ForfeitingPlayer.PlayerNumber == 1) ? info.Players[0]: info.Players[1];
                info.WinnerId = info.Winner.ConnectionId;

                forfeit = true;
            }
            else
            {
                if (info.FinishedFirst.PlayerNumber == 1)
                {
                    info.Player1Points += Constants.FINISHED_FIRST_BONUS;
                    if (info.Player1PointsPerRound != null)
                    {
                        info.Player1PointsPerRound.Add(Constants.FINISHED_FIRST_BONUS);
                    }
                }
                else if (info.FinishedFirst.PlayerNumber == 2)
                {
                    info.Player2Points += Constants.FINISHED_FIRST_BONUS;
                    if (info.Player2PointsPerRound != null)
                    {
                        info.Player2PointsPerRound.Add(Constants.FINISHED_FIRST_BONUS);
                    }
                }

                info.Winner   = (info.Player1Points > info.Player2Points) ? info.Players[0] : info.Players[1];
                info.WinnerId = info.Winner.ConnectionId;

                info.Loser   = (info.Player1Points > info.Player2Points) ? info.Players[1] : info.Players[0];
                info.LoserId = info.Loser.ConnectionId;
                if (info.Player1Points == info.Player2Points)
                {
                    info.Winner = new GamePlayer()
                    {
                        PlayerNumber = 0, UserId = "Tie", UserName = "******", UserPhoto = "Tie"
                    }
                }
                ;
            }

            // update the points and others

            tokblitzTeamClass getwinner = new tokblitzTeamClass();

            getwinner.Id          = info.Winner.ConnectionId;
            getwinner.GamesPlayed = 1;
            getwinner.Wins        = 1;
            getwinner.TeamPoints  = 2;


            tokblitzTeamClass getloser = new tokblitzTeamClass();

            getloser.Id          = info.Loser.ConnectionId;
            getloser.GamesPlayed = 1;
            getloser.Losses      = 1;
            getloser.TeamPoints  = (forfeit == true) ? 0 : 1;

            tokblitzTeamClass getwinnerOld = await Api <tokblitzTeamClass> .GetItemAsync(getwinner.Id, Constants.PkRequest(getwinner.Id));

            tokblitzTeamClass getwinnerTosend = TeamClassUpdater <tokblitzTeamClass> .TeamUpdater(getwinner, getwinnerOld);

            tokblitzTeamClass getLoserOld = await Api <tokblitzTeamClass> .GetItemAsync(getloser.Id, Constants.PkRequest(getloser.Id));

            tokblitzTeamClass getLoserTosend = TeamClassUpdater <tokblitzTeamClass> .TeamUpdater(getloser, getLoserOld);


            await Api <tokblitzTeamClass> .UpdateItemAsyncSaveGames(getwinner.Id, getwinnerTosend, Constants.PkRequest(getwinner.Id));

            await Api <tokblitzTeamClass> .UpdateItemAsyncSaveGames(getloser.Id, getLoserTosend, Constants.PkRequest(getloser.Id));


            // creates a rematch record after the game
            RematchRecord rematchRecord = new RematchRecord();
            Guid          newId;

            newId            = Guid.NewGuid();
            rematchRecord.Id = newId.ToString();
            rematchRecord.Pk = newId.ToString();
            rematchRecord.Player1ConnectionId = info.Players[0].ConnectionId.ToString();
            rematchRecord.Player2ConnectionId = info.Players[1].ConnectionId.ToString();
            rematchRecord.Player1Id           = info.Players[0].UserId.ToString();
            rematchRecord.Player2Id           = info.Players[1].UserId.ToString();

            await signalRMessages.AddAsync(
                new SignalRMessage
            {
                Target    = "tokblitzracegameover",
                Arguments = new[] { info }
            });


            await StatsFunctions.IncrementDayCounter(1);


            await Api <TokBlitzRace> .CreateItemAsync(info, Constants.PkRequest(info.Id));

            await Api <RematchRecord> .CreateItemAsync(rematchRecord, Constants.PkRequest(rematchRecord.Id));

            await signalRMessages.AddAsync(
                new SignalRMessage
            {
                Target    = "rematch_record",
                Arguments = new[] { rematchRecord }
            });



            return(new OkObjectResult(info));
        }