mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2026-04-16 14:28:36 +02:00
110 lines
2.3 KiB
TypeScript
110 lines
2.3 KiB
TypeScript
import type { GoColor, GoOpponent, GoPlayType } from "@enums";
|
|
|
|
export type Board = (PointState | null)[][];
|
|
|
|
export type SimpleBoard = string[];
|
|
|
|
export type Move = {
|
|
point: PointState;
|
|
oldLibertyCount?: number | null;
|
|
newLibertyCount?: number | null;
|
|
createsLife?: boolean;
|
|
};
|
|
|
|
export type MoveType =
|
|
| "capture"
|
|
| "defendCapture"
|
|
| "eyeMove"
|
|
| "eyeBlock"
|
|
| "pattern"
|
|
| "growth"
|
|
| "expansion"
|
|
| "jump"
|
|
| "defend"
|
|
| "surround"
|
|
| "corner"
|
|
| "random";
|
|
|
|
export type MoveOptions = {
|
|
readonly eyeMove: () => Move | null;
|
|
readonly random: () => Move | null;
|
|
readonly defendCapture: () => Promise<Move | null>;
|
|
readonly corner: () => Move | null;
|
|
readonly defend: () => Move | null;
|
|
readonly pattern: () => Promise<Move | null>;
|
|
readonly capture: () => Promise<Move | null>;
|
|
readonly growth: () => Move | null;
|
|
readonly eyeBlock: () => Move | null;
|
|
readonly surround: () => Move | null;
|
|
readonly expansion: () => Move | null;
|
|
readonly jump: () => Move | null;
|
|
};
|
|
|
|
export type EyeMove = {
|
|
point: PointState;
|
|
createsLife: boolean;
|
|
};
|
|
|
|
export type BoardState = {
|
|
board: Board;
|
|
previousPlayer: GoColor | null;
|
|
/** The previous board positions as a SimpleBoard */
|
|
previousBoards: string[];
|
|
ai: GoOpponent;
|
|
passCount: number;
|
|
cheatCount: number;
|
|
};
|
|
|
|
export type PointState = {
|
|
color: GoColor;
|
|
chain: string;
|
|
liberties: (PointState | null)[] | null;
|
|
x: number;
|
|
y: number;
|
|
};
|
|
|
|
export type Play =
|
|
| {
|
|
type: GoPlayType.move;
|
|
x: number;
|
|
y: number;
|
|
}
|
|
| {
|
|
type: GoPlayType.gameOver | GoPlayType.pass;
|
|
x: null;
|
|
y: null;
|
|
};
|
|
|
|
export type Neighbor = {
|
|
north: PointState | null;
|
|
east: PointState | null;
|
|
south: PointState | null;
|
|
west: PointState | null;
|
|
};
|
|
|
|
export type GoScore = {
|
|
White: { pieces: number; territory: number; komi: number; sum: number };
|
|
Black: { pieces: number; territory: number; komi: number; sum: number };
|
|
};
|
|
|
|
export type OpponentStats = {
|
|
wins: number;
|
|
losses: number;
|
|
nodes: number;
|
|
nodePower: number;
|
|
winStreak: number;
|
|
oldWinStreak: number;
|
|
highestWinStreak: number;
|
|
favor: number;
|
|
};
|
|
|
|
export type SimpleOpponentStats = {
|
|
wins: number;
|
|
losses: number;
|
|
winStreak: number;
|
|
highestWinStreak: number;
|
|
favor: number;
|
|
bonusPercent: number;
|
|
bonusDescription: string;
|
|
};
|