Mercurial > rinkhals
annotate regenerate_level_data.py @ 429:42777630956a
Add ammo to things serialized and deserialized.
author | Simon Cross <hodgestar@gmail.com> |
---|---|
date | Sat, 21 Nov 2009 16:28:27 +0000 |
parents | 02a6de5629d6 |
children |
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")) |