Fix hunger bug, add colorize to player damage, improved text positioning
This commit is contained in:
parent
bf8fc6f7cb
commit
8dcf7df205
@ -1,6 +1,20 @@
|
|||||||
-- (c) Copyright BlockMen (2013-2016), LGPLv3.0+
|
-- (c) Copyright BlockMen (2013-2016), LGPLv3.0+
|
||||||
|
|
||||||
if minetest.settings:get_bool("enable_damage") then
|
if minetest.settings:get_bool("enable_damage") then
|
||||||
|
|
||||||
|
hud.register("armor", {
|
||||||
|
hud_elem_type = "statbar",
|
||||||
|
position = {x = 0.5, y = 1},
|
||||||
|
alignment = {x = -1, y = -1},
|
||||||
|
offset = {x = -247, y = -134},
|
||||||
|
size = {x = 24, y = 24},
|
||||||
|
text = "3d_armor_statbar_fg.png",
|
||||||
|
background = "3d_armor_statbar_bg.png",
|
||||||
|
number = 0,
|
||||||
|
max = 20,
|
||||||
|
autohide_bg = true,
|
||||||
|
})
|
||||||
|
|
||||||
local armor_org_func = armor.set_player_armor
|
local armor_org_func = armor.set_player_armor
|
||||||
local function get_armor_lvl(def)
|
local function get_armor_lvl(def)
|
||||||
-- items/protection based display
|
-- items/protection based display
|
||||||
@ -23,17 +37,4 @@ if minetest.settings:get_bool("enable_damage") then
|
|||||||
end
|
end
|
||||||
hud.change_item(player, "armor", {number = armor_lvl})
|
hud.change_item(player, "armor", {number = armor_lvl})
|
||||||
end
|
end
|
||||||
|
|
||||||
hud.register("armor", {
|
|
||||||
hud_elem_type = "statbar",
|
|
||||||
position = {x = 0.5, y = 1},
|
|
||||||
alignment = {x = -1, y = -1},
|
|
||||||
offset = {x = -247, y = -134},
|
|
||||||
size = {x = 24, y = 24},
|
|
||||||
text = "3d_armor_statbar_fg.png",
|
|
||||||
background = "3d_armor_statbar_bg.png",
|
|
||||||
number = 0,
|
|
||||||
max = 20,
|
|
||||||
autohide_bg = true,
|
|
||||||
})
|
|
||||||
end
|
end
|
Binary file not shown.
Before Width: | Height: | Size: 5.3 KiB After Width: | Height: | Size: 1.1 KiB |
@ -21,6 +21,10 @@ HUNGER_MAX = 30 -- maximum level of saturation
|
|||||||
-- Callbacks
|
-- Callbacks
|
||||||
if minetest.settings:get_bool("enable_damage") then
|
if minetest.settings:get_bool("enable_damage") then
|
||||||
|
|
||||||
|
local modpath = minetest.get_modpath("hunger")
|
||||||
|
dofile(modpath .. "/functions.lua")
|
||||||
|
dofile(modpath .. "/food.lua")
|
||||||
|
|
||||||
hud.register("hunger", {
|
hud.register("hunger", {
|
||||||
hud_elem_type = "statbar",
|
hud_elem_type = "statbar",
|
||||||
position = {x = 0.5, y = 1},
|
position = {x = 0.5, y = 1},
|
||||||
@ -29,15 +33,11 @@ if minetest.settings:get_bool("enable_damage") then
|
|||||||
size = {x = 24, y = 24},
|
size = {x = 24, y = 24},
|
||||||
text = "hunger_statbar_fg.png",
|
text = "hunger_statbar_fg.png",
|
||||||
background = "hunger_statbar_bg.png",
|
background = "hunger_statbar_bg.png",
|
||||||
number = 20,
|
number = 20
|
||||||
})
|
})
|
||||||
|
|
||||||
local modpath = minetest.get_modpath("hunger")
|
|
||||||
dofile(modpath .. "/functions.lua")
|
|
||||||
dofile(modpath .. "/food.lua")
|
|
||||||
|
|
||||||
minetest.register_on_joinplayer(function(player)
|
minetest.register_on_joinplayer(function(player)
|
||||||
minetest.after(0.1, function()
|
minetest.after(0.5, function()
|
||||||
local inv = player:get_inventory()
|
local inv = player:get_inventory()
|
||||||
if inv then
|
if inv then
|
||||||
inv:set_size("hunger", 1)
|
inv:set_size("hunger", 1)
|
||||||
@ -51,7 +51,7 @@ if minetest.settings:get_bool("enable_damage") then
|
|||||||
lvl = 20
|
lvl = 20
|
||||||
end
|
end
|
||||||
|
|
||||||
hud.change_item(player, "hunger", {number = lvl, max = 20})
|
hud.change_item(player, "hunger", {number = lvl})
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
end)
|
end)
|
||||||
|
@ -1734,22 +1734,14 @@ void GenericCAO::processMessage(const std::string &data)
|
|||||||
|
|
||||||
if (damage > 0)
|
if (damage > 0)
|
||||||
{
|
{
|
||||||
if (m_hp <= 0)
|
if (m_hp > 0)
|
||||||
{
|
{
|
||||||
// TODO: Execute defined fast response
|
|
||||||
// As there is no definition, make a smoke puff
|
|
||||||
//disable
|
|
||||||
//ClientSimpleObject *simple = createSmokePuff(
|
|
||||||
// m_smgr, m_env, m_position,
|
|
||||||
// m_prop.visual_size * BS);
|
|
||||||
//m_env->addSimpleObject(simple);
|
|
||||||
} else {
|
|
||||||
// TODO: Execute defined fast response
|
// TODO: Execute defined fast response
|
||||||
// Flashing shall suffice as there is no definition
|
// Flashing shall suffice as there is no definition
|
||||||
m_reset_textures_timer = 0.05;
|
m_reset_textures_timer = 0.05;
|
||||||
if(damage >= 2)
|
if(damage >= 2)
|
||||||
m_reset_textures_timer += 0.05 * damage;
|
m_reset_textures_timer += 0.5 * damage;
|
||||||
updateTextures(m_current_texture_modifier + "^[brighten");
|
updateTextures(m_current_texture_modifier + "^[colorize:#FF000085");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (cmd == GENERIC_CMD_UPDATE_ARMOR_GROUPS) {
|
} else if (cmd == GENERIC_CMD_UPDATE_ARMOR_GROUPS) {
|
||||||
@ -1805,21 +1797,14 @@ bool GenericCAO::directReportPunch(v3f dir, const ItemStack *punchitem,
|
|||||||
m_hp -= result.damage;
|
m_hp -= result.damage;
|
||||||
} else {
|
} else {
|
||||||
m_hp = 0;
|
m_hp = 0;
|
||||||
// TODO: Execute defined fast response
|
|
||||||
// As there is no definition, make a smoke puff
|
|
||||||
//disable
|
|
||||||
//ClientSimpleObject *simple = createSmokePuff(
|
|
||||||
// m_smgr, m_env, m_position,
|
|
||||||
// m_prop.visual_size * BS);
|
|
||||||
//m_env->addSimpleObject(simple);
|
|
||||||
}
|
}
|
||||||
// TODO: Execute defined fast response
|
// TODO: Execute defined fast response
|
||||||
// Flashing shall suffice as there is no definition
|
// Flashing shall suffice as there is no definition
|
||||||
if (m_reset_textures_timer < 0) {
|
if (m_reset_textures_timer < 0) {
|
||||||
m_reset_textures_timer = 0.05;
|
m_reset_textures_timer = 0.05;
|
||||||
if (result.damage >= 2)
|
if (result.damage >= 2)
|
||||||
m_reset_textures_timer += 0.05 * result.damage;
|
m_reset_textures_timer += 1.0 * result.damage;
|
||||||
updateTextures(m_current_texture_modifier + "^[brighten");
|
updateTextures(m_current_texture_modifier + "^[colorize:#FF000085");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -133,7 +133,7 @@ void set_default_settings(Settings *settings)
|
|||||||
settings->setDefault("viewing_range", "100");
|
settings->setDefault("viewing_range", "100");
|
||||||
settings->setDefault("near_plane", "0.1");
|
settings->setDefault("near_plane", "0.1");
|
||||||
settings->setDefault("screenW", "1024");
|
settings->setDefault("screenW", "1024");
|
||||||
settings->setDefault("screenH", "600");
|
settings->setDefault("screenH", "768");
|
||||||
settings->setDefault("autosave_screensize", "true");
|
settings->setDefault("autosave_screensize", "true");
|
||||||
settings->setDefault("fullscreen", "false");
|
settings->setDefault("fullscreen", "false");
|
||||||
settings->setDefault("fullscreen_bpp", "24");
|
settings->setDefault("fullscreen_bpp", "24");
|
||||||
@ -160,9 +160,8 @@ void set_default_settings(Settings *settings)
|
|||||||
settings->setDefault("console_height", "1.0");
|
settings->setDefault("console_height", "1.0");
|
||||||
settings->setDefault("console_color", "(0,0,0)");
|
settings->setDefault("console_color", "(0,0,0)");
|
||||||
settings->setDefault("console_alpha", "200");
|
settings->setDefault("console_alpha", "200");
|
||||||
settings->setDefault("selectionbox_color", "(255,255,255)");
|
|
||||||
settings->setDefault("selectionbox_width", "4");
|
|
||||||
settings->setDefault("selectionbox_color", "(0,0,0)");
|
settings->setDefault("selectionbox_color", "(0,0,0)");
|
||||||
|
settings->setDefault("selectionbox_width", "4");
|
||||||
settings->setDefault("node_highlighting", "box");
|
settings->setDefault("node_highlighting", "box");
|
||||||
settings->setDefault("crosshair_color", "(255,255,255)");
|
settings->setDefault("crosshair_color", "(255,255,255)");
|
||||||
settings->setDefault("crosshair_alpha", "255");
|
settings->setDefault("crosshair_alpha", "255");
|
||||||
@ -173,6 +172,7 @@ void set_default_settings(Settings *settings)
|
|||||||
settings->setDefault("desynchronize_mapblock_texture_animation", "true");
|
settings->setDefault("desynchronize_mapblock_texture_animation", "true");
|
||||||
settings->setDefault("hud_hotbar_max_width", "1.0");
|
settings->setDefault("hud_hotbar_max_width", "1.0");
|
||||||
settings->setDefault("hud_move_upwards", "0");
|
settings->setDefault("hud_move_upwards", "0");
|
||||||
|
settings->setDefault("round_screen", "0");
|
||||||
settings->setDefault("enable_local_map_saving", "false");
|
settings->setDefault("enable_local_map_saving", "false");
|
||||||
settings->setDefault("show_entity_selectionbox", "false");
|
settings->setDefault("show_entity_selectionbox", "false");
|
||||||
settings->setDefault("texture_clean_transparent", "false");
|
settings->setDefault("texture_clean_transparent", "false");
|
||||||
@ -484,6 +484,7 @@ void set_default_settings(Settings *settings)
|
|||||||
// Move the HUD up for the iPhone X-series and new iPad Pro
|
// Move the HUD up for the iPhone X-series and new iPad Pro
|
||||||
if (([SDVersion deviceVersion] == iPhoneX) || ([SDVersion deviceVersion] == iPhoneXS) || ([SDVersion deviceVersion] == iPhoneXSMax) || ([SDVersion deviceVersion] == iPhoneXR) || ([SDVersion deviceVersion] == iPadPro11Inch) || ([SDVersion deviceVersion] == iPadPro12Dot9Inch3Gen)) {
|
if (([SDVersion deviceVersion] == iPhoneX) || ([SDVersion deviceVersion] == iPhoneXS) || ([SDVersion deviceVersion] == iPhoneXSMax) || ([SDVersion deviceVersion] == iPhoneXR) || ([SDVersion deviceVersion] == iPadPro11Inch) || ([SDVersion deviceVersion] == iPadPro12Dot9Inch3Gen)) {
|
||||||
settings->setDefault("hud_move_upwards", "10");
|
settings->setDefault("hud_move_upwards", "10");
|
||||||
|
settings->setDefault("round_screen", "15");
|
||||||
}
|
}
|
||||||
|
|
||||||
// set the optimal settings depending on the model
|
// set the optimal settings depending on the model
|
||||||
|
@ -1012,7 +1012,7 @@ static void updateChat(Client &client, f32 dtime, bool show_debug,
|
|||||||
s32 chat_y = 5 + line_height;
|
s32 chat_y = 5 + line_height;
|
||||||
|
|
||||||
if (show_debug)
|
if (show_debug)
|
||||||
chat_y += 2 * line_height;
|
chat_y += line_height;
|
||||||
|
|
||||||
// first pass to calculate height of text to be set
|
// first pass to calculate height of text to be set
|
||||||
s32 width = std::min(g_fontengine->getTextWidth(recent_chat.c_str()) + 10,
|
s32 width = std::min(g_fontengine->getTextWidth(recent_chat.c_str()) + 10,
|
||||||
@ -2305,6 +2305,7 @@ bool Game::getServerContent(bool *aborted)
|
|||||||
|
|
||||||
message << " (" << cur << ' ' << cur_unit << ")";
|
message << " (" << cur << ' ' << cur_unit << ")";
|
||||||
}
|
}
|
||||||
|
|
||||||
progress = 30 + client->mediaReceiveProgress() * 35 + 0.5;
|
progress = 30 + client->mediaReceiveProgress() * 35 + 0.5;
|
||||||
draw_load_screen(utf8_to_wide(message.str()), device,
|
draw_load_screen(utf8_to_wide(message.str()), device,
|
||||||
guienv, texture_src, dtime, progress);
|
guienv, texture_src, dtime, progress);
|
||||||
@ -4429,7 +4430,7 @@ void Game::updateGui(const RunStats &stats, f32 dtime, const CameraOrientation &
|
|||||||
|
|
||||||
if (guitext->isVisible()) {
|
if (guitext->isVisible()) {
|
||||||
core::rect<s32> rect(
|
core::rect<s32> rect(
|
||||||
5, 5,
|
5 + g_settings->getU16("round_screen"), 5,
|
||||||
screensize.X, 5 + g_fontengine->getTextHeight()
|
screensize.X, 5 + g_fontengine->getTextHeight()
|
||||||
);
|
);
|
||||||
guitext->setRelativePosition(rect);
|
guitext->setRelativePosition(rect);
|
||||||
@ -4742,9 +4743,7 @@ void Game::showPauseMenu()
|
|||||||
str_formspec_escape(control_text);
|
str_formspec_escape(control_text);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __ANDROID__
|
#ifdef __IOS__
|
||||||
float ypos = simple_singleplayer_mode ? 0.5f : 0.1f;
|
|
||||||
#elif __IOS__
|
|
||||||
float ypos = 1.5;
|
float ypos = 1.5;
|
||||||
#else
|
#else
|
||||||
float ypos = simple_singleplayer_mode ? 0.5f : 0.1f;
|
float ypos = simple_singleplayer_mode ? 0.5f : 0.1f;
|
||||||
|
10
src/hud.cpp
10
src/hud.cpp
@ -328,20 +328,10 @@ void Hud::drawLuaElements(const v3s16 &camera_offset)
|
|||||||
core::rect<s32> size(0, 0, e->scale.X, text_height * e->scale.Y);
|
core::rect<s32> size(0, 0, e->scale.X, text_height * e->scale.Y);
|
||||||
std::wstring text = unescape_enriched(utf8_to_wide(e->text));
|
std::wstring text = unescape_enriched(utf8_to_wide(e->text));
|
||||||
core::dimension2d<u32> textsize = font->getDimension(text.c_str());
|
core::dimension2d<u32> textsize = font->getDimension(text.c_str());
|
||||||
if (e->pos.X > 0.45 && e->pos.X < 0.55) {
|
|
||||||
v2s32 offset((e->align.X - 1.0) * (textsize.Width / 2),
|
|
||||||
#if defined(__ANDROID__) || defined(__IOS__)
|
|
||||||
(e->align.Y - 1.0) * (textsize.Height) * 7 * g_settings->getFloat("hud_scaling"));
|
|
||||||
#else
|
|
||||||
(e->align.Y - 1.0) * (textsize.Height / 2));
|
|
||||||
#endif
|
|
||||||
font->draw(text.c_str(), size + pos + offset, color);
|
|
||||||
} else {
|
|
||||||
v2s32 offset((e->align.X - 1.0) * (textsize.Width / 2),
|
v2s32 offset((e->align.X - 1.0) * (textsize.Width / 2),
|
||||||
(e->align.Y - 1.0) * (textsize.Height / 2));
|
(e->align.Y - 1.0) * (textsize.Height / 2));
|
||||||
v2s32 offs(e->offset.X, e->offset.Y);
|
v2s32 offs(e->offset.X, e->offset.Y);
|
||||||
font->draw(text.c_str(), size + pos + offset + offs, color);
|
font->draw(text.c_str(), size + pos + offset + offs, color);
|
||||||
}
|
|
||||||
break; }
|
break; }
|
||||||
case HUD_ELEM_STATBAR: {
|
case HUD_ELEM_STATBAR: {
|
||||||
v2s32 offs(e->offset.X, e->offset.Y);
|
v2s32 offs(e->offset.X, e->offset.Y);
|
||||||
|
@ -556,26 +556,14 @@ u32 InventoryList::getFreeSlots() const
|
|||||||
|
|
||||||
const ItemStack& InventoryList::getItem(u32 i) const
|
const ItemStack& InventoryList::getItem(u32 i) const
|
||||||
{
|
{
|
||||||
//assert(i < m_size); // Pre-condition
|
assert(i < m_size); // Pre-condition
|
||||||
//return m_items[i];
|
|
||||||
|
|
||||||
if (i < m_size)
|
|
||||||
return m_items[i];
|
return m_items[i];
|
||||||
|
|
||||||
ItemStack stack = ItemStack();
|
|
||||||
return stack;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ItemStack& InventoryList::getItem(u32 i)
|
ItemStack& InventoryList::getItem(u32 i)
|
||||||
{
|
{
|
||||||
//assert(i < m_size); // Pre-condition
|
assert(i < m_size); // Pre-condition
|
||||||
//return m_items[i];
|
|
||||||
|
|
||||||
if (i < m_size)
|
|
||||||
return m_items[i];
|
return m_items[i];
|
||||||
|
|
||||||
ItemStack stack = ItemStack();
|
|
||||||
return stack;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ItemStack InventoryList::changeItem(u32 i, const ItemStack &newitem)
|
ItemStack InventoryList::changeItem(u32 i, const ItemStack &newitem)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user