diff options
| author | Thorbjørn Lindeijer <thorbjorn@lindeijer.nl> | 2012-03-17 21:11:41 +0100 |
|---|---|---|
| committer | Thorbjørn Lindeijer <thorbjorn@lindeijer.nl> | 2013-03-25 20:32:36 +0100 |
| commit | 8ebd7ef2c200009e6d22b2cfaa3dd0d849155db6 (patch) | |
| tree | e77633d3d4e2c2538a1044589b5cc927cfa4e125 /src/game-server/trigger.cpp | |
| parent | 626e4c98353f2111ae21123756396fc845447b57 (diff) | |
| download | manaserv-8ebd7ef2c200009e6d22b2cfaa3dd0d849155db6.tar.gz manaserv-8ebd7ef2c200009e6d22b2cfaa3dd0d849155db6.tar.xz manaserv-8ebd7ef2c200009e6d22b2cfaa3dd0d849155db6.zip | |
Changed SpawnArea and TriggerArea to components of Entity
Well, first visible change is that everything just gets longer to read.
Reviewed-by: Yohann Ferreira
Diffstat (limited to 'src/game-server/trigger.cpp')
| -rw-r--r-- | src/game-server/trigger.cpp | 83 |
1 files changed, 0 insertions, 83 deletions
diff --git a/src/game-server/trigger.cpp b/src/game-server/trigger.cpp deleted file mode 100644 index 10e50ec..0000000 --- a/src/game-server/trigger.cpp +++ /dev/null @@ -1,83 +0,0 @@ -/* - * The Mana Server - * Copyright (C) 2006-2010 The Mana World Development Team - * - * This file is part of The Mana Server. - * - * The Mana Server 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. - * - * The Mana Server 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 The Mana Server. If not, see <http://www.gnu.org/licenses/>. - */ - -#include "game-server/trigger.h" - -#include "game-server/character.h" -#include "game-server/mapcomposite.h" -#include "game-server/actor.h" -#include "game-server/state.h" - -#include "utils/logger.h" - -#include <cassert> - -void WarpAction::process(Actor *obj) -{ - if (obj->getType() == OBJECT_CHARACTER) - { - GameState::enqueueWarp(static_cast< Character * >(obj), mMap, mX, mY); - } -} - -ScriptAction::ScriptAction(Script *script, Script::Ref callback, int arg) : - mScript(script), - mCallback(callback), - mArg(arg) -{ - assert(mCallback.isValid()); -} - -void ScriptAction::process(Actor *obj) -{ - LOG_DEBUG("Script trigger area activated: " - << "(" << obj << ", " << mArg << ")"); - - mScript->prepare(mCallback); - mScript->push(obj); - mScript->push(mArg); - mScript->execute(obj->getMap()); -} - -void TriggerArea::update() -{ - std::set<Actor*> insideNow; - for (BeingIterator i(getMap()->getInsideRectangleIterator(mZone)); i; ++i) - { - // Don't deal with unitialized actors. - if (!(*i) || !(*i)->isPublicIdValid()) - continue; - - // The BeingIterator returns the mapZones in touch with the rectangle - // area. On the other hand, the beings contained in the map zones - // may not be within the rectangle area. Hence, this additional - // contains() condition. - if (mZone.contains((*i)->getPosition())) - { - insideNow.insert(*i); - - if (!mOnce || mInside.find(*i) == mInside.end()) - { - mAction->process(*i); - } - } - } - mInside.swap(insideNow); //swapping is faster than assigning -} |
