1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-07-27 17:28:41 +00:00

Add texture pack selection to main menu

This commit is contained in:
Novatux 2013-08-02 15:18:48 +02:00 committed by PilzAdam
parent fe1fe1b1e4
commit 383153419b
10 changed files with 125 additions and 17 deletions

View file

@ -3482,6 +3482,7 @@ void the_game(
infostream << "\t\t" << i << ":" << texture->getName().getPath().c_str()
<< std::endl;
}
clearTextureNameCache();
infostream << "\tRemaining materials: "
<< driver-> getMaterialRendererCount ()
<< " (note: irrlicht doesn't support removing renderers)"<< std::endl;

View file

@ -82,6 +82,7 @@ void guiLuaApi::initialize(lua_State* L,GUIEngine* engine)
retval &= API_FCT(set_topleft_text);
retval &= API_FCT(get_modpath);
retval &= API_FCT(get_gamepath);
retval &= API_FCT(get_texturepath);
retval &= API_FCT(get_dirlist);
retval &= API_FCT(create_dir);
retval &= API_FCT(delete_dir);
@ -829,6 +830,15 @@ int guiLuaApi::l_get_gamepath(lua_State *L)
return 1;
}
/******************************************************************************/
int guiLuaApi::l_get_texturepath(lua_State *L)
{
std::string gamepath
= fs::RemoveRelativePathComponents(porting::path_user + DIR_DELIM + "textures");
lua_pushstring(L, gamepath.c_str());
return 1;
}
/******************************************************************************/
int guiLuaApi::l_get_dirlist(lua_State *L) {
const char *path = luaL_checkstring(L, 1);

View file

@ -164,6 +164,8 @@ private:
static int l_get_modpath(lua_State *L);
static int l_get_gamepath(lua_State *L);
static int l_get_texturepath(lua_State *L);
static int l_get_dirlist(lua_State *L);

View file

@ -4273,8 +4273,7 @@ void Server::fillMediaCache()
paths.push_back(mod.path + DIR_DELIM + "media");
paths.push_back(mod.path + DIR_DELIM + "models");
}
std::string path_all = "textures";
paths.push_back(path_all + DIR_DELIM + "all");
paths.push_back(porting::path_user + DIR_DELIM + "textures" + DIR_DELIM + "server");
// Collect media file information from paths into cache
for(std::list<std::string>::iterator i = paths.begin();

View file

@ -131,18 +131,6 @@ std::string getTexturePath(const std::string &filename)
// Check all filename extensions. Returns "" if not found.
fullpath = getImagePath(testpath);
}
/*
Check from $user/textures/all
*/
if(fullpath == "")
{
std::string texture_path = porting::path_user + DIR_DELIM
+ "textures" + DIR_DELIM + "all";
std::string testpath = texture_path + DIR_DELIM + filename;
// Check all filename extensions. Returns "" if not found.
fullpath = getImagePath(testpath);
}
/*
Check from default data directory
@ -163,6 +151,11 @@ std::string getTexturePath(const std::string &filename)
return fullpath;
}
void clearTextureNameCache()
{
g_texturename_to_path_cache.clear();
}
/*
Stores internal information about a texture.
*/

View file

@ -57,6 +57,8 @@ std::string getImagePath(std::string path);
*/
std::string getTexturePath(const std::string &filename);
void clearTextureNameCache();
/*
ITextureSource::generateTextureFromMesh parameters
*/

View file

@ -118,6 +118,11 @@ public:
}
return result;
}
void clear ()
{
m_values.clear();
}
private:
std::map<Key, Value> m_values;