WIP, tout est en chantier, très content :)

This commit is contained in:
LuckyLaszlo
2022-11-20 15:46:45 +01:00
parent 023b5ed485
commit 48665cfe30
22 changed files with 580 additions and 302 deletions

View File

@@ -1,64 +1,81 @@
import * as g from "./global.js" // temp
import {startGame} from "./pong.js";
import {EventTypes, EventData, EventGameUpdate} from "../shared_js/class/Event.js"
import {pong, gc} from "./global.js"
import * as ev from "../shared_js/class/Event.js"
import {matchmaking, matchmakingComplete} from "./pong.js";
import * as en from "../shared_js/enums.js"
import { Racket } from "../shared_js/class/Rectangle.js";
const wsPort = 8042;
const wsUrl = "ws://" + document.location.hostname + ":" + wsPort + "/pong";
const socket = new WebSocket(wsUrl, "json");
socket.addEventListener("message", logListener);
socket.addEventListener("message", matchmakingListener);
function logListener(event: MessageEvent) {
console.log("data: " + event.data + " | [" + Date.now() + "]");
class ClientInfo {
id = "";
side: en.PlayerSide;
racket: Racket;
}
function matchmakingListener(event: MessageEvent)
{
console.log("matchmakingListener");
const data: EventData = JSON.parse(event.data);
if (data.type == EventTypes.start)
{
console.log("Event type = start");
socket.removeEventListener("message", matchmakingListener);
socket.addEventListener("message", inGameListener);
startGame();
export const clientInfo = new ClientInfo();
socket.addEventListener("open", (event) => {
socket.send(JSON.stringify( new ev.ClientAnnounce(en.ClientRole.player, clientInfo.id) ));
});
socket.addEventListener("message", logListener);
socket.addEventListener("message", preMatchListener);
function logListener(this: WebSocket, event: MessageEvent) {
console.log("%i: " + event.data, Date.now());
}
function preMatchListener(this: WebSocket, event: MessageEvent) {
const data: ev.ServerEvent = JSON.parse(event.data);
switch (data.type) {
case en.EventTypes.assignId:
clientInfo.id = (<ev.EventAssignId>data).id;
break;
case en.EventTypes.matchmakingInProgress:
matchmaking();
break;
case en.EventTypes.matchmakingComplete:
clientInfo.side = (<ev.EventMatchmakingComplete>data).side;
if (clientInfo.side === en.PlayerSide.left) {
clientInfo.racket = gc.playerLeft;
}
else if (clientInfo.side === en.PlayerSide.right) {
clientInfo.racket = gc.playerRight;
}
socket.removeEventListener("message", preMatchListener);
socket.addEventListener("message", inGameListener);
socket.send(JSON.stringify( new ev.ClientEvent(en.EventTypes.clientPlayerReady) ));
matchmakingComplete();
break;
}
}
function inGameListener(event: MessageEvent)
{
console.log("inGameListener");
const data: EventData = JSON.parse(event.data);
const data: ev.ServerEvent = JSON.parse(event.data);
switch (data.type) {
case EventTypes.gameUpdate:
console.log("Event type = gameUpdate");
serverGameUpdate(data as EventGameUpdate);
case en.EventTypes.gameUpdate:
console.log("gameUpdate");
serverGameUpdate(data as ev.EventGameUpdate);
break;
case EventTypes.pause:
console.log("Event type = pause");
break;
case EventTypes.resume:
console.log("Event type = resume");
case en.EventTypes.matchNewRound:
console.log("matchNewRound//WIP");
break;
}
}
function serverGameUpdate(data: EventGameUpdate)
function serverGameUpdate(data: ev.EventGameUpdate)
{
g.player1.clear();
g.player1.pos.y = Math.floor(data.player1.y);
g.player1.update();
gc.playerLeft.clear();
gc.playerLeft.pos.y = Math.floor(data.playerLeft.y);
gc.playerLeft.update();
g.player2.clear();
g.player2.pos.y = Math.floor(data.player2.y);
g.player2.update();
gc.playerRight.clear();
gc.playerRight.pos.y = Math.floor(data.playerRight.y);
gc.playerRight.update();
}
// socket.addEventListener("open", (event) => {
// console.log("socket state %i", socket.readyState);
// });
export {socket}