diff options
author | Andrei Karas <akaras@inbox.ru> | 2013-08-31 21:54:52 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2013-08-31 21:54:52 +0300 |
commit | 5919cdc663d5f60a8c5cc7e50ad0c43a18cf9829 (patch) | |
tree | 8c5be5f1f93551b676660e76b4d639ea2501e972 /src/particlecontainer.cpp | |
parent | 8a999b66fd697404c6640778a6dd1ce0e747334a (diff) | |
download | plus-5919cdc663d5f60a8c5cc7e50ad0c43a18cf9829.tar.gz plus-5919cdc663d5f60a8c5cc7e50ad0c43a18cf9829.tar.bz2 plus-5919cdc663d5f60a8c5cc7e50ad0c43a18cf9829.tar.xz plus-5919cdc663d5f60a8c5cc7e50ad0c43a18cf9829.zip |
move particles into particle dir.
Diffstat (limited to 'src/particlecontainer.cpp')
-rw-r--r-- | src/particlecontainer.cpp | 196 |
1 files changed, 0 insertions, 196 deletions
diff --git a/src/particlecontainer.cpp b/src/particlecontainer.cpp deleted file mode 100644 index a890f0d9c..000000000 --- a/src/particlecontainer.cpp +++ /dev/null @@ -1,196 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2008-2009 The Mana World Development Team - * Copyright (C) 2009-2010 The Mana Developers - * Copyright (C) 2011-2013 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * This program 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 - * any later version. - * - * This program 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 this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#include "particle.h" -#include "particlecontainer.h" - -#include "debug.h" - -typedef std::list<Particle *>::iterator ParticleListIter; -typedef std::list<Particle *>::const_iterator ParticleListCIter; - -ParticleContainer::ParticleContainer(ParticleContainer *const parent, - const bool delParent): - mNext(parent), - mDelParent(delParent) -{ -} - -ParticleContainer::~ParticleContainer() -{ - clearLocally(); - if (mDelParent) - { - delete mNext; - mNext = nullptr; - } -} - -void ParticleContainer::clear() -{ - clearLocally(); - if (mNext) - mNext->clear(); -} - -void ParticleContainer::moveTo(const float x, const float y) -{ - if (mNext) - mNext->moveTo(x, y); -} - -// -- particle list ---------------------------------------- - -ParticleList::ParticleList(ParticleContainer *const parent, - const bool delParent) : - ParticleContainer(parent, delParent), - mElements() -{} - -ParticleList::~ParticleList() -{} - -void ParticleList::addLocally(Particle *const particle) -{ - if (particle) - { - // The effect may not die without the beings permission or we segfault - particle->disableAutoDelete(); - mElements.push_back(particle); - } -} - -void ParticleList::removeLocally(const Particle *const particle) -{ - for (std::list<Particle *>::iterator it = mElements.begin(); - it != mElements.end(); ) - { - Particle *const p = *it; - if (p == particle) - { - p->kill(); - it = mElements.erase(it); - } - else - { - ++it; - } - } -} - -void ParticleList::clearLocally() -{ - FOR_EACH (ParticleListCIter, it, mElements) - (*it)->kill(); - - mElements.clear(); -} - -void ParticleList::moveTo(const float x, const float y) -{ - ParticleContainer::moveTo(x, y); - - for (std::list<Particle *>::iterator it = mElements.begin(); - it != mElements.end(); ) - { - Particle *const p = *it; - p->moveTo(x, y); - if (p->isExtinct()) - { - p->kill(); - it = mElements.erase(it); - } - else - { - ++it; - } - } -} - -// -- particle vector ---------------------------------------- - -ParticleVector::ParticleVector(ParticleContainer *const parent, - const bool delParent) : - ParticleContainer(parent, delParent), - mIndexedElements() -{} - -ParticleVector::~ParticleVector() -{} - -void ParticleVector::setLocally(const int index, Particle *const particle) -{ - if (index < 0) - return; - - delLocally(index); - - if (mIndexedElements.size() <= static_cast<unsigned>(index)) - mIndexedElements.resize(index + 1, nullptr); - - if (particle) - particle->disableAutoDelete(); - mIndexedElements[index] = particle; -} - -void ParticleVector::delLocally(const int index) -{ - if (index < 0) - return; - - if (mIndexedElements.size() <= static_cast<unsigned>(index)) - return; - - Particle *const p = mIndexedElements[index]; - if (p) - { - mIndexedElements[index] = nullptr; - p->kill(); - } -} - -void ParticleVector::clearLocally() -{ - for (unsigned int i = 0; i < mIndexedElements.size(); i++) - delLocally(i); -} - -void ParticleVector::moveTo(const float x, const float y) -{ - ParticleContainer::moveTo(x, y); - - for (std::vector<Particle *>::iterator it = mIndexedElements.begin(); - it != mIndexedElements.end(); ++it) - { - Particle *const p = *it; - if (p) - { - p->moveTo(x, y); - - if (p->isExtinct()) - { - p->kill(); - *it = nullptr; - } - } - } -} |