papush!
e8be8b52ab
implémentation du patron Observateur dans la classe Observer qui permet à un objet d’être notifié quand une propriété d’un autre objet est modifiée. CollideRect observe maintenant les propriétés x et y de l’entité à laquelle il appartient et met à jour son rect accordément.
25 lines
674 B
Python
25 lines
674 B
Python
from .component import Component
|
|
from ..servers.physics import PhysicsServer
|
|
|
|
|
|
class CollideRect(Component):
|
|
def __init__(self, parent, rect, static=True, solid=True):
|
|
super().__init__(parent)
|
|
self.rect = rect
|
|
def x_change_cb(x):
|
|
self.rect.x = x
|
|
def y_change_cb(y):
|
|
self.rect.y = y
|
|
parent.subscribe('x', x_change_cb)
|
|
parent.subscribe('y', y_change_cb)
|
|
self.static = static
|
|
self.solid = solid
|
|
self.vx = 0
|
|
self.vy = 0
|
|
|
|
def register(self):
|
|
PhysicsServer().register_component(self)
|
|
|
|
def unregister(self):
|
|
PhysicsServer().register_component(self)
|