/*
* $Header$
*
* $Author$
* $Date$
* $Revision$
* $Log$
* Revision 1.1.2.1 2005/04/08 08:03:40 luisantonioa
* *** empty log message ***
*
* Revision 1.1 4/04/2005 17:15:07 luisantonioa
* Created New Class
*
*
* 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 com.l2jserver.gameserver.model;
import java.util.Map;
import javolution.util.FastMap;
/**
* This class ...
*
* @version $Revision$ $Date$
*/
public class DesireTable
{
public static final DesireType[] DEFAULT_DESIRES = {DesireType.FEAR, DesireType.DISLIKE,
DesireType.HATE, DesireType.DAMAGE};
public enum DesireType {
FEAR, DISLIKE, HATE, DAMAGE;
}
class DesireValue
{
private float _value;
DesireValue()
{
this(0f);
}
DesireValue(Float pValue)
{
_value = pValue;
}
public void addValue(float pValue)
{
_value += pValue;
}
public float getValue()
{
return _value;
}
}
class Desires
{
private Map _desireTable;
public Desires(DesireType... desireList)
{
_desireTable = new FastMap();
for (DesireType desire : desireList)
{
_desireTable.put(desire, new DesireValue());
}
}
public DesireValue getDesireValue(DesireType type)
{
return _desireTable.get(type);
}
public void addValue(DesireType type, float value)
{
DesireValue temp = getDesireValue(type);
if (temp != null)
{
temp.addValue(value);
}
}
public void createDesire(DesireType type)
{
_desireTable.put(type, new DesireValue());
}
public void deleteDesire(DesireType type)
{
_desireTable.remove(type);
}
}
private Map _objectDesireTable;
private Desires _generalDesires;
private DesireType[] _desireTypes;
public DesireTable(DesireType... desireList)
{
_desireTypes = desireList;
_objectDesireTable = new FastMap();
_generalDesires = new Desires(_desireTypes);
}
public float getDesireValue(DesireType type)
{
return _generalDesires.getDesireValue(type).getValue();
}
public float getDesireValue(L2Object object, DesireType type)
{
Desires desireList = _objectDesireTable.get(object);
if (desireList == null) return 0f;
return desireList.getDesireValue(type).getValue();
}
public void addDesireValue(DesireType type, float value)
{
_generalDesires.addValue(type, value);
}
public void addDesireValue(L2Object object, DesireType type, float value)
{
Desires desireList = _objectDesireTable.get(object);
if (desireList != null) desireList.addValue(type, value);
}
public void createDesire(DesireType type)
{
_generalDesires.createDesire(type);
}
public void deleteDesire(DesireType type)
{
_generalDesires.deleteDesire(type);
}
public void createDesire(L2Object object, DesireType type)
{
Desires desireList = _objectDesireTable.get(object);
if (desireList != null) desireList.createDesire(type);
}
public void deleteDesire(L2Object object, DesireType type)
{
Desires desireList = _objectDesireTable.get(object);
if (desireList != null) desireList.deleteDesire(type);
}
public void addKnownObject(L2Object object)
{
if (object != null)
{
addKnownObject(object, DesireType.DISLIKE, DesireType.FEAR, DesireType.DAMAGE,
DesireType.HATE);
}
}
public void addKnownObject(L2Object object, DesireType... desireList)
{
if (object != null) _objectDesireTable.put(object, new Desires(desireList));
}
}