diff options
author | Gonzalo Odiard <godiard@gmail.com> | 2014-06-05 19:35:49 (GMT) |
---|---|---|
committer | Gonzalo Odiard <godiard@gmail.com> | 2014-06-16 15:26:37 (GMT) |
commit | ddd6871ca5ac7d82a17c10e4b617fa9c1785c5c1 (patch) | |
tree | be1c8cc6568d5b392170d29082385a261ac6bb41 | |
parent | 6a8a07c8b0dd6a9970699b75557cd480d8efd954 (diff) |
Show finish time & send mesage to pairs
-rw-r--r-- | game.py | 52 |
1 files changed, 31 insertions, 21 deletions
@@ -244,26 +244,37 @@ class MazeGame(Gtk.DrawingArea): if not player.hidden: player.draw(ctx, self.bounds, self.tileSize) - # draw the elapsed time for each player that has finished - # TODO - """ finishedPlayers = filter(lambda p: p.elapsed is not None, self.allplayers) finishedPlayers.sort(lambda a, b: cmp(a.elapsed, b.elapsed)) - y = 0 + y = 20 + x = 20 + box_border = 3 + ctx.set_font_size(25) for player in finishedPlayers: - fg, bg = player.colors text = "%3.2f - %s" % (player.elapsed, player.nick) - textimg = self.font.render(text, 1, fg) - textwidth, textheight = self.font.size(text) - rect = pygame.Rect(8, y + 4, textwidth, textheight) - bigrect = rect.inflate(16, 8) - pygame.draw.rect(self.screen, bg, bigrect, 0) - pygame.draw.rect(self.screen, fg, bigrect, 2) - self.screen.blit(textimg, rect) - - y += bigrect.height + 4 - """ + ctx.save() + xbearing, ybearing, text_width, text_height, xadv, yadv = \ + ctx.text_extents(text) + ctx.rectangle(x - box_border, y - box_border, + text_width + box_border * 2, + text_height + box_border * 2) + ctx.set_source_rgba(*player.bg.get_rgba()) + ctx.set_line_width(2) + ctx.fill_preserve() + ctx.set_source_rgba(*player.fg.get_rgba()) + ctx.stroke() + ctx.restore() + + ctx.save() + ctx.set_source_rgb(0, 0, 0) + ctx.move_to(x, y + text_height) + ctx.show_text(text) + ctx.stroke() + ctx.restore() + + x += text_width + 20 + # clear the dirty rect so nothing will be drawn until there is a change # TODO # self.dirtyRect = None @@ -452,7 +463,7 @@ class MazeGame(Gtk.DrawingArea): move: x, y, dx, dy A player's at x, y is now moving in direction dx, dy - finish: nick, elapsed + finish: elapsed A player has finished the maze """ logging.debug('message: %s', message) @@ -491,10 +502,9 @@ class MazeGame(Gtk.DrawingArea): self.reset() elif message.startswith("finish:"): # someone finished the maze - uid, elapsed = message[7:].split(",")[:2] - player = player.bonusPlayer(uid) + elapsed = message[7:] player.elapsed = float(elapsed) - self.markPointDirty(player.position) + self.queue_draw() else: # it was something I don't recognize... logging.debug("Message from %s: %s", player.nick, message) @@ -538,6 +548,6 @@ class MazeGame(Gtk.DrawingArea): def finish(self, player): self.finish_time = time.time() player.elapsed = self.finish_time - self.level_start_time + self.queue_draw() if len(self.remoteplayers) > 0: - self._activity.broadcast_msg("finish:%s,%.2f" % (player.nick, - player.elapsed)) + self._activity.broadcast_msg("finish:%.2f" % player.elapsed) |