示例#1
0
    public void SetTask(int number, PlayerTaskModel model)
    {
        info      = model;
        Task.text = model.GenerateDescription();

        if (info.PlayerProgress >= info.ActionsCount)
        {
            IsLocked.SetActive(false);
        }
    }
示例#2
0
        public async Task <PlayerTaskModel> CreatePlayerTaskAsync(int taskId, int gameId, CyberSparrow user)
        {
            var task = th.GetTask(taskId);
            var game = gh.GetGame(gameId);

            if (task == null || game == null)
            {
                throw new NullReferenceException("GAME OR TASK IS NULL");
            }
            PlayerTaskModel model = new PlayerTaskModel();

            model.Game = game;
            model.Task = task;
            model.User = user;
            model.NumberOfFailedflags = 0;
            model.TaskState           = "ready";
            var m = await db.PlayerTask.AddAsync(model);

            db.SaveChanges();
            return(m.Entity);
        }
示例#3
0
        public async Task <bool> DeliverFlag(int taskId, int gameId, string flag)
        {
            var context = HttpContext.User;
            var user    = await userHandler.GetUserByEmail(HttpContext.User.Identity.Name);

            var game = gameHandler.GetGame(gameId);
            var task = th.GetTask(taskId);

            if (user == null || task == null || game == null)
            {
                throw new NullReferenceException("USER IS NULL, CANNOT GET TASK");
            }
            bool isFlagCorrect = await pth.DeliverFlagAsync(game, task, user, flag);

            if (isFlagCorrect)
            {
                //Delete Virtual machine
                var bearer = await aapi.GetBearerTokenAsync();

                PlayerTaskModel playerTask = await pth.GetPlayerTaskAsync(game, task, user);

                await aapi.DeleteVmAndAllResources(bearer, playerTask.VmName);

                //Check if all tasks are completed
                var allGameTasks = await pth.GetAllTaskForPlayerForGame(game.GameId, user);

                if (allGameTasks.All(x => x.State == "finished"))
                {
                    //Delete tool vm
                    var playerGame = pgh.GetPlayerGame(game.GameId, user.Id);
                    var tollVmName = playerGame.ToolVmIdentifier;
                    await aapi.DeleteVmAndAllResources(bearer, tollVmName);

                    //update PlayerGame state
                    playerGame.state = "finished";
                    pgh.UpdateGame(playerGame);
                }
            }
            return(isFlagCorrect);
        }
示例#4
0
 public bool UpdatePlayerTask(PlayerTaskModel model)
 {
     db.PlayerTask.Update(model);
     return(SaveChanges());
 }