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

update passTower by step

parent d2fd92f1
......@@ -71,6 +71,10 @@ export interface IDataSpawnTower {
towerNumber: number,
}
export interface IRequestPassTower {
step: number
}
export interface IQuery {
token?: string,
userId?: string
......
import { Server, Socket } from "socket.io";
// import CONFIG from "./Config/config";
import User, { IDataPassTower, IDataSpawnTower } from "./Model/User";
import User, { IDataPassTower, IDataSpawnTower, IRequestPassTower } from "./Model/User";
import v2 from "./Model/v2";
import { endGameApi, startGameApi } from "./Controller/networkCtrl";
const users: Map<string, User> = new Map<string, User>();
const Y_RADIO: number = 0.5560472;
const HALF_SIZE_TOWER: number = 56.43580423808985;
const INIT_SPEED: number = 300;
const A_POWER: number = 300;
const DT: number = 0.016;
const MAX_TOWER: number = 50;
const CONFIG = {
EVT: {
START_GAME: '200',
......@@ -39,7 +43,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: { playerPos: v2, time: number, distance: number }) => await passTower(socket, data));
socket.on(CONFIG.EVT.PASS_TOWER, async (data: IRequestPassTower) => await passTower(socket, data));
socket.on(CONFIG.EVT.HISTORY, async () => getHistory(socket));
socket.on(CONFIG.EVT.END_GAME, () => endGame(socket));
......@@ -76,7 +80,7 @@ async function startGame(socket: Socket, data: any) {
const user = getUserBySocket(socket);
const result = await startGameApi(data);
if(result && user.isStartGame) {
if (result && user.isStartGame) {
user.reset();
}
......@@ -93,12 +97,21 @@ async function startGame(socket: Socket, data: any) {
}
}
async function passTower(socket: Socket, data: { distance: number }) {
async function passTower(socket: Socket, data: IRequestPassTower) {
try {
const user = getUserBySocket(socket);
let xDistance_ = 0;
const xDistance_ = data.distance;
const { direction, nextBlock, towerNumber, position } = user;
if (towerNumber > MAX_TOWER) {
let speed = INIT_SPEED;
for (let i = 0; i < data.step; i++) {
speed += (Math.min(towerNumber - MAX_TOWER, A_POWER) * DT);
xDistance_ += speed * DT;
}
} else {
xDistance_ = data.step * INIT_SPEED * DT;
}
const point = new v2(xDistance_ * direction, xDistance_ * Y_RADIO);
const nextTowerPos = nextBlock;
......@@ -124,9 +137,6 @@ async function passTower(socket: Socket, data: { distance: number }) {
score = 2;
}
// target = nextTowerPos.clone();
// score = 2;
const heightJump = user.distance2Tower * 0.7;
if (score == 2) {
......
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