package games.strategy.triplea.delegate;
import games.strategy.engine.data.GameData;
import games.strategy.engine.history.IDelegateHistoryWriter;
/**
* Has a subset of the historyWriters functionality.
* Delegates should only have access to these functions.
* The rest of the history writers functions should only
* be used by the GameData
*/
public class GameDelegateHistoryWriter implements IDelegateHistoryWriter {
private IDelegateHistoryWriter m_delegateHistoryWriter;
GameData m_data;
GameDelegateHistoryWriter(final IDelegateHistoryWriter delegateHistoryWriter, final GameData data) {
m_delegateHistoryWriter = delegateHistoryWriter;
m_data = data;
}
private String getEventPrefix() {
if (BaseEditDelegate.getEditMode(m_data)) {
return "EDIT: ";
}
return "";
}
@Override
public void startEvent(final String eventName, final Object renderingData) {
if (eventName.startsWith("COMMENT: ")) {
m_delegateHistoryWriter.startEvent(eventName, renderingData);
} else {
m_delegateHistoryWriter.startEvent(getEventPrefix() + eventName, renderingData);
}
}
@Override
public void startEvent(final String eventName) {
if (eventName.startsWith("COMMENT: ")) {
m_delegateHistoryWriter.startEvent(eventName);
} else {
m_delegateHistoryWriter.startEvent(getEventPrefix() + eventName);
}
}
@Override
public void addChildToEvent(final String child) {
if (child.startsWith("COMMENT: ")) {
m_delegateHistoryWriter.addChildToEvent(child, null);
} else {
m_delegateHistoryWriter.addChildToEvent(getEventPrefix() + child, null);
}
}
@Override
public void addChildToEvent(final String child, final Object renderingData) {
if (child.startsWith("COMMENT: ")) {
m_delegateHistoryWriter.addChildToEvent(child, renderingData);
} else {
m_delegateHistoryWriter.addChildToEvent(getEventPrefix() + child, renderingData);
}
}
}