3f195a240f77a8bfddc6e6673650b17294e81472
[koperkapel.git] / koperkapel / levels / level_converter.py
1 import os
2 import json
3
4 ATTRIBUTE_MAP = {
5     ' ': {'floor': {'base': 'floor',
6                     'behaviour': ['walk', 'fly'],
7                     },
8           },
9     'w': {'floor': {'base': 'floor',
10                     'behaviour': [],
11                     },
12           },
13     'o': {'tunnels': {'base': 'underground',
14                       'behaviour': [],
15                       }
16           },
17     't': {'tunnels': {'base': 'underground',
18                       'behaviour': [],
19                       }
20           },
21     '-': {'tunnels': {'base': 'tunnel',
22                       'behaviour': ['walk', ],
23                       },
24           },
25     'f': {'floor': {'base': 'floor',
26                     'behaviour': ['walk', 'fly'],
27                     },
28           },
29     'd': {'floor': {'base': 'floor',
30                     'behaviour': ['walk', 'fly'],
31                     },
32           },
33     'g': {'floor': {'base': 'floor',
34                     'behaviour': ['walk', 'fly'],
35                     },
36           },
37     'k': {'floor': {'base': 'floor',
38                     'behaviour': ['walk', 'fly'],
39                     },
40           },
41     's': {'floor': {'base': 'floor',
42                     'behaviour': ['walk', 'fly'],
43                     },
44           },
45 }
46
47
48 class level_generator:
49
50     def __init__(self):
51
52         pass
53
54     def convert(self, passage_file, tunnel_file):
55         print('Make level')
56         with open(passage_file) as passages:
57             with open(tunnel_file) as tunnels:
58                 p = []
59                 for a in passages:
60                     r = []
61                     for aa in a:
62                         r.append(aa)
63                     p.append(r)
64                 t = []
65                 for a in tunnels:
66                     r = []
67                     for aa in a:
68                         r.append(aa)
69                     t.append(r)
70                 level = {}
71                 level['tileset'] = 'bunker'
72                 level['tiles'] = []
73                 level['starting pos'] = []
74                 level['door_info'] = []
75
76
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(level) - 1, len(row) - 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     l.convert('l2', 't2')