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 { ...@@ -10,9 +10,9 @@ class User {
public totalScore: number = 0; public totalScore: number = 0;
public combo: number = 0; public combo: number = 0;
public curBlock: v2 = v2.zero; public curBlock: v2 = new v2(0,0);
public nextBlock: v2 = v2.zero; public nextBlock: v2 = new v2(0,0);
public screenPos: v2 = v2.zero; public screenPos: v2 = new v2(0,0);
public timeStart: number = 0; public timeStart: number = 0;
public isEndGame: boolean = true; public isEndGame: boolean = true;
......
class v2 { class v2 {
public x: number = 0; public x: number = 0;
public y: number = 0; public y: number = 0;
public static zero = new v2(0, 0);
constructor(x?: number, y?: number) { constructor(x?: number, y?: number) {
this.x = x || 0; this.x = x || 0;
......
...@@ -6,7 +6,7 @@ import { endGameApi, startGameApi } from "./Controller/networkCtrl"; ...@@ -6,7 +6,7 @@ import { endGameApi, startGameApi } from "./Controller/networkCtrl";
const users: Map<string, User> = new Map<string, User>(); const users: Map<string, User> = new Map<string, User>();
const Y_RATIO: number = 0.5560472; const Y_RATIO: number = 0.5560472;
const DISTANCE_BLOCK: number = 56.43580423808985; const HALF_SIZE_BLOCK: number = 56.43580423808985;
export function setupSocket(io: Server) { export function setupSocket(io: Server) {
...@@ -22,7 +22,7 @@ export function setupSocket(io: Server) { ...@@ -22,7 +22,7 @@ export function setupSocket(io: Server) {
console.log(`🟢 Client connected: ${socket.id}`); console.log(`🟢 Client connected: ${socket.id}`);
socket.on(CONFIG.EVT.START_GAME, (data: string) => startGame(socket, data)); 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(CONFIG.EVT.HISTORY, async () => getHistory(socket));
socket.on("disconnect", () => onDisconnect(socket)); socket.on("disconnect", () => onDisconnect(socket));
...@@ -32,11 +32,12 @@ export function setupSocket(io: Server) { ...@@ -32,11 +32,12 @@ export function setupSocket(io: Server) {
function onDisconnect(socket: Socket): void { function onDisconnect(socket: Socket): void {
console.log(`🔴 Client disconnected: ${socket.id}`) console.log(`🔴 Client disconnected: ${socket.id}`)
const user = getUserBySocket(socket); const user = getUserBySocket(socket);
user.reset();
if (user?.isEndGame) { if (user?.isEndGame) {
return; return;
} }
endGameApi(user); endGameApi(user);
user.reset();
} }
async function getHistory(socket: Socket) { async function getHistory(socket: Socket) {
...@@ -58,23 +59,23 @@ async function startGame(socket: Socket, data: any) { ...@@ -58,23 +59,23 @@ async function startGame(socket: Socket, data: any) {
} }
} }
async function passTower(socket: Socket, data: { nextPos: v2, distance: number }) { async function passTower(socket: Socket, data: { playerPos: v2, distance: number }) {
console.log('distance', data.distance) console.log('distance', data.distance, 'playerPos', data.playerPos)
const user = getUserBySocket(socket); const user = getUserBySocket(socket);
// const lastDis = user.curBlock.distanceTo(data.nextPos);
// const distance = Math.abs(lastDis - user.distance2Tower);
let score = 0 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 - user.distance2Tower);
// const distance = Math.abs(data.distance - distancePlayer2NextBlock);
if (distance < DISTANCE_BLOCK * 0.8) { if (distance < HALF_SIZE_BLOCK * 0.8) {
score = 1; score = 1;
} }
if (distance <= DISTANCE_BLOCK / 3) { if (distance <= HALF_SIZE_BLOCK / 3) {
score = 2; 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; 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