codebattle
codebattle copied to clipboard
Добавить реакт вью для турнира stairway
BrainStorm:
1. список активных матчей текущего раунда,
2. current_task
3. общая статистика:
0. UserName 1,1,1,1,1(победа и поражение)
1. UserName 1,1,1,1,0(победа и поражение)
2. UserName 1,1,1,1,1(победа и поражение)
3. UserName 1,0,0,0,1(победа и поражение)
task_pack.task_ids =[1,2,3,4]
турнир это последовательное решение всеми участниками одновременно задач из task_pack
Мы публикуем одну задачу и даем 5 минут(other timeout)
дальше стартуем следующий раунд и даем другую задачу, и записываем все результаты
в игре записывается время правильного решения
Задача решить все и как можно быстрее
как выглядит окно игры для одного игрока???
1. все тоже самое, вместо редактора второго игрока описание таска, редактор первого игрока на всю высоту экрана
как выглядит окно основного турнира
1. описание текущего таска и показать таймаут до следующего роунда( можно взять похожий компонент таймаута что и в игре)
можно показать таск пак в табах и не открытые таски таска задизеблить.
* сделать api для task_get_by_id
elementary 3 minutes
elementary 3 minutes
easy 5 mins
medium 7 mins
hard 10 mins
/* berserk 15 mins */
статистика
{ meta: {
current_task_id: 1,
tasks: {
id: { // таск в который уже играли)
name,
level,
description_en
description_ru
},
id: { // текущий таск
name,
level,
description_en
description_ru
}
id: { // таск, который еще не начат
name,
level,
}
id: { // таск, который еще не начат
name,
level,
}
id: { // таск, который еще не начат
name,
level,
}
}
stats: {
0 => {
game_results: [
{ result: "won" | "cancel" | "timeout" | "gave_up", duratoin: 10000 s, game_id: 1},
{ result: "won" | "cancel" | "timeout" | "gave_up", duratoin: 10000 s, game_id: 2},
{ result: "won" | "cancel" | "timeout" | "gave_up", duratoin: 10000 s, game_id: 3},
{ result: "won" | "cancel" | "timeout" | "gave_up", duratoin: 10000 s, game_id: 4},
],
total_duration: 40000 s
}
1 => {}
2 => {}
2 => {}
]
}
Codebattle.Tournament{
access_token: nil,
access_type: "public",
creator: Codebattle.User{
....
},
creator_id: 9,
data: %Codebattle.Tournament.Types.Data{
intended_player_ids: '\t',
matches: [
%Codebattle.Tournament.Types.Match{
duration: nil,
game_id: 64,
players: [
%Codebattle.Tournament.Types.Player{
discord_avatar: nil,
discord_id: nil,
game_result: "waiting",
github_id: 35539033,
guest: false,
id: 9,
is_bot: false,
lang: "js",
name: "Diman-812",
public_id: nil,
rank: 4,
rating: 1194,
team_id: nil
}
],
round_id: 0,
state: "active"
}
],
players: [
%Codebattle.Tournament.Types.Player{
discord_avatar: nil,
discord_id: nil,
game_result: "waiting",
github_id: 35539033,
guest: false,
id: 9,
is_bot: false,
lang: "js",
name: "Diman-812",
public_id: nil,
rank: 4,
rating: 1194,
team_id: nil
}
]
},
default_language: "js",
difficulty: "elementary",
id: 9,
inserted_at: ~N[2021-10-07 18:11:49],
is_live: true,
last_round_started_at: nil,
match_timeout_seconds: 177,
meta: %{},
module: Codebattle.Tournament.Stairway,
name: "Monthly Arena",
players_count: nil,
starts_at: ~U[2021-10-13 21:11:00Z],
state: "waiting_participants",
step: 0,
task_pack: %Codebattle.TaskPack{
__meta__: #Ecto.Schema.Metadata<:loaded, "task_packs">,
creator_id: nil,
id: 1,
inserted_at: ~N[2021-10-02 17:35:50],
name: "All_tasks",
state: "active",
task_ids: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
updated_at: ~N[2021-10-02 17:35:50],
visibility: "public"
},
task_pack_id: 1,
type: "stairway",
updated_at: ~N[2021-10-07 18:11:53]
}