Changeset 2254 for code/branches/objecthierarchy2/src/core/BaseObject.cc
- Timestamp:
- Nov 24, 2008, 1:50:47 AM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/objecthierarchy2/src/core/BaseObject.cc
r2173 r2254 36 36 #include "CoreIncludes.h" 37 37 #include "EventIncludes.h" 38 #include "Functor.h" 38 39 #include "XMLPort.h" 39 40 #include "XMLFile.h" … … 60 61 this->oldGametype_ = 0; 61 62 63 this->functorSetMainState_ = 0; 64 this->functorGetMainState_ = 0; 65 62 66 this->setCreator(creator); 63 67 if (this->creator_) … … 82 86 BaseObject::~BaseObject() 83 87 { 84 for (std::list<BaseObject*>::const_iterator it = this->events_.begin(); it != this->events_.end(); ++it) 85 (*it)->unregisterEventListener(this); 86 87 for (std::map<BaseObject*, std::string>::const_iterator it = this->eventListeners_.begin(); it != this->eventListeners_.end(); ++it) 88 it->first->removeEvent(this); 88 if (this->isInitialized()) 89 { 90 for (std::list<BaseObject*>::const_iterator it = this->events_.begin(); it != this->events_.end(); ++it) 91 (*it)->unregisterEventListener(this); 92 93 for (std::map<BaseObject*, std::string>::const_iterator it = this->eventListeners_.begin(); it != this->eventListeners_.end(); ++it) 94 it->first->removeEvent(this); 95 96 if (this->functorSetMainState_) 97 delete this->functorSetMainState_; 98 if (this->functorGetMainState_) 99 delete this->functorGetMainState_; 100 } 89 101 } 90 102 … … 100 112 XMLPortParam(BaseObject, "visible", setVisible, isVisible, xmlelement, mode); 101 113 XMLPortParam(BaseObject, "active", setActive, isActive, xmlelement, mode); 114 XMLPortParam(BaseObject, "mainstate", setMainStateName, getMainStateName, xmlelement, mode); 102 115 103 116 XMLPortObjectTemplate(BaseObject, Template, "templates", addTemplate, getTemplate, xmlelement, mode, Template*); … … 279 292 SetEvent(BaseObject, "visibility", setVisible, event); 280 293 } 294 295 void BaseObject::setMainStateName(const std::string& name) 296 { 297 if (this->mainStateName_ != name) 298 { 299 this->mainStateName_ = name; 300 if (this->functorSetMainState_) 301 delete this->functorSetMainState_; 302 if (this->functorGetMainState_) 303 delete this->functorGetMainState_; 304 this->changedMainState(); 305 if (!this->functorSetMainState_) 306 COUT(2) << "Warning: \"" << name << "\" is not a valid MainState." << std::endl; 307 } 308 } 309 310 void BaseObject::setMainState(bool state) 311 { 312 if (this->functorSetMainState_) 313 (*this->functorSetMainState_)(state); 314 else 315 COUT(2) << "Warning: No MainState defined in object \"" << this->getName() << "\" (" << this->getIdentifier()->getName() << ")" << std::endl; 316 } 317 318 bool BaseObject::getMainState() const 319 { 320 if (this->functorGetMainState_) 321 { 322 (*this->functorGetMainState_)(); 323 return this->functorGetMainState_->getReturnvalue(); 324 } 325 else 326 { 327 COUT(2) << "Warning: No MainState defined in object \"" << this->getName() << "\" (" << this->getIdentifier()->getName() << ")" << std::endl; 328 return false; 329 } 330 } 331 332 void BaseObject::changedMainState() 333 { 334 SetMainState(BaseObject, "activity", setActive, isActive); 335 SetMainState(BaseObject, "visibility", setVisible, isVisible); 336 } 281 337 }
Note: See TracChangeset
for help on using the changeset viewer.