#include "../graphics/ArrayTexture.hpp"
#include "../graphics/Canvas.hpp"
#include "../graphics/CreatureSkin.hpp"
+#include "../graphics/CubeMap.hpp"
#include "../graphics/Font.hpp"
#include "../graphics/PlanetSurface.hpp"
+#include "../graphics/SkyBox.hpp"
#include "../graphics/SunSurface.hpp"
#include "../math/GaloisLFSR.hpp"
#include "../world/Resource.hpp"
namespace io {
class TokenStreamReader;
}
+namespace world {
+ class Body;
+ class Planet;
+ class Simulation;
+ class Sun;
+}
namespace app {
struct Assets {
std::string data_path;
std::string font_path;
std::string skin_path;
+ std::string sky_path;
std::string tile_path;
math::GaloisLFSR random;
struct {
graphics::ArrayTexture tiles;
graphics::ArrayTexture skins;
+ graphics::CubeMap sky;
} textures;
struct {
graphics::PlanetSurface planet_surface;
graphics::SunSurface sun_surface;
graphics::CreatureSkin creature_skin;
+ graphics::SkyBox sky_box;
} shaders;
Assets();
void LoadTileTexture(const std::string &name, graphics::ArrayTexture &, int layer) const;
void LoadSkinTexture(const std::string &name, graphics::ArrayTexture &, int layer) const;
+ void LoadSkyTexture(const std::string &name, graphics::CubeMap &) const;
+
+ void LoadUniverse(const std::string &name, world::Simulation &) const;
+ world::Body *ReadBody(io::TokenStreamReader &, world::Simulation &) const;
+ void ReadBodyProperty(const std::string &name, io::TokenStreamReader &, world::Body &, world::Simulation &) const;
+ void ReadPlanetProperty(const std::string &name, io::TokenStreamReader &, world::Planet &, world::Simulation &) const;
+ void ReadSunProperty(const std::string &name, io::TokenStreamReader &, world::Sun &, world::Simulation &) const;
};