Private
Public Access
1
0
Files
MineSeeker/gtk-client/mineseeker/constants.py

91 lines
2.5 KiB
Python

"""
This file is part of the SplendidBear Websites' projects.
Copyright (c) 2026 @ www.splendidbear.org
For the full copyright and license information, please view the LICENSE
file that was distributed with this source code.
"""
# Grid dimensions
GRID_ROWS: int = 16
GRID_COLS: int = 16
GRID_SIZE: int = GRID_ROWS * GRID_COLS # 256
# Game rules
TOTAL_MINES: int = 51
WIN_THRESHOLD: int = 26 # first player to reach this wins
# Cell pixel size in the grid widget (each cell rendered as a square)
CELL_SIZE: int = 40
# Player colours (match backend "red" / "blue" strings)
PLAYER_RED: str = "red"
PLAYER_BLUE: str = "blue"
# Bomb reveal diamond half-width (matches PHP getBombRadius / JS bombRadius)
BOMB_RADIUS: int = 2
# Heartbeat interval in milliseconds (mirrors JS 1500 ms)
HEARTBEAT_INTERVAL_MS: int = 1500
# SSE reconnect back-off (seconds)
SSE_RECONNECT_INITIAL: float = 1.0
SSE_RECONNECT_MAX: float = 30.0
# Bonus stat display labels (mirrors JS BONUS_LABELS)
BONUS_LABELS: dict[str, str] = {
"blindHits": "Blind Hits",
"chainBest": "Best Chain",
"chainCurrent": "Current Chain",
"lastMineHits": "Endgame Mines",
"edgeMines": "Edge Mines",
"biggestReveal": "Biggest Reveal",
}
# Image URL path fragments served from BASE_URL/images/
IMAGE_NAMES: list[str] = [
"bg-target-outbg.png",
"bg-bomb-outbg.png",
"bg-bomb-disabled-outbg.png",
"bg-bomb-exploded-outbg.png",
"bg-bomb-empty-outbg.png",
"bg-left-mine-outbg.png",
"bg-cursor-red-outbg.png",
"bg-cursor-blue-outbg.png",
"bg-figure-red-outbg.png",
"bg-figure-blue-outbg.png",
"bg-flag-red-outbg.png",
"bg-flag-blue-outbg.png",
"bg-last-red-outbg.png",
"bg-last-blue-outbg.png",
"bg-wave-1-outbg.png",
"bg-wave-2-outbg.png",
"bg-corner-outbg.png",
"bg-bomb-top-left-outbg.png",
"bg-bomb-top-center-outbg.png",
"bg-bomb-top-right-outbg.png",
"bg-bomb-middle-left-outbg.png",
"bg-bomb-middle-center-outbg.png",
"bg-bomb-middle-right-outbg.png",
"bg-bomb-bottom-left-outbg.png",
"bg-bomb-bottom-center-outbg.png",
"bg-bomb-bottom-right-outbg.png",
]
# Sound file names served from BASE_URL/sound/
SOUND_NAMES: list[str] = [
"click.mp3",
"bomb.mp3",
"mine.mp3",
"warning.mp3",
"won.mp3",
"starting.mp3",
]
# Bomb position image name helper
# horizontal: "top" | "middle" | "bottom"
# vertical: "left" | "center" | "right"
def bomb_pos_image(horizontal: str, vertical: str) -> str:
return f"bg-bomb-{horizontal}-{vertical}-outbg.png"