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