Mercurial > mamba
annotate scripts/partition_helper @ 515:f3e69e59345f
Remove numeric keypad TODO until it can be reproduced on another machine.
author | Simon Cross <hodgestar@gmail.com> |
---|---|
date | Sun, 18 Sep 2011 00:29:26 +0200 |
parents | 20b424c5c1ef |
children | fca61cd8fc33 |
rev | line source |
---|---|
354
46565a047ac0
silly partition helper for level design
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
diff
changeset
|
1 #!/usr/bin/env python |
46565a047ac0
silly partition helper for level design
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
diff
changeset
|
2 |
401
20b424c5c1ef
generated some templates
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
354
diff
changeset
|
3 HEIGHT_PARTITIONS = ( |
20b424c5c1ef
generated some templates
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
354
diff
changeset
|
4 (2,2), |
20b424c5c1ef
generated some templates
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
354
diff
changeset
|
5 (2,3), |
20b424c5c1ef
generated some templates
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
354
diff
changeset
|
6 (2,5), |
20b424c5c1ef
generated some templates
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
354
diff
changeset
|
7 (2,6), |
20b424c5c1ef
generated some templates
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
354
diff
changeset
|
8 ) |
20b424c5c1ef
generated some templates
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
354
diff
changeset
|
9 |
20b424c5c1ef
generated some templates
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
354
diff
changeset
|
10 WIDTH_PARTITIONS = ( |
20b424c5c1ef
generated some templates
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
354
diff
changeset
|
11 (1,3), |
20b424c5c1ef
generated some templates
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
354
diff
changeset
|
12 (2,2), |
20b424c5c1ef
generated some templates
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
354
diff
changeset
|
13 (2,4), |
20b424c5c1ef
generated some templates
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
354
diff
changeset
|
14 (2,5), |
20b424c5c1ef
generated some templates
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
354
diff
changeset
|
15 ) |
20b424c5c1ef
generated some templates
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
354
diff
changeset
|
16 |
20b424c5c1ef
generated some templates
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
354
diff
changeset
|
17 SAVE_LOCATION = "data/levels/templates" |
354
46565a047ac0
silly partition helper for level design
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
diff
changeset
|
18 |
46565a047ac0
silly partition helper for level design
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
diff
changeset
|
19 def partition(total, parts, sepwidth=1): |
46565a047ac0
silly partition helper for level design
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
diff
changeset
|
20 seps = parts - 1 |
46565a047ac0
silly partition helper for level design
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
diff
changeset
|
21 space = total - 2 - sepwidth * seps |
46565a047ac0
silly partition helper for level design
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
diff
changeset
|
22 return float(space) / parts |
46565a047ac0
silly partition helper for level design
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
diff
changeset
|
23 |
46565a047ac0
silly partition helper for level design
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
diff
changeset
|
24 |
46565a047ac0
silly partition helper for level design
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
diff
changeset
|
25 def find_partitions(num, sepwidth): |
46565a047ac0
silly partition helper for level design
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
diff
changeset
|
26 partitions = [] |
46565a047ac0
silly partition helper for level design
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
diff
changeset
|
27 for i in range(2, num): |
46565a047ac0
silly partition helper for level design
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
diff
changeset
|
28 size = partition(num, i, sepwidth) |
46565a047ac0
silly partition helper for level design
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
diff
changeset
|
29 if size > 0 and int(size) == size: |
46565a047ac0
silly partition helper for level design
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
diff
changeset
|
30 partitions.append((i, size)) |
46565a047ac0
silly partition helper for level design
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
diff
changeset
|
31 return partitions |
46565a047ac0
silly partition helper for level design
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
diff
changeset
|
32 |
401
20b424c5c1ef
generated some templates
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
354
diff
changeset
|
33 def print_all(): |
354
46565a047ac0
silly partition helper for level design
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
diff
changeset
|
34 height = ["FLOOR HEIGHT: PARTS x PART HEIGHT"] |
46565a047ac0
silly partition helper for level design
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
diff
changeset
|
35 for sepwidth in range(1, 28): |
46565a047ac0
silly partition helper for level design
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
diff
changeset
|
36 partitions = find_partitions(30, sepwidth) |
46565a047ac0
silly partition helper for level design
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
diff
changeset
|
37 if partitions: |
46565a047ac0
silly partition helper for level design
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
diff
changeset
|
38 height.append("%s: %s" % (sepwidth, |
46565a047ac0
silly partition helper for level design
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
diff
changeset
|
39 " ".join([" %dx%d" % (i, size) for (i, size) in partitions]))) |
46565a047ac0
silly partition helper for level design
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
diff
changeset
|
40 |
46565a047ac0
silly partition helper for level design
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
diff
changeset
|
41 width = ["COLUMN WIDTH: PARTS x PART WIDTH"] |
46565a047ac0
silly partition helper for level design
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
diff
changeset
|
42 for sepwidth in range(1, 38): |
46565a047ac0
silly partition helper for level design
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
diff
changeset
|
43 partitions = find_partitions(40, sepwidth) |
46565a047ac0
silly partition helper for level design
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
diff
changeset
|
44 if partitions: |
46565a047ac0
silly partition helper for level design
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
diff
changeset
|
45 width.append("%s: %s" % (sepwidth, |
46565a047ac0
silly partition helper for level design
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
diff
changeset
|
46 " ".join([" %dx%d" % (i, size) for (i, size) in partitions]))) |
46565a047ac0
silly partition helper for level design
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
diff
changeset
|
47 |
46565a047ac0
silly partition helper for level design
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
diff
changeset
|
48 height.extend([""] * 6) |
46565a047ac0
silly partition helper for level design
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
diff
changeset
|
49 height = [l.ljust(50) for l in height] |
46565a047ac0
silly partition helper for level design
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
diff
changeset
|
50 pairs = zip(height, width) |
46565a047ac0
silly partition helper for level design
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
diff
changeset
|
51 print "\n".join(["%s %s" % p for p in pairs]) |
401
20b424c5c1ef
generated some templates
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
354
diff
changeset
|
52 |
20b424c5c1ef
generated some templates
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
354
diff
changeset
|
53 def make_partition(height, width): |
20b424c5c1ef
generated some templates
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
354
diff
changeset
|
54 sepheight, hparts = height |
20b424c5c1ef
generated some templates
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
354
diff
changeset
|
55 pheight = int(partition(30, hparts, sepheight)) |
20b424c5c1ef
generated some templates
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
354
diff
changeset
|
56 sepwidth, wparts = width |
20b424c5c1ef
generated some templates
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
354
diff
changeset
|
57 pwidth = int(partition(40, wparts, sepwidth)) |
20b424c5c1ef
generated some templates
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
354
diff
changeset
|
58 |
20b424c5c1ef
generated some templates
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
354
diff
changeset
|
59 wsep = 'X' * sepwidth |
20b424c5c1ef
generated some templates
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
354
diff
changeset
|
60 partrow = 'X' + wsep.join(['.' * pwidth for i in range(wparts)]) + 'X' |
20b424c5c1ef
generated some templates
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
354
diff
changeset
|
61 partblock = '\n'.join([partrow for i in range(pheight)]) + '\n' |
20b424c5c1ef
generated some templates
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
354
diff
changeset
|
62 seprow = 'X' * 40 |
20b424c5c1ef
generated some templates
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
354
diff
changeset
|
63 sepblock = '\n'.join([seprow for i in range(sepheight)]) + '\n' |
20b424c5c1ef
generated some templates
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
354
diff
changeset
|
64 level = '%s\n%s%s' % (seprow, sepblock.join([partblock for i in range(hparts)]), seprow) |
20b424c5c1ef
generated some templates
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
354
diff
changeset
|
65 level = level[:162] + 'E' + level[163:1190] + 'e' + level[1191:] |
20b424c5c1ef
generated some templates
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
354
diff
changeset
|
66 dims = '%dx%d'% (wparts, hparts) |
20b424c5c1ef
generated some templates
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
354
diff
changeset
|
67 f = open('%s/%s.txt' % (SAVE_LOCATION, dims), 'w') |
20b424c5c1ef
generated some templates
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
354
diff
changeset
|
68 f.write('%s template\n' % dims) |
20b424c5c1ef
generated some templates
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
354
diff
changeset
|
69 f.write('lab\n') |
20b424c5c1ef
generated some templates
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
354
diff
changeset
|
70 f.write('test.ogg\n') |
20b424c5c1ef
generated some templates
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
354
diff
changeset
|
71 f.write(level + '\n') |
20b424c5c1ef
generated some templates
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
354
diff
changeset
|
72 f.write('end\n') |
20b424c5c1ef
generated some templates
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
354
diff
changeset
|
73 f.close() |
20b424c5c1ef
generated some templates
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
354
diff
changeset
|
74 |
20b424c5c1ef
generated some templates
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
354
diff
changeset
|
75 def generate_partitions(): |
20b424c5c1ef
generated some templates
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
354
diff
changeset
|
76 for height in HEIGHT_PARTITIONS: |
20b424c5c1ef
generated some templates
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
354
diff
changeset
|
77 for width in WIDTH_PARTITIONS: |
20b424c5c1ef
generated some templates
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
354
diff
changeset
|
78 make_partition(height, width) |
20b424c5c1ef
generated some templates
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
354
diff
changeset
|
79 |
20b424c5c1ef
generated some templates
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
354
diff
changeset
|
80 if __name__ == "__main__": |
20b424c5c1ef
generated some templates
Adrianna Pińska <adrianna.pinska@gmail.com>
parents:
354
diff
changeset
|
81 generate_partitions() |