summaryrefslogtreecommitdiff
path: root/src/game-server/spawnarea.cpp
diff options
context:
space:
mode:
authorThorbjørn Lindeijer <thorbjorn@lindeijer.nl>2012-03-17 21:11:41 +0100
committerThorbjørn Lindeijer <thorbjorn@lindeijer.nl>2013-03-25 20:32:36 +0100
commit8ebd7ef2c200009e6d22b2cfaa3dd0d849155db6 (patch)
treee77633d3d4e2c2538a1044589b5cc927cfa4e125 /src/game-server/spawnarea.cpp
parent626e4c98353f2111ae21123756396fc845447b57 (diff)
downloadmanaserv-8ebd7ef2c200009e6d22b2cfaa3dd0d849155db6.tar.gz
manaserv-8ebd7ef2c200009e6d22b2cfaa3dd0d849155db6.tar.bz2
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/spawnarea.cpp')
-rw-r--r--src/game-server/spawnarea.cpp120
1 files changed, 0 insertions, 120 deletions
diff --git a/src/game-server/spawnarea.cpp b/src/game-server/spawnarea.cpp
deleted file mode 100644
index 73dca6b2..00000000
--- a/src/game-server/spawnarea.cpp
+++ /dev/null
@@ -1,120 +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/spawnarea.h"
-
-#include "game-server/mapcomposite.h"
-#include "game-server/monster.h"
-#include "game-server/state.h"
-#include "utils/logger.h"
-
-SpawnArea::SpawnArea(MapComposite *map,
- MonsterClass *specy,
- const Rectangle &zone,
- int maxBeings,
- int spawnRate):
- Entity(OBJECT_OTHER, map),
- mSpecy(specy),
- mZone(zone),
- mMaxBeings(maxBeings),
- mSpawnRate(spawnRate),
- mNumBeings(0),
- mNextSpawn(0)
-{
-}
-
-void SpawnArea::update()
-{
- if (mNextSpawn > 0)
- mNextSpawn--;
-
- if (mNextSpawn == 0 && mNumBeings < mMaxBeings && mSpawnRate > 0)
- {
- MapComposite *map = getMap();
- const Map *realMap = map->getMap();
-
- // Reset the spawn area to the whole map in case of dimensionless zone
- if (mZone.w == 0 || mZone.h == 0)
- {
- mZone.x = 0;
- mZone.y = 0;
- mZone.w = realMap->getWidth() * realMap->getTileWidth();
- mZone.h = realMap->getHeight() * realMap->getTileHeight();
- }
-
- // Find a free spawn location. Give up after 10 tries
- int c = 10;
- Point position;
- const int x = mZone.x;
- const int y = mZone.y;
- const int width = mZone.w;
- const int height = mZone.h;
-
- Being *being = new Monster(mSpecy);
-
- if (being->getModifiedAttribute(ATTR_MAX_HP) <= 0)
- {
- LOG_WARN("Refusing to spawn dead monster " << mSpecy->getId());
- delete being;
- being = 0;
- }
-
- if (being)
- {
- do
- {
- position = Point(x + rand() % width, y + rand() % height);
- c--;
- }
- while (!realMap->getWalk(position.x / realMap->getTileWidth(),
- position.y / realMap->getTileHeight(),
- being->getWalkMask()) && c);
-
- if (c)
- {
- being->signal_removed.connect(
- sigc::mem_fun(this, &SpawnArea::decrease));
-
- being->setMap(map);
- being->setPosition(position);
- being->clearDestination();
- GameState::enqueueInsert(being);
-
- mNumBeings++;
- }
- else
- {
- LOG_WARN("Unable to find a free spawn location for monster "
- << mSpecy->getId() << " on map " << map->getName()
- << " (" << x << ',' << y << ','
- << width << ',' << height << ')');
- delete being;
- }
- }
-
- // Predictable respawn intervals (can be randomized later)
- mNextSpawn = (10 * 60) / mSpawnRate;
- }
-}
-
-void SpawnArea::decrease(Entity *)
-{
- --mNumBeings;
-}