parent
509b1cfdc5
commit
8482deb7e5
@ -0,0 +1,79 @@ |
||||
import React, {useEffect, useRef, useState} from "react"; |
||||
import {Row} from "antd"; |
||||
import NextShot from "./components/NextShot"; |
||||
import Feed from "./components/Feed"; |
||||
import ShotsTaken from "./components/ShotsTaken"; |
||||
import Lobby from "./components/Lobby"; |
||||
import {useSocket} from "use-socketio"; |
||||
import logo from "./via-logo.svg"; |
||||
import {Tick} from "./types/types"; |
||||
import {NumberParam, useQueryParam} from "use-query-params"; |
||||
|
||||
const Wrapper = () => { |
||||
const [started, setStarted] = useState(false); |
||||
const [wantsToStart, setWantsToStart] = useState(false); |
||||
const player = useRef(new Audio("centurion.m4a")); |
||||
const [noSound] = useQueryParam('noSound', NumberParam); |
||||
|
||||
function goStart() { |
||||
console.log("Starting from wrapper.."); |
||||
setWantsToStart(true); |
||||
} |
||||
|
||||
|
||||
const {socket} = useSocket("started", async (obj: any) => { |
||||
console.log("got started"); |
||||
setStarted(true); |
||||
|
||||
if (typeof noSound === 'undefined') { |
||||
await player.current.play(); |
||||
} |
||||
}); |
||||
|
||||
useEffect(() => { |
||||
if (noSound === 1) { |
||||
// Won't play sound so we don't get DOM Interaction errors.
|
||||
setWantsToStart(true); |
||||
} |
||||
}, []); |
||||
|
||||
useSocket("tick_event", async (tick: Tick) => { |
||||
if (!started && wantsToStart) { |
||||
if (player.current.paused) { |
||||
if (typeof noSound === 'undefined') { |
||||
await player.current.play(); |
||||
} |
||||
} |
||||
|
||||
setStarted(true); |
||||
player.current.currentTime = tick.current; |
||||
} |
||||
}); |
||||
|
||||
const feedContent = ( |
||||
<Row> |
||||
<NextShot/> |
||||
<Feed/> |
||||
<ShotsTaken/> |
||||
</Row> |
||||
); |
||||
|
||||
const lobbyContent = ( |
||||
<Lobby start={goStart}/> |
||||
); |
||||
|
||||
const content = started ? feedContent : lobbyContent; |
||||
|
||||
return ( |
||||
<> |
||||
<section className="content"> |
||||
{content} |
||||
</section> |
||||
<footer> |
||||
<img src={logo} className="via-logo" alt="logo"/> |
||||
</footer> |
||||
</> |
||||
); |
||||
}; |
||||
|
||||
export default Wrapper; |
Loading…
Reference in new issue