diff pytouhou/game/laser.py @ 440:b9d2db93972f

Add a base Element class for every object in pytouhou.game.
author Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
date Fri, 30 Aug 2013 14:16:08 +0200
parents 1222341ea22c
children 5bb7d2c0ff46
line wrap: on
line diff
--- a/pytouhou/game/laser.py
+++ b/pytouhou/game/laser.py
@@ -14,6 +14,7 @@
 
 from math import cos, sin, pi
 
+from pytouhou.game.element import Element
 from pytouhou.vm.anmrunner import ANMRunner
 from pytouhou.game.sprite import Sprite
 
@@ -21,16 +22,15 @@ from pytouhou.game.sprite import Sprite
 STARTING, STARTED, STOPPING = range(3)
 
 
-class LaserLaunchAnim(object):
+class LaserLaunchAnim(Element):
     def __init__(self, laser, anm, index):
+        Element.__init__(self, (0, 0))
+
         self._laser = laser
         self.sprite = Sprite()
         self.sprite.anm = anm
         self.sprite.texcoords = anm.sprites[index]
         self.sprite.blendfunc = 1
-        self.removed = False
-        self.objects = [self]
-        self.x, self.y = 0, 0
 
 
     def update(self):
@@ -51,12 +51,14 @@ class LaserLaunchAnim(object):
 
 
 
-class Laser(object):
+class Laser(Element):
     def __init__(self, base_pos, laser_type, sprite_idx_offset,
                        angle, speed, start_offset, end_offset, max_length, width,
                        start_duration, duration, stop_duration,
                        grazing_delay, grazing_extra_duration,
                        game):
+        Element.__init__(self, (0, 0))
+
         self._game = game
         launch_anim = LaserLaunchAnim(self, laser_type.anm,
                                       laser_type.launch_anim_offsets[sprite_idx_offset]
@@ -64,10 +66,6 @@ class Laser(object):
         self._game.effects.append(launch_anim)
         self._laser_type = laser_type
         self.state = STARTING
-        self.sprite = None
-        self.anmrunner = None
-        self.removed = False
-        self.objects = [self]
 
         #TODO: hitbox
 
@@ -80,7 +78,6 @@ class Laser(object):
 
         self.sprite_idx_offset = sprite_idx_offset
         self.base_pos = base_pos
-        self.x, self.y = 0, 0
         self.angle = angle
         self.speed = speed
         self.start_offset = start_offset
@@ -195,15 +192,13 @@ class Laser(object):
         self.frame += 1
 
 
-class PlayerLaser(object):
+class PlayerLaser(Element):
     def __init__(self, laser_type, sprite_idx_offset, hitbox, damage,
                  angle, offset, duration, origin):
-        self.sprite = None
-        self.anmrunner = None
-        self.removed = False
+        Element.__init__(self)
+
         self._laser_type = laser_type
         self.origin = origin
-        self.objects = [self]
 
         self.hitbox = hitbox[0], hitbox[1]