linux-wallpaperengine/wallpaperengine/core/project.cpp
Alexis Maiquez cc74debaad Started rewrite of the wallpaper interpreter to aim for a more separated approach, this way the whole JSON data can be parsed and kept separeted from the actual rendering logic
# Implemented basic project file loading
  # Implemented basic camera settings loading

Signed-off-by: Alexis Maiquez <almamu@almamu.com>
2019-08-13 17:17:08 +02:00

60 lines
1.2 KiB
C++

#include <wallpaperengine/fs/utils.h>
#include "project.h"
#include "../fs/utils.h"
using namespace wp::core;
project::project (std::string title, std::string type, scene *scene) :
m_title (std::move (title)),
m_type (std::move (type)),
m_scene (scene)
{
this->m_scene->setProject (this);
}
project* project::fromFile (const irr::io::path& filename)
{
json content = json::parse (wp::fs::utils::loadFullFile (filename));
json::const_iterator title = content.find ("title");
json::const_iterator type = content.find ("type");
json::const_iterator file = content.find ("file");
if (title == content.end ())
{
throw std::runtime_error ("Project title missing");
}
if (type == content.end ())
{
throw std::runtime_error ("Project type missing");
}
if (file == content.end ())
{
throw std::runtime_error ("Project's main file missing");
}
return new project (
*title,
*type,
scene::fromFile ((*file).get <std::string> ().c_str ())
);
}
scene* project::getScene ()
{
return this->m_scene;
}
std::string project::getTitle ()
{
return this->m_title;
}
std::string project::getType ()
{
return this->m_type;
}