Jump to content

  • Log In with Google      Sign In   
  • Create Account


Problem drawing batch labels


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
No replies to this topic

#1 darkfeline   Members   -  Reputation: 102

Like
0Likes
Like

Posted 03 September 2012 - 04:08 PM

I'm having trouble with drawing labels with Pyglet. In order to do loose coupling between the game model and view, I have a system set up where game objects create their own sprite which are later added through an event system to a single batch (the View in MVC). Here's how that happens:
[source lang="python"] class View: _map = ('player', 'player_bullet', 'player_hb', 'enemy', 'item', 'enemy_bullet', 'ui', 'ui_element') def __init__(self): self.batch = pyglet.graphics.Batch() self.groups = dict(zip(self.__class__._map, [OrderedGroup(i) for i in range(len(self.__class__._map))])) def on_draw(self): globals.WINDOW.clear() self.batch.draw() def on_add_sprite(self, sprite, group): if isinstance(sprite, Label): self.add_label(sprite, group) else: self.add_sprite(sprite, group) def add_label(self, label, group): set_label_group(label, self.groups[group]) label.batch = self.batch label._own_batch = False def add_sprite(self, sprite, group): try: sprite.group = self.groups[group] except AttributeError: # sprite already deleted return sprite.batch = self.batch def set_label_group(label, group): label.top_group = TextLayoutGroup(group) label.background_group = OrderedGroup(0, label.top_group) label.foreground_group = TextLayoutForegroundGroup(1, label.top_group) label.foreground_decoration_group = \ TextLayoutForegroundDecorationGroup(2, label.top_group)[/source]

Sprites are added and draw fine in this system, but Labels, not so much. I confirmed that they're being added (add_label is being called), their coordinates and draw order is right (hopefully eliminating stupid mistakes), yet they're simply not drawing.

There actually is one Label which is drawing, an FPS Label whose text is updated every second. This appears only after the first second the game starts running (possibly because its text was updated). However, updating the text on the other others Labels doesn't make them draw.

Any ideas? This bug is driving me crazy.

Sponsor:



Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS