SpriteDescriptionPtr SpriteDescription::from_file(const Pathname& path) { ReaderObject reader_object = FileReader::parse(path); ReaderMapping reader = reader_object.get_mapping(); SpriteDescriptionPtr desc(new SpriteDescription); reader.read_int("speed", desc->speed); reader.read_bool("loop", desc->loop); reader.read_vector2i("offset", desc->offset); reader.read_enum("origin", desc->origin, string2origin); if (!reader.read_path("image", desc->filename)) { log_error("'image' missing for %1%", reader_object.get_name()); } desc->filename = Pathname(desc->filename.get_raw_path(), Pathname::DATA_PATH); // FIXME: Hack reader.read_size("array", desc->array); reader.read_vector2i("position", desc->frame_pos); reader.read_size("size", desc->frame_size); return desc; }
StoryDot::StoryDot(const ReaderMapping& reader) : Dot(reader.read_mapping("dot")), m_story_dot_highlight("core/worldmap/story_dot_highlight"), m_story_dot("core/worldmap/story_dot"), m_name(), m_story(), m_credits(false) { reader.read_string("name", m_name); reader.read_string("story", m_story); reader.read_bool("credits", m_credits); }