• Advertisement
Sign in to follow this  

Problem drawing batch labels

This topic is 1963 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

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.

Share this post


Link to post
Share on other sites
Advertisement
Sign in to follow this  

  • Advertisement