Mercurial > rinkhals
annotate regenerate_level_data.py @ 498:62b9a4e21f1a
chickens in closed buildings deselected. building opens if you put in chickens and it's not full. opening building with move or select tool allows rearrangement of chickens in building. fixed multiselect in buildings.
author | Adrianna Pińska <adrianna.pinska@gmail.com> |
---|---|
date | Wed, 25 Nov 2009 23:51:33 +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")) |