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)