TargetContainer.cpp

Go to the documentation of this file.
00001 ////////////////////////////////////////////////////////////////////////////////
00002 //    Scorched3D (c) 2000-2009
00003 //
00004 //    This file is part of Scorched3D.
00005 //
00006 //    Scorched3D is free software; you can redistribute it and/or modify
00007 //    it under the terms of the GNU General Public License as published by
00008 //    the Free Software Foundation; either version 2 of the License, or
00009 //    (at your option) any later version.
00010 //
00011 //    Scorched3D is distributed in the hope that it will be useful,
00012 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00013 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014 //    GNU General Public License for more details.
00015 //
00016 //    You should have received a copy of the GNU General Public License
00017 //    along with Scorched3D; if not, write to the Free Software
00018 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00019 ////////////////////////////////////////////////////////////////////////////////
00020 
00021 #include <target/TargetContainer.h>
00022 
00023 TargetContainer::TargetContainer()
00024 {
00025 }
00026 
00027 TargetContainer::~TargetContainer()
00028 {
00029 }
00030 
00031 void TargetContainer::addTarget(Target *target)
00032 {
00033         DIALOG_ASSERT(target->isTarget());
00034         internalAddTarget(target);
00035 }
00036 
00037 void TargetContainer::internalAddTarget(Target *target)
00038 {
00039         std::map<unsigned int, Target *>::iterator findItor = 
00040                 targets_.find(target->getPlayerId());
00041         if (findItor != targets_.end())
00042         {
00043                 Target *original = (*findItor).second;
00044                 S3D::dialogExit("Scorched3D",
00045                         S3D::formatStringBuffer("Duplicate target %u being added to container.\n"
00046                         "Original :%s, this %s",
00047                         target->getPlayerId(),
00048                         original->getCStrName().c_str(),
00049                         target->getCStrName().c_str()));
00050         }
00051 
00052         targets_[target->getPlayerId()] = target;
00053 }
00054 
00055 Target *TargetContainer::removeTarget(unsigned int playerId)
00056 {
00057         Target *target = internalRemoveTarget(playerId);
00058         DIALOG_ASSERT(target->isTarget());
00059         return target;
00060 }
00061 
00062 Target *TargetContainer::internalRemoveTarget(unsigned int playerId)
00063 {
00064     std::map<unsigned int, Target *>::iterator itor =
00065                 targets_.find(playerId);
00066         if (itor != targets_.end())
00067         {
00068                 Target *current = (*itor).second;
00069                 targets_.erase(itor);
00070                 return current;         
00071         }
00072         return 0;
00073 }
00074 
00075 Target *TargetContainer::getTargetById(unsigned int id)
00076 {
00077         std::map<unsigned int, Target *>::iterator mainitor =
00078                 targets_.find(id);
00079         if (mainitor != targets_.end())
00080         {
00081                 Target *target = (*mainitor).second;
00082                 DIALOG_ASSERT(target->getPlayerId() == id);
00083 
00084                 return target;
00085         }
00086         return 0;
00087 }

Generated on Mon Feb 16 15:14:52 2009 for Scorched3D by  doxygen 1.5.3