Changeset 3517


Ignore:
Timestamp:
12/02/10 16:43:20 (3 years ago)
Author:
helios2000
Message:
  • Instances now inherit blocking property from objects. Modified the ObjectEdit? Plugin, so you can use it to change the object blocking or the Instance blocking individually. Note: Object blocking changes, overwrite the instance blocking property. fixes514
Location:
branches/active/0.3.3dev
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • branches/active/0.3.3dev/engine/core/model/structures/instance.cpp

    r3410 r3517  
    183183                m_location(location), 
    184184                m_facinglocation(NULL), 
    185                 m_visual(NULL) { 
     185                m_visual(NULL), 
     186                m_blocking(object->isBlocking()) { 
    186187        } 
    187188 
     
    243244        void Instance::setId(const std::string& identifier) { 
    244245                m_id = identifier; 
     246        } 
     247 
     248        void Instance::setBlocking(bool blocking) { 
     249                m_blocking = blocking; 
     250        } 
     251 
     252        bool Instance::isBlocking() const { 
     253                return m_blocking; 
    245254        } 
    246255 
  • branches/active/0.3.3dev/engine/core/model/structures/instance.h

    r3409 r3517  
    159159                Location& getFacingLocationRef(); 
    160160 
     161                /** Sets if instance blocks movement 
     162                 */ 
     163                void setBlocking(bool blocking); 
     164 
     165                /** Gets if instance blocks movement 
     166                 */ 
     167                bool isBlocking() const; 
     168 
    161169                /** Adds new instance action listener 
    162170                 * @param listener to add 
     
    360368                // instance visualization 
    361369                AbstractVisual* m_visual; 
     370                // instance blocking info 
     371                bool m_blocking; 
    362372 
    363373                Instance(const Instance&); 
  • branches/active/0.3.3dev/engine/core/model/structures/instance.i

    r3409 r3517  
    7777                void setRotation(int); 
    7878                int getRotation() const; 
     79                void setBlocking(bool blocking); 
     80                bool isBlocking() const; 
    7981                void addActionListener(InstanceActionListener* listener); 
    8082                void removeActionListener(InstanceActionListener* listener); 
  • branches/active/0.3.3dev/engine/core/model/structures/layer.cpp

    r3418 r3517  
    239239                bool blockingInstance = false; 
    240240                for(std::list<Instance*>::const_iterator j = adjacentInstances.begin(); j != adjacentInstances.end(); ++j) { 
    241                         if((*j)->getObject()->isBlocking() && (*j)->getLocationRef().getLayerCoordinates() == cellCoordinate) { 
     241                        if((*j)->isBlocking() && (*j)->getLocationRef().getLayerCoordinates() == cellCoordinate) { 
    242242                                blockingInstance = true; 
    243243                        } 
  • branches/active/0.3.3dev/engine/core/view/renderers/blockinginforenderer.cpp

    r3401 r3517  
    7979                for (;instance_it != instances.end(); ++instance_it) { 
    8080                        Instance* instance = (*instance_it)->instance; 
    81                         if (!instance->getObject()->isBlocking()) { 
     81                        if (!instance->getObject()->isBlocking() || !instance->isBlocking()) { 
    8282                                continue; 
    8383                        } 
  • branches/active/0.3.3dev/engine/python/fife/extensions/savers.py

    r3491 r3517  
    215215                                attr_vals[(None, 'id')] = inst.getId() 
    216216                                attr_names[(None, 'id')] = 'id' 
     217 
     218                        if inst.getObject().isBlocking() != inst.isBlocking(): 
     219                                attr_vals[(None, 'blocking')] = str(int(inst.isBlocking())) 
     220                                attr_names[(None, 'blocking')] = 'blocking' 
    217221 
    218222                        attrs = AttributesNSImpl(attr_vals, attr_names) 
  • branches/active/0.3.3dev/engine/python/fife/extensions/serializers/xmlmap.py

    r3497 r3517  
    501501                                rotation = int(rotation) 
    502502                        inst.setRotation(rotation) 
     503 
     504                        blocking = instance.get('blocking') 
     505                        if blocking is not None: 
     506                                if bool(blocking) is not object.isBlocking(): 
     507                                        inst.setBlocking(bool(blocking)) 
    503508 
    504509                        fife.InstanceVisual.create(inst) 
  • branches/active/0.3.3dev/tools/editor/gui/objectedit.xml

    r3424 r3517  
    2020                <Label text="Blocking:" min_size="45,20"/> 
    2121                <TextBox text="0" name="object_blocking" min_size="20,20"/> 
     22    <Button name="object_blocking_toggle" text="toggle" max_size="50,20"/> 
    2223 
    2324                <Label text="Static:" min_size="45,20"/> 
     
    4849        </VBox> 
    4950 
    50         <Button name="change_data" text="Save rotation"/> 
     51        <Button name="change_data" text="Save object data"/> 
    5152 
    5253        <Label text="          Selected Instance" background_color="0,0,0" /> 
     
    6061                <TextBox text="0" name="instance_rotation" min_size="30,20"/> 
    6162        </HBox> 
     63  <HBox > 
     64    <Label text="Instance blocking:" min_size="85,20"/> 
     65    <TextBox text="0" name="instance_blocking" min_size="30,20"/> 
     66  </HBox> 
    6267 
    6368        <HBox> 
    6469                <Button name="use_data" text="Set instance id"/> 
    6570        </HBox> 
     71  <HBox> 
     72    <Button name="instance_blocking_toggle" text="Toggle instance blocking"/> 
     73  </HBox> 
    6674        <Spacer /> 
    6775 
  • branches/active/0.3.3dev/tools/editor/plugins/ObjectEdit.py

    r3424 r3517  
    101101                self._avail_rotations = [] 
    102102                self._namespace = None   
    103                 self._blocking = 0 
     103                self._object_blocking = 0 
     104                self._instance_blocking = 0 
    104105                self._static = 0 
    105106                self._object_id = None   
     
    213214                self._gui_y_offset.capture(self.change_offset, "mouseWheelMovedUp") 
    214215                self._gui_y_offset.capture(self.change_offset, "mouseWheelMovedDown") 
     216 
     217                self.container.findChild(name="object_blocking_toggle").capture(self.object_blocking_toggle, "mousePressed") 
     218                self.container.findChild(name="instance_blocking_toggle").capture(self.instance_blocking_toggle, "mousePressed") 
    215219 
    216220                self._gui_anim_panel_wrapper = self.container.findChild(name="animation_panel_wrapper") 
     
    335339                        'instance_rotation' : unicode( self._instances[0].getRotation() ), 
    336340                        'object_namespace'      : unicode( self._namespace ), 
    337                         'object_blocking'       : unicode( self._blocking ), 
     341                        'instance_blocking'     : unicode( self._instance_blocking ), 
     342                        'object_blocking'       : unicode( self._object_blocking ), 
    338343                        'object_static'         : unicode( self._static ), 
    339344                }) 
     
    400405                self.update_gui() 
    401406 
     407        def object_blocking_toggle(self, event, widget): 
     408                """ widget callback: change the blocking of an instance  
     409 
     410                @type   event:  object 
     411                @param  event:  FIFE mouseevent or keyevent 
     412                @type   widget: object 
     413                @param  widget: pychan widget 
     414                """ 
     415                object = self._instances[0].getObject() 
     416                object_id = object.getId() 
     417                blocking = not object.isBlocking() 
     418                object.setBlocking(blocking) 
     419 
     420                instances = self._layer.getInstances() 
     421                for instance in instances: 
     422                        object = instance.getObject() 
     423                        if object.getId() == object_id: 
     424                                instance.setBlocking(blocking) 
     425 
     426                self._object_blocking = int(blocking) 
     427                self._instance_blocking = int(blocking) 
     428 
     429                self.update_gui() 
     430 
     431        def instance_blocking_toggle(self, event, widget): 
     432                """ widget callback: change the blocking of an instance  
     433 
     434                @type   event:  object 
     435                @param  event:  FIFE mouseevent or keyevent 
     436                @type   widget: object 
     437                @param  widget: pychan widget 
     438                """ 
     439 
     440                instance = self._instances[0] 
     441                instance.setBlocking(not instance.isBlocking()) 
     442                self._instance_blocking = int(instance.isBlocking()) 
     443 
     444                self.update_gui() 
     445 
    402446        def use_user_data(self): 
    403447                """ 
     
    467511                                img_tag.attrib["y_offset"] = self._gui_yoffset_textfield._getText() 
    468512                                break 
     513 
     514                block = self.tree.getroot() 
     515                block.attrib["blocking"] = str(int(self._object_blocking)) 
    469516 
    470517                xmlcontent = ET.tostring(self.tree.getroot()) 
     
    577624                 
    578625                if object.isBlocking(): 
    579                         self._blocking = 1 
    580                          
     626                        self._object_blocking = 1 
     627 
     628                if instance.isBlocking(): 
     629                        self._instance_blocking = 1 
     630 
    581631                if object.isStatic(): 
    582632                        self._static = 1 
Note: See TracChangeset for help on using the changeset viewer.