move snake builder into __init__ of snakes file and use it into server class
This commit is contained in:
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
from server.Files import read_file
|
from server.Files import read_file
|
||||||
from server.GameBoard import GameBoard
|
from server.GameBoard import GameBoard
|
||||||
from server.SnakeBuilder import SnakeBuilder
|
from snakes import SnakeBuilder
|
||||||
from quart_common.web.logger import await_log
|
from quart_common.web.logger import await_log
|
||||||
from quart_common.web.logger import build_logger
|
from quart_common.web.logger import build_logger
|
||||||
from typing import cast
|
from typing import cast
|
||||||
|
|||||||
@@ -1,19 +0,0 @@
|
|||||||
class SnakeBuilder:
|
|
||||||
SNAKE_VERSIONS = {
|
|
||||||
"TemplateSnake": "1.0.0",
|
|
||||||
"DummSnake": "1.0.0",
|
|
||||||
"LogicSnake": "1.1.0",
|
|
||||||
"MasterSnake": "1.2.0",
|
|
||||||
"BetterMasterSnake": "1.3.0",
|
|
||||||
"BestBattleSnake": "2.5.0",
|
|
||||||
}
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def build(self, selected_snake:str):
|
|
||||||
snake_module = __import__(f"snakes.{selected_snake}", fromlist=[selected_snake])
|
|
||||||
snake_class = getattr(snake_module, selected_snake)
|
|
||||||
return snake_class()
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def get_version(self, selected_snake:str) -> str | None:
|
|
||||||
return self.SNAKE_VERSIONS.get(selected_snake)
|
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
import importlib
|
||||||
|
|
||||||
|
SNAKE_REGISTRY = {
|
||||||
|
"TemplateSnake": "1.0.0",
|
||||||
|
"DummSnake": "1.0.0",
|
||||||
|
"LogicSnake": "1.1.0",
|
||||||
|
"MasterSnake": "1.2.0",
|
||||||
|
"BetterMasterSnake": "1.3.0",
|
||||||
|
"BestBattleSnake": "2.5.0",
|
||||||
|
}
|
||||||
|
|
||||||
|
def build_snake(selected_snake: str):
|
||||||
|
if selected_snake not in SNAKE_REGISTRY:
|
||||||
|
raise ValueError(f"Unknown snake: {selected_snake}")
|
||||||
|
|
||||||
|
snake_module = importlib.import_module(f"snakes.{selected_snake}")
|
||||||
|
snake_class = getattr(snake_module, selected_snake)
|
||||||
|
return snake_class()
|
||||||
|
|
||||||
|
def get_snake_version(selected_snake: str) -> str | None:
|
||||||
|
version = SNAKE_REGISTRY.get(selected_snake)
|
||||||
|
if version is None:
|
||||||
|
return None
|
||||||
|
return str(version)
|
||||||
|
|
||||||
|
class SnakeBuilder:
|
||||||
|
@classmethod
|
||||||
|
def build(self, selected_snake: str):
|
||||||
|
return build_snake(selected_snake)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_version(self, selected_snake: str) -> str | None:
|
||||||
|
return get_snake_version(selected_snake)
|
||||||
|
|||||||
Reference in New Issue
Block a user