/**
*
*/
package net.sf.colossus.client;
import java.util.logging.Logger;
import net.sf.colossus.common.Options;
/**
* This is a central place to handle various aspects of Autoplay.
*
* * It replaces the hack in Options class for 'if option name start with
* "Auto "... then check the normal complete autoPlay first'
* * The "autoplay because of user's inactivity" can also be handled here
* better
* * At the long run, I guess here might be added some logic for the
* "kick AI into taking over" for when that happens in battle.
* (during masterboard play, a kickPhase() does the job, but for the
* various battle things / dialogs / ... one might need to do some
* per-situation-specific things to make AI kick in.
*/
public class Autoplay
{
private static final Logger LOGGER = Logger.getLogger(Autoplay.class
.getName());
private final Options options;
private boolean originalAutoplayValue = false;
private boolean originalAutoplayOverridden = false;
/**
*
*/
public Autoplay(Options options)
{
// TODO Auto-generated constructor stub
LOGGER.finest("Class Autoplay instantiated.");
this.options = options;
}
public boolean isAutoplayActive()
{
return isRealAutoplayActive() || isInactivityAutoplayActive();
}
public boolean isRealAutoplayActive()
{
return options.getOption(Options.autoPlay);
}
public boolean isInactivityAutoplayActive()
{
// TODO: this should be changed to be handled via own boolean
// variable, instead of temporary overriding the normal
// autoplay option
return originalAutoplayOverridden
&& options.getOption(Options.autoPlay);
}
public void switchOnInactivityAutoplay()
{
if (originalAutoplayOverridden)
{
LOGGER
.warning("Requested to store autoplay value, but is already overriden! Ignored.");
}
else
{
LOGGER.fine("Activating inactivityAutoplay");
originalAutoplayValue = options.getOption(Options.autoPlay);
originalAutoplayOverridden = true;
options.setOption(Options.autoPlay, true);
}
}
public void switchOffInactivityAutoplay()
{
if (originalAutoplayOverridden)
{
LOGGER.fine("Restoring original autoplay value "
+ originalAutoplayValue);
options.setOption(Options.autoPlay, originalAutoplayValue);
originalAutoplayOverridden = false;
}
else
{
LOGGER
.warning("Asked to restore originalAutoplay, but is not overridden right now.");
}
}
public boolean autoPlay()
{
return isAutoplayActive();
}
public boolean autoPickColor()
{
return autoPlay() || options.getOption(Options.autoPickColor);
}
public boolean autoPickMarker()
{
return autoPlay() || options.getOption(Options.autoPickMarker);
}
public boolean autoSplit()
{
return autoPlay() || options.getOption(Options.autoSplit);
}
public boolean autoMasterMove()
{
return autoPlay() || options.getOption(Options.autoMasterMove);
}
public boolean autoPickEntrySide()
{
return autoPlay() || options.getOption(Options.autoPickEntrySide);
}
public boolean autoPickLord()
{
return autoPlay() || options.getOption(Options.autoPickLord);
}
public boolean autoPickEngagements()
{
return autoPlay() || options.getOption(Options.autoPickEngagements);
}
public boolean autoFlee()
{
return autoPlay() || options.getOption(Options.autoFlee);
}
public boolean autoConcede()
{
return autoPlay() || options.getOption(Options.autoConcede);
}
public boolean autoNegotiate()
{
return autoPlay() || options.getOption(Options.autoNegotiate);
}
public boolean autoForcedStrike()
{
return autoPlay() || options.getOption(Options.autoForcedStrike);
}
public boolean autoCarrySingle()
{
return autoPlay() || options.getOption(Options.autoCarrySingle);
}
public boolean autoRangeSingle()
{
return autoPlay() || options.getOption(Options.autoRangeSingle);
}
public boolean autoSummonAngels()
{
return autoPlay() || options.getOption(Options.autoSummonAngels);
}
public boolean autoAcquireAngels()
{
return autoPlay() || options.getOption(Options.autoAcquireAngels);
}
public boolean autoRecruit()
{
return autoPlay() || options.getOption(Options.autoRecruit);
}
public boolean autoPickRecruiter()
{
return autoPlay() || options.getOption(Options.autoPickRecruiter);
}
public boolean autoReinforce()
{
return autoPlay() || options.getOption(Options.autoReinforce);
}
}