From 62feade05da387cd6b230e7a0edf558c6fd7c099 Mon Sep 17 00:00:00 2001
From: Kodexky <kodexky@gmail.com>
Date: Tue, 9 Dec 2014 23:27:25 -0430
Subject: [PATCH] Add extra buttons to Android GUI. All icons are licensed by
 freepik.com under CC BY 3.0

---
 src/touchscreengui.cpp               |  86 ++++++++++++++++++++++++---
 src/touchscreengui.h                 |   9 ++-
 textures/base/pack/camera_btn.png    | Bin 0 -> 789 bytes
 textures/base/pack/debug_btn.png     | Bin 0 -> 960 bytes
 textures/base/pack/drop_btn.png      | Bin 0 -> 561 bytes
 textures/base/pack/fast_btn.png      | Bin 0 -> 935 bytes
 textures/base/pack/fly_btn.png       | Bin 0 -> 783 bytes
 textures/base/pack/noclip_btn.png    | Bin 0 -> 1151 bytes
 textures/base/pack/rangeview_btn.png | Bin 0 -> 1604 bytes
 9 files changed, 86 insertions(+), 9 deletions(-)
 create mode 100644 textures/base/pack/camera_btn.png
 create mode 100644 textures/base/pack/debug_btn.png
 create mode 100644 textures/base/pack/drop_btn.png
 create mode 100644 textures/base/pack/fast_btn.png
 create mode 100644 textures/base/pack/fly_btn.png
 create mode 100644 textures/base/pack/noclip_btn.png
 create mode 100644 textures/base/pack/rangeview_btn.png

diff --git a/src/touchscreengui.cpp b/src/touchscreengui.cpp
index a04b7fe5e..1a5d42e9d 100644
--- a/src/touchscreengui.cpp
+++ b/src/touchscreengui.cpp
@@ -40,10 +40,17 @@ const char** touchgui_button_imagenames = (const char*[]) {
 	"down_arrow.png",
 	"left_arrow.png",
 	"right_arrow.png",
+	"inventory_btn.png",
+	"drop_btn.png",
 	"jump_btn.png",
 	"down.png",
-	"inventory_btn.png",
-	"chat_btn.png"
+	"fly_btn.png",
+	"noclip_btn.png",
+	"fast_btn.png",
+	"debug_btn.png",
+	"chat_btn.png",
+	"camera_btn.png",
+	"rangeview_btn.png"
 };
 
 static irr::EKEY_CODE id2keycode(touch_gui_button_id id)
@@ -62,17 +69,38 @@ static irr::EKEY_CODE id2keycode(touch_gui_button_id id)
 		case backward_id:
 			key = "backward";
 			break;
+		case inventory_id:
+			key = "inventory";
+			break;
+		case drop_id:
+			key = "drop";
+			break;
 		case jump_id:
 			key = "jump";
 			break;
-		case inventory_id:
-			key = "inventory";
+		case crunch_id:
+			key = "sneak";
+			break;
+		case fly_id:
+			key = "freemove";
+			break;
+		case noclip_id:
+			key = "noclip";
+			break;
+		case fast_id:
+			key = "fastmove";
+			break;
+		case debug_id:
+			key = "toggle_debug";
 			break;
 		case chat_id:
 			key = "chat";
 			break;
-		case crunch_id:
-			key = "sneak";
+		case camera_id:
+			key = "camera_mode";
+			break;
+		case range_id:
+			key = "rangeselect";
 			break;
 	}
 	assert(key != "");
@@ -186,6 +214,11 @@ void TouchScreenGUI::init(ISimpleTextureSource* tsrc, float density)
 			rect<s32>(0, m_screensize.Y - (button_size/2),
 					(button_size/2), m_screensize.Y), L"inv", true);
 
+	/* init drop button */
+	initButton(drop_id,
+			rect<s32>(2.5*button_size, m_screensize.Y - (button_size/2),
+					3*button_size, m_screensize.Y), L"drop", true);
+
 	/* init jump button */
 	initButton(jump_id,
 			rect<s32>(m_screensize.X-(1.75*button_size),
@@ -202,11 +235,48 @@ void TouchScreenGUI::init(ISimpleTextureSource* tsrc, float density)
 					m_screensize.Y),
 			L"H",false);
 
