diff --git a/assets/font/Century Gothic Bold.ttf b/assets/font/CenturyGothicBold.ttf similarity index 100% rename from assets/font/Century Gothic Bold.ttf rename to assets/font/CenturyGothicBold.ttf diff --git a/main.pyw b/main.pyw index 9fb57af..1852ea7 100644 --- a/main.pyw +++ b/main.pyw @@ -4,6 +4,13 @@ from source.gui.scene import MainMenu from source.gui.window import GameWindow +from source import path_font +from source.gui.better_pyglet import Label + +pyglet.font.add_directory(path_font) +Label.default_kwargs["font_name"] = "Century Gothic" # NOQA: Label à un "default_kwargs" avec la metaclass + + # Create a new window window = GameWindow(resizable=True, vsync=False, caption="Bataille Navale") window.set_minimum_size(720, 480) diff --git a/source/gui/better_pyglet/Label.py b/source/gui/better_pyglet/Label.py new file mode 100644 index 0000000..a94dace --- /dev/null +++ b/source/gui/better_pyglet/Label.py @@ -0,0 +1,8 @@ +import pyglet + +from source.gui.better_pyglet.abc import Element + + +class Label(Element, pyglet.text.Label): + def __init__(self, *args, **kwargs): + super().__init__(*args, **(self.default_kwargs | kwargs)) diff --git a/source/gui/sprite/Sprite.py b/source/gui/better_pyglet/Sprite.py similarity index 79% rename from source/gui/sprite/Sprite.py rename to source/gui/better_pyglet/Sprite.py index 78d1abf..a9fe9fa 100644 --- a/source/gui/sprite/Sprite.py +++ b/source/gui/better_pyglet/Sprite.py @@ -1,13 +1,15 @@ import pyglet +from source.gui.better_pyglet.abc import Element -class Sprite(pyglet.sprite.Sprite): + +class Sprite(Element, pyglet.sprite.Sprite): """ Same as the pyglet sprite, but allow to set a width and height easier """ def __init__(self, width: int = None, height: int = None, *args, **kwargs): - super().__init__(*args, **kwargs) + super().__init__(*args, **(self.default_kwargs | kwargs)) self._orig_width: int = self.width self._orig_height: int = self.height diff --git a/source/gui/sprite/__init__.py b/source/gui/better_pyglet/__init__.py similarity index 51% rename from source/gui/sprite/__init__.py rename to source/gui/better_pyglet/__init__.py index d2ab302..b9431e0 100644 --- a/source/gui/sprite/__init__.py +++ b/source/gui/better_pyglet/__init__.py @@ -1 +1,2 @@ from .Sprite import Sprite +from .Label import Label diff --git a/source/gui/better_pyglet/abc/Element.py b/source/gui/better_pyglet/abc/Element.py new file mode 100644 index 0000000..10aa1f4 --- /dev/null +++ b/source/gui/better_pyglet/abc/Element.py @@ -0,0 +1,7 @@ +from abc import ABC +from typing import Any + + +class Element(ABC): + def __init_subclass__(cls, **kwargs): + cls.default_kwargs: dict[str, Any] = {} # all subclasses will have their own "default_kwargs" dict diff --git a/source/gui/better_pyglet/abc/__init__.py b/source/gui/better_pyglet/abc/__init__.py new file mode 100644 index 0000000..8bb503c --- /dev/null +++ b/source/gui/better_pyglet/abc/__init__.py @@ -0,0 +1 @@ +from .Element import Element diff --git a/source/gui/widget/Button.py b/source/gui/widget/Button.py index 13fad1a..51fb2e6 100644 --- a/source/gui/widget/Button.py +++ b/source/gui/widget/Button.py @@ -2,7 +2,7 @@ from typing import TYPE_CHECKING, Type import pyglet -from source.gui.sprite import Sprite +from source.gui.better_pyglet import Sprite, Label from source.gui.texture.abc import Style from source.gui.widget.abc import BoxWidget from source.type import Distance @@ -38,7 +38,7 @@ class Button(BoxWidget): **dict_filter_prefix("background_", kwargs) ) - self.label = pyglet.text.Label( + self.label = Label( width=None, height=None, anchor_x="center", anchor_y="center", batch=self.scene.batch, diff --git a/source/gui/widget/Checkbox.py b/source/gui/widget/Checkbox.py index 000d8f9..58cbcbf 100644 --- a/source/gui/widget/Checkbox.py +++ b/source/gui/widget/Checkbox.py @@ -1,6 +1,6 @@ from typing import TYPE_CHECKING, Type -from source.gui.sprite import Sprite +from source.gui.better_pyglet import Sprite from source.gui.texture.abc import Style from source.gui.widget.abc import BoxWidget from source.type import Distance diff --git a/source/gui/widget/GameGrid.py b/source/gui/widget/GameGrid.py index 19fc5b5..9283a99 100644 --- a/source/gui/widget/GameGrid.py +++ b/source/gui/widget/GameGrid.py @@ -7,7 +7,7 @@ import pyglet.shapes from source.core import Board, Boat from source.core.enums import Orientation, BombState from source.core.error import InvalidBoatPosition -from source.gui.sprite import Sprite +from source.gui.better_pyglet import Sprite from source.gui.texture.abc import Style from source.gui.widget.abc import BoxWidget from source.type import Distance, ColorRGB, Point2D diff --git a/source/gui/widget/Image.py b/source/gui/widget/Image.py index fe210ca..4ffa8ee 100644 --- a/source/gui/widget/Image.py +++ b/source/gui/widget/Image.py @@ -2,7 +2,7 @@ from typing import TYPE_CHECKING import pyglet.image -from source.gui.sprite import Sprite +from source.gui.better_pyglet import Sprite from source.gui.widget.abc import BoxWidget from source.type import Distance diff --git a/source/gui/widget/Input.py b/source/gui/widget/Input.py index b2c878f..5af861f 100644 --- a/source/gui/widget/Input.py +++ b/source/gui/widget/Input.py @@ -3,7 +3,7 @@ from typing import TYPE_CHECKING, Optional, Type import pyglet.image -from source.gui.sprite import Sprite +from source.gui.better_pyglet import Sprite, Label from source.gui.texture.abc import Style from source.gui.widget.abc import BoxWidget from source.type import Distance @@ -46,7 +46,7 @@ class Input(BoxWidget): **dict_filter_prefix("background_", kwargs) ) - self.label = pyglet.text.Label( + self.label = Label( width=None, height=None, anchor_x="center", anchor_y="center", batch=self.scene.batch, diff --git a/source/gui/widget/Scroller.py b/source/gui/widget/Scroller.py index 29fe225..e095f48 100644 --- a/source/gui/widget/Scroller.py +++ b/source/gui/widget/Scroller.py @@ -2,7 +2,7 @@ from typing import TYPE_CHECKING, Callable, Any, Type import pyglet.image -from source.gui.sprite import Sprite +from source.gui.better_pyglet import Sprite, Label from source.gui.texture.abc import Style from source.gui.widget.abc import BoxWidget from source.type import Distance @@ -54,7 +54,7 @@ class Scroller(BoxWidget): **dict_filter_prefix("cursor_", kwargs) ) - self.label = pyglet.text.Label( + self.label = Label( anchor_x="center", anchor_y="center", batch=self.scene.batch, **dict_filter_prefix("label_", kwargs) diff --git a/source/gui/widget/Text.py b/source/gui/widget/Text.py index a6df13e..1434c05 100644 --- a/source/gui/widget/Text.py +++ b/source/gui/widget/Text.py @@ -1,5 +1,6 @@ from typing import TYPE_CHECKING +from source.gui.better_pyglet import Label from source.gui.widget.abc import BoxWidget import pyglet @@ -25,7 +26,7 @@ class Text(BoxWidget): **kwargs): super().__init__(scene, x, y, width, height) - self.label = pyglet.text.Label( + self.label = Label( x=self.x, y=self.y, width=self.width, height=self.height, batch=self.scene.batch, **kwargs