]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/touchscreengui.h
Fix Android node selection distance (#6187)
[dragonfireclient.git] / src / touchscreengui.h
index f4f1766c91042e1db53788d0b86535ebc7ff3b10..da97381cd4fc080616ec4cd0f864ab882c0b772f 100644 (file)
@@ -16,8 +16,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 */
 
-#ifndef TOUCHSCREENGUI_HEADER
-#define TOUCHSCREENGUI_HEADER
+#pragma once
 
 #include <IEventReceiver.h>
 #include <IGUIButton.h>
@@ -76,7 +75,7 @@ struct button_info
        float repeatdelay;
        irr::EKEY_CODE keycode;
        std::vector<int> ids;
-       IGUIButton *guibutton = NULL;
+       IGUIButton *guibutton = nullptr;
        bool immediate_release;
 };
 
@@ -114,11 +113,10 @@ class AutoHideButtonBar
        void show();
 
 private:
-       ISimpleTextureSource *m_texturesource;
+       ISimpleTextureSource *m_texturesource = nullptr;
        irr::video::IVideoDriver *m_driver;
        IGUIEnvironment *m_guienv;
        IEventReceiver *m_receiver;
-       v2u32 m_screensize;
        button_info m_starter;
        std::vector<button_info *> m_buttons;
 
@@ -126,15 +124,15 @@ class AutoHideButtonBar
        v2s32 m_lower_right;
 
        /* show settings bar */
-       bool m_active;
+       bool m_active = false;
 
-       bool m_visible;
+       bool m_visible = true;
 
        /* settings bar timeout */
-       float m_timeout;
-       float m_timeout_value;
-       bool m_initialized;
-       autohide_button_bar_dir m_dir;
+       float m_timeout = 0.0f;
+       float m_timeout_value = 3.0f;
+       bool m_initialized = false;
+       autohide_button_bar_dir m_dir = AHBB_Dir_Right_Left;
 };
 
 class TouchScreenGUI
@@ -156,6 +154,14 @@ class TouchScreenGUI
 
        double getPitch() { return m_camera_pitch; }
 
+       /*!
+        * Returns a line which describes what the player is pointing at.
+        * The starting point and looking direction are significant,
+        * the line should be scaled to match its length to the actual distance
+        * the player can reach.
+        * The line starts at the camera and ends on the camera's far plane.
+        * The coordinates do not contain the camera offset.
+        */
        line3d<f32> getShootline() { return m_shootline; }
 
        void step(float dtime);
@@ -172,23 +178,27 @@ class TouchScreenGUI
        IEventReceiver *m_receiver;
        ISimpleTextureSource *m_texturesource;
        v2u32 m_screensize;
-       std::map<int, rect<s32> > m_hud_rects;
+       std::map<int, rect<s32>> m_hud_rects;
        std::map<int, irr::EKEY_CODE> m_hud_ids;
        bool m_visible; // is the gui visible
 
        /* value in degree */
-       double m_camera_yaw_change;
-       double m_camera_pitch;
-
+       double m_camera_yaw_change = 0.0;
+       double m_camera_pitch = 0.0;
+
+       /*!
+        * A line starting at the camera and pointing towards the
+        * selected object.
+        * The line ends on the camera's far plane.
+        * The coordinates do not contain the camera offset.
+        */
        line3d<f32> m_shootline;
 
-       rect<s32> m_control_pad_rect;
-
-       int m_move_id;
-       bool m_move_has_really_moved;
-       s64 m_move_downtime;
-       bool m_move_sent_as_mouse_event;
-       v2s32 m_move_downlocation;
+       int m_move_id = -1;
+       bool m_move_has_really_moved = false;
+       s64 m_move_downtime = 0;
+       bool m_move_sent_as_mouse_event = false;
+       v2s32 m_move_downlocation = v2s32(-10000, -10000);
 
        button_info m_buttons[after_last_element_id];
 
@@ -206,9 +216,6 @@ class TouchScreenGUI
                        std::wstring caption, bool immediate_release,
                        float repeat_delay = BUTTON_REPEAT_DELAY);
 
-       /* load texture */
-       void loadButtonTexture(button_info *btn, const char *path, rect<s32> button_rect);
-
        struct id_status
        {
                int id;
@@ -258,4 +265,3 @@ class TouchScreenGUI
        AutoHideButtonBar m_rarecontrolsbar;
 };
 extern TouchScreenGUI *g_touchscreengui;
-#endif