0004aa1b8a6991c539daf4e61a99a396db7133bd
[koperkapel.git] / koperkapel / levels / level_converter.py
1 import os
2 import json
3 import sys
4
5 ATTRIBUTE_MAP = {
6     ' ': {'floor': {'base': 'floor',
7                     'behaviour': ['walk', 'fly'],
8                     },
9           },
10     'w': {'floor': {'base': 'cwall',
11                     'behaviour': [],
12                     },
13           },
14     'o': {'tunnels': {'base': 'underground',
15                       'behaviour': [],
16                       }
17           },
18     't': {'tunnels': {'base': 'underground',
19                       'behaviour': [],
20                       }
21           },
22     '-': {'tunnels': {'base': 'tunnel',
23                       'behaviour': ['crawl', ],
24                       },
25           },
26     'f': {'floor': {'base': 'floor',
27                     'behaviour': ['walk', 'fly'],
28                     },
29           },
30     'd': {'floor': {'base': 'floor',
31                     'behaviour': ['walk', 'fly'],
32                     },
33           },
34     'g': {'floor': {'base': 'floor',
35                     'behaviour': ['walk', 'fly', 'crawl'],
36                     },
37           },
38     'k': {'floor': {'base': 'floor',
39                     'behaviour': ['walk', 'fly'],
40                     },
41           },
42     's': {'floor': {'base': 'floor',
43                     'behaviour': ['walk', 'fly'],
44                     },
45           },
46 }
47
48
49 class level_generator:
50
51     def __init__(self):
52
53         pass
54
55     def convert(self, passage_file, tunnel_file):
56         print('Make level')
57         with open(passage_file) as passages:
58             with open(tunnel_file) as tunnels:
59                 p = []
60                 for a in passages:
61                     r = []
62                     for aa in a:
63                         r.append(aa)
64                     p.append(r)
65                 t = []
66                 for a in tunnels:
67                     r = []
68                     for aa in a:
69                         r.append(aa)
70                     t.append(r)
71                 level = {}
72                 level['tileset'] = 'bunker'
73                 level['tiles'] = []
74                 level['starting pos'] = []
75                 level['door_info'] = []
76                 level['friendly roaches'] = []
77
78                 for l, lu in zip(p, t):
79                     row = []
80                     for t1, t2 in zip(l, lu):
81                         if t1 != '\n' and t2 != '\n':
82                             print(t1, t2)
83                             tile = ATTRIBUTE_MAP[t1].copy()
84                             tile.update(ATTRIBUTE_MAP[t2])
85                             row.append(tile)
86                         if t1 == 's':
87                             level['starting pos'] = [len(row) - 1, len(level['tiles']) - 1]
88                         # if t2 == 'd'
89                     level['tiles'].append(row)
90                 # Crude hack so the level is written into the levels folder
91                 name = os.path.join(os.path.dirname(__file__), '..', 'levels', 'map.json')
92                 f = open(name, 'w')
93                 json.dump(level, f, indent=3)
94                 f.close()
95
96
97 if __name__ == '__main__':
98     l = level_generator()
99     if len(sys.argv) != 3:
100         print("Usage %s <floor layer> <tunnel layer>" % sys.argv[0])
101         #l.convert('l2', 't2')
102     else:
103         l.convert(sys.argv[1], sys.argv[2])