mirror of
https://github.com/openfrontio/OpenFrontIO.git
synced 2026-06-23 03:15:40 +00:00
77 lines
2.3 KiB
TypeScript
77 lines
2.3 KiB
TypeScript
import { Gold, Player, PlayerID, PlayerInfo, TerraNullius, Tick, Tile, Unit, UnitInfo, UnitType } from "../game/Game";
|
|
import { Colord, colord } from "colord";
|
|
import { devConfig } from "./DevConfig";
|
|
import { defaultConfig } from "./DefaultConfig";
|
|
import { GameID } from "../Schemas";
|
|
|
|
export enum GameEnv {
|
|
Dev,
|
|
Prod
|
|
}
|
|
|
|
export function getConfig(): Config {
|
|
// TODO: 'prod' not found in prod env
|
|
if (process.env.GAME_ENV == 'dev') {
|
|
console.log('Using dev config')
|
|
return devConfig
|
|
} else {
|
|
console.log('Using prod config')
|
|
return defaultConfig
|
|
}
|
|
}
|
|
|
|
export function getGameEnv(): GameEnv {
|
|
return GameEnv.Prod
|
|
}
|
|
|
|
export interface Config {
|
|
theme(): Theme;
|
|
percentageTilesOwnedToWin(): number
|
|
turnIntervalMs(): number
|
|
gameCreationRate(): number
|
|
lobbyLifetime(): number
|
|
numBots(): number
|
|
spawnNPCs(): boolean
|
|
numSpawnPhaseTurns(): number
|
|
|
|
startManpower(playerInfo: PlayerInfo): number
|
|
populationIncreaseRate(player: Player): number
|
|
goldAdditionRate(player: Player): number
|
|
troopAdjustmentRate(player: Player): number
|
|
attackTilesPerTick(attacker: Player, defender: Player | TerraNullius, numAdjacentTilesWithEnemy: number): number
|
|
attackLogic(attackTroops: number, attacker: Player, defender: Player | TerraNullius, tileToConquer: Tile): {
|
|
attackerTroopLoss: number,
|
|
defenderTroopLoss: number,
|
|
tilesPerTickUsed: number
|
|
}
|
|
attackAmount(attacker: Player, defender: Player | TerraNullius): number
|
|
maxPopulation(player: Player): number
|
|
boatAttackAmount(attacker: Player, defender: Player | TerraNullius): number
|
|
boatMaxDistance(): number
|
|
boatMaxNumber(): number
|
|
allianceDuration(): Tick
|
|
allianceRequestCooldown(): Tick
|
|
targetDuration(): Tick
|
|
targetCooldown(): Tick
|
|
emojiMessageCooldown(): Tick
|
|
emojiMessageDuration(): Tick
|
|
donateCooldown(): Tick
|
|
defaultDonationAmount(sender: Player): number
|
|
unitInfo(type: UnitType): UnitInfo
|
|
tradeShipGold(src: Unit, dst: Unit): Gold
|
|
tradeShipSpawnRate(): number
|
|
defensePostRange(): number
|
|
defensePostDefenseBonus(): number
|
|
}
|
|
|
|
export interface Theme {
|
|
playerInfoColor(id: PlayerID): Colord;
|
|
territoryColor(playerInfo: PlayerInfo): Colord;
|
|
borderColor(playerInfo: PlayerInfo): Colord;
|
|
defendedBorderColor(playerInfo: PlayerInfo): Colord;
|
|
terrainColor(tile: Tile): Colord;
|
|
backgroundColor(): Colord;
|
|
font(): string;
|
|
}
|
|
|