This commit is contained in:
Frank DeMarco 2018-03-05 23:01:31 -05:00
parent ff096eca52
commit 01544fb5cf
1 changed files with 6 additions and 19 deletions

View File

@ -5,7 +5,7 @@ from glob import glob
from pygame import Color, Rect, Surface, PixelArray
from pygame.image import load
from pygame.transform import flip, rotate
from pygame.transform import flip
from pygame.locals import *
from Animation import Animation
@ -14,8 +14,6 @@ from extension import get_hue_shifted_surface, get_step
class Sprite(Animation):
N, W, S, E = range(4)
def __init__(self, parent, framerate=None, neighbors=[], mass=None):
Animation.__init__(self, parent, self.shift_frame, framerate)
self.frames = []
@ -26,12 +24,11 @@ class Sprite(Animation):
self.frameset_index = 0
self.neighbors = neighbors
self.mass = mass
self.step = EVector()
self._step = EVector()
self.set_frameset(0)
self.locations.append(Location(self))
self.motion_overflow = Vector()
self.display_surface = self.get_display_surface()
self.rotation = self.N
def __getattr__(self, name):
if name in ("location", "rect"):
@ -138,16 +135,6 @@ class Sprite(Animation):
frames[ii] = flip(frame, True, False)
self.mirrored = not self.mirrored
def point(self, heading):
center = self.location.center
for ii, frame in enumerate(self.frames):
self.frames[ii] = rotate(frame, abs(heading - self.rotation) * 90)
for frameset in self.framesets:
frameset.measure_rect()
self.update_location_size()
self.rotation = heading
self.location.center = center
def clear_frames(self):
self.frames = []
for frameset in self.framesets:
@ -224,18 +211,18 @@ class Sprite(Animation):
frameset.reverse()
def set_step(self, dx=0, dy=0, magnitude=None, angle=0):
self.step.set_step(dx, dy, magnitude, angle)
self._step.set_step(dx, dy, magnitude, angle)
def cancel_step(self):
self.step.set_step(0, 0)
self._step.set_step(0, 0)
def is_stepping(self):
return bool(self.step)
return bool(self._step)
def update(self, areas=None, substitute=None):
Animation.update(self)
if self.is_stepping():
self.move(self.step.dx, self.step.dy)
self.move(self._step.dx, self._step.dy)
for neighbor in self.neighbors:
self.move(*get_step(self.location.center, neighbor.location.center,
neighbor.mass))