Mercurial > nagslang
comparison tools/area_editor.py @ 478:763e1b1233a3
Movable objects, without hints
author | Neil Muller <drnlmuller@gmail.com> |
---|---|
date | Sat, 07 Sep 2013 16:47:15 +0200 |
parents | 04127e7219cd |
children | edee5e51896f |
comparison
equal
deleted
inserted
replaced
477:290cb3a0927e | 478:763e1b1233a3 |
---|---|
444 self._draw_objects = False | 444 self._draw_objects = False |
445 self._draw_enemies = False | 445 self._draw_enemies = False |
446 self._draw_lines = False | 446 self._draw_lines = False |
447 self.grid_size = 1 | 447 self.grid_size = 1 |
448 self.sel_mode = False | 448 self.sel_mode = False |
449 self.move_obj_mode = False | |
450 self.move_obj = None | |
449 self._start_pos = None | 451 self._start_pos = None |
450 self._parent = parent | 452 self._parent = parent |
451 self._move_point_mode = False | 453 self._move_point_mode = False |
452 self._move_poly_mode = False | 454 self._move_poly_mode = False |
453 self._move_point = False | 455 self._move_point = False |
627 snapped_pos = self.snap_to_grid(corrected_pos) | 629 snapped_pos = self.snap_to_grid(corrected_pos) |
628 if self.sel_mode and ev.button == 1: | 630 if self.sel_mode and ev.button == 1: |
629 obj = self.level.find_obj_at_pos(corrected_pos) | 631 obj = self.level.find_obj_at_pos(corrected_pos) |
630 if obj is not None: | 632 if obj is not None: |
631 self._edit_selected(obj) | 633 self._edit_selected(obj) |
634 elif self.move_obj_mode and ev.button == 1 and not self.move_obj: | |
635 obj = self.level.find_obj_at_pos(corrected_pos) | |
636 if obj is not None: | |
637 if obj.movable(): | |
638 self.move_obj = obj | |
639 elif self.move_obj_mode and ev.button == 1 and self.move_obj: | |
640 self._update_pos(self.move_obj, snapped_pos) | |
641 self.move_obj = None | |
632 elif self._move_poly_mode and ev.button == 1: | 642 elif self._move_poly_mode and ev.button == 1: |
633 if self._move_point: | 643 if self._move_point: |
634 # Place the current point | 644 # Place the current point |
635 self.level.replace_poly(self._move_point, snapped_pos) | 645 self.level.replace_poly(self._move_point, snapped_pos) |
636 self._move_point = None | 646 self._move_point = None |
832 if self.level.try_new_object(classname, | 842 if self.level.try_new_object(classname, |
833 self.level._game_objects, | 843 self.level._game_objects, |
834 new_cls, None): | 844 new_cls, None): |
835 edit_dlg.cleanup() | 845 edit_dlg.cleanup() |
836 | 846 |
847 def _update_pos(self, obj, new_pos): | |
848 data = self.level.lookup[obj] | |
849 new_coords = self.level.point_to_pymunk(new_pos) | |
850 data['args'][0][0] = new_coords[0] | |
851 data['args'][0][1] = new_coords[1] | |
852 self.level.reset_objs() | |
853 self.invalidate() | |
854 | |
837 | 855 |
838 class HighLightButton(Button): | 856 class HighLightButton(Button): |
839 """Button with highlight support""" | 857 """Button with highlight support""" |
840 def __init__(self, text, parent, **kwds): | 858 def __init__(self, text, parent, **kwds): |
841 super(HighLightButton, self).__init__(text, **kwds) | 859 super(HighLightButton, self).__init__(text, **kwds) |
1099 widgets.append(self.sel_mode_but) | 1117 widgets.append(self.sel_mode_but) |
1100 self._light_buttons.append(self.sel_mode_but) | 1118 self._light_buttons.append(self.sel_mode_but) |
1101 y += MENU_BUTTON_HEIGHT + MENU_PAD | 1119 y += MENU_BUTTON_HEIGHT + MENU_PAD |
1102 | 1120 |
1103 y += MENU_PAD | 1121 y += MENU_PAD |
1122 self.move_obj_mode_but = HighLightButton('Move Object', self, | |
1123 action=self.move_obj_mode) | |
1124 self.move_obj_mode_but.rect = BUTTON_RECT.copy() | |
1125 self.move_obj_mode_but.rect.move_ip(MENU_LEFT, y) | |
1126 widgets.append(self.move_obj_mode_but) | |
1127 self._light_buttons.append(self.move_obj_mode_but) | |
1128 y += MENU_BUTTON_HEIGHT + MENU_PAD | |
1129 | |
1130 y += MENU_PAD | |
1104 switch_but = Button('Switch to Drawing', action=self.switch_to_draw) | 1131 switch_but = Button('Switch to Drawing', action=self.switch_to_draw) |
1105 switch_but.rect = BUTTON_RECT.copy() | 1132 switch_but.rect = BUTTON_RECT.copy() |
1106 switch_but.rect.move_ip(MENU_LEFT, y) | 1133 switch_but.rect.move_ip(MENU_LEFT, y) |
1107 widgets.append(switch_but) | 1134 widgets.append(switch_but) |
1108 y += switch_but.rect.height + MENU_PAD | 1135 y += switch_but.rect.height + MENU_PAD |
1173 but.reset() | 1200 but.reset() |
1174 | 1201 |
1175 def _populate_menu(self): | 1202 def _populate_menu(self): |
1176 self.level_widget.change_poly(None) | 1203 self.level_widget.change_poly(None) |
1177 self.level_widget.sel_mode = False | 1204 self.level_widget.sel_mode = False |
1205 self.level_widget.move_obj_mode = False | |
1206 self.level_widget.move_obj = None | |
1178 for widget in self._dMenus[self._menu_mode]: | 1207 for widget in self._dMenus[self._menu_mode]: |
1179 self.add(widget) | 1208 self.add(widget) |
1180 self.invalidate() | 1209 self.invalidate() |
1181 | 1210 |
1182 def set_line_mode(self): | 1211 def set_line_mode(self): |
1184 self.draw_line_but.highlight() | 1213 self.draw_line_but.highlight() |
1185 | 1214 |
1186 def sel_mode(self): | 1215 def sel_mode(self): |
1187 self.level_widget.sel_mode = not self.level_widget.sel_mode | 1216 self.level_widget.sel_mode = not self.level_widget.sel_mode |
1188 if self.level_widget.sel_mode: | 1217 if self.level_widget.sel_mode: |
1218 self.move_obj_mode_but.reset() | |
1189 self.sel_mode_but.highlight() | 1219 self.sel_mode_but.highlight() |
1220 self.level_widget.move_obj_mode = False | |
1221 self.level_widget.move_obj = None | |
1190 else: | 1222 else: |
1191 self.sel_mode_but.reset() | 1223 self.sel_mode_but.reset() |
1224 | |
1225 def move_obj_mode(self): | |
1226 self.level_widget.move_obj_mode = not self.level_widget.move_obj_mode | |
1227 if self.level_widget.move_obj_mode: | |
1228 self.sel_mode_but.reset() | |
1229 self.move_obj_mode_but.highlight() | |
1230 self.level_widget.sel_mode = False | |
1231 else: | |
1232 self.move_obj_mode_but.reset() | |
1192 | 1233 |
1193 def mouse_move(self, ev): | 1234 def mouse_move(self, ev): |
1194 self.level_widget.mouse_move(ev) | 1235 self.level_widget.mouse_move(ev) |
1195 | 1236 |
1196 def move_point(self): | 1237 def move_point(self): |