Disable logging earlier
[erdslangetjie.git] / erdslangetjie / editor / editor.py
1 import sys
2 import os
3
4 from erdslangetjie.constants import TILE_SIZE
5
6 from kivy.app import App
7 from kivy.uix.widget import Widget
8 from kivy.uix.floatlayout import FloatLayout
9 from kivy.graphics import Color, Rectangle
10
11 from erdslangetjie.data import filepath, load
12 from erdslangetjie.level import Level
13
14
15 class EditorWindow(FloatLayout):
16
17     def __init__(self, level):
18         super(EditorWindow, self).__init__(size=(800, 600))
19         if os.path.exists(filepath(level)):
20             level_data = load(level)
21             self.level = level
22         elif os.path.exists(filepath('levels/' + level)):
23             level_data = load('levels/' + level)
24             self.level = 'levels/' + level
25         else:
26             print 'Unable to find %s - treating this as a new level' % level
27             level_data = load('levels/blank.txt')
28             if 'levels/' in level:
29                 self.level = level
30             else:
31                 self.level = 'levels/' + level
32         self.level_obj = Level(level_data)
33         level_data.close()
34         self.level_obj.load_tiles()
35
36     def build(self):
37         self.clear_widgets()
38         tiles = self.level_obj.get_tiles()
39         bx, by = 0, 0
40         for tile_line in tiles:
41             bx = 0
42             for tile in tile_line:
43                 node = Widget(size=(TILE_SIZE, TILE_SIZE), pos=(bx, by))
44                 with node.canvas:
45                     Color(1, 1, 1)
46                     Rectangle(pos=node.pos, size=node.size,
47                             texture=tile.texture)
48                 self.add_widget(node)
49                 bx += TILE_SIZE
50             by += TILE_SIZE
51
52
53 class EditorApp(App):
54
55     def __init__(self, level):
56         self.level = level
57         super(EditorApp, self).__init__()
58
59     def build(self):
60         editor = EditorWindow(self.level)
61         editor.build()
62         return editor
63
64
65 def main():
66     if len(sys.argv) > 1:
67         level = sys.argv[1]
68     else:
69         level = 'level1.txt'
70     EditorApp(level).run()
71
72
73 if __name__ == '__main__':
74     main()