Files
snake/theme.py
T

44 lines
1.3 KiB
Python

"""Color and theme management."""
import curses
from dataclasses import dataclass
from typing import Dict
@dataclass
class ColorPair:
"""Represents a color pair."""
name: str
foreground: int
background: int
pair_id: int
class ThemeManager:
"""Manages colors and themes for the game."""
def __init__(self):
self.colors: Dict[str, int] = {}
self.color_pairs: Dict[str, ColorPair] = {}
def initialize(self, stdscr) -> None:
"""Initialize colors with curses."""
curses.start_color()
# Define color pairs
self.color_pairs = {
'snake': ColorPair('snake', curses.COLOR_GREEN, curses.COLOR_BLACK, 1),
'food': ColorPair('food', curses.COLOR_RED, curses.COLOR_BLACK, 2),
'text': ColorPair('text', curses.COLOR_WHITE, curses.COLOR_BLACK, 3),
}
# Initialize color pairs
for pair in self.color_pairs.values():
curses.init_pair(pair.pair_id, pair.foreground, pair.background)
self.colors = {name: pair.pair_id for name, pair in self.color_pairs.items()}
stdscr.bkgd(' ', curses.color_pair(self.colors['text']))
def get_color_pair(self, color_name: str) -> int:
"""Get color pair ID by name."""
return self.colors.get(color_name, self.colors['text'])