mirror of
https://github.com/minetest/minetest.git
synced 2024-08-19 04:54:18 +02:00
Allow specifying name for dynamic media files
This commit is contained in:
parent
af69d4f7a9
commit
c90ebad46b
@ -6601,7 +6601,9 @@ Server
|
|||||||
* Returns boolean indicating success (false if player nonexistent)
|
* Returns boolean indicating success (false if player nonexistent)
|
||||||
* `minetest.dynamic_add_media(options, callback)`
|
* `minetest.dynamic_add_media(options, callback)`
|
||||||
* `options`: table containing the following parameters
|
* `options`: table containing the following parameters
|
||||||
* `filepath`: path to a media file on the filesystem
|
* `filename`: name the media file will be usable as
|
||||||
|
(optional, default taken from path)
|
||||||
|
* `filepath`: path to the file on the filesystem
|
||||||
* `to_player`: name of the player the media should be sent to instead of
|
* `to_player`: name of the player the media should be sent to instead of
|
||||||
all players (optional)
|
all players (optional)
|
||||||
* `ephemeral`: boolean that marks the media as ephemeral,
|
* `ephemeral`: boolean that marks the media as ephemeral,
|
||||||
|
@ -159,14 +159,17 @@ end
|
|||||||
|
|
||||||
local textures_path = core.get_worldpath() .. "/"
|
local textures_path = core.get_worldpath() .. "/"
|
||||||
core.safe_file_write(
|
core.safe_file_write(
|
||||||
textures_path .. "testnodes_generated_mb.png",
|
textures_path .. "testnodes1.png",
|
||||||
encode_and_check(512, 512, "rgb", data_mb)
|
encode_and_check(512, 512, "rgb", data_mb)
|
||||||
)
|
)
|
||||||
core.safe_file_write(
|
core.safe_file_write(
|
||||||
textures_path .. "testnodes_generated_ck.png",
|
textures_path .. "testnodes_generated_ck.png",
|
||||||
encode_and_check(512, 512, "gray", data_ck)
|
encode_and_check(512, 512, "gray", data_ck)
|
||||||
)
|
)
|
||||||
core.dynamic_add_media(textures_path .. "testnodes_generated_mb.png")
|
core.dynamic_add_media({
|
||||||
|
filename = "testnodes_generated_mb.png",
|
||||||
|
filepath = textures_path .. "testnodes1.png"
|
||||||
|
})
|
||||||
core.dynamic_add_media(textures_path .. "testnodes_generated_ck.png")
|
core.dynamic_add_media(textures_path .. "testnodes_generated_ck.png")
|
||||||
|
|
||||||
minetest.register_node("testnodes:generated_png_mb", {
|
minetest.register_node("testnodes:generated_png_mb", {
|
||||||
|
@ -548,11 +548,11 @@ int ModApiServer::l_dynamic_add_media(lua_State *L)
|
|||||||
Server *server = getServer(L);
|
Server *server = getServer(L);
|
||||||
const bool at_startup = !getEnv(L);
|
const bool at_startup = !getEnv(L);
|
||||||
|
|
||||||
std::string filepath;
|
std::string filename, filepath, to_player;
|
||||||
std::string to_player;
|
|
||||||
bool ephemeral = false;
|
bool ephemeral = false;
|
||||||
|
|
||||||
if (lua_istable(L, 1)) {
|
if (lua_istable(L, 1)) {
|
||||||
|
getstringfield(L, 1, "filename", filename);
|
||||||
getstringfield(L, 1, "filepath", filepath);
|
getstringfield(L, 1, "filepath", filepath);
|
||||||
getstringfield(L, 1, "to_player", to_player);
|
getstringfield(L, 1, "to_player", to_player);
|
||||||
getboolfield(L, 1, "ephemeral", ephemeral);
|
getboolfield(L, 1, "ephemeral", ephemeral);
|
||||||
@ -576,7 +576,7 @@ int ModApiServer::l_dynamic_add_media(lua_State *L)
|
|||||||
|
|
||||||
u32 token = server->getScriptIface()->allocateDynamicMediaCallback(L, 2);
|
u32 token = server->getScriptIface()->allocateDynamicMediaCallback(L, 2);
|
||||||
|
|
||||||
bool ok = server->dynamicAddMedia(filepath, token, to_player, ephemeral);
|
bool ok = server->dynamicAddMedia(filename, filepath, token, to_player, ephemeral);
|
||||||
if (!ok)
|
if (!ok)
|
||||||
server->getScriptIface()->freeDynamicMediaCallback(token);
|
server->getScriptIface()->freeDynamicMediaCallback(token);
|
||||||
lua_pushboolean(L, ok);
|
lua_pushboolean(L, ok);
|
||||||
|
@ -3568,10 +3568,11 @@ void Server::deleteParticleSpawner(const std::string &playername, u32 id)
|
|||||||
SendDeleteParticleSpawner(peer_id, id);
|
SendDeleteParticleSpawner(peer_id, id);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Server::dynamicAddMedia(std::string filepath,
|
bool Server::dynamicAddMedia(std::string filename, std::string filepath,
|
||||||
const u32 token, const std::string &to_player, bool ephemeral)
|
const u32 token, const std::string &to_player, bool ephemeral)
|
||||||
{
|
{
|
||||||
std::string filename = fs::GetFilenameFromPath(filepath.c_str());
|
if (filename.empty())
|
||||||
|
filename = fs::GetFilenameFromPath(filepath.c_str());
|
||||||
auto it = m_media.find(filename);
|
auto it = m_media.find(filename);
|
||||||
if (it != m_media.end()) {
|
if (it != m_media.end()) {
|
||||||
// Allow the same path to be "added" again in certain conditions
|
// Allow the same path to be "added" again in certain conditions
|
||||||
|
@ -258,7 +258,7 @@ public:
|
|||||||
|
|
||||||
void deleteParticleSpawner(const std::string &playername, u32 id);
|
void deleteParticleSpawner(const std::string &playername, u32 id);
|
||||||
|
|
||||||
bool dynamicAddMedia(std::string filepath, u32 token,
|
bool dynamicAddMedia(std::string filename, std::string filepath, u32 token,
|
||||||
const std::string &to_player, bool ephemeral);
|
const std::string &to_player, bool ephemeral);
|
||||||
|
|
||||||
ServerInventoryManager *getInventoryMgr() const { return m_inventory_mgr.get(); }
|
ServerInventoryManager *getInventoryMgr() const { return m_inventory_mgr.get(); }
|
||||||
|
Loading…
Reference in New Issue
Block a user