Mercurial > skaapsteker
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 |
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 | 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 | 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() |