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; class AddAttachmentChange extends Change { private static final long serialVersionUID = -21015135248288454L; private final IAttachment m_attachment; private final String m_originalAttachmentName; private final Attachable m_originalAttachable; private final Attachable m_attachable; private final String m_name; public AddAttachmentChange(final IAttachment attachment, final Attachable attachable, final String name) { m_attachment = attachment; m_originalAttachmentName = attachment.getName(); m_originalAttachable = attachment.getAttachedTo(); m_attachable = attachable; m_name = name; } @Override protected void perform(final GameData data) { m_attachable.addAttachment(m_name, m_attachment); m_attachment.setName(m_name); m_attachment.setAttachedTo(m_attachable); } @Override public Change invert() { return new RemoveAttachmentChange(m_attachment, m_originalAttachable, m_originalAttachmentName); } }