X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fresources.cpp;h=f44d8c1985d05ef1e45c3651bcaa0a8b77cb4d1f;hb=592e8a658d80c2720a940953d6c4decd656d444c;hp=dac473ab2c11f1ff5438065f30c2d96d6039d371;hpb=35332818fc6bad98fe77831de2c51a11326e31aa;p=libs%2Fdemoscene.git diff --git a/source/resources.cpp b/source/resources.cpp index dac473a..f44d8c1 100644 --- a/source/resources.cpp +++ b/source/resources.cpp @@ -1,22 +1,83 @@ +#include +#include #include #include "resources.h" using namespace std; -using namespace Msp; -Resources::Resources(const string &pack_name) +namespace Msp { +namespace DemoScene { + +void init_data(DataFile::BuiltinSource &); + +Resources::Resources() +{ + add_source(get_builtin_source()); +} + +Resources::Resources(const string &pack_name): + ui_font(0), + ui_text_technique(0) { set_default_texture_anisotropy(8); set_srgb_conversion(true); - if(FS::exists("data")) + 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 { pack_source.add_pack_file(pack_name); add_source(pack_source); } + + 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