Лобби: комнаты на сервере (C++) и UI на клиенте
Сервер: Lobby/Room/Player — create/join/leave/list_rooms, broadcast обновлений, проверка авторизации (hello) и состояния комнаты (waiting/full/in_progress). Клиент: полноценный UI лобби (создание, список, вход в комнату, выход), блокировка кнопок до установки WS-соединения. nginx: no-cache для JS/CSS (нет хеширования имён файлов).
This commit is contained in:
+90
-1
@@ -1 +1,90 @@
|
||||
/* TODO: лобби и игровое поле — этапы 3-6 */
|
||||
.lobby-panel {
|
||||
border: var(--border);
|
||||
background: var(--color-bg-raised);
|
||||
padding: 1.25rem 1.5rem;
|
||||
margin: 1.5rem 0;
|
||||
max-width: 640px;
|
||||
}
|
||||
|
||||
.lobby-panel__row {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.75rem;
|
||||
margin-bottom: 1rem;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.prompt-inline {
|
||||
color: var(--color-accent-dim);
|
||||
}
|
||||
|
||||
.lobby-panel input {
|
||||
background: var(--color-bg);
|
||||
border: 1px solid var(--color-accent-dim);
|
||||
color: var(--color-fg);
|
||||
font-family: var(--font-mono);
|
||||
padding: 0.3rem 0.5rem;
|
||||
}
|
||||
|
||||
.lobby-panel button {
|
||||
background: transparent;
|
||||
border: 1px solid var(--color-accent-dim);
|
||||
color: var(--color-accent);
|
||||
font-family: var(--font-mono);
|
||||
padding: 0.35rem 0.75rem;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.lobby-panel button:hover:not(:disabled) {
|
||||
border-color: var(--color-accent);
|
||||
box-shadow: 0 0 6px var(--color-accent-dim);
|
||||
}
|
||||
|
||||
.lobby-panel button:disabled {
|
||||
opacity: 0.4;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
|
||||
.lobby-error {
|
||||
color: var(--color-silver);
|
||||
border-left: 2px solid var(--color-accent-dim);
|
||||
padding-left: 0.6rem;
|
||||
margin: 0 0 1rem;
|
||||
}
|
||||
|
||||
.room-list,
|
||||
.room-players {
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 0.5rem;
|
||||
}
|
||||
|
||||
.room-list__item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.75rem;
|
||||
border-bottom: var(--border);
|
||||
padding-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
.room-list__name {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.room-list__count,
|
||||
.room-list__state {
|
||||
color: var(--color-silver);
|
||||
font-size: 0.85rem;
|
||||
}
|
||||
|
||||
.room-list__empty {
|
||||
color: var(--color-silver);
|
||||
}
|
||||
|
||||
.room-players li::before {
|
||||
content: '- ';
|
||||
color: var(--color-accent-dim);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user