Example #1
0
WorldmapStory::WorldmapStory(const ReaderMapping& reader) :
  title(),
  music(),
  pages()
{
  reader.read_string("title", title);
  title = _(title);
  reader.read_string("music", music);
  ReaderCollection all_pages;
  reader.read_collection("pages", all_pages);

  // Temporary objects
  ResDescriptor desc;
  std::string text;
  std::string page_name;

  // Read each page into the pages vector
  std::vector<ReaderObject> childs = all_pages.get_objects();
  for(auto i = childs.begin(); i != childs.end(); ++i)
  {
    page_name = i->get_name();
    ReaderMapping mapping = i->get_mapping();
    mapping.read_desc("surface", desc);
    mapping.read_string("text", text);
    // Translate the text and break it up.
    text = StringFormat::break_line(_(text), 570, Fonts::chalk_normal);
    pages.push_back(StoryPage(desc, text, page_name));
  }
  std::reverse(pages.begin(), pages.end());

  if (pages.empty())
    raise_exception(std::runtime_error, "WorldmapStory: Worldmap does not include a valid story");
}
Example #2
0
Exit::Exit(const ReaderMapping& reader) :
  desc(),
  pos(),
  owner_id(),
  sprite(),
  flag(),
  smallmap_symbol("core/misc/smallmap_exit")
{
  reader.read_vector("position", pos);
  reader.read_desc  ("surface",  desc);
  reader.read_int   ("owner-id", owner_id);

  // Set default owner ID to 0
  if (owner_id < 0 || owner_id > 3) owner_id = 0;

  flag = Sprite("core/misc/flag" + StringUtil::to_string(owner_id));

  sprite = Sprite(desc);
}