package games.strategy.engine.data.changefactory; import games.strategy.engine.data.Attachable; import games.strategy.engine.data.Change; import games.strategy.engine.data.GameData; import games.strategy.engine.data.IAttachment; import games.strategy.util.PropertyUtil; class AttachmentPropertyResetUndo extends Change { private static final long serialVersionUID = 5943939650116851332L; private final Attachable m_attachedTo; private final String m_attachmentName; private final Object m_newValue; private final String m_property; AttachmentPropertyResetUndo(final Attachable attachTo, final String attachmentName, final Object newValue, final String property) { m_attachmentName = attachmentName; m_attachedTo = attachTo; m_newValue = newValue; m_property = property; } public Attachable getAttachedTo() { return m_attachedTo; } public String getAttachmentName() { return m_attachmentName; } @Override public void perform(final GameData data) { final IAttachment attachment = m_attachedTo.getAttachment(m_attachmentName); PropertyUtil.set(m_property, m_newValue, attachment, false); } @Override public Change invert() { return new AttachmentPropertyReset(m_attachedTo, m_attachmentName, m_newValue, m_property); } @Override public String toString() { return "AttachmentPropertyClearUndo attached to:" + m_attachedTo + " name:" + m_attachmentName + " new value:" + m_newValue; } }