mirror of
https://github.com/openfrontio/OpenFrontIO.git
synced 2026-06-30 09:22:11 +00:00
single color for read and blue, put bots in their own team
This commit is contained in:
@@ -1,5 +1,9 @@
|
||||
import { colord, Colord } from "colord";
|
||||
|
||||
export const red: Colord = colord({ r: 235, g: 53, b: 53 }); // Bright Red
|
||||
export const blue: Colord = colord({ r: 41, g: 98, b: 255 }); // Royal Blue
|
||||
export const botColor: Colord = colord({ r: 210, g: 206, b: 200 }); // Muted Beige Gray
|
||||
|
||||
export const territoryColors: Colord[] = [
|
||||
colord({ r: 230, g: 100, b: 100 }), // Bright Red
|
||||
colord({ r: 100, g: 180, b: 230 }), // Sky Blue
|
||||
@@ -205,148 +209,3 @@ export const humanColors: Colord[] = [
|
||||
colord({ r: 56, g: 189, b: 248 }), // Electric Blue
|
||||
colord({ r: 234, g: 179, b: 8 }), // Daffodil
|
||||
];
|
||||
|
||||
export const redShades = [
|
||||
colord({ r: 210, g: 0, b: 0 }), // Most distinct colors sorted by brightness
|
||||
colord({ r: 225, g: 0, b: 0 }),
|
||||
colord({ r: 240, g: 0, b: 0 }),
|
||||
colord({ r: 255, g: 0, b: 0 }),
|
||||
colord({ r: 210, g: 21, b: 21 }),
|
||||
colord({ r: 225, g: 23, b: 23 }),
|
||||
colord({ r: 240, g: 25, b: 25 }),
|
||||
colord({ r: 255, g: 26, b: 26 }),
|
||||
colord({ r: 210, g: 42, b: 42 }),
|
||||
colord({ r: 225, g: 45, b: 45 }),
|
||||
colord({ r: 240, g: 48, b: 48 }),
|
||||
colord({ r: 255, g: 51, b: 51 }),
|
||||
colord({ r: 195, g: 59, b: 59 }),
|
||||
colord({ r: 210, g: 63, b: 63 }),
|
||||
colord({ r: 225, g: 68, b: 68 }),
|
||||
colord({ r: 240, g: 72, b: 72 }),
|
||||
colord({ r: 255, g: 77, b: 77 }),
|
||||
colord({ r: 180, g: 72, b: 72 }),
|
||||
colord({ r: 195, g: 78, b: 78 }),
|
||||
colord({ r: 210, g: 84, b: 84 }),
|
||||
colord({ r: 225, g: 90, b: 90 }),
|
||||
colord({ r: 240, g: 96, b: 96 }),
|
||||
colord({ r: 255, g: 102, b: 102 }),
|
||||
colord({ r: 165, g: 83, b: 83 }),
|
||||
colord({ r: 180, g: 90, b: 90 }),
|
||||
colord({ r: 195, g: 98, b: 98 }),
|
||||
colord({ r: 210, g: 105, b: 105 }),
|
||||
colord({ r: 225, g: 113, b: 113 }),
|
||||
colord({ r: 240, g: 120, b: 120 }),
|
||||
colord({ r: 255, g: 128, b: 128 }),
|
||||
colord({ r: 150, g: 90, b: 90 }),
|
||||
colord({ r: 165, g: 99, b: 99 }),
|
||||
colord({ r: 180, g: 108, b: 108 }),
|
||||
colord({ r: 195, g: 117, b: 117 }),
|
||||
colord({ r: 210, g: 126, b: 126 }),
|
||||
colord({ r: 225, g: 135, b: 135 }),
|
||||
colord({ r: 240, g: 144, b: 144 }),
|
||||
colord({ r: 255, g: 153, b: 153 }),
|
||||
colord({ r: 135, g: 95, b: 95 }),
|
||||
colord({ r: 150, g: 105, b: 105 }),
|
||||
colord({ r: 165, g: 116, b: 116 }),
|
||||
colord({ r: 180, g: 126, b: 126 }),
|
||||
colord({ r: 195, g: 137, b: 137 }),
|
||||
colord({ r: 210, g: 147, b: 147 }),
|
||||
colord({ r: 225, g: 158, b: 158 }),
|
||||
colord({ r: 240, g: 168, b: 168 }),
|
||||
colord({ r: 255, g: 179, b: 179 }),
|
||||
colord({ r: 120, g: 108, b: 108 }),
|
||||
colord({ r: 135, g: 122, b: 122 }),
|
||||
colord({ r: 150, g: 135, b: 135 }),
|
||||
colord({ r: 165, g: 149, b: 149 }),
|
||||
colord({ r: 180, g: 162, b: 162 }),
|
||||
colord({ r: 195, g: 176, b: 176 }),
|
||||
colord({ r: 210, g: 189, b: 189 }),
|
||||
colord({ r: 225, g: 203, b: 203 }),
|
||||
colord({ r: 240, g: 216, b: 216 }),
|
||||
colord({ r: 255, g: 230, b: 230 }),
|
||||
colord({ r: 195, g: 0, b: 0 }),
|
||||
colord({ r: 195, g: 20, b: 20 }),
|
||||
colord({ r: 195, g: 39, b: 39 }),
|
||||
colord({ r: 180, g: 54, b: 54 }),
|
||||
colord({ r: 165, g: 66, b: 66 }),
|
||||
colord({ r: 150, g: 75, b: 75 }),
|
||||
colord({ r: 135, g: 81, b: 81 }),
|
||||
colord({ r: 120, g: 84, b: 84 }),
|
||||
colord({ r: 135, g: 108, b: 108 }),
|
||||
colord({ r: 150, g: 120, b: 120 }),
|
||||
colord({ r: 165, g: 132, b: 132 }),
|
||||
colord({ r: 180, g: 144, b: 144 }),
|
||||
];
|
||||
|
||||
export const blueShades = [
|
||||
colord({ r: 0, g: 0, b: 120 }), // Most distinct colors sorted by brightness
|
||||
colord({ r: 0, g: 0, b: 135 }),
|
||||
colord({ r: 0, g: 0, b: 150 }),
|
||||
colord({ r: 0, g: 0, b: 165 }),
|
||||
colord({ r: 0, g: 0, b: 180 }),
|
||||
colord({ r: 0, g: 0, b: 195 }),
|
||||
colord({ r: 0, g: 0, b: 210 }),
|
||||
colord({ r: 0, g: 0, b: 225 }),
|
||||
colord({ r: 0, g: 0, b: 240 }),
|
||||
colord({ r: 0, g: 0, b: 255 }),
|
||||
colord({ r: 12, g: 12, b: 120 }),
|
||||
colord({ r: 14, g: 14, b: 135 }),
|
||||
colord({ r: 15, g: 15, b: 150 }),
|
||||
colord({ r: 17, g: 17, b: 165 }),
|
||||
colord({ r: 18, g: 18, b: 180 }),
|
||||
colord({ r: 20, g: 20, b: 195 }),
|
||||
colord({ r: 21, g: 21, b: 210 }),
|
||||
colord({ r: 23, g: 23, b: 225 }),
|
||||
colord({ r: 25, g: 25, b: 240 }),
|
||||
colord({ r: 26, g: 26, b: 255 }),
|
||||
colord({ r: 24, g: 24, b: 120 }),
|
||||
colord({ r: 27, g: 27, b: 135 }),
|
||||
colord({ r: 30, g: 30, b: 150 }),
|
||||
colord({ r: 33, g: 33, b: 165 }),
|
||||
colord({ r: 36, g: 36, b: 180 }),
|
||||
colord({ r: 39, g: 39, b: 195 }),
|
||||
colord({ r: 42, g: 42, b: 210 }),
|
||||
colord({ r: 45, g: 45, b: 225 }),
|
||||
colord({ r: 48, g: 48, b: 240 }),
|
||||
colord({ r: 51, g: 51, b: 255 }),
|
||||
colord({ r: 36, g: 36, b: 120 }),
|
||||
colord({ r: 41, g: 41, b: 135 }),
|
||||
colord({ r: 45, g: 45, b: 150 }),
|
||||
colord({ r: 50, g: 50, b: 165 }),
|
||||
colord({ r: 54, g: 54, b: 180 }),
|
||||
colord({ r: 59, g: 59, b: 195 }),
|
||||
colord({ r: 63, g: 63, b: 210 }),
|
||||
colord({ r: 68, g: 68, b: 225 }),
|
||||
colord({ r: 72, g: 72, b: 240 }),
|
||||
colord({ r: 77, g: 77, b: 255 }),
|
||||
colord({ r: 48, g: 48, b: 120 }),
|
||||
colord({ r: 54, g: 54, b: 135 }),
|
||||
colord({ r: 60, g: 60, b: 150 }),
|
||||
colord({ r: 66, g: 66, b: 165 }),
|
||||
colord({ r: 72, g: 72, b: 180 }),
|
||||
colord({ r: 78, g: 78, b: 195 }),
|
||||
colord({ r: 84, g: 84, b: 210 }),
|
||||
colord({ r: 90, g: 90, b: 225 }),
|
||||
colord({ r: 96, g: 96, b: 240 }),
|
||||
colord({ r: 102, g: 102, b: 255 }),
|
||||
colord({ r: 60, g: 60, b: 120 }),
|
||||
colord({ r: 68, g: 68, b: 135 }),
|
||||
colord({ r: 75, g: 75, b: 150 }),
|
||||
colord({ r: 83, g: 83, b: 165 }),
|
||||
colord({ r: 90, g: 90, b: 180 }),
|
||||
colord({ r: 98, g: 98, b: 195 }),
|
||||
colord({ r: 105, g: 105, b: 210 }),
|
||||
colord({ r: 113, g: 113, b: 225 }),
|
||||
colord({ r: 120, g: 120, b: 240 }),
|
||||
colord({ r: 128, g: 128, b: 255 }),
|
||||
colord({ r: 72, g: 72, b: 120 }),
|
||||
colord({ r: 81, g: 81, b: 135 }),
|
||||
colord({ r: 90, g: 90, b: 150 }),
|
||||
colord({ r: 99, g: 99, b: 165 }),
|
||||
colord({ r: 108, g: 108, b: 180 }),
|
||||
colord({ r: 117, g: 117, b: 195 }),
|
||||
colord({ r: 126, g: 126, b: 210 }),
|
||||
colord({ r: 135, g: 135, b: 225 }),
|
||||
colord({ r: 144, g: 144, b: 240 }),
|
||||
colord({ r: 153, g: 153, b: 255 }),
|
||||
];
|
||||
|
||||
@@ -5,7 +5,7 @@ import { PseudoRandom } from "../PseudoRandom";
|
||||
import { simpleHash } from "../Util";
|
||||
import { GameMap, TileRef } from "../game/GameMap";
|
||||
import { PlayerView } from "../game/GameView";
|
||||
import { blueShades, humanColors, redShades, territoryColors } from "./Colors";
|
||||
import { blue, botColor, humanColors, red, territoryColors } from "./Colors";
|
||||
|
||||
export const pastelTheme = new (class implements Theme {
|
||||
private rand = new PseudoRandom(123);
|
||||
@@ -30,11 +30,14 @@ export const pastelTheme = new (class implements Theme {
|
||||
private _spawnHighlightColor = colord({ r: 255, g: 213, b: 79 });
|
||||
|
||||
territoryColor(player: PlayerView): Colord {
|
||||
if (player.teamName() == TeamName.Bot) {
|
||||
return botColor;
|
||||
}
|
||||
if (player.teamName() == TeamName.Red) {
|
||||
return redShades[simpleHash(player.id()) % redShades.length];
|
||||
return red;
|
||||
}
|
||||
if (player.teamName() == TeamName.Blue) {
|
||||
return blueShades[simpleHash(player.id()) % blueShades.length];
|
||||
return blue;
|
||||
}
|
||||
if (player.info().playerType == PlayerType.Human) {
|
||||
return humanColors[simpleHash(player.id()) % humanColors.length];
|
||||
|
||||
@@ -5,7 +5,7 @@ import { PseudoRandom } from "../PseudoRandom";
|
||||
import { simpleHash } from "../Util";
|
||||
import { GameMap, TileRef } from "../game/GameMap";
|
||||
import { PlayerView } from "../game/GameView";
|
||||
import { blueShades, humanColors, redShades, territoryColors } from "./Colors";
|
||||
import { blue, botColor, humanColors, red, territoryColors } from "./Colors";
|
||||
|
||||
export const pastelThemeDark = new (class implements Theme {
|
||||
private rand = new PseudoRandom(123);
|
||||
@@ -30,11 +30,14 @@ export const pastelThemeDark = new (class implements Theme {
|
||||
private _spawnHighlightColor = colord({ r: 255, g: 213, b: 79 });
|
||||
|
||||
territoryColor(player: PlayerView): Colord {
|
||||
if (player.teamName() == TeamName.Bot) {
|
||||
return botColor;
|
||||
}
|
||||
if (player.teamName() == TeamName.Red) {
|
||||
return redShades[simpleHash(player.id()) % redShades.length];
|
||||
return red;
|
||||
}
|
||||
if (player.teamName() == TeamName.Blue) {
|
||||
return blueShades[simpleHash(player.id()) % blueShades.length];
|
||||
return blue;
|
||||
}
|
||||
if (player.info().playerType == PlayerType.Human) {
|
||||
return humanColors[simpleHash(player.id()) % humanColors.length];
|
||||
|
||||
@@ -41,6 +41,7 @@ export enum Difficulty {
|
||||
export enum TeamName {
|
||||
Red = "Red",
|
||||
Blue = "Blue",
|
||||
Bot = "Bot",
|
||||
}
|
||||
|
||||
export enum GameMapType {
|
||||
|
||||
@@ -19,6 +19,7 @@ import {
|
||||
Team,
|
||||
GameMode,
|
||||
TeamName,
|
||||
PlayerType,
|
||||
} from "./Game";
|
||||
import { GameUpdate } from "./GameUpdates";
|
||||
import { GameUpdateType } from "./GameUpdates";
|
||||
@@ -74,7 +75,11 @@ export class GameImpl implements Game {
|
||||
|
||||
private _stats: StatsImpl = new StatsImpl();
|
||||
|
||||
private teams_: Team[] = [];
|
||||
private playerTeams: Team[] = [
|
||||
{ name: TeamName.Red },
|
||||
{ name: TeamName.Blue },
|
||||
];
|
||||
private botTeam: Team = { name: TeamName.Bot };
|
||||
|
||||
constructor(
|
||||
private _map: GameMap,
|
||||
@@ -95,9 +100,6 @@ export class GameImpl implements Game {
|
||||
),
|
||||
);
|
||||
this.unitGrid = new UnitGrid(this._map);
|
||||
if (this._config.gameConfig().gameMode == GameMode.Team) {
|
||||
this.teams_ = [{ name: TeamName.Red }, { name: TeamName.Blue }];
|
||||
}
|
||||
}
|
||||
isOnEdgeOfMap(ref: TileRef): boolean {
|
||||
return this._map.isOnEdgeOfMap(ref);
|
||||
@@ -343,8 +345,11 @@ export class GameImpl implements Game {
|
||||
if (this._config.gameConfig().gameMode != GameMode.Team) {
|
||||
return null;
|
||||
}
|
||||
if (player.playerType == PlayerType.Bot) {
|
||||
return this.botTeam;
|
||||
}
|
||||
const rand = simpleHash(player.id);
|
||||
return this.teams_[rand % this.teams_.length];
|
||||
return this.playerTeams[rand % this.playerTeams.length];
|
||||
}
|
||||
|
||||
player(id: PlayerID | null): Player {
|
||||
@@ -541,7 +546,10 @@ export class GameImpl implements Game {
|
||||
}
|
||||
|
||||
teams(): Team[] {
|
||||
return this.teams_;
|
||||
if (this._config.gameConfig().gameMode != GameMode.Team) {
|
||||
return [];
|
||||
}
|
||||
return [this.botTeam, ...this.playerTeams];
|
||||
}
|
||||
|
||||
displayMessage(
|
||||
|
||||
Reference in New Issue
Block a user