Fix hunger bug, add colorize to player damage, improved text positioning

master
MoNTE48 2019-06-20 00:11:24 +02:00
parent bf8fc6f7cb
commit 8dcf7df205
8 changed files with 43 additions and 79 deletions

View File

@ -1,6 +1,20 @@
-- (c) Copyright BlockMen (2013-2016), LGPLv3.0+
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 function get_armor_lvl(def)
-- items/protection based display
@ -23,17 +37,4 @@ if minetest.settings:get_bool("enable_damage") then
end
hud.change_item(player, "armor", {number = armor_lvl})
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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -21,6 +21,10 @@ HUNGER_MAX = 30 -- maximum level of saturation
-- Callbacks
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_elem_type = "statbar",
position = {x = 0.5, y = 1},
@ -29,15 +33,11 @@ if minetest.settings:get_bool("enable_damage") then
size = {x = 24, y = 24},
text = "hunger_statbar_fg.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.after(0.1, function()
minetest.after(0.5, function()
local inv = player:get_inventory()
if inv then
inv:set_size("hunger", 1)
@ -51,7 +51,7 @@ if minetest.settings:get_bool("enable_damage") then
lvl = 20
end
hud.change_item(player, "hunger", {number = lvl, max = 20})
hud.change_item(player, "hunger", {number = lvl})
end
end)
end)

View File

@ -1734,22 +1734,14 @@ void GenericCAO::processMessage(const std::string &data)
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
// Flashing shall suffice as there is no definition
m_reset_textures_timer = 0.05;
if(damage >= 2)
m_reset_textures_timer += 0.05 * damage;
updateTextures(m_current_texture_modifier + "^[brighten");
m_reset_textures_timer += 0.5 * damage;
updateTextures(m_current_texture_modifier + "^[colorize:#FF000085");
}
}
} else if (cmd == GENERIC_CMD_UPDATE_ARMOR_GROUPS) {
@ -1805,21 +1797,14 @@ bool GenericCAO::directReportPunch(v3f dir, const ItemStack *punchitem,
m_hp -= result.damage;
} else {
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
// Flashing shall suffice as there is no definition
if (m_reset_textures_timer < 0) {
m_reset_textures_timer = 0.05;
if (result.damage >= 2)
m_reset_textures_timer += 0.05 * result.damage;
updateTextures(m_current_texture_modifier + "^[brighten");
m_reset_textures_timer += 1.0 * result.damage;
updateTextures(m_current_texture_modifier + "^[colorize:#FF000085");
}
}

View File

@ -133,7 +133,7 @@ void set_default_settings(Settings *settings)
settings->setDefault("viewing_range", "100");
settings->setDefault("near_plane", "0.1");
settings->setDefault("screenW", "1024");
settings->setDefault("screenH", "600");
settings->setDefault("screenH", "768");
settings->setDefault("autosave_screensize", "true");
settings->setDefault("fullscreen", "false");
settings->setDefault("fullscreen_bpp", "24");
@ -160,9 +160,8 @@ void set_default_settings(Settings *settings)
settings->setDefault("console_height", "1.0");
settings->setDefault("console_color", "(0,0,0)");
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_width", "4");
settings->setDefault("node_highlighting", "box");
settings->setDefault("crosshair_color", "(255,255,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("hud_hotbar_max_width", "1.0");
settings->setDefault("hud_move_upwards", "0");
settings->setDefault("round_screen", "0");
settings->setDefault("enable_local_map_saving", "false");
settings->setDefault("show_entity_selectionbox", "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
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("round_screen", "15");
}
// set the optimal settings depending on the model

View File

@ -1012,7 +1012,7 @@ static void updateChat(Client &client, f32 dtime, bool show_debug,
s32 chat_y = 5 + line_height;
if (show_debug)
chat_y += 2 * line_height;
chat_y += line_height;
// first pass to calculate height of text to be set
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 << ")";
}
progress = 30 + client->mediaReceiveProgress() * 35 + 0.5;
draw_load_screen(utf8_to_wide(message.str()), device,
guienv, texture_src, dtime, progress);
@ -4429,8 +4430,8 @@ void Game::updateGui(const RunStats &stats, f32 dtime, const CameraOrientation &
if (guitext->isVisible()) {
core::rect<s32> rect(
5, 5,
screensize.X, 5 + g_fontengine->getTextHeight()
5 + g_settings->getU16("round_screen"), 5,
screensize.X, 5 + g_fontengine->getTextHeight()
);
guitext->setRelativePosition(rect);
}
@ -4742,9 +4743,7 @@ void Game::showPauseMenu()
str_formspec_escape(control_text);
#endif
#ifdef __ANDROID__
float ypos = simple_singleplayer_mode ? 0.5f : 0.1f;
#elif __IOS__
#ifdef __IOS__
float ypos = 1.5;
#else
float ypos = simple_singleplayer_mode ? 0.5f : 0.1f;

View File

@ -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);
std::wstring text = unescape_enriched(utf8_to_wide(e->text));
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),
(e->align.Y - 1.0) * (textsize.Height / 2));
v2s32 offs(e->offset.X, e->offset.Y);
font->draw(text.c_str(), size + pos + offset + offs, color);
}
v2s32 offset((e->align.X - 1.0) * (textsize.Width / 2),
(e->align.Y - 1.0) * (textsize.Height / 2));
v2s32 offs(e->offset.X, e->offset.Y);
font->draw(text.c_str(), size + pos + offset + offs, color);
break; }
case HUD_ELEM_STATBAR: {
v2s32 offs(e->offset.X, e->offset.Y);

View File

@ -556,26 +556,14 @@ u32 InventoryList::getFreeSlots() const
const ItemStack& InventoryList::getItem(u32 i) const
{
//assert(i < m_size); // Pre-condition
//return m_items[i];
if (i < m_size)
return m_items[i];
ItemStack stack = ItemStack();
return stack;
assert(i < m_size); // Pre-condition
return m_items[i];
}
ItemStack& InventoryList::getItem(u32 i)
{
//assert(i < m_size); // Pre-condition
//return m_items[i];
if (i < m_size)
return m_items[i];
ItemStack stack = ItemStack();
return stack;
assert(i < m_size); // Pre-condition
return m_items[i];
}
ItemStack InventoryList::changeItem(u32 i, const ItemStack &newitem)