X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fresources.cpp;h=c70e0a11308aee38929e053983bfa285ab51c04c;hb=08fa4d11a07a52e62eb4e30730d2a2b9cdcb568d;hp=dac473ab2c11f1ff5438065f30c2d96d6039d371;hpb=35332818fc6bad98fe77831de2c51a11326e31aa;p=libs%2Fdemoscene.git diff --git a/source/resources.cpp b/source/resources.cpp index dac473a..c70e0a1 100644 --- a/source/resources.cpp +++ b/source/resources.cpp @@ -1,18 +1,35 @@ +#include +#include #include #include "resources.h" using namespace std; -using namespace Msp; + +namespace Msp { +namespace DemoScene { + +void init_data(DataFile::BuiltinSource &); + +Resources::Resources() +{ + init(); +} Resources::Resources(const string &pack_name) { - set_default_texture_anisotropy(8); - set_srgb_conversion(true); + init(); + init_sources(pack_name); +} - if(FS::exists("data")) +void Resources::init_sources(const string &pack_name) +{ + FS::Path data_dir = "data"; + if(FS::exists(data_dir)) { - dir_source.add_directory("data"); + dir_source.add_directory(data_dir); add_source(dir_source); + for(const auto &c: FS::list_filtered(data_dir, "\\.mdc$")) + load(*this, (data_dir/c).str()); } else { @@ -20,3 +37,57 @@ Resources::Resources(const string &pack_name) add_source(pack_source); } } + +void Resources::init() +{ + ui_font = 0; + ui_text_technique = 0; + + set_default_texture_anisotropy(8); + set_srgb_conversion(true); + + add_source(get_builtin_source()); +} + +const DataFile::CollectionSource &Resources::get_builtin_source() +{ + static DataFile::BuiltinSource builtin_src; + bool init_done = false; + + if(!init_done) + { + init_data(builtin_src); + init_done = true; + } + + return builtin_src; +} + +Resources &Resources::get_builtins() +{ + static Resources builtins; + return builtins; +} + +const GL::Font &Resources::get_ui_font() const +{ + if(!ui_font) + throw runtime_error("no ui font"); + return *ui_font; +} + +const GL::Technique &Resources::get_ui_text_technique() const +{ + if(!ui_text_technique) + throw runtime_error("no ui text technique"); + return *ui_text_technique; +} + +void Resources::set_ui_text_resources(const string &font, const string &tech) +{ + ui_font = &get(font); + ui_text_technique = &get(tech); +} + +} // namespace DemoScene +} // namespace Msp