/* * $Id$ * * Copyright (c) 2000-2003 by Rodney Kinney * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License (LGPL) as published by the Free Software Foundation. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, copies are available * at http://www.opensource.org. */ package VASSAL.build.module; import VASSAL.command.Command; /** * A GameComponent is any object which reacts to the start/end of a * game, or whose state can be saved as part of a game. */ public interface GameComponent { /** * Notify the GameComponent that a game has started/ended * @param gameStarting if true, a game is starting. If false, then a game is ending */ public void setup(boolean gameStarting); /** * When saving a game, each GameComponent should return a {@link * Command} that, when executed, restores the GameComponent to its * state when the game was saved * If this component has no persistent state, return null */ public Command getRestoreCommand(); }