annotate regenerate_level_data.py @ 602:1b77bcbfb9e3 default tip

update tags
author convert-repo
date Thu, 19 May 2011 15:58:03 +0000
parents 02a6de5629d6
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
278
f6bd57494e81 Better tile/level tools. Also better game board.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
1 #!/usr/bin/env python
f6bd57494e81 Better tile/level tools. Also better game board.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
2
f6bd57494e81 Better tile/level tools. Also better game board.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
3 import os.path
f6bd57494e81 Better tile/level tools. Also better game board.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
4
f6bd57494e81 Better tile/level tools. Also better game board.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
5 import pygame
f6bd57494e81 Better tile/level tools. Also better game board.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
6 from pygame.locals import SWSURFACE, SRCALPHA
f6bd57494e81 Better tile/level tools. Also better game board.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
7
408
02a6de5629d6 Levels can include starting equipment
Neil Muller <drnlmuller@gmail.com>
parents: 386
diff changeset
8 from gamelib import tiles, buildings, equipment
278
f6bd57494e81 Better tile/level tools. Also better game board.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
9 import regenerate_pngs
f6bd57494e81 Better tile/level tools. Also better game board.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
10
f6bd57494e81 Better tile/level tools. Also better game board.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
11 LEVEL_PATH = "data/levels"
f6bd57494e81 Better tile/level tools. Also better game board.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
12 TILE_WIDTH = 20
f6bd57494e81 Better tile/level tools. Also better game board.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
13 TILE_HEIGHT = 20
f6bd57494e81 Better tile/level tools. Also better game board.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
14 TILES_X = 8
f6bd57494e81 Better tile/level tools. Also better game board.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
15 TILES_Y = 8
f6bd57494e81 Better tile/level tools. Also better game board.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
16 WIDTH = TILES_X * TILE_WIDTH
f6bd57494e81 Better tile/level tools. Also better game board.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
17 HEIGHT = TILES_Y * TILE_HEIGHT
f6bd57494e81 Better tile/level tools. Also better game board.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
18
f6bd57494e81 Better tile/level tools. Also better game board.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
19 def generate_image(name, basepath):
f6bd57494e81 Better tile/level tools. Also better game board.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
20 fn, _ = os.path.splitext(os.path.basename(name))
f6bd57494e81 Better tile/level tools. Also better game board.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
21 svg_name = os.path.join(basepath, fn+".svg")
384
f0d5984dff92 Don't crash on images that are elsewhere
Neil Muller <drnlmuller@gmail.com>
parents: 278
diff changeset
22 if not os.path.exists(svg_name):
386
9f5cc2a880d5 Add more informative message
Neil Muller <drnlmuller@gmail.com>
parents: 385
diff changeset
23 print 'Skipping %s, as it seems to be missing' % svg_name
384
f0d5984dff92 Don't crash on images that are elsewhere
Neil Muller <drnlmuller@gmail.com>
parents: 278
diff changeset
24 return None
278
f6bd57494e81 Better tile/level tools. Also better game board.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
25 png_name = os.path.join(LEVEL_PATH, fn+".png")
f6bd57494e81 Better tile/level tools. Also better game board.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
26 regenerate_pngs.svg_to_png(svg_name, png_name, TILE_WIDTH, TILE_HEIGHT)
f6bd57494e81 Better tile/level tools. Also better game board.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
27 return pygame.image.load(png_name)
f6bd57494e81 Better tile/level tools. Also better game board.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
28
f6bd57494e81 Better tile/level tools. Also better game board.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
29 def get_tile_mappings():
f6bd57494e81 Better tile/level tools. Also better game board.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
30 tile_map = {}
f6bd57494e81 Better tile/level tools. Also better game board.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
31 for building in buildings.BUILDINGS:
f6bd57494e81 Better tile/level tools. Also better game board.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
32 tn = building.TILE_NO
384
f0d5984dff92 Don't crash on images that are elsewhere
Neil Muller <drnlmuller@gmail.com>
parents: 278
diff changeset
33 image = generate_image(building.IMAGE, regenerate_pngs.SPRITE_PATH)
f0d5984dff92 Don't crash on images that are elsewhere
Neil Muller <drnlmuller@gmail.com>
parents: 278
diff changeset
34 if image:
f0d5984dff92 Don't crash on images that are elsewhere
Neil Muller <drnlmuller@gmail.com>
parents: 278
diff changeset
35 tile_map[tn] = image
278
f6bd57494e81 Better tile/level tools. Also better game board.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
36 for tn, (_, tile_png) in tiles.TileMap.DEFAULT_TILES.items():
f6bd57494e81 Better tile/level tools. Also better game board.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
37 if tn not in tile_map:
f6bd57494e81 Better tile/level tools. Also better game board.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
38 tile_map[tn] = generate_image(tile_png, regenerate_pngs.TILE_PATH)
f6bd57494e81 Better tile/level tools. Also better game board.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
39 return tile_map
f6bd57494e81 Better tile/level tools. Also better game board.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
40
385
d18f21ad1088 Also create code image for pgu's leveledit
Neil Muller <drnlmuller@gmail.com>
parents: 384
diff changeset
41 def get_code_mappings():
d18f21ad1088 Also create code image for pgu's leveledit
Neil Muller <drnlmuller@gmail.com>
parents: 384
diff changeset
42 code_map = {}
408
02a6de5629d6 Levels can include starting equipment
Neil Muller <drnlmuller@gmail.com>
parents: 386
diff changeset
43 # Needs better handling of wings
02a6de5629d6 Levels can include starting equipment
Neil Muller <drnlmuller@gmail.com>
parents: 386
diff changeset
44 for tn, sprites in equipment.EQUIP_MAP.iteritems():
02a6de5629d6 Levels can include starting equipment
Neil Muller <drnlmuller@gmail.com>
parents: 386
diff changeset
45 image = generate_image('chkn', regenerate_pngs.SPRITE_PATH)
02a6de5629d6 Levels can include starting equipment
Neil Muller <drnlmuller@gmail.com>
parents: 386
diff changeset
46 need_wing = False
02a6de5629d6 Levels can include starting equipment
Neil Muller <drnlmuller@gmail.com>
parents: 386
diff changeset
47 for equip in sprites:
02a6de5629d6 Levels can include starting equipment
Neil Muller <drnlmuller@gmail.com>
parents: 386
diff changeset
48 sub_image = generate_image(equip.CHICKEN_IMAGE_FILE,
02a6de5629d6 Levels can include starting equipment
Neil Muller <drnlmuller@gmail.com>
parents: 386
diff changeset
49 regenerate_pngs.SPRITE_PATH)
02a6de5629d6 Levels can include starting equipment
Neil Muller <drnlmuller@gmail.com>
parents: 386
diff changeset
50 image.blit(sub_image, (0, 0))
02a6de5629d6 Levels can include starting equipment
Neil Muller <drnlmuller@gmail.com>
parents: 386
diff changeset
51 if equip.UNDER_LIMB:
02a6de5629d6 Levels can include starting equipment
Neil Muller <drnlmuller@gmail.com>
parents: 386
diff changeset
52 need_wing = True
02a6de5629d6 Levels can include starting equipment
Neil Muller <drnlmuller@gmail.com>
parents: 386
diff changeset
53 if need_wing:
02a6de5629d6 Levels can include starting equipment
Neil Muller <drnlmuller@gmail.com>
parents: 386
diff changeset
54 sub_image = generate_image('wing', regenerate_pngs.SPRITE_PATH)
02a6de5629d6 Levels can include starting equipment
Neil Muller <drnlmuller@gmail.com>
parents: 386
diff changeset
55 image.blit(sub_image, (0, 0))
385
d18f21ad1088 Also create code image for pgu's leveledit
Neil Muller <drnlmuller@gmail.com>
parents: 384
diff changeset
56 if image:
d18f21ad1088 Also create code image for pgu's leveledit
Neil Muller <drnlmuller@gmail.com>
parents: 384
diff changeset
57 code_map[tn] = image
d18f21ad1088 Also create code image for pgu's leveledit
Neil Muller <drnlmuller@gmail.com>
parents: 384
diff changeset
58 return code_map
d18f21ad1088 Also create code image for pgu's leveledit
Neil Muller <drnlmuller@gmail.com>
parents: 384
diff changeset
59
278
f6bd57494e81 Better tile/level tools. Also better game board.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
60 if __name__ == '__main__':
f6bd57494e81 Better tile/level tools. Also better game board.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
61 s = pygame.Surface((WIDTH, HEIGHT), SWSURFACE|SRCALPHA, 32)
f6bd57494e81 Better tile/level tools. Also better game board.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
62 s.fill((0,0,0,0))
f6bd57494e81 Better tile/level tools. Also better game board.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
63 for n, img in get_tile_mappings().items():
f6bd57494e81 Better tile/level tools. Also better game board.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
64 rect = (TILE_WIDTH*(n % TILES_X), TILE_HEIGHT*(n / TILES_X), TILE_WIDTH, TILE_HEIGHT)
f6bd57494e81 Better tile/level tools. Also better game board.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
65 print n, rect
f6bd57494e81 Better tile/level tools. Also better game board.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
66 s.blit(img, rect)
f6bd57494e81 Better tile/level tools. Also better game board.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
67 pygame.image.save(s, os.path.join(LEVEL_PATH, "tiles.tga"))
385
d18f21ad1088 Also create code image for pgu's leveledit
Neil Muller <drnlmuller@gmail.com>
parents: 384
diff changeset
68 s.fill((0,0,0,0))
d18f21ad1088 Also create code image for pgu's leveledit
Neil Muller <drnlmuller@gmail.com>
parents: 384
diff changeset
69 for n, img in get_code_mappings().items():
d18f21ad1088 Also create code image for pgu's leveledit
Neil Muller <drnlmuller@gmail.com>
parents: 384
diff changeset
70 rect = (TILE_WIDTH*(n % TILES_X), TILE_HEIGHT*(n / TILES_X), TILE_WIDTH, TILE_HEIGHT)
d18f21ad1088 Also create code image for pgu's leveledit
Neil Muller <drnlmuller@gmail.com>
parents: 384
diff changeset
71 print n, rect
d18f21ad1088 Also create code image for pgu's leveledit
Neil Muller <drnlmuller@gmail.com>
parents: 384
diff changeset
72 s.blit(img, rect)
d18f21ad1088 Also create code image for pgu's leveledit
Neil Muller <drnlmuller@gmail.com>
parents: 384
diff changeset
73 pygame.image.save(s, os.path.join(LEVEL_PATH, "codes.tga"))