From 8ebd7ef2c200009e6d22b2cfaa3dd0d849155db6 Mon Sep 17 00:00:00 2001 From: Thorbjørn Lindeijer Date: Sat, 17 Mar 2012 21:11:41 +0100 Subject: Changed SpawnArea and TriggerArea to components of Entity Well, first visible change is that everything just gets longer to read. Reviewed-by: Yohann Ferreira --- src/game-server/trigger.cpp | 83 --------------------------------------------- 1 file changed, 83 deletions(-) delete mode 100644 src/game-server/trigger.cpp (limited to 'src/game-server/trigger.cpp') 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 . - */ - -#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 - -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 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 -} -- cgit