Changeset 601


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

Ticket #233: Patch by Beliar.

fixes[s:trac, t:233]

Location:
trunk/game/scripts
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/game/scripts/gamescenecontroller.py

    r600 r601  
    1616#   along with PARPG.  If not, see <http://www.gnu.org/licenses/>. 
    1717 
    18 from controllerbase import ControllerBase 
    1918from datetime import datetime 
    20 from fife import fife 
    21 from scripts.gui.hud import Hud 
    2219import random 
    2320import glob 
    2421import os 
     22 
     23from fife import fife 
     24 
     25from controllerbase import ControllerBase 
     26from scripts.gui.hud import Hud 
     27from scripts.gui import drag_drop_data as data_drag 
    2528from objects.action import ChangeMapAction, ExamineAction, OpenBoxAction, \ 
    2629                           UnlockBoxAction, LockBoxAction, TalkAction, \ 
    27                            PickUpAction 
     30                           PickUpAction, DropItemAction 
    2831 
    2932class GameSceneController(ControllerBase): 
     
    6063 
    6164        self.mouse_callback = None 
     65        self.original_cursor_id = self.engine.getCursor().getId()       
    6266 
    6367        if model.settings.get("FIFE",  "PlaySounds"): 
     
    129133            self.view.togglePause() 
    130134 
     135    def setMouseCursor(self, image, dummy_image, mc_type="native"):  
     136        """Set the mouse cursor to an image. 
     137           @type image: string 
     138           @param image: The image you want to set the cursor to 
     139           @type dummy_image: string 
     140           @param dummy_image: ??? 
     141           @type type: string 
     142           @param type: ??? 
     143           @return: None""" 
     144        cursor = self.engine.getCursor() 
     145        cursor_type = fife.CURSOR_IMAGE 
     146        img_pool = self.engine.getImagePool() 
     147        if(mc_type == "target"): 
     148            target_cursor_id = img_pool.addResourceFromFile(image)   
     149            dummy_cursor_id = img_pool.addResourceFromFile(dummy_image) 
     150            cursor.set(cursor_type, dummy_cursor_id) 
     151            cursor.setDrag(cursor_type, target_cursor_id, -16, -16) 
     152        else: 
     153            cursor_type = fife.CURSOR_IMAGE 
     154            zero_cursor_id = img_pool.addResourceFromFile(image) 
     155            cursor.set(cursor_type, zero_cursor_id) 
     156            cursor.setDrag(cursor_type, zero_cursor_id) 
     157 
     158    def resetMouseCursor(self): 
     159        """Reset cursor to default image. 
     160           @return: None""" 
     161        c = self.engine.getCursor() 
     162        cursor_type = fife.CURSOR_NATIVE 
     163        # this is the path to the default image 
     164        cursor_id = self.original_cursor_id 
     165        c.setDrag(cursor_type, cursor_id) 
     166        c.set(cursor_type, cursor_id) 
     167         
    131168    def mouseReleased(self, evt): 
    132169        """If a mouse button is released, fife calls this routine. 
     
    139176        scr_point = fife.ScreenPoint(evt.getX(), evt.getY()) 
    140177        if(evt.getButton() == fife.MouseEvent.LEFT): 
    141             self.model.movePlayer(self.model.getCoords(scr_point)) 
     178            if(data_drag.dragging): 
     179                coord = self.model.getCoords(scr_point)\ 
     180                                    .getExactLayerCoordinates() 
     181                commands = ({"Command": "ResetMouseCursor"},  
     182                            {"Command": "StopDragging"}) 
     183                self.model.game_state.player_character.approach([coord.x,  
     184                                                                 coord.y], 
     185                                    DropItemAction(self,  
     186                                                   data_drag.dragged_item,  
     187                                                   commands)) 
     188            else: 
     189                self.model.movePlayer(self.model.getCoords(scr_point)) 
    142190        elif(evt.getButton() == fife.MouseEvent.RIGHT): 
    143191            # is there an object here? 
  • trunk/game/scripts/gui/containergui.py

    r596 r601  
    3434        self.container = container 
    3535        self.events_to_map = {}         
    36         self.resetMouseCursor()    
    3736        self.buttons = ("Slot1", "Slot2", "Slot3", 
    3837                        "Slot4", "Slot5", "Slot6", 
     
    7170            down_image = drag_widget.down_image 
    7271            # set the mouse cursor to be the widget's image 
    73             self.setMouseCursor(up_image.source, down_image.source) 
     72            self.controller.setMouseCursor(up_image.source, down_image.source) 
    7473            data_drag.dragged_image = up_image.source 
    7574            data_drag.dragging = True 
     
    9695        data_drag.dragging = False 
    9796        #reset the mouse cursor to the normal cursor 
    98         self.resetMouseCursor() 
     97        self.controller.resetMouseCursor() 
    9998         
    10099    def showContainer(self): 
  • trunk/game/scripts/gui/containergui_base.py

    r600 r601  
    3030        self.controller = controller 
    3131        self.gui = pychan.loadXML(gui_file) 
    32         data_drag.dragging = False 
    33         self.original_cursor_id = self.controller.engine.getCursor().getId()       
    34  
    35     def setMouseCursor(self, image, dummy_image, mc_type="native"):  
    36         """Set the mouse cursor to an image. 
    37            @type image: string 
    38            @param image: The image you want to set the cursor to 
    39            @type dummy_image: string 
    40            @param dummy_image: ??? 
    41            @type type: string 
    42            @param type: ??? 
    43            @return: None""" 
    44         cursor = self.controller.engine.getCursor() 
    45         cursor_type = fife.CURSOR_IMAGE 
    46         img_pool = self.controller.engine.getImagePool() 
    47         if(mc_type == "target"): 
    48             target_cursor_id = img_pool.addResourceFromFile(image)   
    49             dummy_cursor_id = img_pool.addResourceFromFile(dummy_image) 
    50             cursor.set(cursor_type, dummy_cursor_id) 
    51             cursor.setDrag(cursor_type, target_cursor_id, -16, -16) 
    52         else: 
    53             cursor_type = fife.CURSOR_IMAGE 
    54             zero_cursor_id = img_pool.addResourceFromFile(image) 
    55             cursor.set(cursor_type, zero_cursor_id) 
    56             cursor.setDrag(cursor_type, zero_cursor_id) 
    57  
    58     def resetMouseCursor(self): 
    59         """Reset cursor to default image. 
    60            @return: None""" 
    61         c = self.controller.engine.getCursor() 
    62         cursor_type = fife.CURSOR_NATIVE 
    63         # this is the path to the default image 
    64         cursor_id = self.original_cursor_id 
    65         c.setDrag(cursor_type, cursor_id) 
    66         c.set(cursor_type, cursor_id) 
    6732 
    6833    def dragDrop(self, obj): 
  • trunk/game/scripts/gui/inventorygui.py

    r600 r601  
    166166            down_image = drag_widget.down_image 
    167167            # set the mouse cursor to be the widget's image 
    168             self.setMouseCursor(up_image.source,down_image.source) 
     168            self.controller.setMouseCursor(up_image.source,down_image.source) 
    169169            data_drag.dragged_image = up_image.source 
    170170            data_drag.dragging = True 
     
    193193            if drop_widget.slot == 'ready': 
    194194                self.readyCallback() 
    195             self.resetMouseCursor() 
     195            self.controller.resetMouseCursor() 
    196196            data_drag.dragging = False 
    197197        except Container.TooBig : 
     
    212212                             "Drop",  
    213213                             self.executeMenuItem,  
    214                              ACTIONS["Drop"](**param_dict)])         
     214                             ACTIONS["DropFromInventory"](**param_dict)])         
    215215        return menu_actions 
    216216     
  • trunk/game/scripts/objects/action.py

    r599 r601  
    1616 
    1717#exceptions 
     18 
     19from scripts.gui import drag_drop_data as data_drag 
     20 
    1821class NoSuchQuestException(Exception): 
    1922    """NoQuestException is used when there is no active quest with the id""" 
     
    5154                else: 
    5255                    raise NoSuchQuestException 
     56            elif command == "ResetMouseCursor": 
     57                self.controller.resetMouseCursor() 
     58            elif command == "StopDragging": 
     59                data_drag.dragging = False 
    5360                 
    5461class ChangeMapAction(Action): 
     
    299306        self.view.hud.inventory.updateInventoryButtons() 
    300307        super(PickUpAction, self).execute() 
    301          
     308 
    302309class DropItemAction(Action): 
    303310    """Action for dropping an items on a map""" 
    304  
    305     def __init__(self, controller, item, container_gui, commands = None): 
     311    def __init__(self, controller, item, commands = None): 
    306312        super(DropItemAction, self).__init__(controller, commands) 
    307313        self.item = item 
    308         self.container_gui = container_gui 
    309  
     314         
    310315    def execute(self): 
    311316        item_data = self.item.getStateForSaving() 
     
    327332        self.model.placeAgents() 
    328333        self.item.in_container.takeItem(self.item)         
     334        super(DropItemAction, self).execute() 
     335         
     336class DropItemFromContainerAction(DropItemAction): 
     337    """Action for dropping an items from the Inventory to a map""" 
     338 
     339    def __init__(self, controller, item, container_gui, commands = None): 
     340        super(DropItemFromContainerAction, self).__init__(controller, item, commands) 
     341        self.container_gui = container_gui 
     342 
     343    def execute(self): 
     344        super(DropItemFromContainerAction, self).execute() 
    329345        self.container_gui.updateImages() 
    330         super(DropItemAction, self).execute() 
    331346 
    332347ACTIONS = {"ChangeMap":ChangeMapAction,  
     
    340355           "Use":UseAction, 
    341356           "PickUp":PickUpAction, 
    342            "Drop":DropItemAction} 
     357           "DropFromInventory":DropItemFromContainerAction} 
Note: See TracChangeset for help on using the changeset viewer.