changeset 19:0831989ce8e1

Add simple level browser
author Stefano Rivera <stefano@rivera.za.net>
date Sun, 03 Apr 2011 17:23:43 +0200
parents 81974842b38e
children f81e073fb8f5
files scripts/level-editor
diffstat 1 files changed, 61 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/scripts/level-editor	Sun Apr 03 17:23:43 2011 +0200
@@ -0,0 +1,61 @@
+#!/usr/bin/env python
+"Skaapsteker level editor"
+
+import optparse
+
+import pygame
+import pygame.key
+from pygame.locals import (SWSURFACE, QUIT, KEYDOWN, K_UP, K_DOWN, K_LEFT,
+                           K_RIGHT, KMOD_SHIFT)
+
+from skaapsteker.constants import SCREEN
+from skaapsteker.level import Level
+
+FRAMERATE = 60
+
+def run(levelname):
+    clock = pygame.time.Clock()
+    surface = pygame.display.get_surface()
+    level = Level(levelname)
+    position = [0, 0]
+    while True:
+        events = pygame.event.get()
+        for ev in events:
+            if ev.type is QUIT:
+                return
+            elif ev.type is KEYDOWN:
+                distance = 10
+                if ev.mod & KMOD_SHIFT != 0:
+                    distance = 100
+                if ev.key == K_UP:
+                    position[1] -= distance
+                elif ev.key == K_DOWN:
+                    position[1] += distance
+                elif ev.key == K_LEFT:
+                    position[0] -= distance
+                elif ev.key == K_RIGHT:
+                    position[0] += distance
+
+        position[0] = max(position[0], 0)
+        position[0] = min(position[0], level.level_size[0] - SCREEN[0])
+        position[1] = max(position[1], 0)
+        position[1] = min(position[1], level.level_size[1] - SCREEN[1])
+
+        level.draw(surface, position)
+        pygame.display.flip()
+        clock.tick(FRAMERATE)
+
+def main():
+    p = optparse.OptionParser(usage="%prog [options] levelname")
+    opts, args = p.parse_args()
+    if len(args) != 1:
+        p.error("Must provide level name")
+    pygame.display.init()
+    pygame.font.init()
+    pygame.display.set_mode(SCREEN, SWSURFACE)
+    pygame.display.set_caption("Skapsteker Level Editor")
+    pygame.key.set_repeat(100, 20)
+    run(args[0])
+
+if __name__ == '__main__':
+    main()