# HG changeset patch # User Stefano Rivera # Date 1301844223 -7200 # Node ID 0831989ce8e1d3a6efb98a70bc641cc9df9c893f # Parent 81974842b38e18fa51279d1f80ae3d148a92c195 Add simple level browser diff -r 81974842b38e -r 0831989ce8e1 scripts/level-editor --- /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()