Mercurial > fife-parpg
comparison demos/shooter/scripts/ships/shipbase.py @ 477:6b33d80b468b
Projectiles are now part of the scene.
Cleaned up the scene update() function.
Moved garbage collection to the beginning of the frame.
Introduced global object types.
Projectiles now only check for collisions in a limited number of scene nodes rather than the entire screen.
author | prock@33b003aa-7bff-0310-803a-e67f0ece8222 |
---|---|
date | Thu, 22 Apr 2010 19:52:34 +0000 |
parents | 10aff123c62c |
children | 82d44c471959 |
comparison
equal
deleted
inserted
replaced
476:78a1eb57c074 | 477:6b33d80b468b |
---|---|
22 # #################################################################### | 22 # #################################################################### |
23 | 23 |
24 from math import sqrt | 24 from math import sqrt |
25 | 25 |
26 from fife import fife | 26 from fife import fife |
27 from scripts.common.baseobject import SpaceObject | 27 from scripts.common.baseobject import * |
28 from scripts.weapons import Weapon | 28 from scripts.weapons import Weapon |
29 | 29 |
30 | 30 |
31 class ShipActionListener(fife.InstanceActionListener): | 31 class ShipActionListener(fife.InstanceActionListener): |
32 def __init__(self, ship): | 32 def __init__(self, ship): |
42 self._ship._flashnumber -= 1 | 42 self._ship._flashnumber -= 1 |
43 else: | 43 else: |
44 self._ship._flashing = False | 44 self._ship._flashing = False |
45 self._ship._flashnumber = 0 | 45 self._ship._flashnumber = 0 |
46 | 46 |
47 if action.getId() == 'explode' and not self._ship.isplayer: | 47 if action.getId() == 'explode' and not self._ship.type == SHTR_PLAYER: |
48 self._ship.removeFromScene() | 48 self._ship.removeFromScene() |
49 | 49 |
50 class Ship(SpaceObject): | 50 class Ship(SpaceObject): |
51 def __init__(self, scene, name, findInstance=True): | 51 def __init__(self, scene, name, findInstance=True): |
52 super(Ship, self).__init__(scene, name, findInstance) | 52 super(Ship, self).__init__(scene, name, findInstance) |
53 | 53 |
54 self._weapon = None | 54 self._weapon = None |
55 | 55 |
56 self._flashnumber = 0 | 56 self._flashnumber = 0 |
57 self._flashing = False | 57 self._flashing = False |
58 | |
59 self._isplayer = False | |
60 | 58 |
61 self._hitpoints = 0 | 59 self._hitpoints = 0 |
62 self._scorevalue = 0 | 60 self._scorevalue = 0 |
63 | 61 |
64 def _setWeapon(self, weapon): | 62 def _setWeapon(self, weapon): |
87 def destroy(self): | 85 def destroy(self): |
88 if self._running: | 86 if self._running: |
89 self._instance.act('explode', self._instance.getFacingLocation()) | 87 self._instance.act('explode', self._instance.getFacingLocation()) |
90 super(Ship, self).destroy() | 88 super(Ship, self).destroy() |
91 | 89 |
92 def _isPlayer(self): | |
93 return self._isplayer | |
94 | |
95 | |
96 def _getHitPoints(self): | 90 def _getHitPoints(self): |
97 return self._hitpoints | 91 return self._hitpoints |
98 | 92 |
99 def _setHitPoints(self, hp): | 93 def _setHitPoints(self, hp): |
100 self._hitpoints = hp | 94 self._hitpoints = hp |
103 return self._scorevalue | 97 return self._scorevalue |
104 | 98 |
105 def _setScoreValue(self, value): | 99 def _setScoreValue(self, value): |
106 self._scorevalue = value | 100 self._scorevalue = value |
107 | 101 |
108 isplayer = property(_isPlayer) | |
109 weapon = property(_getWeapon, _setWeapon) | 102 weapon = property(_getWeapon, _setWeapon) |
110 hitpoints = property(_getHitPoints, _setHitPoints) | 103 hitpoints = property(_getHitPoints, _setHitPoints) |
111 scorevalue = property(_getScoreValue, _setScoreValue) | 104 scorevalue = property(_getScoreValue, _setScoreValue) |