view scripts/level-shot @ 634:20d6aef11249 default tip

Fix iCCC profiles in PNGs to avoid verbose warnings from libpng.
author Simon Cross <hodgestar@gmail.com>
date Fri, 27 Jan 2023 23:32:07 +0100
parents dc73dda93fb1
children
line wrap: on
line source

#!/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()