Example #1
0
        public void Drink(string gameId)
        {
            ComputedTask lastTask = lastTasks[gameId];

            if (((TaskType)lastTask.Task.type).IsSingleUser())
            {
                AddScore(gameId.AsInt(), lastTask.User.Id, lastTask.Task.drinks);
            }
            else
            {
                foreach (GameUser gameUser in repo.Get(gameId.AsInt()).GameUsers)
                {
                    AddScore(gameId.AsInt(), gameUser.userId, lastTask.Task.drinks);
                }
            }

            NextTask(gameId);
        }
Example #2
0
        private void NextTask(string gameId)
        {
            Game game = repo.Get(gameId.AsInt());
            List <Models.Task> tasks = game.Deck.Tasks.ToList();

            Models.Task task;
            do
            {
                task = tasks[random.Next(tasks.Count)];
            } while (lastTasks.ContainsKey(gameId) && task.id == lastTasks[gameId].Task.id);
            GameUser     gameUser     = game.GameUsers.ToList()[random.Next(game.GameUsers.Count)];
            ComputedTask computedTask = new ComputedTask()
            {
                Task = task,
                User = userManager.FindById(gameUser.userId)
            };

            lastTasks[gameId] = computedTask;
            SendTask(gameId, computedTask);
        }
Example #3
0
 private bool ShowCompletedButton(ComputedTask task)
 {
     return(((TaskType)task.Task.type).IsCompletable());
 }
Example #4
0
 private string RenderText(ComputedTask task)
 {
     return(task.Task.text
            .Replace(TaskTypeExtention.DrinkPlaceholder, task.Task.drinks.ToString())
            .Replace(TaskTypeExtention.UserPlaceholder, task.User.Email.Split('@')[0]));
 }
Example #5
0
 private void SendTask(string gameId, ComputedTask task)
 {
     Clients.Group(gameId).newTask(ShowCompletedButton(task), RenderText(task));
 }