Skip to content

Commit 3a0d803

Browse files
fix(core, shader, sprite, tilemap, engine, scene_manager): Update to v1.6.1
- docs(changelog): Update changelog for v1.6.1; add important bug fix details - refactor(core): Improve type hints and imports across core modules - style(shader, sprite, tilemap): Simplify import statements in shader, sprite, and tilemap modules - fix(engine, scene_manager): Enhance type hints for engine instantiation and destruction methods
1 parent b3bcefe commit 3a0d803

File tree

10 files changed

+30
-14
lines changed

10 files changed

+30
-14
lines changed

docs/conf.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information
1212

1313
project = 'GameCore'
14-
copyright = '2024, Niklas Wockenfuß'
14+
copyright = '2025, Niklas Wockenfuß'
1515
author = 'Niklas Wockenfuß'
1616

1717
# -- General configuration ---------------------------------------------------

docs/reference/changelog.rst

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,17 @@ Changelog
44
v1.6
55
^^^^
66

7+
v1.6 - v1.6.1
8+
---------------
9+
10+
**Changed**
11+
12+
- Import cycle changed in core. No adjustments are necessary here.
13+
14+
**Fixes**
15+
16+
- Important Bug Fix in ``Core.Instantiate()``. Engine was not returned
17+
718
v1.5.4 - v1.6
819
---------------
920

game_core/src/core/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22

33
from .coroutine import Coroutine
44
from .engine import Engine
5-
from .scene_manager import SceneManager, SurfaceStack, Scene
5+
from .scene_manager import SceneManager, SurfaceStack, Scene, scene
66
from .surface_stack import SurfaceStack, SurfaceStackElement

game_core/src/core/core.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
import pygame
44
import string
55

6+
from pygame import Surface
67
from .engine import Engine
7-
from .surface_stack import SurfaceStack, SurfaceStackElement
8-
from .scene_manager import SceneManager, Scene, scene
8+
from .scene_manager import SceneManager
99

1010
class Core:
1111
"""
@@ -206,7 +206,7 @@ def create_layer_surface(self, name=None, width=0, height=0, x=0, y=0, render_la
206206

207207
return self.get_layer_surface(name)
208208

209-
def create_surface(self, size=None):
209+
def create_surface(self, size=None) -> Surface:
210210
"""
211211
Creates a new surface with specified dimensions.
212212
@@ -235,7 +235,7 @@ def draw_surface(self, surface, position=None):
235235
position = (0, 0)
236236
self.window.blit(surface, position)
237237

238-
def instantiate(self, engine, **kwargs):
238+
def instantiate(self, engine, **kwargs) -> Engine:
239239
"""
240240
Creates and initializes a new instance of an engine class at runtime.
241241
This method is particularly suitable for creating **prefabs**, which are reusable templates as engines.
@@ -252,7 +252,7 @@ def instantiate(self, engine, **kwargs):
252252
return None
253253

254254

255-
def destroy(self, engine):
255+
def destroy(self, engine: Engine):
256256
"""
257257
Destroys an engine instance and removes it from the list of active engines.
258258

game_core/src/core/engine.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
1+
from typing import TYPE_CHECKING
12
import inspect
23

34
from .coroutine import Coroutine
45

6+
if TYPE_CHECKING:
7+
from core import Core
8+
59
class Engine:
610
"""
711
Represents a game engine responsible for managing coroutines and state machines.
@@ -15,7 +19,7 @@ class Engine:
1519
:var state_machines: List of state machines managed by the engine.
1620
:type state_machines: list
1721
"""
18-
def __init__(self, core):
22+
def __init__(self, core: 'Core'):
1923
"""
2024
Initializes the Engine.
2125

game_core/src/core/scene_manager.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ def get_surface_stack(self) -> SurfaceStack:
3535
"""
3636
return self._surface_stack
3737

38-
def instantiate_engine(self, engine, **kwargs):
38+
def instantiate_engine(self, engine: Engine, **kwargs) -> Engine:
3939
"""
4040
Adds an engine instance to the scene.
4141
@@ -54,10 +54,11 @@ def instantiate_engine(self, engine, **kwargs):
5454
e._is_started = True
5555
self._engines.append(e)
5656
self._engines = sorted(self._engines, key=lambda x: x.priority_layer, reverse=False)
57+
return e
5758
else:
5859
raise TypeError("value must be an instance of Engine")
5960

60-
def destroy_engine(self, engine):
61+
def destroy_engine(self, engine: Engine):
6162
"""
6263
Destroys an engine instance and removes it from the list of active engines.
6364

game_core/src/shader.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import math
33
import random
44
import pygame.draw
5-
from .core.core import *
5+
from .core import *
66

77
class FogPrefab(Engine):
88
def awake(self):

game_core/src/sprite.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from .core.core import *
1+
from .core import *
22
import os
33

44
####################

game_core/src/tilemap.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import pytmx
2-
from .core.core import *
2+
from .core import *
33

44
class TileMap:
55
def __init__(self, filename):

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ def parse_requirements(filename):
1313

1414
setup(
1515
name="GameCore",
16-
version="1.5.2",
16+
version="1.6.1",
1717
description="GameCore is a nice runtime structure for pygame ",
1818
long_description=open("README.md", encoding="utf-8").read(),
1919
long_description_content_type="text/markdown",

0 commit comments

Comments
 (0)