Changeset 478:763e1b1233a3


Ignore:
Timestamp:
Sep 7, 2013, 2:47:15 PM (7 years ago)
Author:
Neil Muller <drnlmuller@…>
Branch:
default
rebase_source:
961871dad677777050cb7bd3aca1fb95a71bb4c0
Message:

Movable objects, without hints

File:
1 edited

Legend:

Unmodified
Added
Removed
  • tools/area_editor.py

    r467 r478  
    447447        self.grid_size = 1
    448448        self.sel_mode = False
     449        self.move_obj_mode = False
     450        self.move_obj = None
    449451        self._start_pos = None
    450452        self._parent = parent
     
    630632            if obj is not None:
    631633                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
    632642        elif self._move_poly_mode and ev.button == 1:
    633643            if self._move_point:
     
    835845                    edit_dlg.cleanup()
    836846
     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
    837855
    838856class HighLightButton(Button):
     
    11021120
    11031121        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
    11041131        switch_but = Button('Switch to Drawing', action=self.switch_to_draw)
    11051132        switch_but.rect = BUTTON_RECT.copy()
     
    11761203        self.level_widget.change_poly(None)
    11771204        self.level_widget.sel_mode = False
     1205        self.level_widget.move_obj_mode = False
     1206        self.level_widget.move_obj = None
    11781207        for widget in self._dMenus[self._menu_mode]:
    11791208            self.add(widget)
     
    11871216        self.level_widget.sel_mode = not self.level_widget.sel_mode
    11881217        if self.level_widget.sel_mode:
     1218            self.move_obj_mode_but.reset()
    11891219            self.sel_mode_but.highlight()
     1220            self.level_widget.move_obj_mode = False
     1221            self.level_widget.move_obj = None
    11901222        else:
    11911223            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()
    11921233
    11931234    def mouse_move(self, ev):
Note: See TracChangeset for help on using the changeset viewer.