Mods
This commit is contained in:
		| @@ -51,6 +51,7 @@ class Config: | ||||
|     input_text_color: str = "rgb(18, 18, 18)" | ||||
|     input_border_color: str = "rgb(140, 140, 140)" | ||||
|     input_caret_color: str = "rgb(18, 18, 18)" | ||||
|     settings_json: Path | ||||
|  | ||||
|     @staticmethod | ||||
|     def prepare() -> None: | ||||
| @@ -61,6 +62,14 @@ class Config: | ||||
|             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.icon_path = Config.here / "img" / "icon_4.jpg" | ||||
|         Config.status_image_path = Config.here / "img" / "icon_5.jpg" | ||||
|         Config.hatched_image_path = Config.here / "img" / "icon_7.jpg" | ||||
|   | ||||
| @@ -18,6 +18,7 @@ from .utils import Utils | ||||
| from .ants import Ant | ||||
| from .ants import Ants | ||||
| from .window import Window | ||||
| from .settings import Settings | ||||
|  | ||||
|  | ||||
| class Game: | ||||
| @@ -204,14 +205,14 @@ class Game: | ||||
|  | ||||
|     @staticmethod | ||||
|     def start_loop() -> None: | ||||
|         speed = Window.speed.currentText() | ||||
|         speed = Settings.speed | ||||
|  | ||||
|         if speed == "Fast": | ||||
|         if speed == "fast": | ||||
|             delay = Config.loop_delay_fast | ||||
|         elif speed == "Normal": | ||||
|             delay = Config.loop_delay_normal | ||||
|         else: | ||||
|         elif speed == "slow": | ||||
|             delay = Config.loop_delay_slow | ||||
|         else: | ||||
|             delay = Config.loop_delay_normal | ||||
|  | ||||
|         Game.timer = QTimer() | ||||
|         Game.timer.timeout.connect(Game.get_status) | ||||
| @@ -219,6 +220,12 @@ class Game: | ||||
|  | ||||
|     @staticmethod | ||||
|     def update_speed() -> None: | ||||
|         speed = Window.speed.currentText().lower() | ||||
|  | ||||
|         if speed == Settings.speed: | ||||
|             return | ||||
|  | ||||
|         Settings.set_speed(speed) | ||||
|         Game.timer.stop() | ||||
|         Game.start_loop() | ||||
|  | ||||
|   | ||||
| @@ -5,6 +5,7 @@ from .utils import Utils | ||||
| from .ants import Ants | ||||
| from .window import Window | ||||
| from .game import Game | ||||
| from .settings import Settings | ||||
|  | ||||
|  | ||||
| def main() -> None: | ||||
| @@ -12,6 +13,7 @@ def main() -> None: | ||||
|     Utils.prepare() | ||||
|     Ants.prepare() | ||||
|     Window.prepare() | ||||
|     Settings.prepare() | ||||
|     Game.prepare() | ||||
|     Game.start_loop() | ||||
|     Window.start() | ||||
|   | ||||
							
								
								
									
										26
									
								
								cromulant/settings.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								cromulant/settings.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,26 @@ | ||||
| from .window import Window | ||||
| from .storage import Storage | ||||
|  | ||||
|  | ||||
| class Settings: | ||||
|     speed: str | ||||
|  | ||||
|     @staticmethod | ||||
|     def prepare() -> None: | ||||
|         settings = Storage.get_settings() | ||||
|         Settings.speed = settings.get("speed", "normal") | ||||
|         speed = Settings.speed.capitalize() | ||||
|         Window.speed.setCurrentText(speed) | ||||
|  | ||||
|     @staticmethod | ||||
|     def save() -> None: | ||||
|         settings = { | ||||
|             "speed": Settings.speed, | ||||
|         } | ||||
|  | ||||
|         Storage.save_settings(settings) | ||||
|  | ||||
|     @staticmethod | ||||
|     def set_speed(speed: str) -> None: | ||||
|         Settings.speed = speed | ||||
|         Settings.save() | ||||
| @@ -26,3 +26,13 @@ class Storage: | ||||
|     def get_names() -> Any: | ||||
|         with Config.names_json.open() as file: | ||||
|             return json.load(file) | ||||
|  | ||||
|     @staticmethod | ||||
|     def get_settings() -> Any: | ||||
|         with Config.settings_json.open() as file: | ||||
|             return json.load(file) | ||||
|  | ||||
|     @staticmethod | ||||
|     def save_settings(settings: dict[str, Any]) -> None: | ||||
|         with Config.settings_json.open("w") as file: | ||||
|             json.dump(settings, file) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Auric Vente
					Auric Vente