47 lines
1.3 KiB
C++
47 lines
1.3 KiB
C++
#include "Runtime.h"
|
|
|
|
namespace jes
|
|
{
|
|
static const char * const runtime_directories[Runtime::COUNT] = {
|
|
"fonts",
|
|
"shaders",
|
|
};
|
|
|
|
PathRef Runtime::locate(int type, const std::string & name)
|
|
{
|
|
PathRef path = Core::instance.get_bin_path()->dirname()->dirname()->join("runtime")->join(runtime_directories[type]);
|
|
PathRef rv = NULL;
|
|
switch (type)
|
|
{
|
|
case Runtime::SHADER:
|
|
rv = path->join(name);
|
|
break;
|
|
case Runtime::FONT:
|
|
{
|
|
static const char * extensions[] = {
|
|
"ttf",
|
|
};
|
|
std::vector<std::string> dirents = path->dir_entries();
|
|
for (auto de : dirents)
|
|
{
|
|
PathRef test_path = path->join(de)->join(name);
|
|
if (test_path->exists())
|
|
return test_path;
|
|
for (auto ext : extensions)
|
|
{
|
|
test_path = test_path->ext(ext);
|
|
if (test_path->exists())
|
|
return test_path;
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
|
|
if ((rv != NULL) && (rv->exists()))
|
|
return rv;
|
|
|
|
return NULL;
|
|
}
|
|
}
|