Use different window size for the editor
[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 from kivy.utils import platform
11 from kivy.config import Config
12
13 from erdslangetjie.data import filepath, load
14 from erdslangetjie.level import Level
15
16
17 if platform() != 'android':
18     Config.set('graphics', 'width', '1326')
19     Config.set('graphics', 'height', '760')
20
21
22 class EditorWindow(FloatLayout):
23
24     def __init__(self, level):
25         super(EditorWindow, self).__init__(size=(1326, 760))
26         if os.path.exists(filepath(level)):
27             level_data = load(level)
28             self.level = level
29         elif os.path.exists(filepath('levels/' + level)):
30             level_data = load('levels/' + level)
31             self.level = 'levels/' + level
32         else:
33             print 'Unable to find %s - treating this as a new level' % level
34             level_data = load('levels/blank.txt')
35             if 'levels/' in level:
36                 self.level = level
37             else:
38                 self.level = 'levels/' + level
39         self.level_obj = Level(level_data)
40         level_data.close()
41         self.level_obj.load_tiles()
42
43     def build(self):
44         self.clear_widgets()
45         tiles = self.level_obj.get_tiles()
46         bx, by = 0, 0
47         for tile_line in tiles:
48             bx = 0
49             for tile in tile_line:
50                 node = Widget(size=(TILE_SIZE, TILE_SIZE), pos=(bx, by))
51                 with node.canvas:
52                     Color(1, 1, 1)
53                     Rectangle(pos=node.pos, size=node.size,
54                             texture=tile.texture)
55                 self.add_widget(node)
56                 bx += TILE_SIZE
57             by += TILE_SIZE
58
59
60 class EditorApp(App):
61
62     def __init__(self, level):
63         self.level = level
64         super(EditorApp, self).__init__()
65
66     def build(self):
67         editor = EditorWindow(self.level)
68         editor.build()
69         return editor
70
71
72 def main():
73     if len(sys.argv) > 1:
74         level = sys.argv[1]
75     else:
76         level = 'level1.txt'
77     EditorApp(level).run()
78
79
80 if __name__ == '__main__':
81     main()