PyScene 1.0.6__tar.gz → 1.0.8__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pyscene-1.0.6 → pyscene-1.0.8}/PKG-INFO +4 -3
- {pyscene-1.0.6 → pyscene-1.0.8}/README.md +2 -1
- {pyscene-1.0.6 → pyscene-1.0.8}/pyproject.toml +2 -2
- {pyscene-1.0.6 → pyscene-1.0.8}/src/PyScene/Game.py +4 -2
- {pyscene-1.0.6 → pyscene-1.0.8}/src/PyScene/__init__.py +5 -1
- {pyscene-1.0.6 → pyscene-1.0.8}/src/PyScene/objs/GameObj.py +3 -0
- pyscene-1.0.8/src/PyScene/objs/Timer.py +33 -0
- {pyscene-1.0.6 → pyscene-1.0.8}/src/PyScene/objs/__init__.py +2 -1
- {pyscene-1.0.6 → pyscene-1.0.8}/src/PyScene/objs/animation.py +2 -2
- {pyscene-1.0.6 → pyscene-1.0.8}/src/PyScene/utils/Assets.py +6 -2
- {pyscene-1.0.6 → pyscene-1.0.8}/.gitignore +0 -0
- {pyscene-1.0.6 → pyscene-1.0.8}/LICENSE +0 -0
- {pyscene-1.0.6 → pyscene-1.0.8}/src/PyScene/Collisions.py +0 -0
- {pyscene-1.0.6 → pyscene-1.0.8}/src/PyScene/Keys.py +0 -0
- {pyscene-1.0.6 → pyscene-1.0.8}/src/PyScene/Math.py +0 -0
- {pyscene-1.0.6 → pyscene-1.0.8}/src/PyScene/Net.py +0 -0
- {pyscene-1.0.6 → pyscene-1.0.8}/src/PyScene/objs/Collision_shapes.py +0 -0
- {pyscene-1.0.6 → pyscene-1.0.8}/src/PyScene/objs/Shapes.py +0 -0
- {pyscene-1.0.6 → pyscene-1.0.8}/src/PyScene/objs/Text.py +0 -0
- {pyscene-1.0.6 → pyscene-1.0.8}/src/PyScene/utils/Subscreen.py +0 -0
- {pyscene-1.0.6 → pyscene-1.0.8}/src/PyScene/utils/__init__.py +0 -0
- {pyscene-1.0.6 → pyscene-1.0.8}/test.py +0 -0
- {pyscene-1.0.6 → pyscene-1.0.8}/tests/flappy_bird.py +0 -0
- {pyscene-1.0.6 → pyscene-1.0.8}/tests/pause.png +0 -0
- {pyscene-1.0.6 → pyscene-1.0.8}/tests/testColl.py +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: PyScene
|
|
3
|
-
Version: 1.0.
|
|
4
|
-
Summary: A
|
|
3
|
+
Version: 1.0.8
|
|
4
|
+
Summary: A python and pygame Game Engine
|
|
5
5
|
Project-URL: Homepage, https://github.com/sfertig/PyScene
|
|
6
6
|
Project-URL: Issues, https://github.com/sfertig/PyScene/issues
|
|
7
7
|
Author-email: Sam Fertig <sfertig007@gmail.com>
|
|
@@ -15,8 +15,9 @@ Description-Content-Type: text/markdown
|
|
|
15
15
|
# PyScene
|
|
16
16
|
|
|
17
17
|
PyScene is a custom python + pygame framework / engine developed to streamline 2d game development.
|
|
18
|
+
This is not a pygame wrapper, as it goed beyons the basic helper features and dives into a mini engine / framework.
|
|
18
19
|
|
|
19
20
|
Please Note: This engine is still in development and many features, like tilemaps and audio, are a work in progress. It also lack any form of documentation, I ask for patience as docs will be rolled out once the core features are more solidified.
|
|
20
21
|
|
|
21
|
-
PyScene is in developement and API's may change offten, a fully stable version should come with v2.0.0, currently on v1.0.
|
|
22
|
+
PyScene is in developement and API's may change offten, a fully stable version should come with v2.0.0, currently on v1.0.8
|
|
22
23
|
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
# PyScene
|
|
2
2
|
|
|
3
3
|
PyScene is a custom python + pygame framework / engine developed to streamline 2d game development.
|
|
4
|
+
This is not a pygame wrapper, as it goed beyons the basic helper features and dives into a mini engine / framework.
|
|
4
5
|
|
|
5
6
|
Please Note: This engine is still in development and many features, like tilemaps and audio, are a work in progress. It also lack any form of documentation, I ask for patience as docs will be rolled out once the core features are more solidified.
|
|
6
7
|
|
|
7
|
-
PyScene is in developement and API's may change offten, a fully stable version should come with v2.0.0, currently on v1.0.
|
|
8
|
+
PyScene is in developement and API's may change offten, a fully stable version should come with v2.0.0, currently on v1.0.8
|
|
8
9
|
|
|
@@ -3,11 +3,11 @@ requires = ["hatchling >= 1.26"]
|
|
|
3
3
|
build-backend = "hatchling.build"
|
|
4
4
|
[project]
|
|
5
5
|
name = "PyScene"
|
|
6
|
-
version = "1.0.
|
|
6
|
+
version = "1.0.8"
|
|
7
7
|
authors = [
|
|
8
8
|
{ name="Sam Fertig", email="sfertig007@gmail.com" },
|
|
9
9
|
]
|
|
10
|
-
description = "A
|
|
10
|
+
description = "A python and pygame Game Engine"
|
|
11
11
|
readme = "README.md"
|
|
12
12
|
requires-python = ">=3.9"
|
|
13
13
|
classifiers = [
|
|
@@ -56,6 +56,9 @@ class _game:
|
|
|
56
56
|
self.scenes = {}
|
|
57
57
|
self.id = 0
|
|
58
58
|
|
|
59
|
+
#other flags
|
|
60
|
+
self.always_global = False
|
|
61
|
+
|
|
59
62
|
|
|
60
63
|
def _queue_add(self, obj):
|
|
61
64
|
if self.active_scene is None: self.queue_creation.append(obj)
|
|
@@ -96,7 +99,7 @@ class _game:
|
|
|
96
99
|
def __update(self):
|
|
97
100
|
self.click = False
|
|
98
101
|
self.dt = self.clock.tick(self.fps)/1000.0
|
|
99
|
-
self.events = pygame.event.get()
|
|
102
|
+
self.events = pygame.event.get().copy()
|
|
100
103
|
|
|
101
104
|
for obj in self.dynamic_col: obj.update()
|
|
102
105
|
|
|
@@ -189,7 +192,6 @@ class _game:
|
|
|
189
192
|
class Scene:
|
|
190
193
|
def __init__(self, name):
|
|
191
194
|
self.name = name
|
|
192
|
-
Game.scenes[name] = self
|
|
193
195
|
self._objects = []
|
|
194
196
|
self._render_queue = []
|
|
195
197
|
self.queue_creation = []
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#imports
|
|
2
2
|
"PyScene is a custom python + pygame framework / engine developed to streamline 2d game development."
|
|
3
|
-
"Version: 1.0.
|
|
3
|
+
"Version: 1.0.8"
|
|
4
4
|
|
|
5
5
|
from .Game import Game, Scene, handle_collision
|
|
6
6
|
from .Math import *
|
|
@@ -26,6 +26,10 @@ __all__ = [
|
|
|
26
26
|
"Line",
|
|
27
27
|
"Text",
|
|
28
28
|
"Image",
|
|
29
|
+
"Timer",
|
|
30
|
+
|
|
31
|
+
"Animation",
|
|
32
|
+
"AnimationManager",
|
|
29
33
|
|
|
30
34
|
"StaticCollisionRect",
|
|
31
35
|
"DynamicCollisionRect",
|
|
@@ -12,9 +12,12 @@ class GameObj: #this will be the base class of every game obj
|
|
|
12
12
|
self._id = Game._get_id()
|
|
13
13
|
|
|
14
14
|
#add to creation
|
|
15
|
+
if Game.always_global: Global = True
|
|
15
16
|
if not Global: Game._queue_add(self)
|
|
16
17
|
else: Game.queue_creation.append(self) #if obj is just global anyway
|
|
17
18
|
|
|
19
|
+
self._global = Global
|
|
20
|
+
|
|
18
21
|
def update(self): pass
|
|
19
22
|
def render(self): pass
|
|
20
23
|
def destroy(self): Game._queue_remove(self)
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
from .GameObj import GameObj
|
|
2
|
+
from ..Game import Game
|
|
3
|
+
from ..Math import Vector2D
|
|
4
|
+
|
|
5
|
+
class Timer(GameObj):
|
|
6
|
+
def __init__(self, duration, active=True, Global=False):
|
|
7
|
+
super().__init__(Vector2D(0, 0), 0, active, True, Global)
|
|
8
|
+
self.duration = duration
|
|
9
|
+
self.elapsed = 0.0
|
|
10
|
+
self.running = False
|
|
11
|
+
self.start()
|
|
12
|
+
|
|
13
|
+
def start(self):
|
|
14
|
+
self.elapsed = 0
|
|
15
|
+
self.running = True
|
|
16
|
+
|
|
17
|
+
def stop(self):
|
|
18
|
+
self.running = False
|
|
19
|
+
|
|
20
|
+
def get_time(self):
|
|
21
|
+
return self.elapsed
|
|
22
|
+
|
|
23
|
+
def update(self):
|
|
24
|
+
if not self.active: return
|
|
25
|
+
if self.running:
|
|
26
|
+
self.elapsed += Game.dt
|
|
27
|
+
if self.elapsed >= self.duration:
|
|
28
|
+
self.running = False
|
|
29
|
+
return True
|
|
30
|
+
return False
|
|
31
|
+
|
|
32
|
+
def is_done(self):
|
|
33
|
+
return not self.running and self.elapsed >= self.duration
|
|
@@ -3,5 +3,6 @@ from .Shapes import *
|
|
|
3
3
|
from .Text import *
|
|
4
4
|
from .animation import *
|
|
5
5
|
from .Collision_shapes import *
|
|
6
|
+
from .Timer import Timer
|
|
6
7
|
|
|
7
|
-
__all__ = ["GameObj", "Rect", "Circle", "Line", "Text", "Image", "Animation", "AnimationManager", "StaticCollisionRect", "DynamicCollisionRect"]
|
|
8
|
+
__all__ = ["GameObj", "Rect", "Circle", "Line", "Text", "Image", "Animation", "AnimationManager", "StaticCollisionRect", "DynamicCollisionRect", "Timer"]
|
|
@@ -63,7 +63,7 @@ class Animation(GameObj):
|
|
|
63
63
|
self.images[i] = pygame.transform.flip(self.images[i], True, False)
|
|
64
64
|
|
|
65
65
|
def copy(self):
|
|
66
|
-
return Animation(self.image, self.size, self.fps, self.loop)
|
|
66
|
+
return Animation(self.image, self.size, self.fps, self.loop, self.pos, self.z_index, self.active, self.visible, self.offset, self._global)
|
|
67
67
|
def render(self):
|
|
68
68
|
if not self.visible: return
|
|
69
69
|
Game.cam.draw_image(self.get_image(), self.pos, self.offset)
|
|
@@ -74,7 +74,7 @@ class AnimationManager(GameObj):
|
|
|
74
74
|
self.animations = animations
|
|
75
75
|
self.current_anim = current_anim
|
|
76
76
|
|
|
77
|
-
for anim in self.animations:
|
|
77
|
+
for anim in self.animations.values():
|
|
78
78
|
anim.destroy() #remove from global or scene calls
|
|
79
79
|
|
|
80
80
|
def new_anim(self, name, anim):
|
|
@@ -84,8 +84,12 @@ class _assets:
|
|
|
84
84
|
def new_font(self, name, path, size):
|
|
85
85
|
self.fonts[name] = pygame.font.Font(path, size)
|
|
86
86
|
|
|
87
|
-
def new_animation(self, name, image, size=16, fps=3, loop=True, pos=Vector2D(0, 0), z_index=0, active=True, visible=True, offset=True, Global=False):
|
|
88
|
-
|
|
87
|
+
def new_animation(self, name, image, size=16, fps=3, loop=True, rect=None, pos=Vector2D(0, 0), z_index=0, active=True, visible=True, offset=True, Global=False):
|
|
88
|
+
m = image
|
|
89
|
+
if rect is not None:
|
|
90
|
+
m = image.subsurface(rect)
|
|
91
|
+
self.animations[name] = Animation(m, size, fps, loop, pos, z_index, active, visible, offset, Global)
|
|
92
|
+
return self.animations[name]
|
|
89
93
|
def new_anim_nIMG(self, name, size=16, fps=3, path=None, rect=None, scale=1.0, colorKey=(0, 0, 0), sWidth=None, sHeight=None, loop=True, pos=Vector2D(0, 0), z_index=0, active=True, visible=True, offset=True, Global=False):
|
|
90
94
|
#create image
|
|
91
95
|
self.new_image(name, path, rect, scale, colorKey, sWidth, sHeight)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|