package uk.co.patrickhaston.mars;

public class MarsResponses extends MarsArray 
{
  public MarsResponses(MarsModel model)
  {
    super(model);
    this.CollectionName = "[Responses]";
  }
  public void readData(String line)
  {
    int idx = readIndex(line);
    if (idx>0)
    {
      MarsResponse r = new MarsResponse(line);

      // -Id=Response,NextChoice,Personality,Mood,Y/N,Text

      this.setElementAt(r, idx);
    }
  }

  public MarsResponse selectResponse(String response, int person)
  {
    MarsResponse r = null;
    if(response == null) return r;
    if(person == 0) return r;
    //MarsMyStatement s = new MarsMyStatement((MarsMyStatement) theModel.MyStatements.elementAt(statement));
    MarsPerson p = new MarsPerson((MarsPerson) theModel.People.elementAt(person));

    // work out this person's mood
    String mood = "";
    if (p.mood > 30) 
    {
      mood = "Happy";
    }
    else
    {
      if (p.mood < -30)
      {
        mood = "Angry";
      }
      else
      {
        mood = "Ok";
      }
    }

    // work out the type of response that is required
    //String response = s.response;

    // work out this person's personality
    String personality = p.personality;

    int i = 1;
    boolean found = false;

    while (i < this.size() && ! found)
    {
      r = new MarsResponse((MarsResponse) theModel.Responses.elementAt(i));
      if(r.response.startsWith(response))
      {
        if (r.personality.startsWith(personality) || r.personality.startsWith("All"))
        {
          if (r.mood.startsWith(mood) || r.mood.startsWith("All"))
          {
            found = true;
          }
        }
      }
      i++;
    }

    if (!found) r = null;
    
    return r;
  }
}
