blob: 6f3f25e8f201ff56e610cd64591c4d5be0bd8995 [file] [log] [blame]
/**
*/
package org.eclipse.skills.model.impl;
import java.lang.reflect.InvocationTargetException;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.impl.ENotificationImpl;
import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
import org.eclipse.skills.model.IFactorProgression;
import org.eclipse.skills.model.ISkillsPackage;
/**
* <!-- begin-user-doc --> An implementation of the model object '<em><b>Factor Progression</b></em>'. <!-- end-user-doc -->
* <p>
* The following features are implemented:
* </p>
* <ul>
* <li>{@link org.eclipse.skills.model.impl.MFactorProgression#getBaseXpNeeded <em>Base Xp Needed</em>}</li>
* <li>{@link org.eclipse.skills.model.impl.MFactorProgression#getXpFactor <em>Xp Factor</em>}</li>
* </ul>
*
* @generated
*/
public class MFactorProgression extends MinimalEObjectImpl.Container implements IFactorProgression {
/**
* The default value of the '{@link #getBaseXpNeeded() <em>Base Xp Needed</em>}' attribute.
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @see #getBaseXpNeeded()
* @generated
* @ordered
*/
protected static final int BASE_XP_NEEDED_EDEFAULT = 100;
/**
* The cached value of the '{@link #getBaseXpNeeded() <em>Base Xp Needed</em>}' attribute.
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @see #getBaseXpNeeded()
* @generated
* @ordered
*/
protected int baseXpNeeded = BASE_XP_NEEDED_EDEFAULT;
/**
* The default value of the '{@link #getXpFactor() <em>Xp Factor</em>}' attribute.
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @see #getXpFactor()
* @generated
* @ordered
*/
protected static final double XP_FACTOR_EDEFAULT = 2.4;
/**
* The cached value of the '{@link #getXpFactor() <em>Xp Factor</em>}' attribute.
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @see #getXpFactor()
* @generated
* @ordered
*/
protected double xpFactor = XP_FACTOR_EDEFAULT;
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
protected MFactorProgression() {
super();
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
@Override
protected EClass eStaticClass() {
return ISkillsPackage.Literals.FACTOR_PROGRESSION;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
@Override
public int getBaseXpNeeded() {
return baseXpNeeded;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
@Override
public void setBaseXpNeeded(int newBaseXpNeeded) {
int oldBaseXpNeeded = baseXpNeeded;
baseXpNeeded = newBaseXpNeeded;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, ISkillsPackage.FACTOR_PROGRESSION__BASE_XP_NEEDED, oldBaseXpNeeded, baseXpNeeded));
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
@Override
public double getXpFactor() {
return xpFactor;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
@Override
public void setXpFactor(double newXpFactor) {
double oldXpFactor = xpFactor;
xpFactor = newXpFactor;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, ISkillsPackage.FACTOR_PROGRESSION__XP_FACTOR, oldXpFactor, xpFactor));
}
/**
* @generated NOT
*/
@Override
public int getMinimumXpForLevel(int level) {
if (level > 2)
return (int) (getMinimumXpForLevel(level - 1) * getXpFactor());
if (level == 2)
return getBaseXpNeeded();
return 0;
}
/**
* @generated NOT
*/
@Override
public int getLevel(int xp) {
int candidate = 1;
while (getMinimumXpForLevel(candidate) <= xp)
candidate++;
return candidate - 1;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
@Override
public Object eGet(int featureID, boolean resolve, boolean coreType) {
switch (featureID) {
case ISkillsPackage.FACTOR_PROGRESSION__BASE_XP_NEEDED:
return getBaseXpNeeded();
case ISkillsPackage.FACTOR_PROGRESSION__XP_FACTOR:
return getXpFactor();
}
return super.eGet(featureID, resolve, coreType);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
@Override
public void eSet(int featureID, Object newValue) {
switch (featureID) {
case ISkillsPackage.FACTOR_PROGRESSION__BASE_XP_NEEDED:
setBaseXpNeeded((Integer)newValue);
return;
case ISkillsPackage.FACTOR_PROGRESSION__XP_FACTOR:
setXpFactor((Double)newValue);
return;
}
super.eSet(featureID, newValue);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
@Override
public void eUnset(int featureID) {
switch (featureID) {
case ISkillsPackage.FACTOR_PROGRESSION__BASE_XP_NEEDED:
setBaseXpNeeded(BASE_XP_NEEDED_EDEFAULT);
return;
case ISkillsPackage.FACTOR_PROGRESSION__XP_FACTOR:
setXpFactor(XP_FACTOR_EDEFAULT);
return;
}
super.eUnset(featureID);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
@Override
public boolean eIsSet(int featureID) {
switch (featureID) {
case ISkillsPackage.FACTOR_PROGRESSION__BASE_XP_NEEDED:
return baseXpNeeded != BASE_XP_NEEDED_EDEFAULT;
case ISkillsPackage.FACTOR_PROGRESSION__XP_FACTOR:
return xpFactor != XP_FACTOR_EDEFAULT;
}
return super.eIsSet(featureID);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
@Override
public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
switch (operationID) {
case ISkillsPackage.FACTOR_PROGRESSION___GET_MINIMUM_XP_FOR_LEVEL__INT:
return getMinimumXpForLevel((Integer)arguments.get(0));
case ISkillsPackage.FACTOR_PROGRESSION___GET_LEVEL__INT:
return getLevel((Integer)arguments.get(0));
}
return super.eInvoke(operationID, arguments);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
@Override
public String toString() {
if (eIsProxy()) return super.toString();
StringBuilder result = new StringBuilder(super.toString());
result.append(" (baseXpNeeded: ");
result.append(baseXpNeeded);
result.append(", xpFactor: ");
result.append(xpFactor);
result.append(')');
return result.toString();
}
} // MFactorProgression