/**
* (c) Urs Zeidler
*/
package de.urszeidler.eclipse.shr5.gameplay.impl;
import java.util.Collection;
import java.util.List;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.notify.NotificationChain;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.InternalEObject;
import org.eclipse.emf.ecore.impl.ENotificationImpl;
import org.eclipse.emf.ecore.util.EDataTypeEList;
import org.eclipse.emf.ecore.util.EObjectContainmentEList;
import org.eclipse.emf.ecore.util.InternalEList;
import de.urszeidler.eclipse.shr5.gameplay.GameplayPackage;
import de.urszeidler.eclipse.shr5.gameplay.Probe;
import de.urszeidler.eclipse.shr5.gameplay.ProbeCommand;
import de.urszeidler.eclipse.shr5.gameplay.ProbeMod;
import de.urszeidler.eclipse.shr5.gameplay.ProbeState;
import de.urszeidler.eclipse.shr5.gameplay.SuccesTest;
import de.urszeidler.eclipse.shr5.gameplay.SuccesTestState;
import de.urszeidler.eclipse.shr5.gameplay.util.GameplayTools;
import de.urszeidler.shr5.gameplay.dice.W6Dice;
/**
* <!-- begin-user-doc -->
* An implementation of the model object '<em><b>Probe Command</b></em>'.
* <!-- end-user-doc -->
* <p>
* The following features are implemented:
* <ul>
* <li>{@link de.urszeidler.eclipse.shr5.gameplay.impl.ProbeCommandImpl#getProbe <em>Probe</em>}</li>
* <li>{@link de.urszeidler.eclipse.shr5.gameplay.impl.ProbeCommandImpl#getSuccesses <em>Successes</em>}</li>
* <li>{@link de.urszeidler.eclipse.shr5.gameplay.impl.ProbeCommandImpl#getGlitches <em>Glitches</em>}</li>
* <li>{@link de.urszeidler.eclipse.shr5.gameplay.impl.ProbeCommandImpl#getLimit <em>Limit</em>}</li>
* <li>{@link de.urszeidler.eclipse.shr5.gameplay.impl.ProbeCommandImpl#getProbeState <em>Probe State</em>}</li>
* <li>{@link de.urszeidler.eclipse.shr5.gameplay.impl.ProbeCommandImpl#getProbeMods <em>Probe Mods</em>}</li>
* <li>{@link de.urszeidler.eclipse.shr5.gameplay.impl.ProbeCommandImpl#isSkipTest <em>Skip Test</em>}</li>
* <li>{@link de.urszeidler.eclipse.shr5.gameplay.impl.ProbeCommandImpl#isPushTheLimit <em>Push The Limit</em>}</li>
* <li>{@link de.urszeidler.eclipse.shr5.gameplay.impl.ProbeCommandImpl#isSecondChance <em>Second Chance</em>}</li>
* <li>{@link de.urszeidler.eclipse.shr5.gameplay.impl.ProbeCommandImpl#isCloseCall <em>Close Call</em>}</li>
* <li>{@link de.urszeidler.eclipse.shr5.gameplay.impl.ProbeCommandImpl#getThresholds <em>Thresholds</em>}</li>
* <li>{@link de.urszeidler.eclipse.shr5.gameplay.impl.ProbeCommandImpl#getNetHits <em>Net Hits</em>}</li>
* <li>{@link de.urszeidler.eclipse.shr5.gameplay.impl.ProbeCommandImpl#getTestState <em>Test State</em>}</li>
* <li>{@link de.urszeidler.eclipse.shr5.gameplay.impl.ProbeCommandImpl#getMods <em>Mods</em>}</li>
* </ul>
* </p>
*
* @generated
*/
public abstract class ProbeCommandImpl extends SubjectCommandImpl implements ProbeCommand {
/**
* The cached value of the '{@link #getProbe() <em>Probe</em>}' attribute list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getProbe()
* @generated
* @ordered
*/
protected EList<Integer> probe;
/**
* The default value of the '{@link #getSuccesses() <em>Successes</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getSuccesses()
* @generated
* @ordered
*/
protected static final int SUCCESSES_EDEFAULT = 0;
/**
* The cached value of the '{@link #getSuccesses() <em>Successes</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getSuccesses()
* @generated
* @ordered
*/
protected int successes = SUCCESSES_EDEFAULT;
/**
* The default value of the '{@link #getGlitches() <em>Glitches</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getGlitches()
* @generated
* @ordered
*/
protected static final int GLITCHES_EDEFAULT = 0;
/**
* The cached value of the '{@link #getGlitches() <em>Glitches</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getGlitches()
* @generated
* @ordered
*/
protected int glitches = GLITCHES_EDEFAULT;
/**
* The default value of the '{@link #getLimit() <em>Limit</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getLimit()
* @generated
* @ordered
*/
protected static final int LIMIT_EDEFAULT = 0;
/**
* The cached value of the '{@link #getLimit() <em>Limit</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getLimit()
* @generated
* @ordered
*/
protected int limit = LIMIT_EDEFAULT;
/**
* This is true if the Limit attribute has been set.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
* @ordered
*/
protected boolean limitESet;
/**
* The default value of the '{@link #getProbeState() <em>Probe State</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getProbeState()
* @generated
* @ordered
*/
protected static final ProbeState PROBE_STATE_EDEFAULT = ProbeState.NO_GLITCH;
/**
* The cached value of the '{@link #getProbeMods() <em>Probe Mods</em>}' containment reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getProbeMods()
* @generated
* @ordered
*/
protected EList<ProbeMod> probeMods;
/**
* The default value of the '{@link #isSkipTest() <em>Skip Test</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #isSkipTest()
* @generated
* @ordered
*/
protected static final boolean SKIP_TEST_EDEFAULT = false;
/**
* The cached value of the '{@link #isSkipTest() <em>Skip Test</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #isSkipTest()
* @generated
* @ordered
*/
protected boolean skipTest = SKIP_TEST_EDEFAULT;
/**
* The default value of the '{@link #isPushTheLimit() <em>Push The Limit</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #isPushTheLimit()
* @generated
* @ordered
*/
protected static final boolean PUSH_THE_LIMIT_EDEFAULT = false;
/**
* The cached value of the '{@link #isPushTheLimit() <em>Push The Limit</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #isPushTheLimit()
* @generated
* @ordered
*/
protected boolean pushTheLimit = PUSH_THE_LIMIT_EDEFAULT;
/**
* The default value of the '{@link #isSecondChance() <em>Second Chance</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #isSecondChance()
* @generated
* @ordered
*/
protected static final boolean SECOND_CHANCE_EDEFAULT = false;
/**
* The cached value of the '{@link #isSecondChance() <em>Second Chance</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #isSecondChance()
* @generated
* @ordered
*/
protected boolean secondChance = SECOND_CHANCE_EDEFAULT;
/**
* The default value of the '{@link #isCloseCall() <em>Close Call</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #isCloseCall()
* @generated
* @ordered
*/
protected static final boolean CLOSE_CALL_EDEFAULT = false;
/**
* The cached value of the '{@link #isCloseCall() <em>Close Call</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #isCloseCall()
* @generated
* @ordered
*/
protected boolean closeCall = CLOSE_CALL_EDEFAULT;
/**
* The default value of the '{@link #getThresholds() <em>Thresholds</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getThresholds()
* @generated
* @ordered
*/
protected static final int THRESHOLDS_EDEFAULT = 0;
/**
* The cached value of the '{@link #getThresholds() <em>Thresholds</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getThresholds()
* @generated
* @ordered
*/
protected int thresholds = THRESHOLDS_EDEFAULT;
/**
* The default value of the '{@link #getNetHits() <em>Net Hits</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getNetHits()
* @generated
* @ordered
*/
protected static final int NET_HITS_EDEFAULT = 0;
/**
* The cached value of the '{@link #getNetHits() <em>Net Hits</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getNetHits()
* @generated
* @ordered
*/
protected int netHits = NET_HITS_EDEFAULT;
/**
* The default value of the '{@link #getTestState() <em>Test State</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getTestState()
* @generated
* @ordered
*/
protected static final SuccesTestState TEST_STATE_EDEFAULT = SuccesTestState.SUCCES;
/**
* The default value of the '{@link #getMods() <em>Mods</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getMods()
* @generated
* @ordered
*/
protected static final int MODS_EDEFAULT = 0;
/**
* The cached value of the '{@link #getMods() <em>Mods</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getMods()
* @generated
* @ordered
*/
protected int mods = MODS_EDEFAULT;
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
protected ProbeCommandImpl() {
super();
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
protected EClass eStaticClass() {
return GameplayPackage.Literals.PROBE_COMMAND;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public EList<Integer> getProbe() {
if (probe == null) {
probe = new EDataTypeEList<Integer>(Integer.class, this, GameplayPackage.PROBE_COMMAND__PROBE);
}
return probe;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public int getSuccesses() {
return successes;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void setSuccesses(int newSuccesses) {
int oldSuccesses = successes;
successes = newSuccesses;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, GameplayPackage.PROBE_COMMAND__SUCCESSES, oldSuccesses, successes));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public int getGlitches() {
return glitches;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void setGlitches(int newGlitches) {
int oldGlitches = glitches;
glitches = newGlitches;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, GameplayPackage.PROBE_COMMAND__GLITCHES, oldGlitches, glitches));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public int getLimit() {
return limit;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void setLimit(int newLimit) {
int oldLimit = limit;
limit = newLimit;
boolean oldLimitESet = limitESet;
limitESet = true;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, GameplayPackage.PROBE_COMMAND__LIMIT, oldLimit, limit, !oldLimitESet));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void unsetLimit() {
int oldLimit = limit;
boolean oldLimitESet = limitESet;
limit = LIMIT_EDEFAULT;
limitESet = false;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.UNSET, GameplayPackage.PROBE_COMMAND__LIMIT, oldLimit, LIMIT_EDEFAULT, oldLimitESet));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public boolean isSetLimit() {
return limitESet;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated not
*/
public ProbeState getProbeState() {
if (!isExecuted())
return ProbeState.NO_GLITCH;
double half = getProbe().size() / 2.0;
if (getGlitches() > half)
if (getSuccesses() == 0 && ! isCloseCall())
return ProbeState.CRITICAL_GLITCH;
else
return ProbeState.GLITCH;
return ProbeState.NO_GLITCH;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public EList<ProbeMod> getProbeMods() {
if (probeMods == null) {
probeMods = new EObjectContainmentEList<ProbeMod>(ProbeMod.class, this, GameplayPackage.PROBE_COMMAND__PROBE_MODS);
}
return probeMods;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public boolean isSkipTest() {
return skipTest;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void setSkipTest(boolean newSkipTest) {
boolean oldSkipTest = skipTest;
skipTest = newSkipTest;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, GameplayPackage.PROBE_COMMAND__SKIP_TEST, oldSkipTest, skipTest));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public boolean isPushTheLimit() {
return pushTheLimit;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void setPushTheLimit(boolean newPushTheLimit) {
boolean oldPushTheLimit = pushTheLimit;
pushTheLimit = newPushTheLimit;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, GameplayPackage.PROBE_COMMAND__PUSH_THE_LIMIT, oldPushTheLimit, pushTheLimit));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public boolean isSecondChance() {
return secondChance;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void setSecondChance(boolean newSecondChance) {
boolean oldSecondChance = secondChance;
secondChance = newSecondChance;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, GameplayPackage.PROBE_COMMAND__SECOND_CHANCE, oldSecondChance, secondChance));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public boolean isCloseCall() {
return closeCall;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void setCloseCall(boolean newCloseCall) {
boolean oldCloseCall = closeCall;
closeCall = newCloseCall;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, GameplayPackage.PROBE_COMMAND__CLOSE_CALL, oldCloseCall, closeCall));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public int getThresholds() {
return thresholds;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void setThresholds(int newThresholds) {
int oldThresholds = thresholds;
thresholds = newThresholds;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, GameplayPackage.PROBE_COMMAND__THRESHOLDS, oldThresholds, thresholds));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public int getNetHits() {
return netHits;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void setNetHits(int newNetHits) {
int oldNetHits = netHits;
netHits = newNetHits;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, GameplayPackage.PROBE_COMMAND__NET_HITS, oldNetHits, netHits));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated not
*/
public SuccesTestState getTestState() {
if (getNetHits() < 0)
return SuccesTestState.FAILURE;
else
return SuccesTestState.SUCCES;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public int getMods() {
return mods;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void setMods(int newMods) {
int oldMods = mods;
mods = newMods;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, GameplayPackage.PROBE_COMMAND__MODS, oldMods, mods));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
switch (featureID) {
case GameplayPackage.PROBE_COMMAND__PROBE_MODS:
return ((InternalEList<?>)getProbeMods()).basicRemove(otherEnd, msgs);
}
return super.eInverseRemove(otherEnd, featureID, msgs);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public Object eGet(int featureID, boolean resolve, boolean coreType) {
switch (featureID) {
case GameplayPackage.PROBE_COMMAND__PROBE:
return getProbe();
case GameplayPackage.PROBE_COMMAND__SUCCESSES:
return getSuccesses();
case GameplayPackage.PROBE_COMMAND__GLITCHES:
return getGlitches();
case GameplayPackage.PROBE_COMMAND__LIMIT:
return getLimit();
case GameplayPackage.PROBE_COMMAND__PROBE_STATE:
return getProbeState();
case GameplayPackage.PROBE_COMMAND__PROBE_MODS:
return getProbeMods();
case GameplayPackage.PROBE_COMMAND__SKIP_TEST:
return isSkipTest();
case GameplayPackage.PROBE_COMMAND__PUSH_THE_LIMIT:
return isPushTheLimit();
case GameplayPackage.PROBE_COMMAND__SECOND_CHANCE:
return isSecondChance();
case GameplayPackage.PROBE_COMMAND__CLOSE_CALL:
return isCloseCall();
case GameplayPackage.PROBE_COMMAND__THRESHOLDS:
return getThresholds();
case GameplayPackage.PROBE_COMMAND__NET_HITS:
return getNetHits();
case GameplayPackage.PROBE_COMMAND__TEST_STATE:
return getTestState();
case GameplayPackage.PROBE_COMMAND__MODS:
return getMods();
}
return super.eGet(featureID, resolve, coreType);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@SuppressWarnings("unchecked")
@Override
public void eSet(int featureID, Object newValue) {
switch (featureID) {
case GameplayPackage.PROBE_COMMAND__SUCCESSES:
setSuccesses((Integer)newValue);
return;
case GameplayPackage.PROBE_COMMAND__GLITCHES:
setGlitches((Integer)newValue);
return;
case GameplayPackage.PROBE_COMMAND__LIMIT:
setLimit((Integer)newValue);
return;
case GameplayPackage.PROBE_COMMAND__PROBE_MODS:
getProbeMods().clear();
getProbeMods().addAll((Collection<? extends ProbeMod>)newValue);
return;
case GameplayPackage.PROBE_COMMAND__SKIP_TEST:
setSkipTest((Boolean)newValue);
return;
case GameplayPackage.PROBE_COMMAND__PUSH_THE_LIMIT:
setPushTheLimit((Boolean)newValue);
return;
case GameplayPackage.PROBE_COMMAND__SECOND_CHANCE:
setSecondChance((Boolean)newValue);
return;
case GameplayPackage.PROBE_COMMAND__CLOSE_CALL:
setCloseCall((Boolean)newValue);
return;
case GameplayPackage.PROBE_COMMAND__THRESHOLDS:
setThresholds((Integer)newValue);
return;
case GameplayPackage.PROBE_COMMAND__NET_HITS:
setNetHits((Integer)newValue);
return;
case GameplayPackage.PROBE_COMMAND__MODS:
setMods((Integer)newValue);
return;
}
super.eSet(featureID, newValue);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public void eUnset(int featureID) {
switch (featureID) {
case GameplayPackage.PROBE_COMMAND__SUCCESSES:
setSuccesses(SUCCESSES_EDEFAULT);
return;
case GameplayPackage.PROBE_COMMAND__GLITCHES:
setGlitches(GLITCHES_EDEFAULT);
return;
case GameplayPackage.PROBE_COMMAND__LIMIT:
unsetLimit();
return;
case GameplayPackage.PROBE_COMMAND__PROBE_MODS:
getProbeMods().clear();
return;
case GameplayPackage.PROBE_COMMAND__SKIP_TEST:
setSkipTest(SKIP_TEST_EDEFAULT);
return;
case GameplayPackage.PROBE_COMMAND__PUSH_THE_LIMIT:
setPushTheLimit(PUSH_THE_LIMIT_EDEFAULT);
return;
case GameplayPackage.PROBE_COMMAND__SECOND_CHANCE:
setSecondChance(SECOND_CHANCE_EDEFAULT);
return;
case GameplayPackage.PROBE_COMMAND__CLOSE_CALL:
setCloseCall(CLOSE_CALL_EDEFAULT);
return;
case GameplayPackage.PROBE_COMMAND__THRESHOLDS:
setThresholds(THRESHOLDS_EDEFAULT);
return;
case GameplayPackage.PROBE_COMMAND__NET_HITS:
setNetHits(NET_HITS_EDEFAULT);
return;
case GameplayPackage.PROBE_COMMAND__MODS:
setMods(MODS_EDEFAULT);
return;
}
super.eUnset(featureID);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public boolean eIsSet(int featureID) {
switch (featureID) {
case GameplayPackage.PROBE_COMMAND__PROBE:
return probe != null && !probe.isEmpty();
case GameplayPackage.PROBE_COMMAND__SUCCESSES:
return successes != SUCCESSES_EDEFAULT;
case GameplayPackage.PROBE_COMMAND__GLITCHES:
return glitches != GLITCHES_EDEFAULT;
case GameplayPackage.PROBE_COMMAND__LIMIT:
return isSetLimit();
case GameplayPackage.PROBE_COMMAND__PROBE_STATE:
return getProbeState() != PROBE_STATE_EDEFAULT;
case GameplayPackage.PROBE_COMMAND__PROBE_MODS:
return probeMods != null && !probeMods.isEmpty();
case GameplayPackage.PROBE_COMMAND__SKIP_TEST:
return skipTest != SKIP_TEST_EDEFAULT;
case GameplayPackage.PROBE_COMMAND__PUSH_THE_LIMIT:
return pushTheLimit != PUSH_THE_LIMIT_EDEFAULT;
case GameplayPackage.PROBE_COMMAND__SECOND_CHANCE:
return secondChance != SECOND_CHANCE_EDEFAULT;
case GameplayPackage.PROBE_COMMAND__CLOSE_CALL:
return closeCall != CLOSE_CALL_EDEFAULT;
case GameplayPackage.PROBE_COMMAND__THRESHOLDS:
return thresholds != THRESHOLDS_EDEFAULT;
case GameplayPackage.PROBE_COMMAND__NET_HITS:
return netHits != NET_HITS_EDEFAULT;
case GameplayPackage.PROBE_COMMAND__TEST_STATE:
return getTestState() != TEST_STATE_EDEFAULT;
case GameplayPackage.PROBE_COMMAND__MODS:
return mods != MODS_EDEFAULT;
}
return super.eIsSet(featureID);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
if (baseClass == Probe.class) {
switch (derivedFeatureID) {
case GameplayPackage.PROBE_COMMAND__PROBE: return GameplayPackage.PROBE__PROBE;
case GameplayPackage.PROBE_COMMAND__SUCCESSES: return GameplayPackage.PROBE__SUCCESSES;
case GameplayPackage.PROBE_COMMAND__GLITCHES: return GameplayPackage.PROBE__GLITCHES;
case GameplayPackage.PROBE_COMMAND__LIMIT: return GameplayPackage.PROBE__LIMIT;
case GameplayPackage.PROBE_COMMAND__PROBE_STATE: return GameplayPackage.PROBE__PROBE_STATE;
case GameplayPackage.PROBE_COMMAND__PROBE_MODS: return GameplayPackage.PROBE__PROBE_MODS;
case GameplayPackage.PROBE_COMMAND__SKIP_TEST: return GameplayPackage.PROBE__SKIP_TEST;
case GameplayPackage.PROBE_COMMAND__PUSH_THE_LIMIT: return GameplayPackage.PROBE__PUSH_THE_LIMIT;
case GameplayPackage.PROBE_COMMAND__SECOND_CHANCE: return GameplayPackage.PROBE__SECOND_CHANCE;
case GameplayPackage.PROBE_COMMAND__CLOSE_CALL: return GameplayPackage.PROBE__CLOSE_CALL;
default: return -1;
}
}
if (baseClass == SuccesTest.class) {
switch (derivedFeatureID) {
case GameplayPackage.PROBE_COMMAND__THRESHOLDS: return GameplayPackage.SUCCES_TEST__THRESHOLDS;
case GameplayPackage.PROBE_COMMAND__NET_HITS: return GameplayPackage.SUCCES_TEST__NET_HITS;
case GameplayPackage.PROBE_COMMAND__TEST_STATE: return GameplayPackage.SUCCES_TEST__TEST_STATE;
default: return -1;
}
}
return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
if (baseClass == Probe.class) {
switch (baseFeatureID) {
case GameplayPackage.PROBE__PROBE: return GameplayPackage.PROBE_COMMAND__PROBE;
case GameplayPackage.PROBE__SUCCESSES: return GameplayPackage.PROBE_COMMAND__SUCCESSES;
case GameplayPackage.PROBE__GLITCHES: return GameplayPackage.PROBE_COMMAND__GLITCHES;
case GameplayPackage.PROBE__LIMIT: return GameplayPackage.PROBE_COMMAND__LIMIT;
case GameplayPackage.PROBE__PROBE_STATE: return GameplayPackage.PROBE_COMMAND__PROBE_STATE;
case GameplayPackage.PROBE__PROBE_MODS: return GameplayPackage.PROBE_COMMAND__PROBE_MODS;
case GameplayPackage.PROBE__SKIP_TEST: return GameplayPackage.PROBE_COMMAND__SKIP_TEST;
case GameplayPackage.PROBE__PUSH_THE_LIMIT: return GameplayPackage.PROBE_COMMAND__PUSH_THE_LIMIT;
case GameplayPackage.PROBE__SECOND_CHANCE: return GameplayPackage.PROBE_COMMAND__SECOND_CHANCE;
case GameplayPackage.PROBE__CLOSE_CALL: return GameplayPackage.PROBE_COMMAND__CLOSE_CALL;
default: return -1;
}
}
if (baseClass == SuccesTest.class) {
switch (baseFeatureID) {
case GameplayPackage.SUCCES_TEST__THRESHOLDS: return GameplayPackage.PROBE_COMMAND__THRESHOLDS;
case GameplayPackage.SUCCES_TEST__NET_HITS: return GameplayPackage.PROBE_COMMAND__NET_HITS;
case GameplayPackage.SUCCES_TEST__TEST_STATE: return GameplayPackage.PROBE_COMMAND__TEST_STATE;
default: return -1;
}
}
return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public String toString() {
if (eIsProxy()) return super.toString();
StringBuffer result = new StringBuffer(super.toString());
result.append(" (probe: ");
result.append(probe);
result.append(", successes: ");
result.append(successes);
result.append(", glitches: ");
result.append(glitches);
result.append(", limit: ");
if (limitESet) result.append(limit); else result.append("<unset>");
result.append(", skipTest: ");
result.append(skipTest);
result.append(", pushTheLimit: ");
result.append(pushTheLimit);
result.append(", secondChance: ");
result.append(secondChance);
result.append(", closeCall: ");
result.append(closeCall);
result.append(", thresholds: ");
result.append(thresholds);
result.append(", netHits: ");
result.append(netHits);
result.append(", mods: ");
result.append(mods);
result.append(')');
return result.toString();
}
/**
* Doing the second chance. If chosen.
* @param dicePool the number of dices thrown
*/
protected void secondChance(int dicePool) {
if(isSecondChance()){
W6Dice w6Dice = new W6Dice();
int dice = dicePool-successes;
List<Integer> probe = w6Dice.probe(dice);// .probe(fertigkeit.getStufe(), mw);
this.getProbe().addAll(probe);
this.successes = isSetLimit() ? Math.min(limit, W6Dice.probeSucsessesShr5(getProbe())) : W6Dice.probeSucsessesShr5(getProbe());
GameplayTools.increaseEdgeValue(getSubject(),1);
}
}
/**
* Checks for the option and If chosen.
* All the stuff to push the limit.
*/
protected void pushTheLimit() {
if(isPushTheLimit()){
int edgeValue = GameplayTools.getEdgeValue(getSubject());
List<Integer> rollPushTheLimit = GameplayTools.rollPushTheLimit(edgeValue);
unsetLimit();
this.getProbe().addAll(rollPushTheLimit);
GameplayTools.increaseEdgeValue(getSubject(),1);
}
}
} // ProbeCommandImpl