Commit 28d44104 authored by Vũ Gia Vương's avatar Vũ Gia Vương

todo fix pos player

parent 798b39ca
......@@ -10,9 +10,9 @@ class User {
public totalScore: number = 0;
public combo: number = 0;
public curBlock: v2 = v2.zero;
public nextBlock: v2 = v2.zero;
public screenPos: v2 = v2.zero;
public curBlock: v2 = new v2(0,0);
public nextBlock: v2 = new v2(0,0);
public screenPos: v2 = new v2(0,0);
public timeStart: number = 0;
public isEndGame: boolean = true;
......
class v2 {
public x: number = 0;
public y: number = 0;
public static zero = new v2(0, 0);
constructor(x?: number, y?: number) {
this.x = x || 0;
......
......@@ -6,7 +6,7 @@ import { endGameApi, startGameApi } from "./Controller/networkCtrl";
const users: Map<string, User> = new Map<string, User>();
const Y_RATIO: number = 0.5560472;
const DISTANCE_BLOCK: number = 56.43580423808985;
const HALF_SIZE_BLOCK: number = 56.43580423808985;
export function setupSocket(io: Server) {
......@@ -22,7 +22,7 @@ export function setupSocket(io: Server) {
console.log(`🟢 Client connected: ${socket.id}`);
socket.on(CONFIG.EVT.START_GAME, (data: string) => startGame(socket, data));
socket.on(CONFIG.EVT.PASS_TOWER, async (data: { nextPos: v2, time: number, distance: number }) => await passTower(socket, data));
socket.on(CONFIG.EVT.PASS_TOWER, async (data: { playerPos: v2, time: number, distance: number }) => await passTower(socket, data));
socket.on(CONFIG.EVT.HISTORY, async () => getHistory(socket));
socket.on("disconnect", () => onDisconnect(socket));
......@@ -32,11 +32,12 @@ export function setupSocket(io: Server) {
function onDisconnect(socket: Socket): void {
console.log(`🔴 Client disconnected: ${socket.id}`)
const user = getUserBySocket(socket);
user.reset();
if (user?.isEndGame) {
return;
}
endGameApi(user);
user.reset();
}
async function getHistory(socket: Socket) {
......@@ -58,23 +59,23 @@ async function startGame(socket: Socket, data: any) {
}
}
async function passTower(socket: Socket, data: { nextPos: v2, distance: number }) {
console.log('distance', data.distance)
async function passTower(socket: Socket, data: { playerPos: v2, distance: number }) {
console.log('distance', data.distance, 'playerPos', data.playerPos)
const user = getUserBySocket(socket);
// const lastDis = user.curBlock.distanceTo(data.nextPos);
// const distance = Math.abs(lastDis - user.distance2Tower);
let score = 0
const distancePlayer2NextBlock = new v2(data.playerPos.x, data.playerPos.y).distanceTo(user.nextBlock);
console.log('distancePlayer2NextBlock', distancePlayer2NextBlock, 'user.distance2Tower', user.distance2Tower)
const distance = Math.abs(data.distance - user.distance2Tower);
// const distance = Math.abs(data.distance - distancePlayer2NextBlock);
if (distance < DISTANCE_BLOCK * 0.8) {
if (distance < HALF_SIZE_BLOCK * 0.8) {
score = 1;
}
if (distance <= DISTANCE_BLOCK / 3) {
if (distance <= HALF_SIZE_BLOCK / 3) {
score = 2;
}
if (distance > DISTANCE_BLOCK * 0.8 && distance <= DISTANCE_BLOCK * 1.2) {
if (distance > HALF_SIZE_BLOCK * 0.8 && distance <= HALF_SIZE_BLOCK * 1.2) {
score = -1;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment