From 8dcf7df2055921887c78d43807e2ee7ba21a0bcc Mon Sep 17 00:00:00 2001 From: MoNTE48 Date: Thu, 20 Jun 2019 00:11:24 +0200 Subject: [PATCH] Fix hunger bug, add colorize to player damage, improved text positioning --- games/default/files/3d_armor/hud.lua | 27 +++++++++--------- .../default/textures/default_pine_needles.png | Bin 5457 -> 1100 bytes games/default/files/hunger/init.lua | 14 ++++----- src/content_cao.cpp | 25 ++++------------ src/defaultsettings.cpp | 7 +++-- src/game.cpp | 11 ++++--- src/hud.cpp | 18 +++--------- src/inventory.cpp | 20 +++---------- 8 files changed, 43 insertions(+), 79 deletions(-) diff --git a/games/default/files/3d_armor/hud.lua b/games/default/files/3d_armor/hud.lua index 343089cd2..a5c5def54 100644 --- a/games/default/files/3d_armor/hud.lua +++ b/games/default/files/3d_armor/hud.lua @@ -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 \ No newline at end of file diff --git a/games/default/files/default/textures/default_pine_needles.png b/games/default/files/default/textures/default_pine_needles.png index 3bb219567818c6efb64032d3ef59b23da116ec7f..bab92f60b581c51ccaf18abc7e2dfd546618fece 100644 GIT binary patch delta 1091 zcmV-J1ibsvD$EFw7=Hu<00013M{Ml?000tDOjJbx000>#6(L0zB~uq3I2I^i7=y~< zK>z>%0d!JMQvg8b*k%9#1L#RaK~#8NRg^(@qc98xh0@%S67JTAxf3gU&w_g|wEX|S zvKXh`^pbh=o=5;|LRnUb}*b&Hs% zMvXY;N!a|bMt|=Df=IIXR}ln;n6X_6B3?`;^n~yU3nZclrc;Xf%7CDli4X~SG-a58 zSb@x|37N=Yb|v>bK_MrT>!ipJUL@EG+pQ-Rig^m8*7okwEtkg#MX-*v80$bl_W>5d zE)(RGOk?0~J&fCTnph#!E!gG3<`BokvKE826HN^1Hh*n&m&`*l2|h7wL?+06qMW4L z8a=DHd(u^IdddvBAs#K3{tY=!!`EO2j4s1$%tbx<%xfLWj zgw!2#6NG83i{xJSYEYIgq<56Lj7apoijQM6X;Fs3w=##A!F04m1RT3PEP*G}zRt~W zs}WizL7+y%UdJFI!sUA|Ekf3!BoqWx`a+1#r+==_!4+hyy1Rt$LMe}Y5gnqlXun3X zwM!VzAL?(g*%UL`rO_dec9CHN8M-9rO*CbQQ-hK}P~g^{ofNWmn<$jgI!tGNqH_Qz z5}3D*;^W!<6FOH5WC~LblwhU%Xa1fp1>FjAH$h9tnN8(%pI<=iMA9z`MV>tgTZ=rs z;(xNyE?|lM`0V}{RJtM;GW2|OAJ*T1Pyi$wQth69fj$5VEGC^0HhjU_ zXZP=~hL$nZH*PkCg0^ksWHc;L|yoR1{-7fs&l& z6g}bSey#a$6>M#y)P9bL@BUG{R}`$k(|>N1r2Et0+^w~HJpfc|N$C3@XsbO-!B5@P zDA8;8a`A%ybqfegSiidu_jxSvinlrSl&5h1-+iuGr;1E)`rSP$QU${2Nc^k&Y2bp? z@nK;j!u--bGQyGna3G_1ijSA>anINh?wc0G4A2+->i+A%sapSKEq(p&{x+;TzC3NT zjbwT49zGQOSVNQr<4^ad{SuuT)ljfoAbRaS$gu5z=nnVY>>q!S39D@5i&X#s002ov JPDHLkV1gy25>NmD literal 5457 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 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"); } } diff --git a/src/defaultsettings.cpp b/src/defaultsettings.cpp index 46d9c51ab..f07125e12 100644 --- a/src/defaultsettings.cpp +++ b/src/defaultsettings.cpp @@ -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 diff --git a/src/game.cpp b/src/game.cpp index 6e25725bf..f21d4a77c 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -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 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; diff --git a/src/hud.cpp b/src/hud.cpp index 66c7e0d12..e07f14a3d 100644 --- a/src/hud.cpp +++ b/src/hud.cpp @@ -328,20 +328,10 @@ void Hud::drawLuaElements(const v3s16 &camera_offset) core::rect size(0, 0, e->scale.X, text_height * e->scale.Y); std::wstring text = unescape_enriched(utf8_to_wide(e->text)); core::dimension2d 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); diff --git a/src/inventory.cpp b/src/inventory.cpp index a079d8c4e..c3a306cec 100644 --- a/src/inventory.cpp +++ b/src/inventory.cpp @@ -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)