thread_split: convert all tile to tileref

This commit is contained in:
Evan
2025-02-01 12:05:11 -08:00
parent c42cc2a9b4
commit f0f5bae79f
53 changed files with 1101 additions and 1402 deletions
+5 -4
View File
@@ -1,4 +1,4 @@
import { Difficulty, GameType, Gold, Player, PlayerID, PlayerInfo, TerraNullius, Tick, Tile, Unit, UnitInfo, UnitType } from "../game/Game";
import { Difficulty, GameType, Gold, Player, PlayerID, PlayerInfo, TerraNullius, Tick, UnitInfo, UnitType } from "../game/Game";
import { Colord, colord } from "colord";
import { preprodConfig } from "./PreprodConfig";
import { prodConfig } from "./ProdConfig";
@@ -6,6 +6,7 @@ import { consolex } from "../Consolex";
import { GameConfig } from "../Schemas";
import { DefaultConfig } from "./DefaultConfig";
import { DevConfig, DevServerConfig } from "./DevConfig";
import { GameMap, TileRef } from "../game/GameMap";
export enum GameEnv {
Dev,
@@ -61,7 +62,7 @@ export interface Config {
goldAdditionRate(player: Player): number
troopAdjustmentRate(player: Player): number
attackTilesPerTick(attckTroops: number, attacker: Player, defender: Player | TerraNullius, numAdjacentTilesWithEnemy: number): number
attackLogic(attackTroops: number, attacker: Player, defender: Player | TerraNullius, tileToConquer: Tile): {
attackLogic(gm: GameMap, attackTroops: number, attacker: Player, defender: Player | TerraNullius, tileToConquer: TileRef): {
attackerTroopLoss: number,
defenderTroopLoss: number,
tilesPerTickUsed: number
@@ -81,7 +82,7 @@ export interface Config {
donateCooldown(): Tick
defaultDonationAmount(sender: Player): number
unitInfo(type: UnitType): UnitInfo
tradeShipGold(src: Unit, dst: Unit): Gold
tradeShipGold(dist: number): Gold
tradeShipSpawnRate(): number
defensePostRange(): number
defensePostDefenseBonus(): number
@@ -94,7 +95,7 @@ export interface Theme {
territoryColor(playerInfo: PlayerInfo): Colord;
borderColor(playerInfo: PlayerInfo): Colord;
defendedBorderColor(playerInfo: PlayerInfo): Colord;
terrainColor(tile: Tile): Colord;
terrainColor(gm: GameMap, tile: TileRef): Colord;
backgroundColor(): Colord;
falloutColor(): Colord
font(): string;
+7 -7
View File
@@ -1,6 +1,7 @@
import { Difficulty, GameType, Gold, MutableTile, Player, PlayerInfo, PlayerType, TerrainType, TerraNullius, Tick, Tile, Unit, UnitInfo, UnitType } from "../game/Game";
import { Difficulty, GameType, Gold, Player, PlayerInfo, PlayerType, TerrainType, TerraNullius, Tick, UnitInfo, UnitType } from "../game/Game";
import { GameMap, TileRef } from "../game/GameMap";
import { GameConfig } from "../Schemas";
import { assertNever, distSort, manhattanDist, simpleHash, within } from "../Util";
import { assertNever, within } from "../Util";
import { Config, ServerConfig, Theme } from "./Config";
import { pastelTheme } from "./PastelTheme";
@@ -62,8 +63,7 @@ export class DefaultConfig implements Config {
spawnNPCs(): boolean {
return true
}
tradeShipGold(src: Unit, dst: Unit): Gold {
const dist = manhattanDist(src.tile().cell(), dst.tile().cell())
tradeShipGold(dist: number): Gold {
return 10000 + 100 * Math.pow(dist, 1.1)
}
tradeShipSpawnRate(): number {
@@ -186,10 +186,10 @@ export class DefaultConfig implements Config {
}
theme(): Theme { return pastelTheme; }
attackLogic(attackTroops: number, attacker: Player, defender: Player | TerraNullius, tileToConquer: MutableTile): { attackerTroopLoss: number; defenderTroopLoss: number; tilesPerTickUsed: number } {
attackLogic(gm: GameMap, attackTroops: number, attacker: Player, defender: Player | TerraNullius, tileToConquer: TileRef): { attackerTroopLoss: number; defenderTroopLoss: number; tilesPerTickUsed: number } {
let mag = 0
let speed = 0
const type = tileToConquer.terrain().type()
const type = gm.terrainType(tileToConquer)
switch (type) {
case TerrainType.Plains:
mag = 80
@@ -209,7 +209,7 @@ export class DefaultConfig implements Config {
// TODO
// mag *= tileToConquer.defenseBonus(attacker)
// speed *= tileToConquer.defenseBonus(attacker)
if (tileToConquer.hasFallout()) {
if (gm.hasFallout(tileToConquer)) {
mag *= this.falloutDefenseModifier()
speed *= this.falloutDefenseModifier()
}
+8 -7
View File
@@ -1,9 +1,10 @@
import { Colord, colord, random } from "colord";
import { PlayerID, PlayerInfo, TerrainType, Tile } from "../game/Game";
import { Game, PlayerID, PlayerInfo, TerrainType } from "../game/Game";
import { Theme } from "./Config";
import { time } from "console";
import { PseudoRandom } from "../PseudoRandom";
import { simpleHash } from "../Util";
import { GameMap, TileRef } from "../game/GameMap";
export const pastelTheme = new class implements Theme {
@@ -154,19 +155,19 @@ export const pastelTheme = new class implements Theme {
})
}
terrainColor(tile: Tile): Colord {
let mag = tile.terrain().magnitude()
if (tile.terrain().isShore()) {
terrainColor(gm: GameMap, tile: TileRef): Colord {
let mag = gm.magnitude(tile)
if (gm.isShore(tile)) {
return this.shore
}
switch (tile.terrain().type()) {
switch (gm.terrainType(tile)) {
case TerrainType.Ocean:
case TerrainType.Lake:
const w = this.water.rgba
if (tile.terrain().isShorelineWater()) {
if (gm.isShoreline(tile) && gm.isWater(tile)) {
return this.shorelineWater
}
if (tile.terrain().magnitude() < 7) {
if (gm.magnitude(tile) < 7) {
return colord({
r: Math.max(w.r - 7 + mag, 0),
g: Math.max(w.g - 7 + mag, 0),