From f447afb4f7c424da9e4148b4a2178a3bc4be705c Mon Sep 17 00:00:00 2001 From: Insality Date: Wed, 25 Sep 2019 22:10:44 +0300 Subject: [PATCH] add kenney assets and start gui screen --- druid/base/text.lua | 32 +- example/kenney/assets/fonts/exo2.ttf | Bin 0 -> 110068 bytes example/kenney/assets/fonts/game.font | 17 + .../kenney/assets/images/back/back_blue.png | Bin 0 -> 438 bytes .../kenney/assets/images/back/back_gray.png | Bin 0 -> 585 bytes .../kenney/assets/images/back/back_green.png | Bin 0 -> 440 bytes .../kenney/assets/images/back/back_red.png | Bin 0 -> 442 bytes .../assets/images/buttons/button_blue.png | Bin 0 -> 480 bytes .../assets/images/buttons/button_green.png | Bin 0 -> 474 bytes .../assets/images/buttons/button_red.png | Bin 0 -> 480 bytes .../assets/images/buttons/button_yellow.png | Bin 0 -> 452 bytes example/kenney/assets/images/empty.png | Bin 0 -> 14525 bytes example/kenney/assets/images/kenney.atlas | 60 ++ .../assets/images/progress/progress_back.png | Bin 0 -> 439 bytes .../images/progress/progress_fill_green.png | Bin 0 -> 471 bytes .../images/progress/progress_fill_red.png | Bin 0 -> 479 bytes .../images/progress/progress_fill_yellow.png | Bin 0 -> 458 bytes .../assets/images/radio/check_back_circle.png | Bin 0 -> 817 bytes .../assets/images/radio/check_back_square.png | Bin 0 -> 535 bytes .../kenney/assets/images/radio/checkmark.png | Bin 0 -> 366 bytes example/kenney/assets/images/radio/tick.png | Bin 0 -> 293 bytes .../assets/images/slider/slider_back.png | Bin 0 -> 153 bytes .../assets/images/slider/slider_move.png | Bin 0 -> 897 bytes example/kenney/assets/sounds/click.ogg | Bin 0 -> 6952 bytes example/kenney/gui/main/main.gui | 561 ++++++++++++++++++ example/kenney/gui/main/main.gui_script | 35 ++ example/kenney/init.script | 24 + example/kenney/kenney.collection | 107 ++++ example/kenney/lang.lua | 12 + example/kenney/templates/button.gui | 135 +++++ game.project | 2 +- 31 files changed, 970 insertions(+), 15 deletions(-) create mode 100755 example/kenney/assets/fonts/exo2.ttf create mode 100644 example/kenney/assets/fonts/game.font create mode 100755 example/kenney/assets/images/back/back_blue.png create mode 100755 example/kenney/assets/images/back/back_gray.png create mode 100755 example/kenney/assets/images/back/back_green.png create mode 100755 example/kenney/assets/images/back/back_red.png create mode 100755 example/kenney/assets/images/buttons/button_blue.png create mode 100755 example/kenney/assets/images/buttons/button_green.png create mode 100755 example/kenney/assets/images/buttons/button_red.png create mode 100755 example/kenney/assets/images/buttons/button_yellow.png create mode 100755 example/kenney/assets/images/empty.png create mode 100644 example/kenney/assets/images/kenney.atlas create mode 100755 example/kenney/assets/images/progress/progress_back.png create mode 100755 example/kenney/assets/images/progress/progress_fill_green.png create mode 100755 example/kenney/assets/images/progress/progress_fill_red.png create mode 100755 example/kenney/assets/images/progress/progress_fill_yellow.png create mode 100755 example/kenney/assets/images/radio/check_back_circle.png create mode 100755 example/kenney/assets/images/radio/check_back_square.png create mode 100755 example/kenney/assets/images/radio/checkmark.png create mode 100755 example/kenney/assets/images/radio/tick.png create mode 100755 example/kenney/assets/images/slider/slider_back.png create mode 100755 example/kenney/assets/images/slider/slider_move.png create mode 100755 example/kenney/assets/sounds/click.ogg create mode 100644 example/kenney/gui/main/main.gui create mode 100644 example/kenney/gui/main/main.gui_script create mode 100644 example/kenney/init.script create mode 100644 example/kenney/kenney.collection create mode 100644 example/kenney/lang.lua create mode 100644 example/kenney/templates/button.gui diff --git a/druid/base/text.lua b/druid/base/text.lua index fff35e5..b60a141 100644 --- a/druid/base/text.lua +++ b/druid/base/text.lua @@ -16,36 +16,40 @@ function M.init(self, node, value, is_locale, max_width) self.max_width = max_width self.node = helper.get_node(node) self.start_scale = gui.get_scale(self.node) + self.scale = self.start_scale self.last_color = gui.get_color(self.node) if is_locale then - self.text_id = value - self:translate() + self:translate(value) else self:set_to(value or 0) end + return self end -function M.translate(self) - if self.text_id then - self:set_to(settings.get_text(self.text_id)) - end +function M.translate(self, locale_id) + self.last_locale = locale_id or self.last_locale + self:set_to(settings.get_text(self.last_locale)) +end + + +function M.on_change_language(self) + M.translate(self) end --- Setup scale x, but can only be smaller, than start text scale local function setup_max_width(self) - local metrics = gui.get_text_metrics_from_node(self.node) - local cur_scale = gui.get_scale(self.node) + local metrics = gui.get_text_metrics_from_node(self.node) + local cur_scale = gui.get_scale(self.node) - if metrics.width * cur_scale.x > self.max_width then - local scale_modifier = self.max_width / metrics.width - scale_modifier = math.min(scale_modifier, self.start_scale.x) - local new_scale = vmath.vector3(scale_modifier, scale_modifier, cur_scale.z) - gui.set_scale(self.node, new_scale) - end + local scale_modifier = self.max_width / metrics.width + scale_modifier = math.min(scale_modifier, self.start_scale.x) + local new_scale = vmath.vector3(scale_modifier, scale_modifier, cur_scale.z) + gui.set_scale(self.node, new_scale) + self.scale = new_scale end diff --git a/example/kenney/assets/fonts/exo2.ttf b/example/kenney/assets/fonts/exo2.ttf new file mode 100755 index 0000000000000000000000000000000000000000..49f0b491d9e3e5581aac064ce8f3134ba5302488 GIT binary patch literal 110068 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 literal 0 HcmV?d00001 diff --git a/example/kenney/assets/fonts/game.font b/example/kenney/assets/fonts/game.font new file mode 100644 index 0000000..5bc9993 --- /dev/null +++ b/example/kenney/assets/fonts/game.font @@ -0,0 +1,17 @@ +font: "/example/kenney/assets/fonts/exo2.ttf" +material: "/builtins/fonts/font-df.material" +size: 40 +antialias: 1 +alpha: 1.0 +outline_alpha: 1.0 +outline_width: 2.0 +shadow_alpha: 1.0 +shadow_blur: 0 +shadow_x: 3.0 +shadow_y: -4.0 +extra_characters: "" +output_format: TYPE_DISTANCE_FIELD +all_chars: false +cache_width: 0 +cache_height: 0 +render_mode: MODE_MULTI_LAYER diff --git a/example/kenney/assets/images/back/back_blue.png b/example/kenney/assets/images/back/back_blue.png new file mode 100755 index 0000000000000000000000000000000000000000..73dcfd099a9a353f4a10e5c72b6f004a69484ab8 GIT binary patch literal 438 zcmeAS@N?(olHy`uVBq!ia0vp^h9Jzr1|*B;ILa_EFuHiUIEGZ*dOOSB>qvmWvF9pr z2d>>?j;Lt4bKu^+>LuPzVFD_lEmxHU);Rq$-JNtJ=wL<5_MeNC1x2<`GXG%vBjMT7 zpMNES&Is?%DkKVoJ{oy`STtRbufQ{K+O~zh7=PeO+XXeM;)m5uzbx(eM@X9{EJrCISPf4{j zpPn6kJNQGB^q)zoH?K#mS<_hhx4R+!l1Zs+phdSn*8$$T&c{DwUFSXb`_F%$*$=Ez z;uunK>+MzBzFP?*ZGrC- zrcF>iGig&xq*K&&v10*Ci`u8CZfKdf;>C(PM#oI1={)%nRU>%0M?}-&?9NNZ_6}d= z7$d(Gy#D&@ciQHkp`lmpZsl!X{I53i{*7Har?=ajkC&6(v`8avx%ix(ulF15!d741 zE~#AdsIg+vy4N2IEP8w|pV|35=9c-kzO(N&-W#9za=gFg;`hB<#rEB>S$HJeZJOOG zzvY+zG$l$Ld;Qg_EY^J9`E=WbH_XiX);>=9ZP4+4icW3c((K#UGPp&fmwWTgcgWj5 zd!g7n?+F&ljEqby9SsbE0t!q_E)ES0j7ka)EKm`L1`ZAZMu-RpQ~_9oEG^ zy~6J`z|i`!eBJAf?|)y^t=?FfBhQvN@oD8hqmy$UHQvoLH}g$i+NuW(rOU@dBT@=o z1NR(be)-$wv{~+dIkuaR@7~w6Kd8ekC?8yZPxA6#wjU=I{leW!R|8{Ox5PD~Bsf2< zq&%@Gl_9B8FDWNKKP9D7FS)3)pd?=}GdD3kRS%d}j7(hflJiqii&n7JzXNJy@O1Ta JS?83{1OU}w?F|3` literal 0 HcmV?d00001 diff --git a/example/kenney/assets/images/back/back_green.png b/example/kenney/assets/images/back/back_green.png new file mode 100755 index 0000000000000000000000000000000000000000..8ec8548257fd83bae5e6556e0e2962713ab54f4d GIT binary patch literal 440 zcmeAS@N?(olHy`uVBq!ia0vp^h9Jzr1|*B;ILa_EFuHlVIEGZ*dOK^a-w_9q*7vhN zGH{6WE%D!wCCk=%K*4bKEZ^H#5>{nhn{wsAIluZZTug0CYz|!r{x)fnLxgMEB;%8w z@AjJBpFVq)5#7MrIT zrv5B>6+4A@&gQo+mrCb4ZoU;;&G|3-0C(O8?ylVL5>p!7wkt-Rv7a@a-JGYnobmcn zOMAaV?u=(I&R)Qxs^Q4#70@I!1v~Rce&_Y=>H4e(zAkPtOw(GoP2BPB^+xeK52o*0 zw>&L3zj+da{*HtCu7NdcRi|Vp?EU9@K)-U{?p3Q|I`p{?@YZ=={vzudInD1s|9xh^ z4^7g4CZ*oAofW`b=P{>MXQIl<=h?FZRrpG{KW=~Sv^da&?|b8c_Xk(Mk)QqU+eNWR zpKf5l>Xx`hlmzFem6RtIr7|Q{>Lumm=clAp>LnLd7L?@cW#%TPr|JQt#>m7qFF8LY VwP*!f{X3vW22WQ%mvv4FO#ru7*LYr1&e zfm^yaZtiONvVO~jr~<*Vmy;$OQ)^wak&}g+_vhxz9G@PDN=+{~+u7$5P;>P$-yClC zG_|we4VUZ+fAZSIxA?}k+=%O6c`tq6`&suCo8O01pAuduf2n8uu46Eh)vBiF+}+bh zFU~oeb$+*ow1xO>&LyvRah)yL`AO){`Udek55z_Izi(g0VzP_(V$#o#U*Fy8ef%Q! zz*ftf_x%pJGoHORdjX58h9jp}K$FlE?93ZmkKF!s)0?s2uU25_)tEKs`F!qPZv+}W zeUr}fXPP#qs*G_3&GDObe#doB%}&_+&-H+Q=B!5^$Xn+*=?Pcw)dqQ?Tp$lYK+@O?!sw(>wIq z@6_u6gI2f1HKHUqKdq!Zu_%=xsZuW~CqF+WrBW}ssIs6WUoSH^F+Eie7&%5Ju6fD% XDXB#(*y`T_H8Oa*`njxgN@xNABP+qD literal 0 HcmV?d00001 diff --git a/example/kenney/assets/images/buttons/button_blue.png b/example/kenney/assets/images/buttons/button_blue.png new file mode 100755 index 0000000000000000000000000000000000000000..5ec356abdb80c8e4f9d6982e17c2b36363e60814 GIT binary patch literal 480 zcmeAS@N?(olHy`uVBq!ia0vp^h9Jzr1|*B;ILa_EFy?u>IEGZ*dV9;(i`h})*vIc2 zjFUZ+5|y*G9FN>mu4uWkD=RfoHS>&;N5NLn#R?pCOF7m#cFQ>G=&W%G5Ych5Ibd=A zNMuMy)VTwjKOB0q?B`#}ptBt{c0a4E);{{2W@z_1=~TAt+uIh>b3UB9&Msf;^53-J zc7v1c+Fkw1*4L~4JUMvo%F*5Bk8=vFjQ<4nUDnVdjV$H9o-|Sz! z+`sC_i$H$aJJsd|2cNIWGe4sHp>WgZXR806AGm4GBL5a zpQK6ey=~T-u~;&R;m-Ya+`KNHp{^%m1sIQUuHRhGAYLW5OZ;eEJ}?4wOI#yLg7ec# z$`gxH8ImgXl5+C%Q&KARl8Y(}O7itGa}(23^?*@mWa65aoS%|fw1Tbv9Z(~Kr>mdK II;Vst0E(^9rvLx| literal 0 HcmV?d00001 diff --git a/example/kenney/assets/images/buttons/button_green.png b/example/kenney/assets/images/buttons/button_green.png new file mode 100755 index 0000000000000000000000000000000000000000..1da6a098e69127a23e17fc1ff8aa851d7912e8e5 GIT binary patch literal 474 zcmeAS@N?(olHy`uVBq!ia0vp^h9Jzr1|*B;ILa_EFlKnVIEGZ*dOPc&my@GN+xgof zMaoTF>sf?mIx2d#2u|C6PeDLQX>qo|+NiDjFPH@_VlNP7Q53qd%=Igq?V%_3WlNY= zKjrzuY(K|%^G`dz&9el5#z>zvh|W!&wDxt0bZ4H?v8@`?76-NC#m!<{{%Jqh#x(U= z&XU=?%TF)6r+s_Q-dt<(ROaPI&HL?JH*}}HU-&}h$BKq>gWe6=8fAIU+uGUphHm~J zVYKyJS23gbk13(c6{8Y9e_8rU<}4)WGT?w_;K_wBw1S6^#_xSDhP`Hnw2ZM?zmztV&0OD7+g zGCA|{<9?=s=6JEk4`f|mCY^fmx4`xRi~f#-`a9h&I6cljpucnR#zp6aK7Z{zm_PeZ zq1MMhhCBE7aqAv=9BAjaw~F!pbC&g+>KVR?t5u|0eozJmy>5wXL`iUdT1k0gQ7S`H zrCw4_ett?yrCxGTWkE^4US@7$da52U@{CMe^OEyZQj1ow)xQI3WbkzLb6Mw<&;$Sw CXUqNo literal 0 HcmV?d00001 diff --git a/example/kenney/assets/images/buttons/button_red.png b/example/kenney/assets/images/buttons/button_red.png new file mode 100755 index 0000000000000000000000000000000000000000..7263038f44aabaa2d43b06114e99893c461ed46a GIT binary patch literal 480 zcmeAS@N?(olHy`uVBq!ia0vp^h9Jzr1|*B;ILa_EFy?u>IEGZ*dOK^c7qg>C>wD%I zZ~UZkMR<}D6CZN_V320rcwvLruLzcUE^fz~NhP~(ahOeG)D{+Q97|$5ccAfS=DvRG;Jbo9W%mBM@yItSv;6Xo<~zAzYw`ol3Yxw)r*{K{MN3WXks@BQC=_vXa6 z=eE>l`rdl}Y)3g`_`dMcIr;3Lk6KT>-D`2&iI+WEIF2jh!16U!OI_5f9&B!C6PmJs zMODL*(<`6}2lKyT;an+mM}8jm7o9(KK5R~BuiF_V?`gAbm1C*@LGHW{r;m1No@&~b zi37gHwf=}z_veS>kFCg0OmSNKd;^i zst4ZNtxWOUDVrkNcIW;+?zz`awMPnlJ>1a$>p|!@{_q5|==n26UjZXPx5PD~Bsf2< zq&%@Gl_9B8FDWNKKP9D7FS)3)pd?=}GdD3kRSy`2MkcO#$@wX%MJw3q-vKo;c)I$z JtaD0e0swMb&0+um literal 0 HcmV?d00001 diff --git a/example/kenney/assets/images/buttons/button_yellow.png b/example/kenney/assets/images/buttons/button_yellow.png new file mode 100755 index 0000000000000000000000000000000000000000..e00e7e3e7f53f821720bbcd24cbb30a84a55aa19 GIT binary patch literal 452 zcmeAS@N?(olHy`uVBq!ia0vp^h9Jzr1|*B;ILa_EFa~+LIEGZ*dOK^cACsd zzTfAzROQ`ciyc7ee|P-OoKH7-mSU*E#<@@TiK_X}gGrZcBjjhuSec)*{ND7zN$*qY zntx^wx>Fwi)$sYTU-5Yu=dq?E=Vni6QBhIk^z?8NnuLRSXWJ#VZ*Sw<{=Arb@T>mYziJ65eCu46M{L@$ z-{byt){3G@)9*ZS4>_)@9_CzkC!{bbYSFB}+g@I~utCG&UGICRK;Eepg=s8xZgJ=T z@m3TRR=#A2dI=0<-4fS`lHmNblJdl&REDHVy`-G{{FIbRz2u_Gf|7i_%-qEER6Src d8JW1|CFiH47Oh~be+Sga;OXk;vd$@?2>@K%!|4D3 literal 0 HcmV?d00001 diff --git a/example/kenney/assets/images/empty.png b/example/kenney/assets/images/empty.png new file mode 100755 index 0000000000000000000000000000000000000000..5da9ec0922e6066d3284b286ec892cc4f6745636 GIT binary patch literal 14525 zcmeI3O>g5w7{{lqgu0dXgjPsg*7AaQb;eHOw6UC2B`LHL?pAFO>7JO_lh$ft8{65W zJs~*l4NiOlBu*T-a^S)TK;nSJC*Z~vBt)69Q|C#Vbav4mCsN|a z@Zr6U*ESGB_xAVNN9?%9zw0lv-v{@9e##DaqrH=a9pB{NwRi4*{RpA0*Zod6?K&S> zZa6FvFYM9MWEe38LiY9~BJMd&l^#9ygNFL&k3Xr3?={p zOXEr@j8Cyquh+3&#^tic6k2i-q-3H6$-_L!b)Gg&+}Mv&KMWL}m-NC>+E7(qsQ66p zYZw)Uf@I2$QN$AxVWXtuWhT!pJkcl~WL@)IOb2vGgEV12W2rAX3)3(;3s;mZF0U-i z#>8=o+DrR894;-Lq`OZTf+^Ca&ZKh@QG7&`a1^_A_X)d|hs*9h_4~8Inajkltn53T z_$zGuN^Z-hLOwz^yH~3fQ<8>pCkzM8e3l(vBUD-~KC3pBw;ba70q6R*jTcR`5ufFw zZIaR^^KNN+S<}r z$RjCvrYukk@_4S*591+8oBoiTQXB=RHl8&CWihX;RyYV_)-Bqs*mzkpaAkAN+7FVH z1TNigH(5i;_dUz2dVT59Z=s3`RBXv7;M|{0Z zQ+v;u8rW~7eiZv`uOkDX;k|#}5=+wDD7EJ&Y=&Ndnak#HwwoQ(&*odNFAV%_SBglS zP`>6G>h+>4wy|QD;+|~nTEyl1S<~f9f_gTdYn^qga87Oh{~f?QKd`T^F+QWgZ3`+- zm8n)INy2_QCNbSPWpm=$R(qaz-ndx6#{3^(;Li_5-a0=**K_vfh}wK(v)F84JtNsD z7&gAqHmjWLyL?m!qg=1E4>tJk)CsRHI!|tO!mEqUnepSmPn+dwv4v*f;(KqtEgZAQ z1lp{bX2rDeV)LTo(4Wvjx9zj_oA6o5cx0Bv_NBg)6+X~D_2t6^{?4;e%v;&R0((xu z#e>TH02j;P1qZVmdclcdI#~qL5XKUh5D^qeT#$w^mbiq7pg`h+G=#ClB}4=T5*MT) zj3q81A}El!APr$GaS0JYfy4!A2xEy$hzJTKE=WTdOI$)kP#|$Z8p2rO5+Z^Ei3`#Y z#uAqh5fn&VkcKdpxP*wHK;nWlgt5dWL<9vA7o;JKB`zT%D3G`y4Ph*C2@yeo#06;x zV~Im3(^qA5|T3HAJHNWRgVz6f>EBsFrZLF19!mz@gYWfraJhv(ETSj@GYK?4KWGOir7>`s5qYqeh{jdvmtm z-o8o4-s!T5u+6S3#am>1#lH)i%L<)Wh?>86zb)_VlFhGoy{xf2-*YlC=={ZRch?_S zw&L|KV>=l>_T?#?=4IGK^*`(0k#YOmap5AXxyv4ZesaJA7X#l{K4^uLXChOhdesB|3fPbVO8=c`A2AI?NQhJ-#?2_ zKYi43;?&n)t+vbd>TBDVzwW#Jw=Q3I-pQ&(A65T+uUuSN^*8!wX3?BPiEE+r6Ymz} zZMO8^e$(dc+hf^(z86}gNd3vXm$C1RdGCii-m)z*%R!-A;u=vBoS#-wo>-L1kW{Ic zl#`#Il2WOcTvS<5lCPJUo0y)e2aFjb6W6@t{FKz96>RnIfEpP*UHx3vIVCg!03Afe A<^TWy literal 0 HcmV?d00001 diff --git a/example/kenney/assets/images/progress/progress_fill_green.png b/example/kenney/assets/images/progress/progress_fill_green.png new file mode 100755 index 0000000000000000000000000000000000000000..195fa3b5c826478d705a92cf713f4311ed5a01c5 GIT binary patch literal 471 zcmeAS@N?(olHy`uVBq!ia0vp^`+!)NgAGUuv|TJx3ba4!+xb^m~trxSSM8iYd zsXrYzgu4ies;FHQ)?jftV$$?T*QPP@2y+BylZU{f)&(EgUr#UsGNFnT|E8=hkOhFA@+yO9~^%u z)CkyNa36BZLlIUbKMsG0uKcTPrmo-n=^d*)di&y!iXYLX7IO=4?~FE+ z><{Wb*1hn2rK-N#tmV(|pYT8R;>%V`*{_nzgwOe!J-_d3=AUi7{>{;P`RUG<&FlHP zJD*Md%6YnBVo3%=|5H%tm$*ih1m~xflqVLYG9*>%CFSJjr=(QsB^Ol|l;rDW<|d}6 g>H%ZU$iy`-IX@+}Xa!sSJD^4ePgg&ebxsLQ0B6L|WB>pF literal 0 HcmV?d00001 diff --git a/example/kenney/assets/images/progress/progress_fill_red.png b/example/kenney/assets/images/progress/progress_fill_red.png new file mode 100755 index 0000000000000000000000000000000000000000..32f5f4c823ad80b6ed6af7573f68e6963fa760f6 GIT binary patch literal 479 zcmeAS@N?(olHy`uVBq!ia0vp^`+!)NgAGUuv|TJ^+{O!!M4H+?Cy8jr(BooDZhm`xGV1HS`LVfAAOD!-cQm8?;DHrWGpxSOjVs^uMbXwk zIj;}3-z0Xq(K?n7>QD8f+kaQz|w)eTAZ0X7}Aj%==T_sDFm zdwW3Zu)lTQ`)c3WA6IP6*c0_n?Do9NnjNJbY%X{A%v~40+HSS&cC*=^_04B5&%QA8 zHE;Kya|J6F|IoL7^CW%ccmCvuO|Q3F_-lh=p~N+!Bsf2PCYmvgxm_mj4yo=?@f6XCZCDWTOtG?ILFfUe4MJ;Jx>u*qkEzk+hs`Hd zu0BjRy6d^p_Hp7X-?o=2C9~EYej9me!%MI87t2iM)y>5&DiyJx6Rk!of-Rfyq6X!?b=q)YcC;W`s;J2eoYJiA@+yO9~^%u)Ckyd$fI-n zKeU1oF9&u-KlXoEe)x-!c>d{o*Qa;)DF#kY-JWSJl^6YO1-3<{QQ)ZO1n>pYtyH-)1YEgO<<4Mm z;;mNe6PL&hObEo|0o`s_4F&_{x~`f|r-?ouk5#|lSGH|yU|_CRt35vq1pn;+$cR6P z17@?C%3_DZK}{x;2ryjGdQc|;E4^MX0_1wVs^jsfw%e^*tybTBy) z&Nk9TGX+NK2yzLtt^5z@?*WQu8LFo#K&R8`dzP`oW3n?*rKPjcqM_@~k5rR=45&?j zK_ue+OwZ2v1LhN&iCV-OB*qY1HdjZ6t?2e4+XllG=tpcAB@SnD{w-R}f}K&)EbYi9 zTU6I)s>|6r!cKhk!AG2n(ERcQh50-_EvBwS%s9+O6djnt*qN7zVaRCC(?9P2KukT6 zDS&#kKH)Ol%>YU;uWD@o{xmI&YgoragKyWQ$(PSYbV>kc; zP4f5}&1@o=ho5Os4!8h-Eeui;*gX#oWQ79$^_x++vwg@nALt9Lp+qD(bs~VciK%V+ z(F%;@4&>I`Q3$S_Z)9b1s0M%T00000NkvXXu0mjf12}Fm literal 0 HcmV?d00001 diff --git a/example/kenney/assets/images/radio/check_back_square.png b/example/kenney/assets/images/radio/check_back_square.png new file mode 100755 index 0000000000000000000000000000000000000000..f17bb8f1c3b230bb63fa035a524b48d66b946ecc GIT binary patch literal 535 zcmV+y0_gpTP)b;@5Ji2193e-@QF4SFAxB6{hh!Nrl`A?+Y2CS^L!zZ~<;s$684yUewees1ubkkJ zM3{w0JJJ+*SMwjcv&DSN>IvJnpJub!TazJkKA($Av#FD@p6j~rlgZ@Oahyl%r@*G6 zApQvKjYgvf>&z)-+#H6Xh@wcuaV&F)I3ACx-e$8AK@fD|qTbVM7S`C{`@SfOLgpEK~Ikhl8l=T591pw7~!t1%^h% z$JJ`3pipE8m~)xuxzs{H8w_CSUZdJ<;zuIY(R!CC?}s z)?n;4_L+K}cX?t4%zzm%17^Ssm;p0j2F!r{e=v+yx}c!NDg6YDQ#h>vj8wYEH)yxx zTi6Bj@Nv0ZY8`l?!3haoNeedax;)Rc2sreXWjUBN(3hwU4O#@eMwmNaO_h+Q3jGTm z0WD~r*aLkw6iyB{(KP{48yXyP(dXZKWLUV7aW}Sp6X-b{YuCuT0!##;lb&kh1Jp*k zLKL&8p8x;=Ep$a#bW?9;ba!ELWdLG%E@EtNZ)9Y7E@N_eaCC1jX>DO=WiC)oM=~@; ZZewp`Wpbznf9?PP002ovPDHLkV1oWj>|+1` literal 0 HcmV?d00001 diff --git a/example/kenney/assets/images/radio/checkmark.png b/example/kenney/assets/images/radio/checkmark.png new file mode 100755 index 0000000000000000000000000000000000000000..3ad298eb9edd4736467b46deca80533553925983 GIT binary patch literal 366 zcmV-!0g?WRP)20002|NklTgDT#unK_mr!B;c3tN=n(+oBZnhamjZ(Y zB?v&Ag3})Ju_*x2*uoLr>nIKZ#U3_SfGmN8Bf>IV7?i}2!pU<#KE=cs2#P$C10S!q zfsVo&tDqPo%Rpd+;!K<1hyW@e$w2go!3ID{i8OB$naF{WQcsM57!gBGz9uSS@Bw@| z2XDj>;o5v`hEiO1q9-$wOCOxc3>plu>`D~?F0p_SN2)#mB<}3~V;LW)0000jbVXQn zQ*UN;cVTj60AhJAVr*}3WMp|RV{&KQKGBibQV{c?-a;OG>?f?J) M07*qoM6N<$f|??c=Kufz literal 0 HcmV?d00001 diff --git a/example/kenney/assets/images/radio/tick.png b/example/kenney/assets/images/radio/tick.png new file mode 100755 index 0000000000000000000000000000000000000000..f0c945d3c71e288e259a904740c04f7f40f5eb16 GIT binary patch literal 293 zcmeAS@N?(olHy`uVBq!ia0vp^f*{Pn1|+R>-G2e8&7LlfAr-fh6AmzL>bE-id|uI3 z_hURqn)Y0N_pf!i?R)Y0U;p*uDzNS_QGR^L_}=?szg;hrB?2lg zDbJH&e!w>OlTH64r3vC5h730qTC_j3Fgi9j*d;Lh?2Tb|*zsb^^QwS^Yr#nz9Q;bo zCwe8PNHD49d+{);222XlGUF*?vDw@>$>`;}4{zK(zb*LUF!Z!aBj<5dfu4h0U47w$*5hcO-X(i=}MX3x)m3m1z x`S~d+m3qlVl?5gFdYQS2>8W}^yNyg-^OEyZQj1ow)xQJj^mO%eS?83{1OPx5Fy82_iaK76ZA-rZ2gZ>Pu2V&KUaHMF>^E@&_|xHAvl2r%d`mtLq9 zP;Ub{{cK0|%znrmeUCmF@O;O`rCpQqTud=dI1yij6XyXEk5lz+b!qvRq>)T@Pxx2U z!RU&>gZ=k51x#L6T1D^NM@b_jAn9vWf#@4};KcO0IR(Br{QP?%U~Hz4db}HQ2&=D= zsvDFozJS~p3C0FR_E9j2dO~NlQ-xE2;xYgs&Mtftk(+j)D>~BE$qvgKC0!O6>WLyp ze={s$)JV?>JFp9O;w+)#bHs$~1k-kz7cJzp9z`v&i<`8W8DohVoz?{)1ls_`-7yth z@i-z_>Ok%a5VB!N(8F4)jdYPdS72-%K`!Bp8$SZ{{{f0u89a?EKvn-|LY0LR9?s51 zm$rk076V--zwyl090O_>V33KXc_!Xj{{j9)rm%xv#2!Q&60x<^5z|)o_^`(Y(`ED{ zfV7pQIpc$6iko64JFv}79*rz<$d)zrS?ad8j<6G7eee){5r$uppy1ErZZUNwV#UE5 zaoB<>*v_IvY~-LTTKx23`#%s}&_Vn*n`+HMEGN5S{$JifJU4w(CnPFj72_7I#Mg7hdf(#i5r7DW5-9YjWDh zG7v)m001p?MObuGZ)S9NVRB^vVtFoNY;SL5WO*)Qa(QrcZ!T$VVP|D7P) XZ)9b1s0M%T00000NkvXXu0mjfT`89A literal 0 HcmV?d00001 diff --git a/example/kenney/assets/sounds/click.ogg b/example/kenney/assets/sounds/click.ogg new file mode 100755 index 0000000000000000000000000000000000000000..4f17f1cdd3f3554546329fb2d84f330e7c17263b GIT binary patch literal 6952 zcmbU_2{@Ep+YiZ>BxEURgqIQ3Fk)m&gs~4JYZ7BGF(@=r4K)Zcwy`fmqj*bMi@eEF zma%1`q*8<;#3X6{Gt~RN-}hhF_g~k49LKrubD#5^d%q7WZ*NP?DJ~o zkmd*r3_j(HXQMa`Z~r2h-5{>xuww80yRmn20ElN~DM84P^=~a`)5bwauztkqFw8yB zF4P|8ta=cEIEYk5y22Dsx#Mx3u)s4g2j8le#74WbC-&6MM--ok5!m)YdjC}@2 z?KvP`fI*nUTBCcDu@EE#K_}(lf~j7na4NY_F+7uO!k)DrBxRCGtr8vyh_>GY4C%Q8 zg1De)MZU!12~)owl(&RJVsHV<*HW_##uI1r2F3Sy=?{-HrT0ty&-B3MdAB-l2JA!n zCNeRi81``LnoO(&7_LeMcgU3G1oJE1EV#_C+5x*_t~yncYN<7Kvp7*}TJe6b!4{SK z{b+NpQ{8Q%~! zy(`*zSE{>D&T2u~Mnt_&&B)fy0t;HG>+vugBP^5=MsUoGajqjc*2Or#h;e1cxJ$(T z>fZ=sOm<&q9mW9_$fDB6;YE9Q7QI6iZ6e0r=7c=iB7yOx?1iTko0fX{Rr+Sv_}r>F z-C3pFStYPe0+h?ez7161ODX+d-ODi@_kVYNpAIERAIP#jNUA+Z&Ilvd9<0o>F5wOc z=u{u0+!~BD#v|MD+MpYU7(OMNcYihC_FD;TwL_3TLaH@L>M4*0Mr9ya{WxBSfwy1) zQLrWQ-`k~idjX8d^<4b_xTH$*brI)hUjS{4MD4>aE z5Bx>4%T}nTWoEByFrY_r9Ox4MEUUF3tCxcBF%_UtH)i3&**q1ret?sl%n@vpbO&_4 z{S+SBumjlZ*h`tXSuYA^ByzSwb-mrjdB4npb|RMB_bE}CQkhigkR-v>0z?PAMEZK-F*NOpHAYf_8ghA^a~K2> zh1RY3_polt8&+JB5~uV`@m`l|r!srE-O{5qbEiejtFLLzlyZipp>GM)H!t$W^sjAqj z>0s@!$HPuLW`w@1jd6VuI>sQ3F|NCb$Nr~b{p~pra2n#ePm)h1Alh@TSQ_wcDEPPM z1c|oaka~JU&a6t#qF=dt0co{}>=QAvL0Z`EaP8X>Iv|F#J>)u|jvK(@o`>OvYjDoB z1jm|R4zuAlV~o&$cn;e|_M#HUO;Wi2-XPxmHKXjyqvv?Bih z@Eo7Gvdp-$YjKm;5*115z9dR{eNn)(%9)1$v;XZm#=&x+1J5xEmive2G$W*r0&l8P zwpiTYQKt_GG{i{!p9+AW=41i0^*CaKQF)G0e~wYX+Ufjvj{&RCkro3;AlNhrk_4d; z-bx`_ryQ|Fe=_oIgYi^we}EGuQeVVRWg2wYSSxu7NWRy9I*5oBT0G@ZCTh?XKTpLc z968WdhcQt6ix-4FF31LgxJ~z(%9$=8i%h=Cb<4(SZ;zIX&`z2(&Ffe^FAbTBhD*~^ z4R1`&YlEc1AqalO3<_oTaYk!$K=E?n(xwaADeuFP7NRn7DW#;nbTx}SuQ+pCY+?B? zkfK0Y2lEuml|Yy*pK9=YS>xXM3oM;(2pF!Bc?sNJ&dSz;;zdDrBS}Sm23YxSHSBMY zW`NbP4RI}}YWW|hta z;~ZmEBL4ha<%+PR?{dn~p4W%=4!7B5mxjJ`^B1cIJclrNEznUb2H! z0ow@lO`zzOAZ0T^zGw(sDRtZ-eUen92+~5i5;&2*?qCCU*mSCIo^Qn=2SGz48vz$Bn1rPPnX+j8)UJBvj1Mf^@NV5kpWJMYKI13B1TCbY*T=so6Q^$tohiDZoXre`L{aqK_#4! zgj9PK5S)1*QpL0%X(MU`1Z9@O7KDvDHVx;?77maM5DO43+i<7DOKIgGK-eAs3Jluy zc>2Gj!U4VE6NL0PAG)1*7K0RX@aaH9Fkn;&ZW&JjgANIzr~xmWDkKa+2j74y>7;?A zBGOYHO6CX2u9yr`mMPWX8e$Sg?#ILkdGs7nq*8Ap+F;}qjK7UX!VyJz>QIrt3;@v; zMhpWs=oF7Bw?q3?v`SFzXk-8)&@?<6fF5KFlk60KcSw;Mq6(_5if+`TC#buewm|wm zpfo&u$32voT6DJ=sEZQ{2ie{L&92IXWT+AzU5Km67;%ZJmow4!Ao7XKnKImLec0uL9uBi_a67XS(igSsASo4$OQJnHY8K3 z1lzb^M0Pz$Mg!LHJx6$C0I0~ey7d{zdDfWeOuQgF`?2Y$gTHqG5U2x)YGZ*&#{8ZE zI#3Y*-a!@yti%AEJW&|UD_=s!@UwTosYHwcD4c=SP|4P4cp(`u5A4T4aUGOr=X-f} z&X)(PV1bNQEM(JB$!uiW`T_>c2VfvGHVRBO#&r~&3O)po>nLF~yF$mH*H8XUhvsLa z;8dVb;Fr;mtdhzTOSMXEPGeD3bN!gu+guO^SU>wdfJ{BXX8jX!QXA*4Z)Fecn`|8P zH|qZfax{;M3r6dT{F{G)=flBRpt9f|6czXourIO+9N3p78m`0EM=p^Zv92gMd`aS{ zq6`qu%-vW^Ene#VLH}(sM6#0~jVY~qQ<0j2nbWDZ#`wY8UPqeA-|KhsZ=8H>rUY*r ziI_vxreMrf#GsSHZ=vYAlP%M{3Pv86fCxCDQ^0wS3K*Dd@c8%3=3j3d1P2ri;sV5B ze`nvl`+miBwA6TmnTu<~-VdcDqorS%>05MJbUU)3U9QzR+GZ!@Z{v zCgwM}Q=WXd98Ba(G zVX?GWZ&{yM??UFEaFi(SwkeNv)pmzu-hTP=V_sE_q!|{YKQC-(lDYNjkI;L&!sKh-H1nI>|G{$Iub|F05CL=&b6w=PvuBbhe$7{YXQZzp|hmeX%Ha*g!Zh!Y zgkVDw->&MI+aF32%)dT()Cyy;%~YMpcpXXk5n^wUMiR4SPG*u!u*c<1PS-L}a&F?blN zPL$(lb)PJsAt7j_;(e6*lWm{(%?;=#_6?4tvVvb*U2WPXmPSkcknmKNkvgLe3-x5yViC4cAuBNqlwAYd&4%j_O3<#5hm*s$B)Z!aHN@+1l*0v>^#kb zewe{)bhX|1`Mf5UE?GwSth;tzqHIEcN6~8ayX;yVqnc4k_UiIpTm9)}|LV_+wc?#m zN6w8An4@zYdy1b2(`AV}gD$N3Y1DC1FAshck<-zmuflMppR`ufoCLGH1srXLYzNOP z%v}3?r|4s>FnO)i_VZtA8!@{@!qOuEF(! zpjs+_xk^3yjD-vw^I|1r*lOX}#q__j63;Yl@EnkMU;5a1`u3FWy?}FvDxTN82pT6ZapkfWf)u-) zt#>=j`*%q%5-}~H*UmwDyW>CUA{yg*_OHE35bQ@_C#1RhCz8GX4d(yKraVkle%kD4WJ(rDf)S z#GFGHN{vwU`o^N7+?r<0Pu^I|^{H5})BX0~L8V4kOV8(rFPn1qFe2VfUChh<_F(n? zXvMw!yR697JNunu55(90z`NY&yKy)8f)=&kZF)+v_yD6QL+jP_GdDlds#)lVNL=IX z${_nh=T~lLT9!u3+MPplKe#AK*PflpSnVHBT4K^gX05m%uB_B+L`H>S1yG3$=0XaB zS++`Zo6Z{BpQ~CqqcNA{((X*4eEi z*S9Ee?n9o@lg2`()Qr@wt(kuqZ~79k>0_SuffExBj}gL9^hi|E>!I3R74+-gctY=C z`ZHQ_FkDdD?eceyiqKV0rQEuQexk1$$8w1)B5C%pLX_SaidI}k&{6)=z59Dy(y%ID z20z^{oGH|ptepHIp{wydhd`)oy_(f?r>C-U#XcZiPa%-m3%{A_f_+wQdm%89Usp@@ zo$>d9t4+_b^sqVl@yQaRK zYl;`&?U<2Py>RYv*zyw+>Euy??!)&q?q-PVSB5^-klW3Yw%j)SRE9ItCCT9?%hIdwWvrU^MSl!^ie6ZX$R)G{oly}FbZfUAR~hCSRKf<4sNptd z;<=6Xchpu&&g=NRihi=_;osj9GXa|=kZ@Kjs@2D^=ZDifI|=p=aOGYQ3mT8ucMoOo}CcokLcl~q9YjZzazZaQ$?l7UZUA^KLnzD%} zp&QL#UO3IM%t;8z7Rnf9IPbIliQ1XjmDAs+mQ#k#oNeJg7)dz0DSGoso{!6I%UbhF zrXUo+LYxP@FFdY#;x&Zqd4aon{$0Cn#moSKWxF%3=|srdv4o3OErlaY17m&-%iYfX zKD!Sr4HbO4IN?j*(=SnZZ+DG#%J>8y_vx<_^);oJ7PvzXbx*v+4d~;WUJQ1t-Jzg7 znEQ2e97@vLxsw@}x*uc|MO36L`m;oNb+&I`G|zZ-aZW**xyrL!zcF1ql`!$}qIcl8 zuiy_lWf>yCk_c1Ck{k{TjObp)6`tpr9}(JW&_DD2#bTD>R6DDH2xI1{ zg;&;JTos?&9k_boP^4gb{+Wn5?U6l#f8Aop&6ye8EgK7}`;o7G;}QX;5iyx0p0gpTG&*idncnou3}c^@>=g&*b(-vo$3lTx#K|j~d z)Lf@@mH3N?hFH<_C(9NGUb^YYdrM>th0=jgfv1Dl>q z5*%K4j_7;J>8DyNF&L3D;x8Vt0-=JkaMw-cbC2|rrl%vA*U`gK+FGkWz&Wg+Uz1lK zzW$S0)la>vJL@_iDe0ZRbun^wcfHGjImT+x#aG*&dwRZ?_c+P=>Dt&$M>#{QOx7BG zmPC}sAL**=f^DXyr-AP^0$M3 z6MdK&ecG%$w2-|PIXiH)ZPDYdLHZcsxI7_j&;0W8 i#251BV^a%a)*Q-rnv1>p3tT3m85$r~J3Bkzq5lD5lpv}A literal 0 HcmV?d00001 diff --git a/example/kenney/gui/main/main.gui b/example/kenney/gui/main/main.gui new file mode 100644 index 0000000..87559e7 --- /dev/null +++ b/example/kenney/gui/main/main.gui @@ -0,0 +1,561 @@ +script: "/example/kenney/gui/main/main.gui_script" +fonts { + name: "game" + font: "/example/kenney/assets/fonts/game.font" +} +textures { + name: "kenney" + texture: "/example/kenney/assets/images/kenney.atlas" +} +background_color { + x: 0.0 + y: 0.0 + z: 0.0 + w: 0.0 +} +nodes { + position { + x: 300.0 + y: 450.0 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + size { + x: 1.0 + y: 1.0 + z: 0.0 + w: 1.0 + } + color { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + type: TYPE_BOX + blend_mode: BLEND_MODE_ALPHA + texture: "kenney/empty" + id: "root" + xanchor: XANCHOR_NONE + yanchor: YANCHOR_NONE + pivot: PIVOT_CENTER + adjust_mode: ADJUST_MODE_STRETCH + layer: "" + inherit_alpha: true + slice9 { + x: 0.0 + y: 0.0 + z: 0.0 + w: 0.0 + } + clipping_mode: CLIPPING_MODE_NONE + clipping_visible: true + clipping_inverted: false + alpha: 1.0 + template_node_child: false + size_mode: SIZE_MODE_AUTO +} +nodes { + position { + x: 0.0 + y: 450.0 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + size { + x: 1.0 + y: 1.0 + z: 0.0 + w: 1.0 + } + color { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + type: TYPE_BOX + blend_mode: BLEND_MODE_ALPHA + texture: "kenney/empty" + id: "N_Anchor" + xanchor: XANCHOR_NONE + yanchor: YANCHOR_NONE + pivot: PIVOT_CENTER + adjust_mode: ADJUST_MODE_STRETCH + parent: "root" + layer: "" + inherit_alpha: true + slice9 { + x: 0.0 + y: 0.0 + z: 0.0 + w: 0.0 + } + clipping_mode: CLIPPING_MODE_NONE + clipping_visible: true + clipping_inverted: false + alpha: 1.0 + template_node_child: false + size_mode: SIZE_MODE_AUTO +} +nodes { + position { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + size { + x: 600.0 + y: 100.0 + z: 0.0 + w: 1.0 + } + color { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + type: TYPE_BOX + blend_mode: BLEND_MODE_ALPHA + texture: "kenney/back_gray" + id: "panel_top" + xanchor: XANCHOR_NONE + yanchor: YANCHOR_NONE + pivot: PIVOT_N + adjust_mode: ADJUST_MODE_STRETCH + parent: "N_Anchor" + layer: "" + inherit_alpha: true + slice9 { + x: 20.0 + y: 20.0 + z: 20.0 + w: 20.0 + } + clipping_mode: CLIPPING_MODE_NONE + clipping_visible: true + clipping_inverted: false + alpha: 1.0 + template_node_child: false + size_mode: SIZE_MODE_MANUAL +} +nodes { + position { + x: -200.0 + y: -50.0 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + size { + x: 200.0 + y: 100.0 + z: 0.0 + w: 1.0 + } + color { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + type: TYPE_TEMPLATE + id: "button_left" + parent: "panel_top" + layer: "" + inherit_alpha: true + alpha: 1.0 + template: "/example/kenney/templates/button.gui" + template_node_child: false +} +nodes { + position { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + size { + x: 130.0 + y: 60.0 + z: 0.0 + w: 1.0 + } + color { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + type: TYPE_BOX + blend_mode: BLEND_MODE_ALPHA + texture: "kenney/button_blue" + id: "button_left/button" + xanchor: XANCHOR_NONE + yanchor: YANCHOR_NONE + pivot: PIVOT_CENTER + adjust_mode: ADJUST_MODE_FIT + parent: "button_left" + layer: "" + inherit_alpha: true + slice9 { + x: 15.0 + y: 15.0 + z: 15.0 + w: 15.0 + } + clipping_mode: CLIPPING_MODE_NONE + clipping_visible: true + clipping_inverted: false + alpha: 1.0 + template_node_child: true + size_mode: SIZE_MODE_MANUAL +} +nodes { + position { + x: 0.0 + y: 7.0 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 0.7 + y: 0.7 + z: 1.0 + w: 1.0 + } + size { + x: 200.0 + y: 100.0 + z: 0.0 + w: 1.0 + } + color { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + type: TYPE_TEXT + blend_mode: BLEND_MODE_ALPHA + text: "Tap me!" + font: "game" + id: "button_left/text" + xanchor: XANCHOR_NONE + yanchor: YANCHOR_NONE + pivot: PIVOT_CENTER + outline { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + shadow { + x: 0.101960786 + y: 0.2 + z: 0.6 + w: 1.0 + } + adjust_mode: ADJUST_MODE_FIT + line_break: false + parent: "button_left/button" + layer: "" + inherit_alpha: true + alpha: 1.0 + outline_alpha: 0.0 + shadow_alpha: 0.78 + template_node_child: true + text_leading: 1.0 + text_tracking: 0.0 +} +nodes { + position { + x: 200.0 + y: -50.0 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + size { + x: 200.0 + y: 100.0 + z: 0.0 + w: 1.0 + } + color { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + type: TYPE_TEMPLATE + id: "button_right" + parent: "panel_top" + layer: "" + inherit_alpha: true + alpha: 1.0 + template: "/example/kenney/templates/button.gui" + template_node_child: false +} +nodes { + position { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + size { + x: 130.0 + y: 60.0 + z: 0.0 + w: 1.0 + } + color { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + type: TYPE_BOX + blend_mode: BLEND_MODE_ALPHA + texture: "kenney/button_blue" + id: "button_right/button" + xanchor: XANCHOR_NONE + yanchor: YANCHOR_NONE + pivot: PIVOT_CENTER + adjust_mode: ADJUST_MODE_FIT + parent: "button_right" + layer: "" + inherit_alpha: true + slice9 { + x: 15.0 + y: 15.0 + z: 15.0 + w: 15.0 + } + clipping_mode: CLIPPING_MODE_NONE + clipping_visible: true + clipping_inverted: false + alpha: 1.0 + template_node_child: true + size_mode: SIZE_MODE_MANUAL +} +nodes { + position { + x: 0.0 + y: 7.0 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 0.7 + y: 0.7 + z: 1.0 + w: 1.0 + } + size { + x: 200.0 + y: 100.0 + z: 0.0 + w: 1.0 + } + color { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + type: TYPE_TEXT + blend_mode: BLEND_MODE_ALPHA + text: "Tap me!" + font: "game" + id: "button_right/text" + xanchor: XANCHOR_NONE + yanchor: YANCHOR_NONE + pivot: PIVOT_CENTER + outline { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + shadow { + x: 0.101960786 + y: 0.2 + z: 0.6 + w: 1.0 + } + adjust_mode: ADJUST_MODE_FIT + line_break: false + parent: "button_right/button" + layer: "" + inherit_alpha: true + alpha: 1.0 + outline_alpha: 0.0 + shadow_alpha: 0.78 + template_node_child: true + text_leading: 1.0 + text_tracking: 0.0 +} +nodes { + position { + x: 0.0 + y: -43.0 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + size { + x: 200.0 + y: 100.0 + z: 0.0 + w: 1.0 + } + color { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + type: TYPE_TEXT + blend_mode: BLEND_MODE_ALPHA + text: "Title" + font: "game" + id: "text_header" + xanchor: XANCHOR_NONE + yanchor: YANCHOR_NONE + pivot: PIVOT_CENTER + outline { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + shadow { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + adjust_mode: ADJUST_MODE_FIT + line_break: false + parent: "panel_top" + layer: "" + inherit_alpha: true + alpha: 1.0 + outline_alpha: 1.0 + shadow_alpha: 1.0 + template_node_child: false + text_leading: 1.0 + text_tracking: 0.0 +} +material: "/builtins/materials/gui.material" +adjust_reference: ADJUST_REFERENCE_PARENT +max_nodes: 512 diff --git a/example/kenney/gui/main/main.gui_script b/example/kenney/gui/main/main.gui_script new file mode 100644 index 0000000..4ed09fd --- /dev/null +++ b/example/kenney/gui/main/main.gui_script @@ -0,0 +1,35 @@ +local druid = require("druid.druid") + + +local function on_control_button(self, side) + print("Click on button side", side) +end + + +local function init_top_panel(self) + self.druid:new_button("button_left/button", on_control_button, "left") + self.druid:new_button("button_right/button", on_control_button, "right") + self.header = self.druid:new_text("text_header", "main_page", true) +end + + +function init(self) + self.druid = druid.new(self) + + init_top_panel(self) +end + + +function update(self, dt) + self.druid:update(dt) +end + + +function on_message(self, message_id, message, sender) + self.druid:on_message(message_id, message, sender) +end + + +function on_input(self, action_id, action) + self.druid:on_input(action_id, action) +end diff --git a/example/kenney/init.script b/example/kenney/init.script new file mode 100644 index 0000000..6362a95 --- /dev/null +++ b/example/kenney/init.script @@ -0,0 +1,24 @@ +local const = require("druid.const") +local settings = require("druid.settings") +local lang = require("example.kenney.lang") + + +local function setup_druid() + settings.play_sound = function(name) + sound.play("kenney:/sound#" .. name) + end + + settings.get_text = function(lang_id) + return lang.get_locale(lang_id) + end + + -- TODO: Call druid.finish_setup? + -- Need to update all gui, in case, when gui init was befure this init + msg.post("/gui#main", const.ON_CHANGE_LANGUAGE) +end + + +function init(self) + setup_druid() + msg.post("@render:", "clear_color", { color = vmath.vector4(0.8, 0.9, 0.85, 1) }) +end diff --git a/example/kenney/kenney.collection b/example/kenney/kenney.collection new file mode 100644 index 0000000..3b0225f --- /dev/null +++ b/example/kenney/kenney.collection @@ -0,0 +1,107 @@ +name: "kenney" +scale_along_z: 0 +embedded_instances { + id: "gui" + data: "components {\n" + " id: \"main\"\n" + " component: \"/example/kenney/gui/main/main.gui\"\n" + " position {\n" + " x: 0.0\n" + " y: 0.0\n" + " z: 0.0\n" + " }\n" + " rotation {\n" + " x: 0.0\n" + " y: 0.0\n" + " z: 0.0\n" + " w: 1.0\n" + " }\n" + "}\n" + "" + position { + x: 0.0 + y: 0.0 + z: 0.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale3 { + x: 1.0 + y: 1.0 + z: 1.0 + } +} +embedded_instances { + id: "system" + data: "components {\n" + " id: \"init\"\n" + " component: \"/example/kenney/init.script\"\n" + " position {\n" + " x: 0.0\n" + " y: 0.0\n" + " z: 0.0\n" + " }\n" + " rotation {\n" + " x: 0.0\n" + " y: 0.0\n" + " z: 0.0\n" + " w: 1.0\n" + " }\n" + "}\n" + "" + position { + x: 0.0 + y: 0.0 + z: 0.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale3 { + x: 1.0 + y: 1.0 + z: 1.0 + } +} +embedded_instances { + id: "sound" + data: "components {\n" + " id: \"click\"\n" + " component: \"/example/kenney/assets/sounds/click.ogg\"\n" + " position {\n" + " x: 0.0\n" + " y: 0.0\n" + " z: 0.0\n" + " }\n" + " rotation {\n" + " x: 0.0\n" + " y: 0.0\n" + " z: 0.0\n" + " w: 1.0\n" + " }\n" + "}\n" + "" + position { + x: 0.0 + y: 0.0 + z: 0.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale3 { + x: 1.0 + y: 1.0 + z: 1.0 + } +} diff --git a/example/kenney/lang.lua b/example/kenney/lang.lua new file mode 100644 index 0000000..8125cb0 --- /dev/null +++ b/example/kenney/lang.lua @@ -0,0 +1,12 @@ +local M = {} + +local data = { + main_page = "Main page", +} + + +function M.get_locale(lang_id) + return data[lang_id] or lang_id +end + +return M \ No newline at end of file diff --git a/example/kenney/templates/button.gui b/example/kenney/templates/button.gui new file mode 100644 index 0000000..4beda9c --- /dev/null +++ b/example/kenney/templates/button.gui @@ -0,0 +1,135 @@ +script: "" +fonts { + name: "game" + font: "/example/kenney/assets/fonts/game.font" +} +textures { + name: "kenney" + texture: "/example/kenney/assets/images/kenney.atlas" +} +background_color { + x: 0.0 + y: 0.0 + z: 0.0 + w: 0.0 +} +nodes { + position { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + size { + x: 130.0 + y: 60.0 + z: 0.0 + w: 1.0 + } + color { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + type: TYPE_BOX + blend_mode: BLEND_MODE_ALPHA + texture: "kenney/button_blue" + id: "button" + xanchor: XANCHOR_NONE + yanchor: YANCHOR_NONE + pivot: PIVOT_CENTER + adjust_mode: ADJUST_MODE_FIT + layer: "" + inherit_alpha: true + slice9 { + x: 15.0 + y: 15.0 + z: 15.0 + w: 15.0 + } + clipping_mode: CLIPPING_MODE_NONE + clipping_visible: true + clipping_inverted: false + alpha: 1.0 + template_node_child: false + size_mode: SIZE_MODE_MANUAL +} +nodes { + position { + x: 0.0 + y: 7.0 + z: 0.0 + w: 1.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } + scale { + x: 0.7 + y: 0.7 + z: 1.0 + w: 1.0 + } + size { + x: 200.0 + y: 100.0 + z: 0.0 + w: 1.0 + } + color { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + type: TYPE_TEXT + blend_mode: BLEND_MODE_ALPHA + text: "Tap me!" + font: "game" + id: "text" + xanchor: XANCHOR_NONE + yanchor: YANCHOR_NONE + pivot: PIVOT_CENTER + outline { + x: 1.0 + y: 1.0 + z: 1.0 + w: 1.0 + } + shadow { + x: 0.101960786 + y: 0.2 + z: 0.6 + w: 1.0 + } + adjust_mode: ADJUST_MODE_FIT + line_break: false + parent: "button" + layer: "" + inherit_alpha: true + alpha: 1.0 + outline_alpha: 0.0 + shadow_alpha: 0.78 + template_node_child: false + text_leading: 1.0 + text_tracking: 0.0 +} +material: "/builtins/materials/gui.material" +adjust_reference: ADJUST_REFERENCE_PARENT +max_nodes: 512 diff --git a/game.project b/game.project index 16e04b5..c918863 100644 --- a/game.project +++ b/game.project @@ -1,5 +1,5 @@ [bootstrap] -main_collection = /example/scroll.collectionc +main_collection = /example/kenney/kenney.collectionc [script] shared_state = 1