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); }
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); }
private bool ShowCompletedButton(ComputedTask task) { return(((TaskType)task.Task.type).IsCompletable()); }
private string RenderText(ComputedTask task) { return(task.Task.text .Replace(TaskTypeExtention.DrinkPlaceholder, task.Task.drinks.ToString()) .Replace(TaskTypeExtention.UserPlaceholder, task.User.Email.Split('@')[0])); }
private void SendTask(string gameId, ComputedTask task) { Clients.Group(gameId).newTask(ShowCompletedButton(task), RenderText(task)); }