M starkingdoms-client/index.html => starkingdoms-client/index.html +35 -26
@@ 1,43 1,52 @@
<!doctype html>
<html lang="en">
- <head>
- <meta charset="UTF-8" />
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
- <link rel="stylesheet" href="/style.css" />
- <link rel="stylesheet" href="/themes/catppuccin-mocha/colors.css" />
+<head>
+ <meta charset="UTF-8"/>
+ <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
+ <link rel="stylesheet" href="/style.css"/>
+ <link rel="stylesheet" href="/themes/catppuccin-mocha/colors.css"/>
<title>StarKingdoms</title>
- </head>
- <body class="bg-grid">
- <div class="popup" id="server_selector">
+</head>
+<body class="bg-grid">
+<div class="popup" id="server_selector">
- <h1>StarKingdoms</h1>
- <h2>Join Game</h2>
+ <h1>StarKingdoms</h1>
+ <h2>Join Game</h2>
- <form id="join-fm">
+ <form id="join-fm">
<label>Choose server</label>
<div class="fm-select">
- <button class="fm-select-button" role="combobox" aria-labelledby="server selector" aria-haspopup="listbox" aria-expanded="false" aria-controls="fm-select-dropdown">
- <span class="fm-selected-value">StarKingdoms - 0 players</span>
- <span class="fm-arrow"></span>
- </button>
- <ul class="fm-select-dropdown" role="listbox" id="fm-select-dropdown">
- <!-- Filled by TS -->
- </ul>
+ <button class="fm-select-button" role="combobox" aria-labelledby="server selector" aria-haspopup="listbox"
+ aria-expanded="false" aria-controls="fm-select-dropdown">
+ <span class="fm-selected-value">StarKingdoms - 0 players</span>
+ <span class="fm-arrow"></span>
+ </button>
+ <ul class="fm-select-dropdown" role="listbox" id="fm-select-dropdown">
+ <!-- Filled by TS -->
+ </ul>
</div>
<label for="username" class="username-label">Username</label>
<input class="username-box" id="username" required autocomplete="off"/>
<button id="launch-btn" class="launch-btn">Launch!</button>
- </form>
- </div>
+ <span id="server-danger" class="server-danger hidden">
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="server-danger-icon">
+ <path fill-rule="evenodd"
+ d="M8.485 2.495c.673-1.167 2.357-1.167 3.03 0l6.28 10.875c.673 1.167-.17 2.625-1.516 2.625H3.72c-1.347 0-2.189-1.458-1.515-2.625L8.485 2.495zM10 5a.75.75 0 01.75.75v3.5a.75.75 0 01-1.5 0v-3.5A.75.75 0 0110 5zm0 9a1 1 0 100-2 1 1 0 000 2z"
+ clip-rule="evenodd"/>
+</svg>
+Here be dragons! You have a <b>prerelease server</b> selected. Expect bugs, and save data on this server may be wiped at any time.
+ </span>
+ </form>
+</div>
- <div id="gamewindow" class="game">
- <!-- Canvas gets added here by the game script -->
- </div>
+<div id="gamewindow" class="game">
+ <!-- Canvas gets added here by the game script -->
+</div>
- <span class="footer" id="footer"></span>
+<span class="footer" id="footer"></span>
- <script type="module" src="src/main.ts"></script>
- </body>
+<script type="module" src="src/main.ts"></script>
+</body>
</html>
M starkingdoms-client/public/form.css => starkingdoms-client/public/form.css +16 -1
@@ 135,4 135,19 @@
opacity: 1;
visibility: visible;
/*transform: scaleY(1);*/
-}>
\ No newline at end of file
+}
+.server-danger {
+ display: block;
+ margin-top: 1vh;
+ color: var(--error);
+ font-size: 0.875rem;
+ line-height: 1.25rem;
+}
+.server-danger.hidden {
+ display: none;
+}
+.server-danger-icon {
+ height: 1.25rem;
+ vertical-align: middle;
+ display: inline-block;
+}
M starkingdoms-client/src/config.json => starkingdoms-client/src/config.json +5 -5
@@ 1,8 1,8 @@
{
"servers": {
- "stk-prod": {"name": "StarKingdoms", "url": "wss://starkingdoms.io/", "api": "https://api.starkingdoms.io"},
- "stk-beta": {"name": "StarKingdoms Beta", "url": "wss://beta.starkingdoms.io/", "api": "https://api.beta.starkingdoms.io"},
- "stk-unstable": {"name": "StarKingdoms Unstable", "url": "wss://unstable.starkingdoms.io/", "api": "https://api.unstable.starkingdoms.io"},
- "dev": {"name": "Local", "url": "ws://localhost:3000/", "api": "http://localhost:8080"}
+ "stk-prod": {"name": "StarKingdoms", "url": "wss://starkingdoms.io/", "api": "https://api.starkingdoms.io", "prod": true},
+ "stk-beta": {"name": "StarKingdoms Beta", "url": "wss://beta.starkingdoms.io/", "api": "https://api.beta.starkingdoms.io", "prod": false},
+ "stk-unstable": {"name": "StarKingdoms Unstable", "url": "wss://unstable.starkingdoms.io/", "api": "https://api.unstable.starkingdoms.io", "prod": false},
+ "dev": {"name": "Local", "url": "ws://localhost:3000/", "api": "http://localhost:8080", "prod": false}
}
-}>
\ No newline at end of file
+}
M starkingdoms-client/src/main.ts => starkingdoms-client/src/main.ts +8 -2
@@ 69,6 69,12 @@ options_list.forEach((option) => {
selected_value.textContent = this.textContent;
custom_select.classList.remove("active");
}
+ // @ts-ignore
+ if (!CONFIG.servers[inverse_server_lookup[selected_value.textContent]].prod) {
+ document.getElementById("server-danger")!.classList.remove("hidden");
+ } else {
+ document.getElementById("server-danger")!.classList.add("hidden");
+ }
}
option.addEventListener("keyup", handler);
option.addEventListener("click", handler);
@@ 95,11 101,11 @@ document.getElementById("join-fm")!.addEventListener("submit", async (e) => {
logger(`connecting to ${server.url} as ${username} with auth = none`);
- global.client = await gateway_connect(server.url);
+ global.client = await gateway_connect(server.url, username);
} catch (e) {
setStatus("Connection failed!");
console.error(e);
(<HTMLButtonElement>custom_select_btn).disabled = false;
(<HTMLInputElement>document.getElementById("username")!).disabled = false;
}
-})>
\ No newline at end of file
+})