/*
* 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.handler;
import java.util.Map;
import java.util.TreeMap;
import java.util.logging.Logger;
import net.sf.l2j.gameserver.handler.skillhandlers.BalanceLife;
import net.sf.l2j.gameserver.handler.skillhandlers.BeastFeed;
import net.sf.l2j.gameserver.handler.skillhandlers.Blow;
import net.sf.l2j.gameserver.handler.skillhandlers.Charge;
import net.sf.l2j.gameserver.handler.skillhandlers.CombatPointHeal;
import net.sf.l2j.gameserver.handler.skillhandlers.Continuous;
import net.sf.l2j.gameserver.handler.skillhandlers.CpDam;
import net.sf.l2j.gameserver.handler.skillhandlers.Craft;
import net.sf.l2j.gameserver.handler.skillhandlers.DeluxeKey;
import net.sf.l2j.gameserver.handler.skillhandlers.Disablers;
import net.sf.l2j.gameserver.handler.skillhandlers.DrainSoul;
import net.sf.l2j.gameserver.handler.skillhandlers.Fishing;
import net.sf.l2j.gameserver.handler.skillhandlers.FishingSkill;
import net.sf.l2j.gameserver.handler.skillhandlers.GetPlayer;
import net.sf.l2j.gameserver.handler.skillhandlers.GiveSp;
import net.sf.l2j.gameserver.handler.skillhandlers.Harvest;
import net.sf.l2j.gameserver.handler.skillhandlers.Heal;
import net.sf.l2j.gameserver.handler.skillhandlers.ManaHeal;
import net.sf.l2j.gameserver.handler.skillhandlers.Manadam;
import net.sf.l2j.gameserver.handler.skillhandlers.Mdam;
import net.sf.l2j.gameserver.handler.skillhandlers.Pdam;
import net.sf.l2j.gameserver.handler.skillhandlers.Recall;
import net.sf.l2j.gameserver.handler.skillhandlers.Resurrect;
import net.sf.l2j.gameserver.handler.skillhandlers.ShiftTarget;
import net.sf.l2j.gameserver.handler.skillhandlers.SiegeFlag;
import net.sf.l2j.gameserver.handler.skillhandlers.Soul;
import net.sf.l2j.gameserver.handler.skillhandlers.Sow;
import net.sf.l2j.gameserver.handler.skillhandlers.Spoil;
import net.sf.l2j.gameserver.handler.skillhandlers.StrSiegeAssault;
import net.sf.l2j.gameserver.handler.skillhandlers.SummonFriend;
import net.sf.l2j.gameserver.handler.skillhandlers.SummonTreasureKey;
import net.sf.l2j.gameserver.handler.skillhandlers.Sweep;
import net.sf.l2j.gameserver.handler.skillhandlers.TakeCastle;
import net.sf.l2j.gameserver.handler.skillhandlers.TakeFort;
import net.sf.l2j.gameserver.handler.skillhandlers.TransformDispel;
import net.sf.l2j.gameserver.handler.skillhandlers.Trap;
import net.sf.l2j.gameserver.handler.skillhandlers.Unlock;
import net.sf.l2j.gameserver.templates.L2SkillType;
/**
* This class ...
*
* @version $Revision: 1.1.4.4 $ $Date: 2005/04/03 15:55:06 $
*/
public class SkillHandler
{
private static Logger _log = Logger.getLogger(SkillHandler.class.getName());
private static SkillHandler _instance;
private Map _datatable;
public static SkillHandler getInstance()
{
if (_instance == null)
{
_instance = new SkillHandler();
}
return _instance;
}
private SkillHandler()
{
_datatable = new TreeMap();
registerSkillHandler(new Blow());
registerSkillHandler(new Pdam());
registerSkillHandler(new Mdam());
registerSkillHandler(new CpDam());
registerSkillHandler(new Manadam());
registerSkillHandler(new Heal());
registerSkillHandler(new CombatPointHeal());
registerSkillHandler(new ManaHeal());
registerSkillHandler(new BalanceLife());
registerSkillHandler(new Charge());
registerSkillHandler(new Continuous());
registerSkillHandler(new Resurrect());
registerSkillHandler(new ShiftTarget());
registerSkillHandler(new Spoil());
registerSkillHandler(new Sweep());
registerSkillHandler(new StrSiegeAssault());
registerSkillHandler(new SummonFriend());
registerSkillHandler(new SummonTreasureKey());
registerSkillHandler(new Disablers());
registerSkillHandler(new Recall());
registerSkillHandler(new SiegeFlag());
registerSkillHandler(new TakeCastle());
registerSkillHandler(new TakeFort());
registerSkillHandler(new Unlock());
registerSkillHandler(new DrainSoul());
registerSkillHandler(new Craft());
registerSkillHandler(new Fishing());
registerSkillHandler(new FishingSkill());
registerSkillHandler(new BeastFeed());
registerSkillHandler(new DeluxeKey());
registerSkillHandler(new Sow());
registerSkillHandler(new Soul());
registerSkillHandler(new Harvest());
registerSkillHandler(new GetPlayer());
registerSkillHandler(new TransformDispel());
registerSkillHandler(new Trap());
registerSkillHandler(new GiveSp());
_log.config("SkillHandler: Loaded " + _datatable.size() + " handlers.");
}
public void registerSkillHandler(ISkillHandler handler)
{
L2SkillType[] types = handler.getSkillIds();
for (L2SkillType t : types)
{
_datatable.put(t, handler);
}
}
public ISkillHandler getSkillHandler(L2SkillType skillType)
{
return _datatable.get(skillType);
}
/**
* @return
*/
public int size()
{
return _datatable.size();
}
}