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 <landscapemap/TargetGroupsSetEntry.h> 00022 #include <target/Target.h> 00023 #include <common/Defines.h> 00024 00025 TargetGroupsSetEntry::TargetGroupsSetEntry(const char *name) : 00026 name_(name) 00027 { 00028 } 00029 00030 TargetGroupsSetEntry::~TargetGroupsSetEntry() 00031 { 00032 } 00033 00034 void TargetGroupsSetEntry::addObject(TargetGroup *object, bool thin) 00035 { 00036 object->addToGroup(this); 00037 objects_[object->getTarget()->getPlayerId()] = object; 00038 } 00039 00040 bool TargetGroupsSetEntry::removeObject(TargetGroup *object) 00041 { 00042 object->removeFromGroup(this); 00043 return (objects_.erase(object->getTarget()->getPlayerId()) > 0); 00044 } 00045 00046 TargetGroup *TargetGroupsSetEntry::getObjectById(unsigned int playerId) 00047 { 00048 std::map<unsigned int, TargetGroup *>::iterator itor = 00049 objects_.find(playerId); 00050 if (itor == objects_.end()) return 0; 00051 return (*itor).second; 00052 } 00053 00054 TargetGroup *TargetGroupsSetEntry::getObjectByPos(int position) 00055 { 00056 int pos = position % int(objects_.size()); 00057 std::map<unsigned int, TargetGroup *>::iterator itor; 00058 for (itor = objects_.begin(); 00059 itor != objects_.end(); 00060 itor ++, pos--) 00061 { 00062 if (pos <=0) return (*itor).second; 00063 } 00064 return 0; 00065 } 00066 00067 bool TargetGroupsSetEntry::hasObject(TargetGroup *object) 00068 { 00069 return (objects_.find(object->getTarget()->getPlayerId()) != objects_.end()); 00070 } 00071 00072 bool TargetGroupsSetEntry::hasObjectById(unsigned int playerId) 00073 { 00074 return (objects_.find(playerId) != objects_.end()); 00075 } 00076 00077 int TargetGroupsSetEntry::getObjectCount() 00078 { 00079 return (int) objects_.size(); 00080 }
1.5.3