POST /api/rooms
body: {}
return: 200 room: Room
⬆: Events to emit
⬇: Events to subscribe
⬇ connected => {me: Player, game:Game}
⬇ connect_error => error: Error
⬇ playerJoined => player: Player
⬇ playerLeft => player: Player
⬇ hostChanged => host: Player
⬇ roomDeleted => undefined
⬆ startGame => gameSettings : GameSettings Host Privileges
=> Ack(error){} # will send an ack error if something went wrong on server
⬇ gameStarted => gameSettings : GameSettings
⬇ newTurn => { turn: Number, availableRounds: Number, score: Score, wordChoices: [String] } Turn Privileges
OR
{ turn: Number, availableRounds: Number, score: Score }
⬆ chooseWord => word: string
⬇ wordChoosen => word: string # word is hidden for players with no turn priviledges
⬇ drawTimerStarted => undefined
⬇ drawTimerUpdated => timeLeft: number # in seconds
⬇ drawTimerEnded => undefined
⬇ gameover => score : Score
⬆ updateBoard => { action: String, ...params } Turn Privileges
⬇ boardUpdated => { action: String, ...params } # draw line or change any of the draw settings
⬆ updateProfile => { nickname: String, avatar: [Number] } # this event is limited to non running game states
⬇ profileUpdated => player: Player # this event is limited to non running game states
⬆ sendReact => { target: Number, reactId: Number }
⬇ reactSent => { source: Number, target: Number, reactId: Number }
⬆ guessWord => word: string => { correct: Bool, close: Bool }
⬇ wordGuessed => { name: String, correct: Bool, close?: Bool, word?: String } # word should be null in case of correct guess
Room {
id: String,
link: String,
hostId: String
}
Player {
id: String,
nickname: String,
isHost: Bool,
gameData:{
hintsLeft: number,
score: number
}
}
GameSettings {
rounds: Number,
drawTime: Number
}
Game {
...gameSettings,
state: String, # created, running, ended
turn: Number,
availableRounds: Number,
players: [Player]
}
Score {
...
[playerId]: Number
...
}
⬆: Events to emit
⬇: Events to listen on
⬆ requestWordHint => index: Number => { letter: char }
Room {
id: String,
link: String,
hostId: String
}
Player {
id: String,
nickname: String,
isHost: Bool,
gameData:{
hintsLeft: number,
score: number
}
}
GameSettings {
rounds: Number,
drawTime: Number
}
Game {
...gameSettings,
state: String, # created, running, ended
turn: Number,
availableRounds: Number,
players: [Player]
}
Score {
...
[playerId]: Number
...
}