package controller.action.ui;
import common.Log;
import controller.action.ActionBoard;
import controller.action.ActionType;
import controller.action.GCAction;
import data.AdvancedData;
/**
* @author Michel Bartsch
*
* This action means that the clock is to be paused.
*/
public class ClockPause extends GCAction
{
/**
* Creates a new ClockPause action.
* Look at the ActionBoard before using this.
*/
public ClockPause()
{
super(ActionType.UI);
}
/**
* Performs this action to manipulate the data (model).
*
* @param data The current data to work on.
*/
@Override
public void perform(AdvancedData data)
{
if (ActionBoard.clock.isClockRunning(data)) {
if (data.manPlay) {
data.manRemainingGameTimeOffset += data.getTime() - data.manWhenClockChanged;
data.manPlay = false;
} else {
data.manWhenClockChanged = data.getTime();
data.manPause = true;
}
Log.state(data, "Time manual paused");
} else {
if (data.manPause) {
data.manPause = false;
data.manTimeOffset -= data.getTime() - data.manWhenClockChanged;
} else {
data.manWhenClockChanged = data.getTime();
data.manPlay = true;
}
Log.state(data, "Time manual running");
}
}
/**
* Checks if this action is legal with the given data (model).
* Illegal actions are not performed by the EventHandler.
*
* @param data The current data to check with.
*/
@Override
public boolean isLegal(AdvancedData data)
{
return data.testmode;
}
}