+	/* init fly button */
+	initButton(fly_id,
+			rect<s32>(m_screensize.X - (0.75*button_size),
+					m_screensize.Y - (2.25*button_size),
+					m_screensize.X, m_screensize.Y - (button_size*1.5)),
+			L"fly", true);
+
+	/* init noclip button */
+	initButton(noclip_id,
+			rect<s32>(m_screensize.X - (0.75*button_size), 2.25*button_size,
+					m_screensize.X, 3*button_size),
+			L"clip", true);
+
+	/* init fast button */
+	initButton(fast_id,
+			rect<s32>(m_screensize.X - (0.75*button_size), 1.5*button_size,
+					m_screensize.X, 2.25*button_size),
+			L"fast", true);
+
+	/* init debug button */
+	initButton(debug_id,
+			rect<s32>(m_screensize.X - (0.75*button_size), 0.75*button_size,
+					m_screensize.X, 1.5*button_size),
+			L"dbg", true);
+
 	/* init chat button */
 	initButton(chat_id,
-			rect<s32>(m_screensize.X-(1.5*button_size), 0,
-					m_screensize.X, button_size),
+			rect<s32>(m_screensize.X - (0.75*button_size), 0,
+					m_screensize.X, 0.75*button_size),
 			L"Chat", true);
+
+	/* init camera button */
+	initButton(camera_id,
+			rect<s32>(m_screensize.X - (1.5*button_size), 0,
+					m_screensize.X - (0.75*button_size), 0.75*button_size),
+			L"cam", true);
+
+	/* init rangeselect button */
+	initButton(range_id,
+			rect<s32>(m_screensize.X - (2.25*button_size), 0,
+					m_screensize.X - (1.5*button_size), 0.75*button_size),
+			L"far", true);
 }
 
 touch_gui_button_id TouchScreenGUI::getButtonID(s32 x, s32 y)
diff --git a/src/touchscreengui.h b/src/touchscreengui.h
index 8dc482034..4fe731513 100644
--- a/src/touchscreengui.h
+++ b/src/touchscreengui.h
@@ -38,10 +38,17 @@ typedef enum {
 	backward_id,
 	left_id,
 	right_id,
+	inventory_id,
+	drop_id,
 	jump_id,
 	crunch_id,
-	inventory_id,
+	fly_id,
+	noclip_id,
+	fast_id,
+	debug_id,
 	chat_id,
+	camera_id,
+	range_id,
 	after_last_element_id
 } touch_gui_button_id;
 
