package edu.columbia.cs.cs1007.comics;


/**
 * This class implements a villain.
 @author Julia Stoyanovich (jds2109@columbia.edu)
 *         COMS 1007, Summer 2009
 *
 */
public class Villain extends SuperBeing {
  
  private Grudge _grudge;
    
  // an innner class
  private class Grudge {
    
    private String _reason;
    private String _target;
    
    private Grudge(String reason, String target) {
      _reason = reason;
      _target = target;
    }
    private String verbalize() {
      return "I have a grudge against " + _target + " because " + _reason;
    }
  }
  
  /**
   * Constructor
   @param name
   @param grudgeTarget
   @param grudgeReason
   */
  public Villain(String name, String grudgeTarget, String grudgeReason) {
    super(name);
    _grudge = new Grudge(grudgeReason, grudgeTarget);
  }
  
  /**
   * Convey your message to the world.
   @return message
   */
  public String speakUp() {
    return super.speakUp() " : " + _grudge.verbalize();
  }

  /**
   * Farewell, cruel world.
   @return Parting message
   */
  public String die() {
    String dialogue = getName()  " : I'll be back! \n" super.die();
    return dialogue;
  }
}