Example #1
0
File: ui.py Project: fbz/banjo
 def pressed(self, actor, event):
     self.changed()
     x, y =  self.getpos(event)
     self.grid.toggle(x, y)
     self.boxes[x][y].paint()
     self.mini.grid = Grid.as_silhouette(self.grid)
     self.painting = True
     self.paintWhat = self.grid.get(x, y)
Example #2
0
File: ui.py Project: fbz/banjo
    def __init__(self, grid, size):
        clutter.Group.__init__(self)
        self.size = size
        self.boxes = []
        self.grid = grid

        self.mini = MiniSprite(Grid.as_silhouette(grid), size)
        self.mini.show()
        self.add(self.mini)

        self.rect = clutter.Rectangle()
        self.rect.set_color(clutter.color_from_string("#ffffff"))
        self.rect.set_opacity(50)
        self.rect.set_position(0,0)
        self.rect.set_size(self.grid.get_cols()*size, self.grid.get_rows()*size)
        self.rect.show()
        self.add(self.rect)

        w, h = self.grid.get_size()

        self.set_reactive(True)
        self.connect("button-press-event", self.pressed)
        self.connect("button-release-event", self.released)
        self.connect("motion-event", self.moved)

        self.changedHandler = None

        def makegetter(x, y):
            def cb():
                return self.grid.get(x, y)
            return cb

        def maketoggler(x, y):
            def cb():
                return self.grid.toggle(x, y)
            return cb

        for x in range(w):
            self.boxes.append([])
            for y in range(h):
                t = Toggler(size-2, maketoggler(x, y), makegetter(x, y))
                t.set_position(x*size+1, y*size+1)
                t.active = True
                self.add(t)
                self.boxes[x].append(t)
        self.painting = False
        self.paintWhat = False
        self.show_all()
Example #3
0
File: ui.py Project: fbz/banjo
    def __init__(self, name, imagefile=None, cellsize=2):
        self.dx = 0
        self.dy = 0
        self.original = None
        self.ship = None
        self.imagefile = None
        self.speed = 0 # game units per second

        if imagefile:
            self.original = clutter.Group()
            im = clutter.texture_new_from_file(imagefile)
            im.set_filter_quality(clutter.TEXTURE_QUALITY_LOW)
            g = Grid.from_file(imagefile, cellsize)
            g.invert()
            self.silhouette = Grid.as_silhouette(g)
            fn = "/tmp/sil%d.png" % time.time()
            self.silhouette.to_file(fn, cellsize, fg=(255,255,255,255), bg=(0,0,0,0))
            re = clutter.texture_new_from_file(fn)
            re.set_filter_quality(clutter.TEXTURE_QUALITY_LOW)
            re.show()
            w = im.get_width()
            im.set_size(w*4, w*4)
            #re = clutter.Rectangle(clutter.color_from_string("#ffffff"))
            re.set_size(im.get_width(), im.get_height())
            self.original.add(re)
            self.original.add(im)
            self.original.set_opacity(0)
            self.original.show()
            self.ship = clutter.Clone(self.original)
            self.imagefile = imagefile

            speedfact = self.silhouette.count_pixels()/float(16*16)
            self.speed = 15 + (1-speedfact) * 10 # max speed = 25


        self.invincible = False
        self.respawnInvincibleTime = 1
        self.name = name
        self.lives = 5
        self.isHit = False
Example #4
0
File: ui.py Project: fbz/banjo
 def released(self, actor, event):
     self.changed()
     self.painting = False
     self.mini.grid = Grid.as_silhouette(self.grid)
     self.mini.repaint()
Example #5
0
File: ui.py Project: fbz/banjo
 def repaint(self):
     self.mini.grid = Grid.as_silhouette(self.grid)
     self.mini.repaint()
     for l in self.boxes:
         for b in l:
             b.paint()