docs(plans): add combinatorial name suggestions milestone
This commit is contained in:
@@ -66,7 +66,6 @@ typedef struct {
|
||||
size_t outgoing_head;
|
||||
size_t outgoing_count;
|
||||
uint32_t server_sequence;
|
||||
unsigned int suggestion_index;
|
||||
esp_timer_handle_t countdown_timer;
|
||||
esp_timer_handle_t reconnect_timer;
|
||||
esp_timer_handle_t finish_timer;
|
||||
|
||||
@@ -15,9 +15,6 @@
|
||||
#include "maze32_protocol.h"
|
||||
|
||||
static const char* TAG = "maze32_gateway";
|
||||
static const char* NAME_SUGGESTIONS[] = {
|
||||
"Байт-Беглец", "Кот-Навигатор", "Сэр Тупичок", "Пиксельный Ёж", "Лорд Лабиринт",
|
||||
};
|
||||
|
||||
static uint64_t now_ms(void) {
|
||||
return (uint64_t)(esp_timer_get_time() / 1000);
|
||||
@@ -517,52 +514,6 @@ static void send_lobby_error(maze32_gateway_t* gateway, int socket_fd, const cha
|
||||
}
|
||||
}
|
||||
|
||||
static void send_suggestion(maze32_gateway_t* gateway, int socket_fd, const char* request_id) {
|
||||
const char* suggestion = NULL;
|
||||
size_t suggestion_count = sizeof(NAME_SUGGESTIONS) / sizeof(NAME_SUGGESTIONS[0]);
|
||||
for (size_t attempt = 0U; attempt < suggestion_count; ++attempt) {
|
||||
size_t index = gateway->suggestion_index++ % suggestion_count;
|
||||
int occupied = 0;
|
||||
for (size_t session_index = 0U; session_index < MAZE32_SESSION_LIMIT; ++session_index) {
|
||||
const maze32_session_t* session = &gateway->lobby.sessions[session_index];
|
||||
if (session->role == MAZE32_ROLE_PLAYER &&
|
||||
strcmp(session->name, NAME_SUGGESTIONS[index]) == 0) {
|
||||
occupied = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!occupied) {
|
||||
suggestion = NAME_SUGGESTIONS[index];
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (suggestion == NULL) {
|
||||
send_error(gateway, socket_fd, request_id, "no_suggestion",
|
||||
"Все смешные имена уже разобрали");
|
||||
return;
|
||||
}
|
||||
char response[MAZE32_GATEWAY_OUTGOING_LIMIT] = "";
|
||||
size_t length = 0U;
|
||||
char prefix[128];
|
||||
int written =
|
||||
snprintf(prefix, sizeof(prefix), "{\"v\":1,\"type\":\"name_suggestion\",\"seq\":%" PRIu32,
|
||||
next_server_sequence(gateway));
|
||||
if (written < 0 || (size_t)written >= sizeof(prefix) ||
|
||||
!append_text(response, sizeof(response), &length, prefix)) {
|
||||
return;
|
||||
}
|
||||
if (request_id[0] != '\0' &&
|
||||
(!append_text(response, sizeof(response), &length, ",\"requestId\":") ||
|
||||
!append_json_string(response, sizeof(response), &length, request_id))) {
|
||||
return;
|
||||
}
|
||||
if (append_text(response, sizeof(response), &length, ",\"payload\":{\"name\":") &&
|
||||
append_json_string(response, sizeof(response), &length, suggestion) &&
|
||||
append_text(response, sizeof(response), &length, "}}")) {
|
||||
enqueue(gateway, socket_fd, response);
|
||||
}
|
||||
}
|
||||
|
||||
static void broadcast_countdown(maze32_gateway_t* gateway) {
|
||||
char response[MAZE32_GATEWAY_OUTGOING_LIMIT];
|
||||
int written = snprintf(response, sizeof(response),
|
||||
@@ -904,10 +855,6 @@ static void handle_restart(maze32_gateway_t* gateway, const maze32_session_t* se
|
||||
static void handle_message(maze32_gateway_t* gateway, maze32_gateway_connection_t* connection,
|
||||
const maze32_client_message_t* message) {
|
||||
int socket_fd = connection->socket_fd;
|
||||
if (message->type == MAZE32_MESSAGE_SUGGEST_NAME) {
|
||||
send_suggestion(gateway, socket_fd, message->request_id);
|
||||
return;
|
||||
}
|
||||
if (message->type == MAZE32_MESSAGE_JOIN) {
|
||||
if (maze32_lobby_session_for_connection(&gateway->lobby, socket_fd) != NULL) {
|
||||
send_error(gateway, socket_fd, message->request_id, "already_joined",
|
||||
|
||||
Reference in New Issue
Block a user