86 lines
3.1 KiB
Python
86 lines
3.1 KiB
Python
from __future__ import annotations
|
|
|
|
from pathlib import Path
|
|
|
|
import appdirs # type: ignore
|
|
|
|
|
|
class Config:
|
|
title: str = "Cromulant"
|
|
program: str = "cromulant"
|
|
width: int = 820
|
|
height: int = 900
|
|
here: Path
|
|
ants_json: Path
|
|
icon_path: Path
|
|
status_image_path: Path
|
|
hatched_image_path: Path
|
|
terminated_image_path: Path
|
|
names_json: Path
|
|
background_color: str = "rgb(44, 44, 44)"
|
|
text_color: str = "#ffffff"
|
|
image_size: int = 80
|
|
space_1: int = 18
|
|
max_updates: int = 300
|
|
loop_delay_fast: int = 1000 * 5
|
|
loop_delay_normal: int = 1000 * 60 * 1
|
|
loop_delay_slow: int = 1000 * 60 * 5
|
|
font_size: int = 20
|
|
info_separator: str = " - "
|
|
font_path: Path
|
|
emoji_font_path: Path
|
|
triumph_color: tuple[int, int, int] = (255, 255, 0)
|
|
hit_color: tuple[int, int, int] = (255, 0, 77)
|
|
triumph_icon: str = "😀"
|
|
hit_icon: str = "🎃"
|
|
triumph_message: str = "Scored a triumph"
|
|
hit_message: str = "Took a hit"
|
|
song_path: Path
|
|
logo_path: Path
|
|
alt_background_color: str = "rgb(33, 33, 33)"
|
|
alt_text_color: str = "white"
|
|
alt_hover_background_color: str = "rgb(51, 51, 51)"
|
|
alt_hover_text_color: str = "white"
|
|
alt_border_color: str = "rgb(88, 88, 88)"
|
|
message_box_button_hover_background_color: str = "rgb(66, 66, 66)"
|
|
message_box_button_hover_text_color: str = "white"
|
|
scrollbar_handle_color: str = "rgb(69, 69, 69)"
|
|
input_background_color: str = "rgb(111, 111, 111)"
|
|
input_text_color: str = "rgb(18, 18, 18)"
|
|
input_border_color: str = "rgb(120, 120, 120)"
|
|
input_caret_color: str = "rgb(18, 18, 18)"
|
|
settings_json: Path
|
|
countries_json: Path
|
|
filter_width: int = 150
|
|
filter_debouncer_delay: int = 200
|
|
default_population: int = 100
|
|
merge_goal: int = 8
|
|
|
|
@staticmethod
|
|
def prepare() -> None:
|
|
Config.here = Path(__file__).parent
|
|
Config.ants_json = Path(appdirs.user_data_dir()) / "cromulant" / "ants.json"
|
|
|
|
if not Config.ants_json.exists():
|
|
Config.ants_json.parent.mkdir(parents=True, exist_ok=True)
|
|
Config.ants_json.write_text("[]")
|
|
|
|
Config.settings_json = (
|
|
Path(appdirs.user_config_dir()) / "cromulant" / "settings.json"
|
|
)
|
|
|
|
if not Config.settings_json.exists():
|
|
Config.settings_json.parent.mkdir(parents=True, exist_ok=True)
|
|
Config.settings_json.write_text("{}")
|
|
|
|
Config.names_json = Config.here / "data" / "names.json"
|
|
Config.countries_json = Config.here / "data" / "countries.json"
|
|
Config.icon_path = Config.here / "img" / "icon_1.jpg"
|
|
Config.status_image_path = Config.here / "img" / "icon_2.jpg"
|
|
Config.terminated_image_path = Config.here / "img" / "icon_3_red.jpg"
|
|
Config.hatched_image_path = Config.here / "img" / "icon_4_green.jpg"
|
|
Config.font_path = Config.here / "fonts" / "NotoSans-Regular.ttf"
|
|
Config.emoji_font_path = Config.here / "fonts" / "NotoEmoji-Regular.ttf"
|
|
Config.song_path = Config.here / "audio" / "March of the Cyber Ants.mp3"
|
|
Config.logo_path = Config.here / "img" / "logo_3.jpg"
|