annotate scripts/partition_helper @ 532:f2f7a91aae95

Red died text
author Stefano Rivera <stefano@rivera.za.net>
date Sun, 18 Sep 2011 01:14:50 +0200
parents 20b424c5c1ef
children fca61cd8fc33
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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()