changeset 590:dc73dda93fb1

Level shot tool
author Stefano Rivera <stefano@rivera.za.net>
date Sun, 10 Apr 2011 17:56:19 +0200
parents 635cf02186e6
children 87947e4afa02
files scripts/level-shot
diffstat 1 files changed, 51 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/scripts/level-shot	Sun Apr 10 17:56:19 2011 +0200
@@ -0,0 +1,51 @@
+#!/usr/bin/env python
+"Skaapsteker level -> image tool"
+
+from __future__ import division
+
+import optparse
+import os.path
+import sys
+
+sys.path.insert(0, os.path.dirname(os.path.dirname(__file__)))
+
+import pygame
+from pygame.locals import SWSURFACE
+
+from skaapsteker.constants import SCREEN
+from skaapsteker.level import Level
+from skaapsteker.sprites.player import Player
+from skaapsteker.gamestate import GameState
+from skaapsteker.sound import SoundSystem
+from skaapsteker.data import filepath
+
+def run(levelname):
+    game = GameState(None)
+    game.load_game(filepath("game.json"))
+    player = Player(game.world, SoundSystem(False))
+
+    level = Level(levelname, player)
+    level.backgrounds = []
+    level_surface = level.get_surface()
+    for sprite in game.create_sprites(levelname):
+        level.sprites.add(sprite)
+
+    clip_rect = pygame.Rect((0, 0), level_surface.get_size())
+    level_surface.set_clip(clip_rect)
+    level_surface.fill((220, 220, 220))
+    level.draw(level_surface)
+    level.sprites.draw(level_surface)
+    pygame.image.save(level_surface, levelname + '.png')
+
+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)
+    run(args[0])
+
+if __name__ == '__main__':
+    main()