diff --git a/robotgame/block.py b/robotgame/block.py index 2d53a15..4005b7a 100644 --- a/robotgame/block.py +++ b/robotgame/block.py @@ -21,7 +21,7 @@ # maintained by : Sakse Dalum """ -A generic block. +A generic block. And other block derivatives. """ import pygame @@ -54,3 +54,5 @@ class Block(worldobject.WorldObject): self.y - self.img.get_size()[1] + 24 - self.level.camera_y)) +class ArrowBlock(Block): + pass diff --git a/robotgame/level1.py b/robotgame/level1.py index 2438276..31b993c 100644 --- a/robotgame/level1.py +++ b/robotgame/level1.py @@ -34,6 +34,7 @@ import player import tile import block import boulder +import lever class Level1(level.Level): def __init__(self, game, graphics_dir, paused=False): @@ -53,6 +54,12 @@ class Level1(level.Level): movable=True)) self.objects.append(boulder.Boulder(self, 64, 48)) + self.objects.append(lever.Lever(self, 128, 48*2, [], toggling=True)) + self.objects.append(lever.Lever(self, 128, 48*3, [], toggling=False)) + self.objects.append(lever.Lever(self, 128*2, 48*3, [], toggling=False, + anim='lever_updown')) + self.objects.append(lever.Lever(self, 128*2, 48*5, [], toggling=True, + anim='lever_updown')) def load(self): """Load all resources used in the level.""" @@ -72,7 +79,10 @@ class Level1(level.Level): [('boulder_up', os.path.join('boulder', 'up')), ('boulder_down', os.path.join('boulder', 'down')), ('boulder_right', os.path.join('boulder', 'right')), - ('boulder_left', os.path.join('boulder', 'right'))] + ('boulder_left', os.path.join('boulder', 'right')), + + ('lever_updown', os.path.join('lever', 'down-up')), + ('lever_leftright', os.path.join('lever', 'left-right'))] ): self.imgs[anim] = [] diff --git a/robotgame/lever.py b/robotgame/lever.py new file mode 100644 index 0000000..83d0f46 --- /dev/null +++ b/robotgame/lever.py @@ -0,0 +1,66 @@ +# This file is part of ROBOTGAME +# +# ROBOTGAME is free software: you can redistribute it and/or modify it under the +# terms of the GNU General Public License as published by the Free Software +# Foundation, either version 3 of the License, or (at your option) any later +# version. +# +# ROBOTGAME is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# ROBOTGAME. If not, see . +# +# ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' +# +# lever.py +# -------------------- +# date created : Wed Aug 8 2012 +# copyright : (C) 2012 Sakse Dalum +# maintained by : Sakse Dalum + +""" +A generic lever. +""" + +import pygame + +import worldobject + +class Lever(worldobject.WorldObject): + def __init__(self, level, x, y, links, + anim='lever_leftright', toggling=False): + self.__dict__.update(locals()) + worldobject.WorldObject.__init__(self, level, x, y) + + self.frame = 0 + self.anim_speed = 15 + self.setting = False + + def use(self, obj): + self.setting = not self.setting + + for link in self.links: + link(self.setting) + + def update(self, e, t, dt): + # Update the animation + if self.setting: + self.frame = min(self.frame + self.anim_speed * dt, + len(self.level.imgs[self.anim]) - 1) + else: + self.frame = max(self.frame - self.anim_speed * dt, + 0) + if not self.toggling: + if (self.frame + self.anim_speed * dt + >= len(self.level.imgs[self.anim]) - 1): + self.setting = 0 + + worldobject.WorldObject.update(self, e, t, dt) + + def draw(self, window): + self.img = self.level.imgs[self.anim][int(self.frame)] + window.blit(self.img, (self.x - 32 - self.level.camera_x, + self.y - self.img.get_size()[1] + 24 + - self.level.camera_y)) diff --git a/robotgame/worldobject.py b/robotgame/worldobject.py index d4799af..f0b2fd2 100644 --- a/robotgame/worldobject.py +++ b/robotgame/worldobject.py @@ -76,6 +76,9 @@ class WorldObject(object): def use(self): pass + def activate(self, setting): + pass + def set_alpha(self, value): """ Set the relative translucency of the per-pixel-alpha image.