leaky-ships/leaky-ships/components/Lobby/LobbyFrame.tsx
2023-02-08 20:17:02 +01:00

61 lines
1.9 KiB
TypeScript

import { useEffect, useState } from "react"
import Settings from "../SettingsFrame/Settings"
import Icon from "./Icon"
import Player from "./Player"
function LobbyFrame() {
const [settings, setSettings] = useState(false)
const [enemy, setEnemy] = useState(false)
const [dots, setDots] = useState(0)
useEffect(() => {
if (enemy) return
const interval = setInterval(() => setDots((e) => (e % 3) + 1), 1000)
return () => clearInterval(interval)
}, [])
return (
<div className="mx-32 flex flex-col self-stretch rounded-3xl bg-gray-400">
<div className="flex items-center justify-between border-b-2 border-slate-900">
<Icon src="speech_bubble.png" text="Chat" />
<h1 className="font-farro text-5xl font-medium">
Game-PIN: <span className="underline">3169</span>
</h1>
<Icon
src="gear.png"
text="Settings"
onClick={() => setSettings(true)}
/>
</div>
<div className="flex items-center justify-around">
<Player
src="player_blue.png"
text="Spieler 1 (Du)"
primary={true}
edit={true}
/>
<p
className="font-farro m-4 text-6xl font-semibold"
onClick={() => setEnemy((e) => !e)}
>
VS
</p>
{enemy ? (
<Player src="player_red.png" text="Spieler 2" />
) : (
<p className="font-farro m-12 w-64 text-center text-5xl font-medium">
Warte auf Spieler 2 {Array.from(Array(dots), () => ".").join("")}
</p>
)}
</div>
<div className="flex items-center justify-center border-t-2 border-slate-900">
<button className="font-farro m-8 rounded-xl bg-amber-400 px-12 py-4 text-5xl font-medium">
START
</button>
</div>
{settings ? <Settings closeSettings={() => setSettings(false)} /> : <></>}
</div>
)
}
export default LobbyFrame