# HG changeset patch # User Neil Muller # Date 1378123779 -7200 # Node ID 817d4a62135c743395bafe8873d4b4e0fc5ecbc2 # Parent dde91f8c433527546602928c45a52b05cb2c9bdd Partially albowify the level editor diff -r dde91f8c4335 -r 817d4a62135c tools/area_editor.py --- a/tools/area_editor.py Mon Sep 02 13:59:11 2013 +0200 +++ b/tools/area_editor.py Mon Sep 02 14:09:39 2013 +0200 @@ -19,12 +19,11 @@ from albow.root import RootWidget from albow.widget import Widget -from albow.controls import Button, Image -from albow.resource import get_font +from albow.controls import Button sys.path.append(os.path.join(os.path.dirname(__file__), '..')) -from nagslang.constants import SCREEN, FPS +from nagslang.constants import SCREEN from nagslang.level import Level, POLY_COLORS @@ -104,11 +103,12 @@ surface_area = pygame.rect.Rect(topleft, SCREEN) surface.blit(self._surface, (0, 0), surface_area) + class LevelWidget(Widget): def __init__(self, level): super(LevelWidget, self).__init__(pygame.rect.Rect(0, 0, - SCREEN[0], SCREEN[1])) + SCREEN[0], SCREEN[1])) self.level = level self.pos = (0, 0) self.filled_mode = False @@ -133,7 +133,6 @@ new_pos[1] = self.pos[1] self.pos = tuple(new_pos) - def draw(self, surface): if (self.cur_poly is not None and self.cur_poly in self.level.polygons and len(self.level.polygons[self.cur_poly])): @@ -141,8 +140,8 @@ mouse_pos = self._level_coordinates(self.mouse_pos) else: mouse_pos = None - level.draw(surface, self.pos, self.mouse_pos, self.cur_poly, - self.filled_mode) + level.draw(surface, self.pos, mouse_pos, self.cur_poly, + self.filled_mode) def key_down(self, ev): if ev.key == pgl.K_LEFT: @@ -184,6 +183,17 @@ else: print 'Not all polygons closed, so not filling' + def mouse_move(self, ev): + old_pos = self.mouse_pos + self.mouse_pos = ev.pos + if self.cur_poly and old_pos != self.mouse_pos: + self.invalidate() + + def mouse_down(self, ev): + if self.cur_poly: + # Add a point + self.level.add_point(self.cur_poly, + self._level_coordinates(ev.pos)) class EditorApp(RootWidget): @@ -199,22 +209,15 @@ quit_but.rect.move_ip(SCREEN[0], 25) self.add(quit_but) - # elif ev.type == pgl.MOUSEBUTTONDOWN and self.cur_poly: - # # Add a point - # self.level.add_point(self.cur_poly, - # self._level_coordinates(ev.pos)) - # elif ev.type == pgl.MOUSEMOTION: - # self.mouse_pos = ev.pos - # self.draw() - # pygame.display.flip() - # clock.tick(FPS) - def key_down(self, ev): if ev.key == pgl.K_ESCAPE: self.quit() else: self.level_widget.key_down(ev) + def mouse_move(self, ev): + self.level_widget.mouse_move(ev) + if __name__ == "__main__": if len(sys.argv) == 2: @@ -228,7 +231,7 @@ pygame.display.init() pygame.font.init() pygame.display.set_mode((SCREEN[0] + MENU_WIDTH, SCREEN[1]), - pgl.SWSURFACE) + pgl.SWSURFACE) pygame.display.set_caption('Nagslang Area Editor') pygame.key.set_repeat(200, 100) app = EditorApp(level, pygame.display.get_surface())