mirror of
https://git.rezel.net/LudoTech/traque.git
synced 2026-02-09 10:20:16 +01:00
Merge branch 'main' of github.com:quentinrsl/traque
This commit is contained in:
@@ -46,6 +46,11 @@ export function initAdminSocketHandler() {
|
||||
socket.emit("game_state", game.state)
|
||||
//Other settings that need initialization
|
||||
socket.emit("zone_settings", game.zone.zoneSettings)
|
||||
socket.emit("zone", game.zone.currentZone)
|
||||
socket.emit("new_zone", {
|
||||
begin: game.zone.currentStartZone,
|
||||
end: game.zone.nextZone
|
||||
})
|
||||
|
||||
} else {
|
||||
//Attempt unsuccessful
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
import { secureAdminBroadcast } from "./admin_socket.js";
|
||||
import { penaltyController } from "./index.js";
|
||||
import { isInCircle } from "./map_utils.js";
|
||||
import { sendUpdatedTeamInformations } from "./team_socket.js";
|
||||
import { playersBroadcast, sendUpdatedTeamInformations } from "./team_socket.js";
|
||||
import { ZoneManager } from "./zone_manager.js";
|
||||
|
||||
export const GameState = {
|
||||
@@ -35,6 +37,15 @@ export default class Game {
|
||||
}
|
||||
if (newState != GameState.PLAYING) {
|
||||
this.zone.reset();
|
||||
penaltyController.stop();
|
||||
}
|
||||
//Game reset
|
||||
if(newState == GameState.SETUP) {
|
||||
for(let team of this.teams) {
|
||||
team.penalties = 0;
|
||||
team.captured = false;
|
||||
}
|
||||
this.updateTeamChasing();
|
||||
}
|
||||
this.state = newState;
|
||||
return true;
|
||||
@@ -86,7 +97,10 @@ export default class Game {
|
||||
}
|
||||
|
||||
updateTeamChasing() {
|
||||
if (this.playingTeamCount() <= 1) {
|
||||
if (this.playingTeamCount() <= 2) {
|
||||
if(this.state == GameState.PLAYING) {
|
||||
this.finishGame()
|
||||
}
|
||||
return false;
|
||||
}
|
||||
let firstTeam = null;
|
||||
@@ -106,6 +120,7 @@ export default class Game {
|
||||
this.getTeam(firstTeam).chased = previousTeam;
|
||||
this.getTeam(previousTeam).chasing = firstTeam;
|
||||
this.getTeam(previousTeam).enemyName = this.getTeam(firstTeam).name;
|
||||
secureAdminBroadcast("teams", this.teams)
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -187,7 +202,7 @@ export default class Game {
|
||||
requestCapture(teamId, captureCode) {
|
||||
let enemyTeam = this.getTeam(this.getTeam(teamId).chasing)
|
||||
if (enemyTeam && enemyTeam.captureCode == captureCode) {
|
||||
this.capture(enemyTeam);
|
||||
this.capture(enemyTeam.id);
|
||||
this.updateTeamChasing();
|
||||
return true;
|
||||
}
|
||||
@@ -216,4 +231,10 @@ export default class Game {
|
||||
}
|
||||
return this.zone.udpateSettings(newSettings)
|
||||
}
|
||||
|
||||
finishGame() {
|
||||
this.setState(GameState.FINISHED);
|
||||
this.zone.reset();
|
||||
playersBroadcast("game_state", this.state);
|
||||
}
|
||||
}
|
||||
@@ -48,7 +48,7 @@ function onUpdateZone(zone) {
|
||||
|
||||
|
||||
export const game = new Game(onUpdateZone, onUpdateNewZone);
|
||||
const penaltyController = new PenaltyController(game);
|
||||
export const penaltyController = new PenaltyController();
|
||||
penaltyController.init()
|
||||
|
||||
|
||||
|
||||
@@ -3,10 +3,11 @@ import { getDistanceFromLatLon, isInCircle } from "./map_utils.js";
|
||||
import { sendUpdatedTeamInformations, teamBroadcast } from "./team_socket.js";
|
||||
import { GameState } from "./game.js";
|
||||
import { secureAdminBroadcast } from "./admin_socket.js";
|
||||
import { game } from "./index.js";
|
||||
config()
|
||||
|
||||
export class PenaltyController {
|
||||
constructor(game) {
|
||||
constructor() {
|
||||
//Number of penalties needed to be eliminated
|
||||
this.game = game;
|
||||
this.outOfBoundsSince = {};
|
||||
@@ -27,6 +28,13 @@ export class PenaltyController {
|
||||
}, 100);
|
||||
}
|
||||
|
||||
stop(){
|
||||
this.outOfBoundsSince = {};
|
||||
if(this.checkIntervalId) {
|
||||
clearInterval(this.checkIntervalId)
|
||||
this.checkIntervalId = null;
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Increment the penalty score of a team, send a message to the team and eliminated if necessary
|
||||
* @param {Number} teamId The team that will recieve a penalty
|
||||
|
||||
@@ -75,6 +75,11 @@ export function initTeamSocket() {
|
||||
sendUpdatedTeamInformations(loginTeamId);
|
||||
socket.emit("login_response", true);
|
||||
socket.emit("game_state", game.state)
|
||||
socket.emit("zone", game.zone.currentZone)
|
||||
socket.emit("new_zone", {
|
||||
begin: game.zone.currentStartZone,
|
||||
end: game.zone.nextZone
|
||||
})
|
||||
});
|
||||
|
||||
socket.on("logout", () => {
|
||||
|
||||
Reference in New Issue
Block a user