summaryrefslogtreecommitdiff
path: root/client/src/main.ts
diff options
context:
space:
mode:
authorTyler Murphy <tylerm@tylerm.dev>2023-06-16 20:38:55 -0400
committerTyler Murphy <tylerm@tylerm.dev>2023-06-16 20:38:55 -0400
commit44334fc3852eb832280a335f72e6416c93a9f19f (patch)
tree4a97b6064a97c4ad58c07d89050ad8a11e7a4f70 /client/src/main.ts
parentbetter map bg renderer (diff)
downloadtuxman-44334fc3852eb832280a335f72e6416c93a9f19f.tar.gz
tuxman-44334fc3852eb832280a335f72e6416c93a9f19f.tar.bz2
tuxman-44334fc3852eb832280a335f72e6416c93a9f19f.zip
ts
Diffstat (limited to '')
-rw-r--r--client/src/main.ts75
1 files changed, 75 insertions, 0 deletions
diff --git a/client/src/main.ts b/client/src/main.ts
new file mode 100644
index 0000000..a6cc3ba
--- /dev/null
+++ b/client/src/main.ts
@@ -0,0 +1,75 @@
+import { Game } from "./net/game.js";
+import { InitialState, onLogic } from "./logic/logic.js";
+import { startGraphicsUpdater } from "./renderer.js";
+import { GameKeyMap, Frame, Key } from "./types.js";
+
+const join = document.getElementById("join")
+const lobby = document.getElementById("lobby")
+lobby.style.display = "none"
+
+join.onsubmit = async function(event) {
+ event.preventDefault()
+
+ const room_code = this.elements.room_code.value.trim()
+ const player_name = this.elements.name.value.trim()
+
+ if (room_code == '') {
+ alert('Please enter a room code')
+ return
+ }
+
+ if (player_name == '') {
+ alert('Please enter a player name')
+ return
+ }
+
+ join.style.display = "none"
+
+ startGame(room_code, player_name)
+}
+
+const updateGraphics = startGraphicsUpdater()
+
+const onLoad = (startData: Frame) => {
+
+ if (startData.data.started) {
+ alert('Room has already started')
+ return false
+ }
+
+ let players = Object.values(startData.data.players).filter(p => { return p !== null && p.name !== undefined })
+ if (players.length >= 4) {
+ alert('Room is full')
+ return false
+ }
+
+ lobby.style.display = ""
+
+ return true
+}
+
+const onFrame = (data: Frame, frame: number) => {
+
+ updateGraphics(data ? data.data : InitialState, frame);
+
+}
+
+
+const startGame = (code: string, name: string) => {
+
+ const game = new Game(3000)
+
+ game.start(
+ code,
+ GameKeyMap,
+ onLoad,
+ onFrame,
+ onLogic,
+ {
+ start: false,
+ key: Key.NOTHING,
+ name
+ }
+ )
+
+}