package project;
import Collection.*;

public class MonsterRevenge implements Item {
  
  private Player1 player;
  private ManageText text;
  private Location currentStage, garden, church, hell;
  private ListC stages;
  private boolean GameState;
  
  public MonsterRevenge (Player1 p, ManageText t) {
    text = t;
	player = p;
	garden = new GardenOfHorror( text, player );
	church = new Church ( text, player );
	hell = new GateToHell ( text, player );
    stages = new ListC();
	stages.add(garden);
	stages.add(church);
	stages.add(hell);
  } //constrcutor MonsterRevenge
  
  public void Intro() { text.println ("~~~The First Episode~~~");  }
  
  public void start() {
    GameState = true;
	Intro();
    stages.start();
	currentStage = ( Location ) stages.get();
	currentStage.start();
  } //method start
  
  public void update() throws StageClearException { 
    if (currentStage.getGameState()) currentStage.update();
	else if (currentStage.StageCleared() && stages.more()) { 
	  currentStage = ( Location ) stages.get();
	  currentStage.start();
	} 
	else if (currentStage.StageCleared() && !stages.more())
	  throw new StageClearException();
	else
	  GameState = false;
  }
  
  public void AttackPlayer () { currentStage.AttackMe(player); }
  
  public void stop() { text.println ("Quiting...."); } 
  
  public boolean getGameState() { return GameState; }
  
} //class Game
  
  
	
    
    
    