- Replace socket.io relay with Colyseus 0.15 authoritative server - GameRoom with GameState schema (players, units, resources) - Pure TS services: CombatResolver, EconomyService, PathfindingService, UnitManager - POST /api/create-room → 4-char invite code - React/MUI LobbyScreen: Create (shows code + START GAME) / Join by code - ColyseusClient: joinOrCreate/join by room type = invite code - Nginx: static assets direct, all else proxied to Colyseus (WS upgrade) - Content-hashed JS bundles for Cloudflare cache-busting - 1-player lobbies: START GAME button bypasses 2-player wait
79 lines
1001 B
CSS
79 lines
1001 B
CSS
|
|
|
|
/**
|
|
* Body CSS
|
|
* Docs: https://www.muicss.com/docs/v1/css-js/container
|
|
*/
|
|
html,
|
|
body {
|
|
height: 100%;
|
|
}
|
|
|
|
html,
|
|
body,
|
|
input,
|
|
textarea,
|
|
button {
|
|
-webkit-font-smoothing: antialiased;
|
|
-moz-osx-font-smoothing: grayscale;
|
|
text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.004);
|
|
}
|
|
|
|
|
|
/**
|
|
* Header CSS
|
|
*/
|
|
header {
|
|
position: fixed;
|
|
top: 0;
|
|
right: 0;
|
|
left: 0;
|
|
z-index: 2;
|
|
}
|
|
|
|
header ul.mui-list--inline {
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
header a {
|
|
color: white;
|
|
}
|
|
|
|
header table {
|
|
width: 100%;
|
|
}
|
|
|
|
|
|
/**
|
|
* Content CSS
|
|
*/
|
|
#content-wrapper {
|
|
min-height: 100%;
|
|
|
|
/* sticky footer */
|
|
box-sizing: border-box;
|
|
margin-bottom: -100px;
|
|
padding-bottom: 100px;
|
|
padding-top: 100px;
|
|
}
|
|
|
|
|
|
/**
|
|
* Footer CSS
|
|
*/
|
|
footer {
|
|
box-sizing: border-box;
|
|
height: 100px;
|
|
background-color: #eee;
|
|
border-top: 1px solid #e0e0e0;
|
|
padding-top: 35px;
|
|
}
|
|
|
|
/**
|
|
* Lobby screen styles
|
|
*/
|
|
#root:has(.lobby-container) {
|
|
height: 100%;
|
|
overflow: hidden;
|
|
}
|