mirror of
https://github.com/openfrontio/OpenFrontIO.git
synced 2026-06-21 15:00:43 +00:00
Disable trains in public games (#1342)
## Description: 1. Disable trains in public games 2. add more checks so people can't build trains by bypass the UI. ## Please complete the following: - [x] I have added screenshots for all UI updates - [x] I process any text displayed to the user through translateText() and I've added it to the en.json file - [x] I have added relevant tests to the test directory - [x] I confirm I have thoroughly tested these changes and take full responsibility for any bugs introduced - [x] I understand that submitting code with bugs that could have been caught through manual testing blocks releases and new features for all contributors ## Please put your Discord username so you can be contacted if a bug or regression is found: evan
This commit is contained in:
@@ -37,6 +37,15 @@ export class ConstructionExecution implements Execution {
|
||||
|
||||
init(mg: Game, ticks: number): void {
|
||||
this.mg = mg;
|
||||
|
||||
if (this.mg.config().isUnitDisabled(this.constructionType)) {
|
||||
console.warn(
|
||||
`cannot build construction ${this.constructionType} because it is disabled`,
|
||||
);
|
||||
this.active = false;
|
||||
return;
|
||||
}
|
||||
|
||||
if (this.tileOrCell instanceof Cell) {
|
||||
if (!this.mg.isValidCoord(this.tileOrCell.x, this.tileOrCell.y)) {
|
||||
console.warn(
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Execution, Game, Player, Unit } from "../game/Game";
|
||||
import { Execution, Game, Player, Unit, UnitType } from "../game/Game";
|
||||
import { TrainStation } from "../game/TrainStation";
|
||||
import { PseudoRandom } from "../PseudoRandom";
|
||||
import { TrainExecution } from "./TrainExecution";
|
||||
@@ -21,6 +21,13 @@ export class TrainStationExecution implements Execution {
|
||||
|
||||
init(mg: Game, ticks: number): void {
|
||||
this.mg = mg;
|
||||
|
||||
if (this.mg.config().isUnitDisabled(UnitType.Train)) {
|
||||
this.active = false;
|
||||
console.warn(`train station is disabled`);
|
||||
return;
|
||||
}
|
||||
|
||||
this.random = new PseudoRandom(mg.ticks());
|
||||
|
||||
this.unit = this.player.units().find((unit) => unit.id() === this.unitId);
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
import { getServerConfigFromServer } from "../core/configuration/ConfigLoader";
|
||||
import { Difficulty, GameMapType, GameMode, GameType } from "../core/game/Game";
|
||||
import {
|
||||
Difficulty,
|
||||
GameMapType,
|
||||
GameMode,
|
||||
GameType,
|
||||
UnitType,
|
||||
} from "../core/game/Game";
|
||||
import { PseudoRandom } from "../core/PseudoRandom";
|
||||
import { GameConfig } from "../core/Schemas";
|
||||
import { logger } from "./Logger";
|
||||
@@ -61,6 +67,7 @@ export class MapPlaylist {
|
||||
gameMode: mode,
|
||||
playerTeams: numPlayerTeams,
|
||||
bots: 400,
|
||||
disabledUnits: [UnitType.Train, UnitType.Factory],
|
||||
} satisfies GameConfig;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user