#include "session_common.h"

class Director {
 public:
  StringFunc to_client;
  StringFunc to_server;
  // void Session::post(notifyFunc nf)
  std::function <void(notifyFunc)> post;
  
  void client_input(const std::string &input);
  void server_line(const std::string &line);
  void server_prompt(const std::string &prompt, const std::string &raw_prompt);

  bool active;
  // not sure if I need these or not?
  std::string current_raw_prompt;
  std::string current_prompt;

  std::string old_prompt;
  std::string old_raw_prompt;

  void proxy_activate();
  void proxy_deactivate();

  char game;  // 0 = not in a game

  // not sure on these...  or how I want to use them.
  // maybe this is the place for these?!
  // IF these are public -- Session can access them.  :P
  bool show_client;
  bool talk_direct;

  // maybe these would work better?
  std::function<void(bool)> set_show_client;
  std::function<void(bool)> set_talk_direct;

  Director();
  ~Director();

 private:
  StringFunc SL_parser;
  void SL_cimline(const std::string &line);
  void SL_thiefline(const std::string &line);
  void SL_sectorline(const std::string &line);
  void SL_portline(const std::string &line);
  void SL_warpline(const std::string &line);
};