[Orxonox-commit 3604] r8289 - code/branches/dockingsystem2/src/orxonox/infos
dafrick at orxonox.net
dafrick at orxonox.net
Thu Apr 21 22:45:43 CEST 2011
Author: dafrick
Date: 2011-04-21 22:45:42 +0200 (Thu, 21 Apr 2011)
New Revision: 8289
Modified:
code/branches/dockingsystem2/src/orxonox/infos/PlayerInfo.cc
code/branches/dockingsystem2/src/orxonox/infos/PlayerInfo.h
Log:
Adding possibility to have a string of temporaryControls.
Modified: code/branches/dockingsystem2/src/orxonox/infos/PlayerInfo.cc
===================================================================
--- code/branches/dockingsystem2/src/orxonox/infos/PlayerInfo.cc 2011-04-21 18:29:30 UTC (rev 8288)
+++ code/branches/dockingsystem2/src/orxonox/infos/PlayerInfo.cc 2011-04-21 20:45:42 UTC (rev 8289)
@@ -50,7 +50,6 @@
this->controller_ = 0;
this->controllableEntity_ = 0;
this->controllableEntityID_ = OBJECTID_UNKNOWN;
- this->oldControllableEntity_ = 0;
this->gtinfo_ = 0;
this->gtinfoID_ = OBJECTID_UNKNOWN;
@@ -150,8 +149,9 @@
if (!entity || entity == this->controllableEntity_)
return;
- if (this->oldControllableEntity_)
+ while (this->previousControllableEntity_.size() > 0)
this->stopTemporaryControl();
+
if (this->controllableEntity_)
this->stopControl();
@@ -175,10 +175,8 @@
{
if (!entity)
return;
-
- assert( this->oldControllableEntity_==0 );
-
- this->oldControllableEntity_ = this->controllableEntity_;
+
+ this->previousControllableEntity_.push_back(WeakPtr<ControllableEntity>(this->controllableEntity_));
this->controllableEntity_ = entity;
this->controllableEntityID_ = entity->getObjectID();
@@ -193,7 +191,7 @@
void PlayerInfo::stopControl()
{
- if ( this->oldControllableEntity_ )
+ while ( this->previousControllableEntity_.size() > 0)
this->stopTemporaryControl();
ControllableEntity* entity = this->controllableEntity_;
@@ -218,17 +216,20 @@
{
ControllableEntity* entity = this->controllableEntity_;
- assert( this->controllableEntity_ && this->oldControllableEntity_ );
- if( !entity || !this->oldControllableEntity_ )
+ assert(this->controllableEntity_ != NULL);
+ if( !entity || this->previousControllableEntity_.size() == 0 )
return;
this->controllableEntity_->setController(0);
-
- this->controllableEntity_ = this->oldControllableEntity_;
+
+ this->controllableEntity_ = this->previousControllableEntity_.back();
+ do {
+ this->controllableEntity_ = this->previousControllableEntity_.back();
+ } while(this->controllableEntity_ == NULL && this->previousControllableEntity_.size() > 0);
this->controllableEntityID_ = this->controllableEntity_->getObjectID();
- this->oldControllableEntity_ = 0;
+ this->previousControllableEntity_.pop_back();
- if ( this->controllableEntity_ && this->controller_)
+ if ( this->controllableEntity_ != NULL && this->controller_ != NULL)
this->controller_->setControllableEntity(this->controllableEntity_);
if ( GameMode::isMaster() )
Modified: code/branches/dockingsystem2/src/orxonox/infos/PlayerInfo.h
===================================================================
--- code/branches/dockingsystem2/src/orxonox/infos/PlayerInfo.h 2011-04-21 18:29:30 UTC (rev 8288)
+++ code/branches/dockingsystem2/src/orxonox/infos/PlayerInfo.h 2011-04-21 20:45:42 UTC (rev 8289)
@@ -97,7 +97,7 @@
bool bReadyToSpawn_;
Controller* controller_;
ControllableEntity* controllableEntity_;
- ControllableEntity* oldControllableEntity_;
+ std::vector< WeakPtr<ControllableEntity> > previousControllableEntity_; //!< List of the previous ControllableEntities if repeatedly startTemporary control was called. The ControllableEntity at the back is the most recent.
unsigned int controllableEntityID_;
const GametypeInfo* gtinfo_;
More information about the Orxonox-commit
mailing list