Changeset 3520


Ignore:
Timestamp:
12/02/10 21:22:45 (3 years ago)
Author:
helios2000
Message:
  • Added an additional flag to the Instance. This protects against unintentional change of Instance blocking. ObjectEdit?, Saver and Loader use the flag.
Location:
branches/active/0.3.3dev
Files:
7 edited

Legend:

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

    r3517 r3520  
    184184                m_facinglocation(NULL), 
    185185                m_visual(NULL), 
    186                 m_blocking(object->isBlocking()) { 
     186                m_blocking(object->isBlocking()), 
     187                m_override_blocking(false) { 
    187188        } 
    188189 
     
    247248 
    248249        void Instance::setBlocking(bool blocking) { 
    249                 m_blocking = blocking; 
     250                if (m_override_blocking) { 
     251                        m_blocking = blocking; 
     252                } 
    250253        } 
    251254 
  • branches/active/0.3.3dev/engine/core/model/structures/instance.h

    r3517 r3520  
    167167                bool isBlocking() const; 
    168168 
     169                /** Sets if instance blocking can overriden 
     170                 */ 
     171                void setOverrideBlocking(bool overblock) { m_override_blocking = overblock; } 
     172 
     173                /** Gets if instance blocking can overriden 
     174                 */ 
     175                bool isOverrideBlocking() const { return m_override_blocking; } 
     176 
    169177                /** Adds new instance action listener 
    170178                 * @param listener to add 
     
    370378                // instance blocking info 
    371379                bool m_blocking; 
     380                // allow to override the blocking property 
     381                bool m_override_blocking; 
    372382 
    373383                Instance(const Instance&); 
  • branches/active/0.3.3dev/engine/core/model/structures/instance.i

    r3517 r3520  
    7979                void setBlocking(bool blocking); 
    8080                bool isBlocking() const; 
     81                void setOverrideBlocking(bool overblock); 
     82                bool isOverrideBlocking() const; 
    8183                void addActionListener(InstanceActionListener* listener); 
    8284                void removeActionListener(InstanceActionListener* listener); 
  • branches/active/0.3.3dev/engine/python/fife/extensions/savers.py

    r3517 r3520  
    216216                                attr_names[(None, 'id')] = 'id' 
    217217 
    218                         if inst.getObject().isBlocking() != inst.isBlocking(): 
    219                                 attr_vals[(None, 'blocking')] = str(int(inst.isBlocking())) 
    220                                 attr_names[(None, 'blocking')] = 'blocking' 
     218                        if inst.isOverrideBlocking(): 
     219                                attr_vals[(None, 'override_blocking')] = str(int(inst.isOverrideBlocking())) 
     220                                attr_names[(None, 'override_blocking')] = 'override_blocking' 
     221                                if inst.getObject().isBlocking() is not inst.isBlocking(): 
     222                                        attr_vals[(None, 'blocking')] = str(int(inst.isBlocking())) 
     223                                        attr_names[(None, 'blocking')] = 'blocking' 
    221224 
    222225                        attrs = AttributesNSImpl(attr_vals, attr_names) 
  • branches/active/0.3.3dev/engine/python/fife/extensions/serializers/xmlmap.py

    r3517 r3520  
    502502                        inst.setRotation(rotation) 
    503503 
    504                         blocking = instance.get('blocking') 
    505                         if blocking is not None: 
    506                                 if bool(blocking) is not object.isBlocking(): 
    507                                         inst.setBlocking(bool(blocking)) 
     504                        over_block = instance.get('override_blocking') 
     505                        if over_block is not None: 
     506                                inst.setOverrideBlocking(bool(over_block)) 
     507                                blocking = instance.get('blocking') 
     508                                if blocking is not None: 
     509                                        inst.setBlocking(bool(int(blocking))) 
    508510 
    509511                        fife.InstanceVisual.create(inst) 
  • branches/active/0.3.3dev/tools/editor/gui/objectedit.xml

    r3517 r3520  
    7070        </HBox> 
    7171  <HBox> 
     72    <CheckBox name="override_blocking_toggle" text="Allowed to override blocking"/> 
     73  </HBox> 
     74  <HBox> 
    7275    <Button name="instance_blocking_toggle" text="Toggle instance blocking"/> 
    7376  </HBox> 
  • branches/active/0.3.3dev/tools/editor/plugins/ObjectEdit.py

    r3517 r3520  
    330330                        x_offset = unicode( 0 ) 
    331331                        y_offset = unicode( 0 ) 
    332                  
     332 
     333                if self._instances[0].isOverrideBlocking(): 
     334                        self.container.findChild(name="override_blocking_toggle")._setMarked(True) 
     335                else: 
     336                        self.container.findChild(name="override_blocking_toggle")._setMarked(False) 
     337 
    333338                self.container.distributeInitialData({ 
    334339                        'select_rotations'      : self._avail_rotations, 
     
    413418                @param  widget: pychan widget 
    414419                """ 
     420                self.check_override_blocking() 
    415421                object = self._instances[0].getObject() 
    416422                object_id = object.getId() 
     
    425431 
    426432                self._object_blocking = int(blocking) 
    427                 self._instance_blocking = int(blocking) 
     433                self._instance_blocking = int(self._instances[0].isBlocking()) 
    428434 
    429435                self.update_gui() 
     
    437443                @param  widget: pychan widget 
    438444                """ 
    439  
     445                self.check_override_blocking() 
    440446                instance = self._instances[0] 
    441447                instance.setBlocking(not instance.isBlocking()) 
     
    443449 
    444450                self.update_gui() 
     451 
     452        def check_override_blocking(self): 
     453                instance = self._instances[0] 
     454                marked = self.container.findChild(name="override_blocking_toggle")._isMarked() 
     455                if marked: 
     456                        instance.setOverrideBlocking(True) 
     457                else: 
     458                        instance.setOverrideBlocking(False) 
    445459 
    446460        def use_user_data(self): 
Note: See TracChangeset for help on using the changeset viewer.