// Path: core/src/com/galvarez/ttw/ThingsThatWereGame.java
// public class ThingsThatWereGame extends Game {
// 
//   public int windowWidth;
// 
//   public int windowHeight;
// 
//   public Assets assets;
// 
//   private World world;
// 
//   private SpriteBatch batch;
// 
//   private CustomizeGameMenuScreen customScreen;
// 
//   private MainMenuScreen menuScreen;
// 
//   private SessionSettings settings;
// 
//   public ThingsThatWereGame(int width, int height) {
//     /*
//      * FIXME If height is greater that real screen height then the menu is
//      * incorrectly set until the screen is resized. It appears easily on AC
//      * laptop as default resolution is smaller. What happens is probably that
//      * the OverworldScreen.stage is resized automatically but the resize()
//      * method is not called.
//      */
//     windowWidth = width;
//     windowHeight = height;
//   }
// 
//   @Override
//   public void create() {
//     assets = new Assets();
//     settings = new SessionSettings();
// 
//     startGame();
//   }
// 
//   private void startGame() {
//     world = new World();
//     batch = new SpriteBatch();
// 
//     world.setSystem(new SpriteAnimationSystem());
//     world.setSystem(new ScaleAnimationSystem());
//     world.setSystem(new ExpiringSystem());
//     world.setSystem(new ColorAnimationSystem());
//     world.initialize();
// 
//     // this screen can modify the settings instance
//     customScreen = new CustomizeGameMenuScreen(this, world, batch, settings);
//     menuScreen = new MainMenuScreen(this, world, batch, customScreen);
//     setScreen(menuScreen);
//   }
// 
//   /** Quit current game and goes back to main menu. */
//   public void returnToMainMenu() {
//     if (getScreen() instanceof OverworldScreen)
//       getScreen().dispose();
// 
//     // simply dispose everything and create anew!
//     world.dispose();
//     batch.dispose();
//     customScreen.dispose();
//     menuScreen.dispose();
//     startGame();
//   }
// 
//   /** Start a game. */
//   public void startGame(boolean resetSettings) {
//     OverworldScreen worldScreen = new OverworldScreen(this, batch, world,
//             // copy settings because we want to keep for next game only the ones that
//             // were customized in dedicated screen
//             resetSettings ? new SessionSettings() : new SessionSettings(settings));
//     setScreen(worldScreen);
// 
//     // show tutorial when starting a new game
//     worldScreen.tutorialMenu();
//   }
// 
//   @Override
//   public void dispose() {
//     super.dispose();
//     world.dispose();
//   }
// 
//   public void exit() {
//     Gdx.app.exit();
//   }
// 
// }


import com.artemis.World;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Input.Keys;
import com.badlogic.gdx.InputAdapter;
import com.badlogic.gdx.InputMultiplexer;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
import com.badlogic.gdx.graphics.glutils.ShapeRenderer.ShapeType;
import com.badlogic.gdx.scenes.scene2d.Stage;
import com.badlogic.gdx.scenes.scene2d.ui.Skin;
import com.badlogic.gdx.utils.viewport.ScreenViewport;
import com.galvarez.ttw.ThingsThatWereGame;
package com.galvarez.ttw.screens;


public abstract class AbstractPausedScreen<Screen extends AbstractScreen> extends AbstractScreen {

    protected final Screen gameScreen;

    private final ShapeRenderer renderer;

    protected final Stage stage;

    protected final Skin skin;

    protected boolean canEscape = true;

    protected boolean paused = true;

// Path: core/src/com/galvarez/ttw/ThingsThatWereGame.java
// public class ThingsThatWereGame extends Game {
// 
//   public int windowWidth;
// 
//   public int windowHeight;
// 
//   public Assets assets;
// 
//   private World world;
// 
//   private SpriteBatch batch;
// 
//   private CustomizeGameMenuScreen customScreen;
// 
//   private MainMenuScreen menuScreen;
// 
//   private SessionSettings settings;
// 
//   public ThingsThatWereGame(int width, int height) {
//     /*
//      * FIXME If height is greater that real screen height then the menu is
//      * incorrectly set until the screen is resized. It appears easily on AC
//      * laptop as default resolution is smaller. What happens is probably that
//      * the OverworldScreen.stage is resized automatically but the resize()
//      * method is not called.
//      */
//     windowWidth = width;
//     windowHeight = height;
//   }
// 
//   @Override
//   public void create() {
//     assets = new Assets();
//     settings = new SessionSettings();
// 
//     startGame();
//   }
// 
//   private void startGame() {
//     world = new World();
//     batch = new SpriteBatch();
// 
//     world.setSystem(new SpriteAnimationSystem());
//     world.setSystem(new ScaleAnimationSystem());
//     world.setSystem(new ExpiringSystem());
//     world.setSystem(new ColorAnimationSystem());
//     world.initialize();
// 
//     // this screen can modify the settings instance
//     customScreen = new CustomizeGameMenuScreen(this, world, batch, settings);
//     menuScreen = new MainMenuScreen(this, world, batch, customScreen);
//     setScreen(menuScreen);
//   }
// 
//   /** Quit current game and goes back to main menu. */
//   public void returnToMainMenu() {
//     if (getScreen() instanceof OverworldScreen)
//       getScreen().dispose();
// 
//     // simply dispose everything and create anew!
//     world.dispose();
//     batch.dispose();
//     customScreen.dispose();
//     menuScreen.dispose();
//     startGame();
//   }
// 
//   /** Start a game. */
//   public void startGame(boolean resetSettings) {
//     OverworldScreen worldScreen = new OverworldScreen(this, batch, world,
//             // copy settings because we want to keep for next game only the ones that
//             // were customized in dedicated screen
//             resetSettings ? new SessionSettings() : new SessionSettings(settings));
//     setScreen(worldScreen);
// 
//     // show tutorial when starting a new game
//     worldScreen.tutorialMenu();
//   }
// 
//   @Override
//   public void dispose() {
//     super.dispose();
//     world.dispose();
//   }
// 
//   public void exit() {
//     Gdx.app.exit();
//   }
// 
// }


// Path: core/src/com/galvarez/ttw/screens/AbstractPausedScreen.java
import com.artemis.World;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Input.Keys;
import com.badlogic.gdx.InputAdapter;
import com.badlogic.gdx.InputMultiplexer;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
import com.badlogic.gdx.graphics.glutils.ShapeRenderer.ShapeType;
import com.badlogic.gdx.scenes.scene2d.Stage;
import com.badlogic.gdx.scenes.scene2d.ui.Skin;
import com.badlogic.gdx.utils.viewport.ScreenViewport;
import com.galvarez.ttw.ThingsThatWereGame;

package com.galvarez.ttw.screens;


public abstract class AbstractPausedScreen<Screen extends AbstractScreen> extends AbstractScreen {

    protected final Screen gameScreen;

    private final ShapeRenderer renderer;

    protected final Stage stage;

    protected final Skin skin;

    protected boolean canEscape = true;

    protected boolean paused = true;

    public AbstractPausedScreen(ThingsThatWereGame game, World world, SpriteBatch batch, Screen gameScreen) {