/*
* 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 3 of the License, or (at your option) 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 .
*/
package net.sf.l2j.gameserver.model.zone;
import javolution.util.FastList;
import net.sf.l2j.gameserver.model.L2Character;
/**
* This class manages all zones for a given world region
*
* @author durgus
*/
public class L2ZoneManager
{
private final FastList _zones;
/**
* The Constructor creates an initial zone list
* use registerNewZone() / unregisterZone() to
* change the zone list
*
*/
public L2ZoneManager()
{
_zones = new FastList();
}
/**
* Register a new zone object into the manager
* @param zone
*/
public void registerNewZone(L2ZoneType zone)
{
_zones.add(zone);
}
public FastList getZones()
{
return _zones;
}
/**
* Unregister a given zone from the manager (e.g. dynamic zones)
* @param zone
*/
public void unregisterZone(L2ZoneType zone)
{
_zones.remove(zone);
}
public void revalidateZones(L2Character character)
{
for (L2ZoneType e : _zones)
{
if (e != null)
e.revalidateInZone(character);
}
}
public void removeCharacter(L2Character character)
{
for (L2ZoneType e : _zones)
{
if (e != null)
e.removeCharacter(character);
}
}
public void onDeath(L2Character character)
{
for (L2ZoneType e : _zones)
{
if (e != null)
e.onDieInside(character);
}
}
public void onRevive(L2Character character)
{
for (L2ZoneType e : _zones)
{
if (e != null)
e.onReviveInside(character);
}
}
}