summaryrefslogtreecommitdiff
path: root/external/pytmx/util_pyglet.py
diff options
context:
space:
mode:
Diffstat (limited to 'external/pytmx/util_pyglet.py')
-rw-r--r--external/pytmx/util_pyglet.py59
1 files changed, 59 insertions, 0 deletions
diff --git a/external/pytmx/util_pyglet.py b/external/pytmx/util_pyglet.py
new file mode 100644
index 0000000..6b4a38a
--- /dev/null
+++ b/external/pytmx/util_pyglet.py
@@ -0,0 +1,59 @@
+import logging
+
+logger = logging.getLogger(__name__)
+ch = logging.StreamHandler()
+ch.setLevel(logging.INFO)
+logger.addHandler(ch)
+logger.setLevel(logging.INFO)
+
+try:
+ import pyglet
+except ImportError:
+ logger.error('cannot import pyglet (is it installed?)')
+ raise
+
+import pytmx
+
+
+def pyglet_image_loader(filename, colorkey, **kwargs):
+ """basic image loading with pyglet
+
+ returns pyglet Images, not textures
+
+ This is a basic proof-of-concept and is likely to fail in some situations.
+
+ Missing:
+ Transparency
+ Tile Rotation
+
+ This is slow as well.
+ """
+ if colorkey:
+ logger.debug('colorkey not implemented')
+
+ image = pyglet.image.load(filename)
+
+ def load_image(rect=None, flags=None):
+ if rect:
+ try:
+ x, y, w, h = rect
+ y = image.height - y - h
+ tile = image.get_region(x, y, w, h)
+ except:
+ logger.error('cannot get region %s of image', rect)
+ raise
+ else:
+ tile = image
+
+ if flags:
+ logger.error('tile flags are not implemented')
+
+ return tile
+
+ return load_image
+
+
+def load_pyglet(filename, *args, **kwargs):
+ kwargs['image_loader'] = pyglet_image_loader
+ kwargs['invert_y'] = True
+ return pytmx.TiledMap(filename, *args, **kwargs)