/* * $Id$ * * Copyright (c) 2004 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.build.GameModule; import VASSAL.command.Command; import VASSAL.command.CommandEncoder; /** * Provides information about whether a game was started from File->New Game * or loaded from a saved game */ public class NewGameIndicator implements GameComponent, CommandEncoder { private String command; private boolean isNewGame; public NewGameIndicator(String command) { this.command = command; GameModule.getGameModule().getGameState().addGameComponent(this); GameModule.getGameModule().addCommandEncoder(this); } public Command getRestoreCommand() { return new MarkGameNotNew(this); } /** * * @return true if the current game was started from the menu, * false if it was loaded from a saved game or logfile. */ public boolean isNewGame() { return isNewGame; } public void setup(boolean gameStarting) { if (!gameStarting) { isNewGame = true; } } public Command decode(String command) { Command c = null; if (command.startsWith(this.command)) { return new MarkGameNotNew(this); } return c; } public String encode(Command c) { String s = null; if (c instanceof MarkGameNotNew && ((MarkGameNotNew)c).indicator == this) { s = command; } return s; } public static class MarkGameNotNew extends Command { private NewGameIndicator indicator; public MarkGameNotNew(NewGameIndicator indicator) { this.indicator = indicator; } protected void executeCommand() { indicator.isNewGame = false; } protected Command myUndoCommand() { return null; } } }