/* * This file is part of aion-unique <aion-unique.smfnew.com>. * * aion-unique 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. * * aion-unique 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 aion-unique. If not, see <http://www.gnu.org/licenses/>. */ package com.aionemu.gameserver.utils.stats; import java.util.NoSuchElementException; /** * @author ATracer * */ public enum XPRewardEnum { MINUS_11(-11, 0), MINUS_10(-10, 1), MINUS_9(-9, 10), MINUS_8(-8, 20), MINUS_7(-7, 30), MINUS_6(-6, 40), MINUS_5(-5, 50), MINUS_4(-4, 60), MINUS_3(-3, 90), MINUS_2(-2, 100), MINUS_1(-1, 100), ZERO(0, 100), PLUS_1(1, 105), PLUS_2(2, 110), PLUS_3(3, 115), PLUS_4(4, 120); private int xpRewardPercent; private int levelDifference; private XPRewardEnum(int levelDifference, int xpRewardPercent) { this.levelDifference = levelDifference; this.xpRewardPercent = xpRewardPercent; } public int rewardPercent() { return xpRewardPercent; } /** * * @param levelDifference between two objects * @return XP reward percentage */ public static int xpRewardFrom(int levelDifference) { if(levelDifference < MINUS_11.levelDifference) { return MINUS_11.xpRewardPercent; } if(levelDifference > PLUS_4.levelDifference) { return PLUS_4.xpRewardPercent; } for(XPRewardEnum xpReward : values()) { if(xpReward.levelDifference == levelDifference) { return xpReward.xpRewardPercent; } } throw new NoSuchElementException("XP reward for such level difference was not found"); } }