/*
* Copyright (C) 2004-2015 L2J Server
*
* This file is part of L2J Server.
*
* L2J 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 3 of the License, or
* (at your option) any later version.
*
* L2J 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 this program. If not, see .
*/
package com.l2jserver.gameserver.model;
import com.l2jserver.gameserver.data.xml.impl.AdminData;
/**
* @author HorridoJoho
*/
public class L2AccessLevel
{
/** The access level
*/
private int _accessLevel = 0;
/** The access level name
*/
private String _name = null;
/** Child access levels */
L2AccessLevel _childsAccessLevel = null;
/** Child access levels */
private int _child = 0;
/** The name color for the access level
*/
private int _nameColor = 0;
/** The title color for the access level
*/
private int _titleColor = 0;
/** Flag to determine if the access level has gm access
*/
private boolean _isGm = false;
/** Flag for peace zone attack */
private boolean _allowPeaceAttack = false;
/** Flag for fixed res */
private boolean _allowFixedRes = false;
/** Flag for transactions */
private boolean _allowTransaction = false;
/** Flag for AltG commands */
private boolean _allowAltG = false;
/** Flag to give damage */
private boolean _giveDamage = false;
/** Flag to take aggro */
private boolean _takeAggro = false;
/** Flag to gain exp in party */
private boolean _gainExp = false;
public L2AccessLevel(StatsSet set)
{
_accessLevel = set.getInt("level");
_name = set.getString("name");
_nameColor = Integer.decode("0x" + set.getString("nameColor", "FFFFFF"));
_titleColor = Integer.decode("0x" + set.getString("titleColor", "FFFFFF"));
_child = set.getInt("childAccess", 0);
_isGm = set.getBoolean("isGM", false);
_allowPeaceAttack = set.getBoolean("allowPeaceAttack", false);
_allowFixedRes = set.getBoolean("allowFixedRes", false);
_allowTransaction = set.getBoolean("allowTransaction", true);
_allowAltG = set.getBoolean("allowAltg", false);
_giveDamage = set.getBoolean("giveDamage", true);
_takeAggro = set.getBoolean("takeAggro", true);
_gainExp = set.getBoolean("gainExp", true);
}
public L2AccessLevel()
{
_accessLevel = 0;
_name = "User";
_nameColor = Integer.decode("0xFFFFFF");
_titleColor = Integer.decode("0xFFFFFF");
_child = 0;
_isGm = false;
_allowPeaceAttack = false;
_allowFixedRes = false;
_allowTransaction = true;
_allowAltG = false;
_giveDamage = true;
_takeAggro = true;
_gainExp = true;
}
/**
* Returns the access level
*
* @return int: access level
*/
public int getLevel()
{
return _accessLevel;
}
/**
* Returns the access level name
*
* @return String: access level name
*/
public String getName()
{
return _name;
}
/**
* Returns the name color of the access level
*
* @return int: the name color for the access level
*/
public int getNameColor()
{
return _nameColor;
}
/**
* Returns the title color color of the access level
*
* @return int: the title color for the access level
*/
public int getTitleColor()
{
return _titleColor;
}
/**
* Retuns if the access level has gm access or not
*
* @return boolean: true if access level have gm access, otherwise false
*/
public boolean isGm()
{
return _isGm;
}
/**
* Returns if the access level is allowed to attack in peace zone or not
*
* @return boolean: true if the access level is allowed to attack in peace zone, otherwise false
*/
public boolean allowPeaceAttack()
{
return _allowPeaceAttack;
}
/**
* Retruns if the access level is allowed to use fixed res or not
*
* @return true if the access level is allowed to use fixed res, otherwise false
*/
public boolean allowFixedRes()
{
return _allowFixedRes;
}
/**
* Returns if the access level is allowed to perform transactions or not
*
* @return boolean: true if access level is allowed to perform transactions, otherwise false
*/
public boolean allowTransaction()
{
return _allowTransaction;
}
/**
* Returns if the access level is allowed to use AltG commands or not
*
* @return boolean: true if access level is allowed to use AltG commands, otherwise false
*/
public boolean allowAltG()
{
return _allowAltG;
}
/**
* Returns if the access level can give damage or not
*
* @return boolean: true if the access level can give damage, otherwise false
*/
public boolean canGiveDamage()
{
return _giveDamage;
}
/**
* Returns if the access level can take aggro or not
*
* @return boolean: true if the access level can take aggro, otherwise false
*/
public boolean canTakeAggro()
{
return _takeAggro;
}
/**
* Returns if the access level can gain exp or not
*
* @return boolean: true if the access level can gain exp, otherwise false
*/
public boolean canGainExp()
{
return _gainExp;
}
/**
* Returns if the access level contains allowedAccess as child
* @param accessLevel as AccessLevel
* @return boolean: true if a child access level is equals to allowedAccess, otherwise false
*/
public boolean hasChildAccess(L2AccessLevel accessLevel)
{
if (_childsAccessLevel == null)
{
if (_child <= 0)
{
return false;
}
_childsAccessLevel = AdminData.getInstance().getAccessLevel(_child);
}
return ((_childsAccessLevel.getLevel() == accessLevel.getLevel()) || _childsAccessLevel.hasChildAccess(accessLevel));
}
}