From fbfedc539ffc4e7b1fb779535efa690b671b51c7 Mon Sep 17 00:00:00 2001 From: papush! Date: Sun, 8 Dec 2019 23:47:32 +0100 Subject: [PATCH] nom --- engine/components/collide_rect.py | 5 +-- engine/components/sprite.py | 2 +- engine/servers/physics.py | 49 +++++++++++++++++------------- res/lvl0.png | Bin 12025 -> 16012 bytes scenes/lvl0.py | 32 +++++++++++++++++-- 5 files changed, 61 insertions(+), 27 deletions(-) diff --git a/engine/components/collide_rect.py b/engine/components/collide_rect.py index d4fc82a..3ca7d8d 100644 --- a/engine/components/collide_rect.py +++ b/engine/components/collide_rect.py @@ -3,7 +3,7 @@ from ..servers.physics import PhysicsServer class CollideRect(Component): - def __init__(self, parent, rect, static=True, solid=True): + def __init__(self, parent, rect, static=True, solid=True, cb=None): super().__init__(parent) self.rect = rect def x_change_cb(x): @@ -14,6 +14,7 @@ class CollideRect(Component): parent.subscribe('y', y_change_cb) self.static = static self.solid = solid + self.cb = cb self.vx = 0 self.vy = 0 @@ -21,4 +22,4 @@ class CollideRect(Component): PhysicsServer().register_component(self) def unregister(self): - PhysicsServer().register_component(self) + PhysicsServer().unregister_component(self) diff --git a/engine/components/sprite.py b/engine/components/sprite.py index 6f1d72f..0fbfca4 100644 --- a/engine/components/sprite.py +++ b/engine/components/sprite.py @@ -13,4 +13,4 @@ class Sprite(Component): GraphicsServer().register_component(self) def unregister(self): - GraphicsServer().register_component(self) + GraphicsServer().unregister_component(self) diff --git a/engine/servers/physics.py b/engine/servers/physics.py index 4390f0e..38a57e7 100644 --- a/engine/servers/physics.py +++ b/engine/servers/physics.py @@ -8,39 +8,46 @@ class PhysicsServer(Server): self._dynamic = [] def register_component(self, component): - if component.solid: - if component.static: - self._static.append(component) - else: - self._dynamic.append(component) + if component.static: + self._static.append(component) else: - self._area.append(component) + self._dynamic.append(component) def unregister_component(self, component): - self._static.remove(component) - self._dynamic.remove(component) + if component in self._static: + self._static.remove(component) + if component in self._dynamic: + self._dynamic.remove(component) - def _check_collide(self, rect): - for s in self._static: - if s.rect.colliderect(rect): - return True - return False + def _check_collide(self, dyn): + for s in self._static + self._dynamic: + if s != dyn and s.rect.colliderect(dyn.rect): + return s + return None def step(self): for d in self._dynamic: x_step = -1 if d.vx < 0 else 1 y_step = -1 if d.vy < 0 else 1 for i in range(abs(d.vx)): - if self._check_collide(d.rect): - d.parent.x -= x_step - d.vx = 0 - break + c = self._check_collide(d) + if c is not None: + if c.cb: + c.cb() + if c.solid: + d.parent.x -= x_step + d.vx = 0 + break d.parent.x += x_step for i in range(abs(d.vy)): - if self._check_collide(d.rect): - d.parent.y -= y_step - d.vy = 0 - break + c = self._check_collide(d) + if c is not None: + if c.cb: + c.cb() + if c.solid: + d.parent.y -= y_step + d.vy = 0 + break d.parent.y += y_step # d.vx = 0 # d.vy = 0 diff --git a/res/lvl0.png b/res/lvl0.png index 503e9b941b93768c767e76ca646138a8aa94dbea..aa7e2ea9236bd80d6c4f19cf9e5a23d5f75d7998 100644 GIT binary patch literal 16012 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