Mercurial > skaapsteker
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()