import { Auth } from "./modules/auth.js";
import { Socket } from "./modules/socket.js";
+import { SplashScreen } from "./modules/splash.js";
const sockets = [];
window.onload = function() {
const container = document.getElementById("game-tile-background");
+ const splash_container = document.getElementById("splash-background");
+ const splash = new SplashScreen(splash_container);
sockets.push(new Socket(container, login));
sockets[0].show_login();
};
--- /dev/null
+import { create_svg_element } from "./svg.js";
+import { card_href, FIFTY_TWO_CARD_DECK } from "./card.js";
+import { random_int } from "./random.js";
+
+export class SplashScreen {
+ constructor(container) {
+ this.container = container;
+ this.svg = create_svg_element(container, "svg", ["splash-screen"], [["viewBox", "0 0 2000 500"]]);
+ this.hidden = false;
+
+ this.upper_bar = create_svg_element(this.svg, "rect", ["splash-upper-bar"], [["x", "0"], ["y", "0"], ["width", "2000"], ["height", "100"], ["fill", "blue"]]);
+ this.banner = create_svg_element(this.svg, "rect", [], [["x", "0"], ["y", "100"], ["width", "2000"], ["height", "300"], ["fill", "skyblue"]]);
+ this.lower_bar = create_svg_element(this.svg, "rect", ["splash-lower-bar"], [["x", "0"], ["y", "400"], ["width", "2000"], ["height", "100"], ["fill", "blue"]]);
+
+ this.logo = create_svg_element(this.svg, "text", ["splash-logo"], [["x", "1000"], ["y", "250"]]);
+ this.logo_text = document.createTextNode("POKERWAVE");
+ this.logo.append(this.logo_text);
+
+ this.svg.onclick = () => this.hide();
+ }
+
+ hide() {
+ if (!this.hidden) {
+ this.hidden = true;
+ this.container.classList.add("no-pointer");
+ this.upper_bar.classList.add("retract");
+ this.banner.classList.add("hidden");
+ this.lower_bar.classList.add("retract");
+ this.logo.classList.add("hidden");
+ }
+ }
+}
@import url("style/chatroom.css");
@import url("style/cribbage.css");
@import url("style/poker.css");
+@import url("style/splash.css");
@import url("style/whist.css");
@import url("style/winner.css");
display: none !important;
}
+.no-pointer {
+ pointer-events: none;
+}
+
#game-tile-background {
width: 100%;
height: 100%;
overflow: clip;
background-color: #404040;
}
+
+#splash-background {
+ width: 700%;
+ height: 100%;
+ display: grid;
+ grid: 1fr / 1fr;
+ top: 0;
+ left: -300%;
+ position: absolute;
+ overflow: clip;
+}
--- /dev/null
+.splash-screen {
+ height: 100%;
+ min-height: 1vh;
+ min-width: 1vw;
+}
+
+@keyframes fade-in {
+ from { opacity: 0%; }
+ to { opacity: 100%; }
+}
+
+.splash-logo {
+ animation: fade-in 3s;
+ font-size: 30pt;
+ text-anchor: middle;
+ dominant-baseline: middle;
+ font-family: monospace;
+}
+
+.splash-upper-bar {
+ transform: none;
+ transition: transform 1s;
+}
+
+.splash-upper-bar.retract {
+ transform: translateY(-100px);
+}
+
+.splash-lower-bar {
+ transform: none;
+ transition: transform 1s;
+}
+
+.splash-lower-bar.retract {
+ transform: translateY(100px);
+}