/**
*
*/
package de.urszeidler.eclipse.shr5.gameplay.provider.util;
import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.jface.viewers.LabelProvider;
import de.urszeidler.eclipse.shr5.AbstraktPersona;
import de.urszeidler.eclipse.shr5.Fertigkeit;
import de.urszeidler.eclipse.shr5.Shr5Package;
import de.urszeidler.eclipse.shr5.gameplay.DamageTest;
import de.urszeidler.eclipse.shr5.gameplay.DefensTestCmd;
import de.urszeidler.eclipse.shr5.gameplay.Probe;
import de.urszeidler.eclipse.shr5.gameplay.SkillTestCmd;
import de.urszeidler.eclipse.shr5.gameplay.SuccesTestCmd;
import de.urszeidler.eclipse.shr5.gameplay.util.GameplaySwitch;
import de.urszeidler.eclipse.shr5.gameplay.util.GameplayTools;
import de.urszeidler.eclipse.shr5.runtime.RuntimeCharacter;
import de.urszeidler.eclipse.shr5.util.AdapterFactoryUtil;
import de.urszeidler.eclipse.shr5.util.ShadowrunTools;
/**
* @author urs
*/
public class GameplayEditTools {
public static String probe2ProbeString(Probe probe) {
final LabelProvider labelProvider = AdapterFactoryUtil.getInstance().getLabelProvider();
GameplaySwitch<String> gameplaySwitch = new GameplaySwitch<String>() {
@Override
public String caseSkillTestCmd(SkillTestCmd object) {
Fertigkeit skill = object.getSkill();
AbstraktPersona persona = object.getSubject().getCharacter().getPersona();
Integer fertigkeitValue = ShadowrunTools.findFertigkeitValue(skill, persona);
EAttribute attribut = skill.getAttribut();
Integer att = (Integer)persona.eGet(attribut);
// int dice = GameplayTools.getSkillDicePool(skill, object.getSubject());
return String.format("%s:%d %s:%d mods:%d = %d", labelProvider.getText(skill), fertigkeitValue, labelProvider.getText(attribut), att,
object.getMods(), GameplayTools.getSkillDicePool(skill, object.getSubject()) + object.getMods());
}
@Override
public String caseSuccesTestCmd(SuccesTestCmd object) {
return String.format("%d mods:%d = %d", object.getDicePool(), object.getMods(), object.getDicePool() + object.getMods());
}
@Override
public String caseDefensTestCmd(DefensTestCmd object) {
AbstraktPersona persona = object.getSubject().getCharacter().getPersona();
return String.format("%d mods:%d = %d", persona.getAusweichen(), object.getMods(), persona.getAusweichen() + object.getMods());
}
@Override
public String caseDamageTest(DamageTest object) {
RuntimeCharacter subject = object.getSubject();
int ruestung = GameplayTools.getArmorValue(subject);
AbstraktPersona persona = object.getSubject().getCharacter().getPersona();
int kon = persona.getKonstitution()
+ persona.getModManager().getmodWert(Shr5Package.Literals.PROBEN_MODIFIKATOREN__SCHADENSWIEDERSTAND);
return String.format("%d + %d %d dv mods:%d = %d", kon, ruestung, object.getDv(), object.getMods(), kon + ruestung + object.getDv()
+ object.getMods());
}
};
try {
String doSwitch = gameplaySwitch.doSwitch(probe);
if (doSwitch == null)
return "";
return doSwitch;
} catch (Exception e) {
}
return "";
}
}