/* Copyright (C) 2012 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 2 of the License, or * (at your option) any later version. * * 0 A.D. is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with 0 A.D. If not, see . */ /* * Container that owns all units */ #include "precompiled.h" #include #include "Model.h" #include "UnitManager.h" #include "Unit.h" #include "ObjectManager.h" #include "ObjectEntry.h" #include "ps/Game.h" #include "ps/World.h" #include /////////////////////////////////////////////////////////////////////////////// // CUnitManager constructor CUnitManager::CUnitManager() : m_ObjectManager(NULL) { } /////////////////////////////////////////////////////////////////////////////// // CUnitManager destructor CUnitManager::~CUnitManager() { DeleteAll(); } /////////////////////////////////////////////////////////////////////////////// // AddUnit: add given unit to world void CUnitManager::AddUnit(CUnit* unit) { m_Units.push_back(unit); } /////////////////////////////////////////////////////////////////////////////// // RemoveUnit: remove given unit from world, but don't delete it void CUnitManager::RemoveUnit(CUnit* unit) { // find entry in list typedef std::vector::iterator Iter; Iter i=std::find(m_Units.begin(),m_Units.end(),unit); if (i!=m_Units.end()) { m_Units.erase(i); } } /////////////////////////////////////////////////////////////////////////////// // DeleteUnit: remove given unit from world and delete it void CUnitManager::DeleteUnit(CUnit* unit) { RemoveUnit(unit); delete unit; } /////////////////////////////////////////////////////////////////////////////// // DeleteAll: remove and delete all units void CUnitManager::DeleteAll() { for (size_t i=0;i& selections) { if (! m_ObjectManager) return NULL; CUnit* unit = CUnit::Create(actorName, seed, selections, *m_ObjectManager); if (unit) AddUnit(unit); return unit; }