]> git.lizzy.rs Git - dragonfireclient.git/commitdiff
Add object crosshair, disable entity selectionboxes by default (#9523)
authorLoneWolfHT <lonewolf04361@gmail.com>
Tue, 14 Jul 2020 17:12:17 +0000 (10:12 -0700)
committerSmallJoker <mk939@ymail.com>
Tue, 14 Jul 2020 17:13:04 +0000 (19:13 +0200)
Adds new object crosshair base pack texture

builtin/settingtypes.txt
doc/texture_packs.txt
minetest.conf.example
src/client/game.cpp
src/client/hud.cpp
src/client/hud.h
src/client/render/core.cpp
src/defaultsettings.cpp

index c787aea2cbe6f189242e55a56ebdb5921eeb4104..c0620542d3daf9735965f128c4b146663b722d30 100644 (file)
@@ -741,9 +741,11 @@ selectionbox_color (Selection box color) string (0,0,0)
 selectionbox_width (Selection box width) int 2 1 5
 
 #    Crosshair color (R,G,B).
+#    Also controls the object crosshair color
 crosshair_color (Crosshair color) string (255,255,255)
 
 #    Crosshair alpha (opaqueness, between 0 and 255).
+#    Also controls the object crosshair color
 crosshair_alpha (Crosshair alpha) int 255 0 255
 
 #    Maximum number of recent chat messages to show
@@ -817,7 +819,8 @@ world_aligned_mode (World-aligned textures mode) enum enable disable,enable,forc
 autoscale_mode (Autoscaling mode) enum disable disable,enable,force
 
 #    Show entity selection boxes
-show_entity_selectionbox (Show entity selection boxes) bool true
+#    A restart is required after changing this.
+show_entity_selectionbox (Show entity selection boxes) bool false
 
 [*Menus]
 
index 94151f1a48d7a7149ca4a3064cc7ee03572501e9..e7a7dfd3cc2d116595140de2b189e25862411faa 100644 (file)
@@ -72,7 +72,12 @@ by texture packs. All existing fallback textures can be found in the directory
 * `crosshair.png`
     * the crosshair texture in the center of the screen. The settings
       `crosshair_color` and `crosshair_alpha` are used to create a cross
-      when no texture was found
+      when no texture is found.
+
+* `object_crosshair.png`
+    * the crosshair seen when pointing at an object. The settings
+    `crosshair_color` and `crosshair_alpha` are used to create a cross
+    when no texture is found.
 
 * `halo.png`: used for the node highlighting mesh
 
index a5f98ee5e8195780a75763f4e48c220ba65395cf..5201257130cfdbea1f86ec5447d4f1f41034da77 100644 (file)
 # autoscale_mode = disable
 
 #    Show entity selection boxes
+#    A restart is required after changing this.
 #    type: bool
-# show_entity_selectionbox = true
+# show_entity_selectionbox = false
 
 ## Menus
 
 #    so see a full list at https://content.minetest.net/help/content_flags/
 #    type: string
 # contentdb_flag_blacklist = nonfree, desktop_default
-
index 5f3ff56490471ec51d9d5c51981f0f9be3de71ae..42d60b21cdd0712583712edfc028f2efd9eb66bd 100644 (file)
@@ -3176,11 +3176,14 @@ PointedThing Game::updatePointedThing(
        const NodeDefManager *nodedef = map.getNodeDefManager();
 
        runData.selected_object = NULL;
+       hud->pointing_at_object = false;
 
        RaycastState s(shootline, look_for_object, liquids_pointable);
        PointedThing result;
        env.continueRaycast(&s, &result);
        if (result.type == POINTEDTHING_OBJECT) {
+               hud->pointing_at_object = true;
+
                runData.selected_object = client->getEnv().getActiveObject(result.object_id);
                aabb3f selection_box;
                if (show_entity_selectionbox && runData.selected_object->doShowSelectionBox() &&
index 31e633bc2618c2d89c2668d7bf063376c2e13be5..2b347c1e0b8f0cfdc1d435f5dcf0827583fb3ace 100644 (file)
@@ -41,6 +41,9 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #include "gui/touchscreengui.h"
 #endif
 
+#define OBJECT_CROSSHAIR_LINE_SIZE 8
+#define CROSSHAIR_LINE_SIZE 10
+
 Hud::Hud(gui::IGUIEnvironment *guienv, Client *client, LocalPlayer *player,
                Inventory *inventory)
 {
@@ -76,6 +79,7 @@ Hud::Hud(gui::IGUIEnvironment *guienv, Client *client, LocalPlayer *player,
        selectionbox_argb = video::SColor(255, sbox_r, sbox_g, sbox_b);
 
        use_crosshair_image = tsrc->isKnownSourceImage("crosshair.png");
+       use_object_crosshair_image = tsrc->isKnownSourceImage("object_crosshair.png");
 
        m_selection_boxes.clear();
        m_halo_boxes.clear();
@@ -601,6 +605,31 @@ void Hud::drawHotbar(u16 playeritem) {
 
 void Hud::drawCrosshair()
 {
+       if (pointing_at_object) {
+               if (use_object_crosshair_image) {
+                       video::ITexture *object_crosshair = tsrc->getTexture("object_crosshair.png");
+                       v2u32 size  = object_crosshair->getOriginalSize();
+                       v2s32 lsize = v2s32(m_displaycenter.X - (size.X / 2),
+                                       m_displaycenter.Y - (size.Y / 2));
+                       driver->draw2DImage(object_crosshair, lsize,
+                                       core::rect<s32>(0, 0, size.X, size.Y),
+                                       nullptr, crosshair_argb, true);
+               } else {
+                       driver->draw2DLine(
+                                       m_displaycenter - v2s32(OBJECT_CROSSHAIR_LINE_SIZE,
+                                       OBJECT_CROSSHAIR_LINE_SIZE),
+                                       m_displaycenter + v2s32(OBJECT_CROSSHAIR_LINE_SIZE,
+                                       OBJECT_CROSSHAIR_LINE_SIZE), crosshair_argb);
+                       driver->draw2DLine(
+                                       m_displaycenter + v2s32(OBJECT_CROSSHAIR_LINE_SIZE,
+                                       -OBJECT_CROSSHAIR_LINE_SIZE),
+                                       m_displaycenter + v2s32(-OBJECT_CROSSHAIR_LINE_SIZE,
+                                       OBJECT_CROSSHAIR_LINE_SIZE), crosshair_argb);
+               }
+
+               return;
+       }
+
        if (use_crosshair_image) {
                video::ITexture *crosshair = tsrc->getTexture("crosshair.png");
                v2u32 size  = crosshair->getOriginalSize();
@@ -608,12 +637,12 @@ void Hud::drawCrosshair()
                                m_displaycenter.Y - (size.Y / 2));
                driver->draw2DImage(crosshair, lsize,
                                core::rect<s32>(0, 0, size.X, size.Y),
-                               0, crosshair_argb, true);
+                               nullptr, crosshair_argb, true);
        } else {
-               driver->draw2DLine(m_displaycenter - v2s32(10, 0),
-                               m_displaycenter + v2s32(10, 0), crosshair_argb);
-               driver->draw2DLine(m_displaycenter - v2s32(0, 10),
-                               m_displaycenter + v2s32(0, 10), crosshair_argb);
+               driver->draw2DLine(m_displaycenter - v2s32(CROSSHAIR_LINE_SIZE, 0),
+                               m_displaycenter + v2s32(CROSSHAIR_LINE_SIZE, 0), crosshair_argb);
+               driver->draw2DLine(m_displaycenter - v2s32(0, CROSSHAIR_LINE_SIZE),
+                               m_displaycenter + v2s32(0, CROSSHAIR_LINE_SIZE), crosshair_argb);
        }
 }
 
index 6f4c5462615887f4da55a812ebaaf6b8a7659778..ba34d479d82a7fcfe9bbd13391606abfb03270f6 100644 (file)
@@ -45,12 +45,16 @@ class Hud
 
        video::SColor crosshair_argb;
        video::SColor selectionbox_argb;
+
        bool use_crosshair_image = false;
+       bool use_object_crosshair_image = false;
        std::string hotbar_image = "";
        bool use_hotbar_image = false;
        std::string hotbar_selected_image = "";
        bool use_hotbar_selected_image = false;
 
+       bool pointing_at_object = false;
+
        Hud(gui::IGUIEnvironment *guienv, Client *client, LocalPlayer *player,
                        Inventory *inventory);
        ~Hud();
index bf5aa6c2c3d78508ffbfec1646107de1d49a85a5..92a7137eaa7fea99388f0cf2c137d7f11cb60750 100644 (file)
@@ -86,6 +86,7 @@ void RenderingCore::drawHUD()
        if (show_hud) {
                if (draw_crosshair)
                        hud->drawCrosshair();
+       
                hud->drawHotbar(client->getEnv().getLocalPlayer()->getWieldIndex());
                hud->drawLuaElements(camera->getOffset());
                camera->drawNametags();
index abb6593b7515fa4cb38b26b1c0d20a798e916cc2..07bf0ebb8ad2d48e3c2d548ae18c7c348c30c012 100644 (file)
@@ -225,7 +225,7 @@ void set_default_settings(Settings *settings)
        settings->setDefault("desynchronize_mapblock_texture_animation", "true");
        settings->setDefault("hud_hotbar_max_width", "1.0");
        settings->setDefault("enable_local_map_saving", "false");
-       settings->setDefault("show_entity_selectionbox", "true");
+       settings->setDefault("show_entity_selectionbox", "false");
        settings->setDefault("texture_clean_transparent", "false");
        settings->setDefault("texture_min_size", "64");
        settings->setDefault("ambient_occlusion_gamma", "2.2");