예제 #1
0
 public bool HasClaimableTask()
 {
     return(PlayerTasks.Exists(playerTask =>
     {
         var taskCluster = TaskClusters.Find(cluster => playerTask.taskClusterId == cluster.id);
         var task = taskCluster?.tasks.Find(t => t.number == playerTask.currentTaskNumber);
         return task != null && AchievementAmount(task.taskType) >= task.taskAmount;
     }));
 }
예제 #2
0
        private void Update(PlayerTask playerTask)
        {
            var idx = PlayerTasks.FindIndex(a => a.id == playerTask.id);

            if (idx >= 0)
            {
                PlayerTasks[idx] = playerTask;
            }
            else
            {
                PlayerTasks.Add(playerTask);
            }
        }
예제 #3
0
    void SubmitTaskAsync(PlayerTasks model)
    {
        SubmitTaskModel value = new SubmitTaskModel()
        {
            Id = model.Id, PlayerProgress = model.PlayerProgress - model.PlayerStartProgress, TaskId = model.TaskId
        };

        CoroutineManager.SendRequest(SubmitTaskUrl, value, (PlayerTasksAnswer newModel) =>
        {
            model.Id = newModel.Id;
            model.PlayerStartProgress = model.PlayerProgress;

            if (model.PlayerProgress >= model.ActionsCount)
            {
                Canvaser.Instance.PopUpPanel.ShowTask(model.GenerateDescription());
            }
        });
    }
예제 #4
0
        public async Task <IActionResult> SolveTask(TempPlayers player)
        {
            if (!checkOutput(player))
            {
                return(RedirectToAction(nameof(Index)));
            }
            if (ModelState.IsValid)
            {
                var existingPlayer = await _context.players.FirstOrDefaultAsync(p => p.nickname == player.nickname);

                if (existingPlayer != null)
                {
                    existingPlayer.successfulTaskCount += 1;
                    PlayerTasks playerTasks = new PlayerTasks();
                    playerTasks.tasksId   = player.taskId;
                    playerTasks.playersId = existingPlayer.id;
                    _context.Update(existingPlayer);
                    _context.Add(playerTasks);
                    await _context.SaveChangesAsync();
                }
                else
                {
                    Players newPlayer = new Players();
                    newPlayer.nickname            = player.nickname;
                    newPlayer.successfulTaskCount = 1;
                    PlayerTasks playerTasks = new PlayerTasks();
                    playerTasks.tasksId = player.taskId;

                    _context.Add(newPlayer);
                    await _context.SaveChangesAsync();

                    var tempPlayer = await _context.players.FirstOrDefaultAsync(p => p.nickname == player.nickname);

                    playerTasks.playersId = tempPlayer.id;

                    _context.Add(playerTasks);
                    await _context.SaveChangesAsync();
                }

                return(RedirectToAction(nameof(Index)));
            }
            return(View());
        }
예제 #5
0
    void SubmitAchievementAsync(PlayerTasks model, TasksTypes type)
    {
        SubmitAchievementModel value = new SubmitAchievementModel()
        {
            Id = model.Id, AchievementId = model.TaskId, PlayerProgress = model.PlayerProgress - model.PlayerStartProgress, Language = (int)LocalizationManager.CurrentLanguage
        };

        CoroutineManager.SendRequest(SubmitAchievementUrl, value, (PlayerTasksAnswer newModel) =>
        {
            model.Id = newModel.Id;
            model.PlayerStartProgress = model.PlayerProgress;

            if (model.PlayerProgress >= model.ActionsCount)
            {
                Canvaser.Instance.PopUpPanel.ShowAchievement(newModel);
            }

            if (type == TasksTypes.Share && Canvaser.Instance.Suits.gameObject.activeInHierarchy)
            {
                InventoryManager.Instance.GetSuitsAsync(true);
            }
            //add window
        });
    }