# fuel box name = 'fuelbox' type = 'gif' from baseairobj import * images = [] import random DX = -2 * game.groundspeed DY = 0.5 TOP = game.arena.top BOTTOM = game.groundarena.bottom FALLING_DY = 1.5 PARACHUTE_AND_BOX = 0 PARACHUTE_ONLY = 1 BOX_ONLY = 2 def load_game_resources(): global images, name, type for index in xrange(0,3): images.append(gfx.load('%s%d.%s' % (name,index,type))) class FuelBox(AirObj): def __init__(self,x,y): global name,images self.images = images self.state = PARACHUTE_AND_BOX self.image = self.images[self.state] AirObj.__init__(self,name,self.image) self.x = x self.y = y self.rect.topleft = [self.x,self.y] self.dx = DX self.dy = DY self.gravity = game.gravity self.friction = game.friction self.timer = 0 def tick(self, speedadjust): self.x += self.dx * speedadjust self.y += self.dy * speedadjust if self.state == BOX_ONLY: self.physics if self.x < 0 - self.rect.width: self.dead = 1 self.y += self.dy * speedadjust if self.y < TOP: self.y = TOP elif self.y > BOTTOM - self.rect.height: self.y = BOTTOM self.exploding = 1 self.rect.topleft = [self.x,self.y] # override the collide method since player needs to pick up fuel def collide(self,rect): if self.rect.colliderect(rect): self.collision_timer += -1 if (self.collision_timer < 0 and (self.state == PARACHUTE_AND_BOX or self.state == BOX_ONLY)): game.fuel = game.start_fuel game.bombs = game.start_bombs if self.state == PARACHUTE_AND_BOX: self.changestate(PARACHUTE_ONLY) else: self.dead = 1 return 0 else: return 0 else: return 0 # override the mark dead method, since a blast blows up the parachute the first time def markdead(self): """This is done to mark an object dead. Return 0 if object is not dead.""" if self.state == PARACHUTE_AND_BOX: self.changestate(BOX_ONLY) self.dy = FALLING_DY return 0 else: self.dead = 1 return self.dead def changestate(self,state): if state == PARACHUTE_AND_BOX: self.state = PARACHUTE_AND_BOX elif state == PARACHUTE_ONLY: self.state = PARACHUTE_ONLY elif state == BOX_ONLY: self.state = BOX_ONLY self.image = self.images[self.state] def physics(self): self.dy = self.dy * self.friction self.dy = self.dy + self.gravity if self.dx < -game.groundspeed: self.dx = -game.groundspeed