diff --git a/textures/base/pack/camera_btn.png b/textures/base/pack/camera_btn.png
new file mode 100644
index 0000000000000000000000000000000000000000..f61b0cc4a434126f32321ffecd63476ad8dc10e8
GIT binary patch
literal 789
zcmV+w1M2*VP)<h;3K|Lk000e1NJLTq002M$002M;1^@s6s%dfF00006VoOIv0RI60
z0RN!9r;`8x010qNS#tmY4c7nw4c7reD4Tcy000McNliru-V6)@6(tt6-68-00-{Mo
zK~#9!?U~O@RY4TTzc*i+ks(D!5gL(YSSH~jqS{K)Cfc<vv!ZO#N;Cp#k@!yp5mAel
zS#1&*k@N!#Qc>CkwMbK2Bs_heHaEBo?_TeF_o>(3`M`q*GvApxXU@!=nJXEFVHk#C
z7=~dOhG7`xg|}KA0h=VXNotbRC~3Q-t$y*mq-jZ0lEx){@H}r}-Fp|<33LHNzyk64
z1H1-q0Cnrp@DspOAWL$xz!Ttj>X!h}D(SwYcBd#O>5HUcNu!d+Bz>1O>zCI`+9j!3
zQmdrX{(pCTgOa*E&-;|N8LtKgfJJBaz5%^JLlJH61@8E51X%?7f$Fpve+rm%1~~~_
z1}Y<TH9)iftBI&r1#|#YP9GD%$+a}x1A2g^z@X-UYd}SarV_XcymfR-z#E_w*chU%
z0Imb`j;?zxjIRP7Iy3SDsE^Pz0ndR8z;573$g&v&4o0-o0K9ZG52B*2)W&ZChMigH
z0lWy!AwPuc@|4}qv-8gYP0K`IuM<T>z~+@Uz7lv9=yVo18zWjKfxd{){*}iG6U)si
zaL!+L{}>EgLZw>sj{}|k1dhef-SX>SjHojbk^|g~(S92+9nd^lDF<9}LbN5O?xU}{
z8{ycQ5C^=E*~d{QiY}Gf_<G=X;2ds`soMtReBBRVM?{3=BL~#R?CVTmL!ATml+pqB
z0)y%=K-c0J^c6Vo=Kzf%r+~}h0{R;W==$PlGDW1!*#xQfK1t6C^#6te>Sl}7t;!N8
zhIA}}gqz^I1P&NU#U_~W80<{ofR5B0g9#F$4Dh)K<41u^Y7(J@sqle_vpyfw!2Z;w
z!X>y2jmI!P-IpP|4%>ss|MethkD}%NEME2>M(op=VHk#C7=~dOhG7_nQD*!F5B2bC
T#=b{r00000NkvXXu0mjfP7YyO

literal 0
HcmV?d00001

diff --git a/textures/base/pack/debug_btn.png b/textures/base/pack/debug_btn.png
new file mode 100644
index 0000000000000000000000000000000000000000..66bd41f7abc7e16fa061b881747ba2920177ee4d
GIT binary patch
literal 960
zcmV;x13&zUP)<h;3K|Lk000e1NJLTq002M$002M;1^@s6s%dfF00006VoOIv0RI60
z0RN!9r;`8x010qNS#tmY4c7nw4c7reD4Tcy000McNliru-V6)@7bz_@^NRog15HUp
zK~#9!?U-F?j$s&p?{`KcYY}54VX>ulprjOqA|fftfiZI6r~IvOKqNV#{2gEp{6shu
za%7gjG*%*iOK2k6vMsd6w#&)==IQBszkS&HUa$K)`M&S|dA|3)-{-lX=YB*C!!QiP
zFbu;m48t(~GlJe26c{QZ%|Q@!II<cM`79!LMC4u&1osn{O`s335oiUrIr2iFi(k~o
z<(YGPF!(|dxhNttRI~#?L?((zi8tHsCGqX|1D=u@uYtMhHvm|alq4)5bGm?|nv70h
z>c1X*E^wPa=P}T?oBt>Q^5PcwVPFNYCq+=zz-(YRFa}r$d`gpqW!~6hflEMv{(b|r
z0fXZbd~up!jzsv31{yruCSW-bc(xZ+{}gzq-@gG9bjA(Kb^<CQf`0+zr16{M+1Ezc
zt&SM~3-Ao61^Q$&0Vg9KaC<j?0r1hW|L(qhpd8o_Gy@&LCfzLt0S6twI-n?<2^a<}
z25P(nEXlyP*7I2pl&J2iBd<!~drNiG<5CMYd%<k!#y$slA2EB%fGNOb{k=AY|9;h-
z0E**~fSLZ9_6wS4KR+V)=CF1+_2o<o|7yqQShj;N0FI{!W@m)`NT;IvTvMA;;E8i!
zss#E1`M_S4zX1+~C(3Ll;6a+L@Deati&rVI0r=qAv;a$i13<ZsnXgOau@=Zw%!<qU
zU(DaJGGg3uS}UfhU8l~Ruy*W=(`oRUKGfCUXovuwr>hk@b{X&kxal0eE&!wAlz=f|
zN2k;GgxCM4V|fPS=L6&ZrN(HmPT7#J+9*{4=N)-Fu+{OK0Tcm?fOEi_SiR}rNPxf1
zopW^kfmgbfm8xtAa9U?gz4itn6|w68Ge|%YunIT@yz~z<s&|jR<GmT<(x_WrGA>P0
zBx@mXCWBhh01QlG0<L?3?$%{e3_Nt?Z^K?8X}8EN?zZUZr#reEz>uDPhMX+tAV);p
z#_5}<Z*#uS6p>wtN<a_<KSZR-5lsSCggu6c?DbskCb0%orYLx=dPWFo)9bMjNlZYl
z-t07{*#WNf<{FeNFM|#dnI|G6MC6g9Y8R0%{jBS*XGqFyC<o5!rD~pDik66B7=~dO
ihG7_nVHk$dbNmFcKF<cw=UvnQ0000<MNUMnLSTZ%CbS#?

literal 0
HcmV?d00001

diff --git a/textures/base/pack/drop_btn.png b/textures/base/pack/drop_btn.png
new file mode 100644
index 0000000000000000000000000000000000000000..58789e4582874c826306a017f3d32b9cd27a4765
GIT binary patch
literal 561
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Y)RhkE)4%caKYZ?lYt_f1s;*b
zKpodXn9)gNb_Gz7y~NYkmHi$M52LuHLDS>+3=E9>JY5_^DsH`<wOfxRP~!Oi<En|V
zivlW`O;YwYRIq;J(8@o=yh0_eAumvnRl2pU!zn*jX;I?#iSyHrynVAF%`&}gU;OsX
z>3aX~*QD#+UzZ}$mIy>5!s1!S9Xu~ZeEN9H@_UHH>jO3y9`v$p2vA{UuX(C*WMc_y
z(S_%c*Wy(eFD5YgG;kU)svTgN!5|Ffv@UthfA8yVRb4NsDO+C6S)G0-ZvGNg&;Ci*
z<`kd5c#EZ~@oc$opO(QJ$?`Xu9djy<@v7ghSUQQLGwi@F^&55u7gjMWV0lw{Ecb|1
z-JEAN6F$ssnDSx0&#?-@HJ-aNKiyrkWbOH>7hF<2gIq7gOjg`JNiTVA6X$|yMbB29
z-19Ar!GJ|(*_wJ*AD7x_##0CGnqPi+XY(JX8@`e6<z}2by7w#l)C*c4=l`^yQgHQL
zcicUdC+0QMDo^Zd*f{43{}UIo(y!qbvNHd(-2GXU;^E~U8h$^@g_bo0Kj6_gZP4_<
zXxhh&OaG)eOaAbC&VHkJ#pa%(&22?#rOSdLA4@zK_1<5$Sl!^p!t_d!b&Utt&E@se
uw#aO0X{`JC|ND1&lTH6VBtb)Ys`xtPx+I~A)qcRpW$<+Mb6Mw<&;$T61@N%|

literal 0
HcmV?d00001

diff --git a/textures/base/pack/fast_btn.png b/textures/base/pack/fast_btn.png
new file mode 100644
index 0000000000000000000000000000000000000000..4572a7b54ce1edaafd0bbc908d62cb26c127bf7d
GIT binary patch
literal 935
zcmV;Y16cftP)<h;3K|Lk000e1NJLTq002M$002M;1^@s6s%dfF00006VoOIv0RI60
z0RN!9r;`8x010qNS#tmY4c7nw4c7reD4Tcy000McNliru-V6)@7Zn0pj|>0+12joQ
zK~#9!?U+x9l~okLe`k6#sSOoTR8v&iKO~4~V=7qC!aymAT(pWXH$jwCi^LYS2#Hps
z&>xJbmAPnBB2iLALPS<Bk^zHhF_9v~)HGRR&acfK`1ttd>%DJY_1?VugSWZ&ob&Fv
z=iKw%b0L$-WHOmdCX>lzGMP-KhfyC@zfw=DpQ@XdYBT=D#SQ`Mft3x^&qT!WlD+4E
zmr8Q;z~+efxEG_f(dL{}R~2lHs(&sbd!i>ZAT9hlpw&QiHX=?J?5qR6sF7b45oee4
z*}t|XTc*{<fo%1VlXn6efUAMufl1)Ah?t6qDfL5ObA{@7M3`(`2y6#NfHxyzrXQla
zRh_7b@R#Zqbxb`{7@t?)NKT`+)I){&k9ytl5p{nDh4FKBy}Ci&rmij7db=e5eOHU1
zx(m3Yfv@L*mm}hvf~{fT{Y6r`b{W7S;2>}e_zSofcoMj^B=>McyxYwhFxoKK7XT|t
zV|y!{{{$EZCV(q|J*g&?1GY8&>e$_m^Z!@suTJN;$WtYmF?F`V{b5dhrq|E@rRgfW
z!1EO{uQqW0uzGt>U4&{j;RfI#U?L(uD9zmjoB)O^RHu{PjleZ&>?CkBA|{v1rRQKx
zly@%oZf{*heOTb6I@0a`Y%OuY7pE%UDZfR;xr*@@YmVjah?wi8Xg#uoZf~N(-liJ)
zW2wESmonfz;Kzo#r%KMR0QS|$KN}JA%k|uc`c_T!zf)WN?BGyJ@0%;;E>{n<ab&(#
z@9NhLI9zb#h`LjKT-~Ss(m~xgufCG{h`w=tO^3yCR=r1kP(51H6^`}G28^haZ8|@h
zp1z9u52WvZ)mLF<zih&l>R$EiB92d~yVTJ|^e<9htI*rijrB#FPTUV{>CpBJ@WR5g
zlzIuU5x5N)0?q(m1IHJhwEkfY+kgW}7vK+IZAAR=Uu?kBz<nLso&z3>h@ZNcP2<25
zg`xcsv4cS&wbDPA`v2>fVsogUHXtIVf!7N|!|6GULCS)wN(FUBy=)*dAZ5WR;GM$I
zC~)_nWx*Qt*TUs#HG_tFi@H5MuVpfsOeT}bWHOmdCX>mu&EH%D+2K_HnacnG002ov
JPDHLkV1lNG#C8Ax

literal 0
HcmV?d00001

diff --git a/textures/base/pack/fly_btn.png b/textures/base/pack/fly_btn.png
new file mode 100644
index 0000000000000000000000000000000000000000..a095b92a79d3dac0f44c5d3782b9ebee9f9b7afd
GIT binary patch
literal 783
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Y)RhkE)4%caKYZ?lYt_f1s;*b
zKpodXn9)gNb_Gz7y~NYkmHi$M52J+4A35!G1_q`%o-U3d6}R5bh|f5iC~<uM`V*{6
zkF@^roNT=<%&RRRBJ$KTe=pC8I~T+#cuuLVUw0?qom%~3m$Y?d8;@mdJLx5~F6Ek7
zp<&IPJ?i=U@6F$Q|IM7ak8S2#%`Lw7yz<`n%Kdx)s~$GsK|(!Thf)jK%)D<YXF6Pp
z_4J=p%q*(N@IdA7ukO<emQ0^i^{0IO61(SjF8nuP`q93PZI6LvVG$GW^vMk2e?%rM
zk)E`zKUuH2?#map`Et+iY@Z~kV8|6UxA^OUP*3a6Ewxj>cwEx<G@Uffd)CyAFZ(CO
zsj$2%J=ZHzdV)dw=V7;aGu{_!_Vx|j2ktD`_ws<%1Bn9JinBK=`0p^!>Q+3|9J9Lf
zQ`UoEm7UKuJ?}HV`m`mK_YK=Qrd-Xh$0H&#1dB>sb7m`X&SkmAyggW`j_b{d8HZC6
zI4?YL4{#5N_g=`lf?w+PtVf&mFI{xYU;R~C;h6P<gkv@5RA1c)=vjF|ZZ?<T{>z<D
z>X@>bt91*sU3(NCuozeez2|z6sIqM3jP9hqzQ7-GekxWxS5#`U8ncsQIA(|DG#pcC
zYzsVgr+>|Z&&qY(4WBEm?#{j4tJYI6^}K+w@h0mSuaAG<yv;q3l_0ud$C7hb9M$F0
zduB6#VgJ}J{4KRHH|u1aRzs}gqU>V=|BoIoQ#*D4*Qb4x_D3<zja<gGLH@^t8Endp
zwT=P%w&=XO?s(|0=C@r_)^;zca9FMXE6$9c=fE_V`aGuNe=Y5MR|V|pm~s2mtEs9_
zHDoTaZejV)E-X8bea^{Uo2M)iX#cb816u`~jK>Y>AeLLwf9#@y-ZQcaWVS82l5YGw
z#<6&g$;14jbG*O(wz;1X5A|elPulIcv@?Kp4%4y|sLABxGxO_3uR}it)LaB6T?S8A
KKbLh*2~7a1En&(4

literal 0
HcmV?d00001

diff --git a/textures/base/pack/noclip_btn.png b/textures/base/pack/noclip_btn.png
new file mode 100644
index 0000000000000000000000000000000000000000..1aadad414e22eb6b26e4c0a5a13548d9922f4faf
GIT binary patch
literal 1151
zcmV-_1c3XAP)<h;3K|Lk000e1NJLTq002M$002M;1^@s6s%dfF00006VoOIv0RI60
z0RN!9r;`8x010qNS#tmY4c7nw4c7reD4Tcy000McNliru-V6=|IR{oI{RjX61Pn<;
zK~#9!?V3x79Yqv|ztgwxLY+|)ANVA`f=JLYJ|IR^5Q#fQaN#4m2neF?L=YdKXxvCp
zOb{1QM2K!gF_@i#D{&DGf@l^|qLF|S%!nuoP9GOJ4ac%-=H9;D_ja&;D5g2Ly1LI_
z=ULN`k&%&+k&%&+k&%({KZLZon5u3E&HySvXRMcq$lWVVEL(o?CBQiW0X50mCHcYn
zGV1zm6HwXs95|F9K%GolBtmVR0^B$&0_vAI2<!`#S0l$OUbt&%;klJr;0>eRSa#`y
zHq?y;;6z|QaMY1dOz0LGak*X);GgpnaFLU}4eW}{mxcsXO{}TtC=h92miGn91Ka~#
zJjw1QEN(2cO+b|xDWAOBWeg3jW6GsQW3=r8f7@8HQIqm#V*c-@?2^k4le)ufEI?IP
zo0*>nYyj3cBHl^3%O`HmT3{0}2<nJV3#zgO#TP7?t#jgYf!l#a3wH0De6yvg1Hj8J
z6I=znU~{emo|#t3SWc+?!@!PZrkn~q1l(owHak<VYk&>F)<{a5N+~T9D8ChWA`t&#
z=KQOb#UU1f-M|mP*{1xuK>01U&R~rCKwZE+3wVHI&A>ICSb(ao50u{vTo1f%CjJrd
zEHI2%#Qn<z&_{tIru<X_VN(~l(_QZqk!y{Zde?4?D8C%`T1;4UJ1@PB0V49Gs#d_6
zz=Q6m0Wfd*J%(3-D}WO$1s(uC1rFQ2<usL_C<uzk(}|dJY2ub$mJN1CnxJ8#F_PXA
zkicocTtxnd)dItaiKnVM>9qwUus$Jw!?MHB1-R5MPtE*WB|ud#16D<TIs)u*J73IN
z>8_fg4-@hot}j@rZ9YB;P}L72?QV@9Bc0w<>ipISP}Mc6`jo2P9LVQXb&uu!6n0uU
zT)IxN>I(^@#(;0lhf&p|z&BO{#LC@+rqqQ_b_Z~aH97n3xiV}2AIAj-?s^rlF{1om
z*4};(YzH0(es;gl1KX_g>x~tRO2C!CS1XwL9PpE+x*_m|9fj=-<~|3U><&Tt?*bz7
zC2+Z_o)6p#oNoU7ort{WVnVHa>DGSNTxOeF@)6+qp!(BUxWia=fQTH5>}a^&z>V6<
zz6M?d9y8fSJ2^Vs*4bVk>HvZrEdnw=wg6e<UgC$K$29@5X2uiomYaJMuzJ>YLD9jQ
zv19GJ1pW;8El7`{^4f4TBCzO)*w_o!R`Hsfw-6j>H65u+bL!n-sC>o0|3NAi3l@M2
zfL9W8o1ki94P{3$;3STn|4BeV{gQ9m-@*#3Hco+R<>$w#Fv|{NN@2CarpSwgJJe<h
z?8OHX^|{_CpU8As_>4?I+usP4fj`a)^*2IGWMpJyWMpJyWMpJyWMupY{{R6UOU=5!
R&O-nI002ovPDHLkV1m655jp?>

literal 0
HcmV?d00001

diff --git a/textures/base/pack/rangeview_btn.png b/textures/base/pack/rangeview_btn.png
new file mode 100644
index 0000000000000000000000000000000000000000..fbcd80a1df893b560fb1dd05cda0ec17221b98c9
GIT binary patch
literal 1604
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
Cf7rbM

literal 0
HcmV?d00001

-- 
GitLab