Mercurial > fife-parpg
changeset 451:f463ab431cc0
Movement shouldn't be dependent on framerate anymore.
Some minor tweaks.
author | prock@33b003aa-7bff-0310-803a-e67f0ece8222 |
---|---|
date | Thu, 01 Apr 2010 21:14:23 +0000 |
parents | ba6817013343 |
children | f07d779362da |
files | demos/shooter/scripts/common/baseobject.py demos/shooter/scripts/scene.py demos/shooter/scripts/ships/player.py demos/shooter/scripts/ships/shipbase.py demos/shooter/scripts/weapons.py demos/shooter/scripts/world.py |
diffstat | 6 files changed, 33 insertions(+), 40 deletions(-) [+] |
line wrap: on
line diff
--- a/demos/shooter/scripts/common/baseobject.py Thu Apr 01 19:26:56 2010 +0000 +++ b/demos/shooter/scripts/common/baseobject.py Thu Apr 01 21:14:23 2010 +0000 @@ -33,7 +33,7 @@ self._xscale = self._layer.getCellGrid().getXScale() self._yscale = self._layer.getCellGrid().getYScale() self._velocity = fife.DoublePoint(0,0) - self._maxvelocity = 1 + self._maxvelocity = 1.25 self._timedelta = 0 self._boundingBox = Rect(0,0,0,0) self._running = False @@ -54,11 +54,11 @@ shiploc = self.location exactloc = shiploc.getExactLayerCoordinates() - exactloc.x += self._velocity.x - exactloc.y += self._velocity.y + exactloc.x += self._velocity.x * (timedelta/1000.0)/self._xscale + exactloc.y += self._velocity.y * (timedelta/1000.0)/self._yscale - self._boundingBox.x = exactloc.x - self._boundingBox.w/2 - self._boundingBox.y = exactloc.y - self._boundingBox.h/2 + self._boundingBox.x = (exactloc.x - self._boundingBox.w/2) * self._xscale + self._boundingBox.y = (exactloc.y - self._boundingBox.h/2) * self._yscale shiploc.setExactLayerCoordinates(exactloc) self.location = shiploc @@ -82,7 +82,7 @@ def applyBrake(self, brakingForce, timedelta): - if self._velocity.length() <= .001: + if self._velocity.length() <= .01: self._velocity.x = 0 self._velocity.y = 0 return
--- a/demos/shooter/scripts/scene.py Thu Apr 01 19:26:56 2010 +0000 +++ b/demos/shooter/scripts/scene.py Thu Apr 01 21:14:23 2010 +0000 @@ -50,6 +50,8 @@ self._nodes = list() self._player = Player(self._model, 'player', self._layer) + self._player.width = 0.075 + self._player.height = 0.075 self._player.start() self._projectiles = list() @@ -68,23 +70,22 @@ self._nodes.append(SceneNode()) for instance in enemies: - loc = instance.getLocation().getExactLayerCoordinates() - objectName = instance.getObject().getId() print objectName enemy = Ship(self._model, 'enemy', self._layer, False) enemy.instance = instance - enemy.width = 0.5 - enemy.height = 0.5 - enemy.velocity.x = -0.013 + enemy.width = 0.075 + enemy.height = 0.075 + enemy.velocity.x = -0.13 enemy.start() - + + loc = instance.getLocation().getExactLayerCoordinates() nodeindex = int(loc.x * xscale) self._nodes[nodeindex].spaceobjects.append(enemy) - def getObjectsInNode(self, node): - return self._nodes[node].instances + def getObjectsInNode(self, nodeindex): + return self._nodes[nodeindex].instances def getObjectsInRange(self, rangeL, rangeR): objects = list()
--- a/demos/shooter/scripts/ships/player.py Thu Apr 01 19:26:56 2010 +0000 +++ b/demos/shooter/scripts/ships/player.py Thu Apr 01 21:14:23 2010 +0000 @@ -29,7 +29,7 @@ class Player(Ship): def __init__(self, model, playerName, layer): super(Player, self).__init__(model, playerName, layer) - self._bounds = Rect(-100,-100,200,200) + self._score = 0 def _getScore(self): @@ -44,20 +44,20 @@ oldpos = self.location if keystate['UP']: - self.applyThrust(fife.DoublePoint(0,-0.075), timedelta) + self.applyThrust(fife.DoublePoint(0,-0.75), timedelta) key = True if keystate['DOWN']: - self.applyThrust(fife.DoublePoint(0,0.075), timedelta) + self.applyThrust(fife.DoublePoint(0,0.75), timedelta) key = True if keystate['LEFT']: - self.applyThrust(fife.DoublePoint(-0.075,0), timedelta) + self.applyThrust(fife.DoublePoint(-0.75,0), timedelta) key = True if keystate['RIGHT']: - self.applyThrust(fife.DoublePoint(0.075,0), timedelta) + self.applyThrust(fife.DoublePoint(0.75,0), timedelta) key = True if not key and self._velocity.length() > 0: - self.applyBrake(0.075, timedelta) + self.applyBrake(0.75, timedelta) super(Player, self).update(timedelta) @@ -69,28 +69,21 @@ camrect = Rect(topleft.x, topleft.y, bottomright.x - topleft.x, bottomright.y - topleft.y) #player bounding box - #TODO: make this configurable xscale = self._layer.getCellGrid().getXScale() yscale = self._layer.getCellGrid().getYScale() - pos = self.location.getExactLayerCoordinates() - bbox = Rect() - bbox.x = pos.x*xscale - 0.175 - bbox.y = pos.y*yscale - 0.175 - bbox.w = 0.25 - bbox.h = 0.25 + #add the padding to the edge - camrect.x += bbox.w - camrect.y += bbox.h - camrect.w -= 2*bbox.w - camrect.h -= 2*bbox.h - + camrect.x += self._boundingBox.w + camrect.y += self._boundingBox.h + camrect.w -= 2*self._boundingBox.w + camrect.h -= 2*self._boundingBox.h - if not bbox.intersects(camrect): - if (bbox.x + bbox.w) < camrect.x: + if not self._boundingBox.intersects(camrect): + if (self._boundingBox.x + self._boundingBox.w) < camrect.x: #pos.x = (bbox.x + bbox.w/2 + 0.1) / xscale #oldpos.setExactLayerCoordinates(pos) - self._velocity.x = (timedelta * 0.001) / xscale + self._velocity.x = (timedelta * 0.01) / xscale # elif (bbox.y + bbox.h) < camrect.y or (bbox.y - bbox.h) > camrect.y: # pos.x += self._velocity.x * (timedelta/1000.0)
--- a/demos/shooter/scripts/ships/shipbase.py Thu Apr 01 19:26:56 2010 +0000 +++ b/demos/shooter/scripts/ships/shipbase.py Thu Apr 01 21:14:23 2010 +0000 @@ -32,7 +32,6 @@ def __init__(self, model, name, layer, findInstance=True): super(Ship, self).__init__(model, name, layer, findInstance) - self._maxvelocity = 0.025/sqrt(self._xscale * self._yscale) self._timedelta = 0 self._weapon = None
--- a/demos/shooter/scripts/weapons.py Thu Apr 01 19:26:56 2010 +0000 +++ b/demos/shooter/scripts/weapons.py Thu Apr 01 21:14:23 2010 +0000 @@ -75,13 +75,13 @@ self._ship = ship self._firerate = firerate self._lastfired = 0 - self._projectileVelocity = fife.DoublePoint(0.075,0) + self._projectileVelocity = fife.DoublePoint(0.75,0) def fire(self, curtime): if (curtime - self._lastfired) > self._firerate: pjctl = Projectile(self._model, "bullet1", self._layer, 2000 ) - pjctl.width = 0.05 - pjctl.height = 0.05 + pjctl.width = 0.025 + pjctl.height = 0.025 pjctl.run(fife.DoublePoint(self._projectileVelocity.x,self._projectileVelocity.y), self._ship.location, curtime) self._lastfired = curtime return pjctl
--- a/demos/shooter/scripts/world.py Thu Apr 01 19:26:56 2010 +0000 +++ b/demos/shooter/scripts/world.py Thu Apr 01 21:14:23 2010 +0000 @@ -88,7 +88,7 @@ self.mainwindow.show() #give player the default weapon - self.scene.player.weapon = Weapon(self.model, self.map.getLayer('objects'), self.scene.player, 100) + self.scene.player.weapon = Weapon(self.model, self.map.getLayer('objects'), self.scene.player, 200) self.scene.initScene(self.map) def initCameras(self):