+import sys
+import os
import kivy
+from erdslangetjie.data import filepath, load
+from erdslangetjie.level import Level
kivy.require('1.6.0')
from kivy.app import App
+from kivy.logger import Logger, LoggerHistory
from kivy.uix.widget import Widget
+from kivy.uix.floatlayout import FloatLayout
+from kivy.uix.scatter import Scatter
+from kivy.graphics import Color, Rectangle
-class EditorWindow(Widget):
- pass
+
+class EditorWindow(FloatLayout):
+
+ def __init__(self, level):
+ super(EditorWindow, self).__init__()
+ if os.path.exists(filepath(level)):
+ level_data = load(level)
+ self.level = level
+ elif os.path.exists(filepath('levels/' + level)):
+ level_data = load('levels/' + level)
+ self.level = 'levels/' + level
+ else:
+ print 'Unable to find %s - treating this as a new level' % level
+ level_data = load('levels/blank.txt')
+ if 'levels/' in level:
+ self.level = level
+ else:
+ self.level = 'levels/' + level
+ self.level_obj = Level()
+ self.level_obj.load(level_data)
+ level_data.close()
+
+ def build(self):
+ self.clear_widgets()
+ tiles = self.level_obj.get_tiles()
+ tile_size = 24
+ bx, by = 0, 0
+ for tile_line in tiles:
+ bx = 0
+ for tile in tile_line:
+ node = Scatter(pos=(bx, by), size=(tile_size, tile_size))
+ with node.canvas:
+ Color(1, 1, 1)
+ Rectangle(size=node.size, texture=tile.texture)
+ self.add_widget(node)
+ bx += tile_size
+ by += tile_size
class EditorApp(App):
- def build(self):
- return EditorWindow()
+ def __init__(self, level):
+ self.level = level
+ super(EditorApp, self).__init__()
+
+ def build(self):
+ editor = EditorWindow(self.level)
+ editor.build()
+ return editor
def main():
- EditorApp().run()
+ if len(sys.argv) > 1:
+ level = sys.argv[1]
+ else:
+ level = 'level1.txt'
+ # Uncomment to silence excessive logging
+ #for hdlr in Logger.handlers[:]:
+ # if not isinstance(hdlr, LoggerHistory):
+ # Logger.removeHandler(hdlr)
+ EditorApp(level).run()
if __name__ == '__main__':
- main()
+ main()