annotate scripts/level-editor @ 24:3d70de522b11

Bump tile size to 64
author Stefano Rivera <stefano@rivera.za.net>
date Sun, 03 Apr 2011 18:03:03 +0200
parents 0831989ce8e1
children 10c067be3e8f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
19
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
1 #!/usr/bin/env python
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
2 "Skaapsteker level editor"
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
3
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
4 import optparse
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
5
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
6 import pygame
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
7 import pygame.key
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
8 from pygame.locals import (SWSURFACE, QUIT, KEYDOWN, K_UP, K_DOWN, K_LEFT,
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
9 K_RIGHT, KMOD_SHIFT)
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
10
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
11 from skaapsteker.constants import SCREEN
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
12 from skaapsteker.level import Level
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
13
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
14 FRAMERATE = 60
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
15
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
16 def run(levelname):
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
17 clock = pygame.time.Clock()
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
18 surface = pygame.display.get_surface()
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
19 level = Level(levelname)
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
20 position = [0, 0]
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
21 while True:
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
22 events = pygame.event.get()
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
23 for ev in events:
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
24 if ev.type is QUIT:
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
25 return
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
26 elif ev.type is KEYDOWN:
24
3d70de522b11 Bump tile size to 64
Stefano Rivera <stefano@rivera.za.net>
parents: 19
diff changeset
27 distance = 64
19
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
28 if ev.mod & KMOD_SHIFT != 0:
24
3d70de522b11 Bump tile size to 64
Stefano Rivera <stefano@rivera.za.net>
parents: 19
diff changeset
29 distance *= 10
19
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
30 if ev.key == K_UP:
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
31 position[1] -= distance
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
32 elif ev.key == K_DOWN:
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
33 position[1] += distance
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
34 elif ev.key == K_LEFT:
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
35 position[0] -= distance
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
36 elif ev.key == K_RIGHT:
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
37 position[0] += distance
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
38
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
39 position[0] = max(position[0], 0)
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
40 position[0] = min(position[0], level.level_size[0] - SCREEN[0])
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
41 position[1] = max(position[1], 0)
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
42 position[1] = min(position[1], level.level_size[1] - SCREEN[1])
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
43
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
44 level.draw(surface, position)
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
45 pygame.display.flip()
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
46 clock.tick(FRAMERATE)
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
47
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
48 def main():
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
49 p = optparse.OptionParser(usage="%prog [options] levelname")
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
50 opts, args = p.parse_args()
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
51 if len(args) != 1:
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
52 p.error("Must provide level name")
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
53 pygame.display.init()
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
54 pygame.font.init()
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
55 pygame.display.set_mode(SCREEN, SWSURFACE)
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
56 pygame.display.set_caption("Skapsteker Level Editor")
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
57 pygame.key.set_repeat(100, 20)
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
58 run(args[0])
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
59
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
60 if __name__ == '__main__':
0831989ce8e1 Add simple level browser
Stefano Rivera <stefano@rivera.za.net>
parents:
diff changeset
61 main()