Changeset 385:51deb78cae52
- Timestamp:
- Sep 6, 2013, 9:58:15 PM (7 years ago)
- Branch:
- default
- rebase_source:
- 5077a64a868295383cfa281f1f69c605a3d6437c
- Location:
- nagslang
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
nagslang/collectable.py
r378 r385 4 4 from nagslang import render 5 5 from nagslang.constants import ZORDER_LOW 6 from nagslang.game_object import GameObject, SingleShapePhysicser, make_body 6 from nagslang.game_object import (GameObject, SingleShapePhysicser, Result, 7 make_body) 7 8 from nagslang.resources import resources 8 9 … … 13 14 def __init__(self, space, name, shape, renderer): 14 15 self._name = name 16 self.collected = False 15 17 shape.sensor = True 16 18 super(CollectibleGameObject, self).__init__( … … 24 26 def _collect(self, protagonist): 25 27 protagonist.add_item(self._name) 26 # TODO: Make this less hacky.27 28 self.physicser.remove_from_space() 28 self.renderer = render.NullRenderer() 29 self.collected = True 30 31 def update(self, dt): 32 if self.collected: 33 return Result(remove=[self]) 29 34 30 35 -
nagslang/enemies.py
r372 r385 10 10 ACID_SPEED, ACID_DAMAGE, ZORDER_MID) 11 11 from nagslang.events import EnemyDeathEvent, FireEvent 12 from nagslang.game_object import GameObject, SingleShapePhysicser, make_body 12 from nagslang.game_object import (GameObject, SingleShapePhysicser, Result, 13 make_body) 13 14 from nagslang.mutators import FLIP_H 14 15 from nagslang.resources import resources … … 69 70 def lose_health(self, amount): 70 71 self.health -= amount 71 if self.health < 0:72 if self.health <= 0: 72 73 self.physicser.remove_from_space() 73 self.remove = True74 74 EnemyDeathEvent.post(self.physicser.position, self.enemy_type) 75 75 … … 126 126 return x_step, y_step 127 127 128 def update(self, dt): 129 super(Enemy, self).update(dt) 130 if self.health <= 0: 131 return Result(remove=[self]) 132 128 133 129 134 class DeadEnemy(GameObject): … … 195 200 self.set_direction(x_step, y_step) 196 201 self.ranged_attack(300, ACID_SPEED, ACID_DAMAGE, 'acid', 0.2) 197 super(PatrollingAlien, self).update(dt)202 return super(PatrollingAlien, self).update(dt) 198 203 199 204 @classmethod … … 251 256 dx, dy = self._calc_movement() 252 257 self.set_direction(dx, dy) 253 super(ChargingAlien, self).update(dt)258 return super(ChargingAlien, self).update(dt) 254 259 255 260 @classmethod … … 291 296 292 297 def update(self, dt): 293 super(RunAndGunAlien, self).update(dt)294 298 self.count += 1 299 return super(RunAndGunAlien, self).update(dt) 295 300 296 301 @classmethod -
nagslang/game_object.py
r384 r385 14 14 from nagslang.resources import resources 15 15 from nagslang.events import DoorEvent 16 17 18 class Result(object): 19 ''' 20 Return from an update() function, to add new objects to the world, and/or 21 remove old objects. 22 ''' 23 def __init__(self, add=(), remove=()): 24 self.add = add 25 self.remove = remove 16 26 17 27 … … 126 136 if interactible is not None: 127 137 self.interactible.set_game_object(self) 128 self.remove = False # If true, will be removed from drawables129 138 self._timers = {} 130 139 self._active_timers = {} … … 483 492 shape.physicser.game_object.hit(self) 484 493 self.physicser.remove_from_space() 485 self.remove = True 486 break 494 return Result(remove=[self]) 487 495 488 496 … … 508 516 if self.lifetime > 0.1: 509 517 self.physicser.remove_from_space() 510 self.remove = True518 return Result(remove=[self]) 511 519 512 520 -
nagslang/screens/area.py
r371 r385 244 244 self.tick_protagonist() 245 245 for drawable in self._drawables: 246 drawable.update(seconds) 247 if drawable.remove: 248 self._drawables.remove(drawable) 246 result = drawable.update(seconds) 247 if result is not None: 248 for new_drawable in result.add: 249 self._drawables.add(new_drawable) 250 for old_drawable in result.remove: 251 self._drawables.remove(old_drawable) 249 252 250 253 def render_health_bar(self, surface, damage_experienced=None):
Note: See TracChangeset
for help on using the changeset viewer.