/*
* Created on 02-Dec-2003
*
* To change the template for this generated file go to
* Window - Preferences - Java - Code Generation - Code and Comments
*/
package plugin.pretokens.test;
import pcgen.cdom.base.CDOMObject;
import pcgen.cdom.enumeration.ObjectKey;
import pcgen.cdom.reference.CDOMSingleRef;
import pcgen.core.Deity;
import pcgen.core.Globals;
import pcgen.core.PCAlignment;
import pcgen.core.display.CharacterDisplay;
import pcgen.core.prereq.AbstractDisplayPrereqTest;
import pcgen.core.prereq.Prerequisite;
import pcgen.core.prereq.PrerequisiteTest;
import pcgen.system.LanguageBundle;
import pcgen.util.Logging;
/**
* Prerequisite test that the character has a deity with the correct alignment.
*/
public class PreDeityAlignTester extends AbstractDisplayPrereqTest implements PrerequisiteTest
{
/* (non-Javadoc)
* @see pcgen.core.prereq.PrerequisiteTest#passes(pcgen.core.PlayerCharacter)
*/
@Override
public int passes(final Prerequisite prereq, final CharacterDisplay display, CDOMObject source)
{
//
// If game mode doesn't support alignment, then pass the prereq
//
int runningTotal = 0;
if (Globals.getGameModeAlignmentText().isEmpty())
{
runningTotal = 1;
}
else
{
CDOMSingleRef<PCAlignment> deityAlign = null; //$NON-NLS-1$
Deity deity = display.getDeity();
if (deity != null)
{
deityAlign = deity.get(ObjectKey.ALIGNMENT);
}
if (deityAlign != null)
{
String desiredAlignIdentifier = prereq.getOperand();
PCAlignment desiredAlign = getPCAlignment(desiredAlignIdentifier);
if (desiredAlign.equals(deityAlign.get()))
{
runningTotal = 1;
}
}
}
return countedTotal(prereq, runningTotal);
}
private static PCAlignment getPCAlignment(String desiredAlignIdentifier)
{
PCAlignment desiredAlign =
Globals
.getContext()
.getReferenceContext()
.silentlyGetConstructedCDOMObject(PCAlignment.class,
desiredAlignIdentifier);
if (desiredAlign == null)
{
Logging.errorPrint("Unable to find alignment that matches: "
+ desiredAlignIdentifier);
}
return desiredAlign;
}
/**
* Get the type of prerequisite handled by this token.
* @return the type of prerequisite handled by this token.
*/
@Override
public String kindHandled()
{
return "DEITYALIGN"; //$NON-NLS-1$
}
/* (non-Javadoc)
* @see pcgen.core.prereq.PrerequisiteTest#toHtmlString(pcgen.core.prereq.Prerequisite)
*/
@Override
public String toHtmlString(final Prerequisite prereq)
{
return LanguageBundle
.getFormattedString(
"PreDeityAlign.toHtml", prereq.getOperator().toDisplayString(), getPCAlignment(prereq.getOperand()).getKeyName()); //$NON-NLS-1$
}
}