Changeset 605


Ignore:
Timestamp:
07/30/10 06:41:28 (9 years ago)
Author:
beliar
Message:

Patch by Domtron_Vox and Beliar.

  • Items being dragged will now be removed from the "real" container when dragging them rather when dropping them. (Beliar)
  • Items from other containers can now be switched with items in the Inventory when dropped on top of them. Does not work the other way around yet. (Domtron_Vox)
Location:
trunk/game/scripts
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/game/scripts/gui/containergui.py

    r601 r605  
    7474            data_drag.dragging = True 
    7575            data_drag.dragged_widget = drag_widget 
    76             data_drag.dragged_container = self.container 
    7776 
     77            self.container.takeItem(drag_widget.item) 
     78             
    7879            # after dragging the 'item', set the widgets' images 
    7980            # so that it has it's default 'empty' images 
     
    8990        drop_widget = self.gui.findChild(name = obj) 
    9091        if drop_widget != data_drag.dragged_widget: 
    91             data_drag.dragged_container.takeItem(data_drag.dragged_item) 
    9292            self.container.placeItem(data_drag.dragged_item, drop_widget.index) 
    9393        drop_widget.item = data_drag.dragged_item 
  • trunk/game/scripts/gui/drag_drop_data.py

    r424 r605  
    2525dragged_item = None 
    2626dragged_widget = None 
    27 dragged_container = None 
    28  
  • trunk/game/scripts/gui/inventorygui.py

    r601 r605  
    170170            data_drag.dragging = True 
    171171            data_drag.dragged_widget = drag_widget 
    172             data_drag.dragged_container=self.inventory_storage 
     172            self.inventory_storage.takeItem(drag_widget.item) 
    173173            # after dragging the 'item', set the widgets' images 
    174174            # so that it has it's default 'empty' images 
     
    184184           @return: None""" 
    185185        drop_widget = self.gui.findChild(name = obj) 
     186        drop_slot, drop_index = drop_widget.slot, drop_widget.index 
     187        replace_item = None 
    186188        try : 
    187             if drop_widget != data_drag.dragged_widget: 
    188                 if data_drag.dragged_container != self.inventory_storage: 
    189                     data_drag.dragged_container.takeItem(data_drag.dragged_item) 
    190                 self.inventory_storage.moveItemToSlot(data_drag.dragged_item, 
    191                                                       drop_widget.slot, 
    192                                                       drop_widget.index) 
     189            if data_drag.dragging: 
     190                inventory = self.inventory_storage 
     191                drag_item = data_drag.dragged_item 
     192                #this will get the replacement item and data for drag_drop if 
     193                ## there is an item All ready occupying the slot 
     194                if not inventory.isSlotEmpty(drop_slot, drop_index): 
     195                    #get the item and then remove it from the inventory 
     196                    replace_item = inventory.getItemsInSlot \ 
     197                                                (drop_slot, drop_index) 
     198                    self.dragObject(obj) 
     199                     
     200                self.inventory_storage.moveItemToSlot(drag_item, 
     201                                                      drop_slot, 
     202                                                      drop_index) 
     203                     
    193204            if drop_widget.slot == 'ready': 
    194205                self.readyCallback() 
    195             self.controller.resetMouseCursor() 
    196             data_drag.dragging = False 
     206             
     207            if replace_item == None: 
     208                self.controller.resetMouseCursor() 
     209                data_drag.dragging = False 
     210            print data_drag.dragged_item, data_drag.dragging     
    197211        except Container.TooBig : 
    198212            print("%s too big to fit into %s" % (data_drag.dragged_item, 
  • trunk/game/scripts/inventory.py

    r591 r605  
    116116            return copy.copy(self.items[slot].items) 
    117117 
    118     def isSlotEmpty(self, slot): 
     118    def isSlotEmpty(self, slot, index=None): 
    119119        if not slot in self.items: 
    120120            raise(ValueError("%s: No such slot" % slot)) 
    121         return self.items[slot].count() == 0 
     121        if index == None: 
     122            return self.items[slot].count() == 0 
     123        else: 
     124            return not index in self.items[slot].items 
     125                  
    122126 
    123127    def has(self, item_ID): 
  • trunk/game/scripts/objects/action.py

    r603 r605  
    369369        self.model.addAgent("All", agent) 
    370370        self.model.placeAgents() 
    371         self.item.in_container.takeItem(self.item)         
    372371        super(DropItemAction, self).execute() 
    373372         
Note: See TracChangeset for help on using the changeset viewer.