From 6be0033f7c2d475c8a515fddc3a623ba091b1fff Mon Sep 17 00:00:00 2001 From: Tomek Date: Sun, 9 Nov 2025 22:49:38 +0100 Subject: [PATCH] Nauka + budynek naukowy --- assets/buildings/labolatory.png | Bin 0 -> 16125 bytes assets/buildings/labolatory.png.import | 40 +++++++++++++++++++++++++ scenes/top_panel.tscn | 4 +++ scripts/BuildingsList.gd | 12 ++++++++ scripts/PlayerData.gd | 2 +- scripts/galaxy.gd | 4 +++ scripts/planet.gd | 22 ++++++++++++++ scripts/planet_panel.gd | 6 ++-- scripts/top_panel.gd | 2 ++ 9 files changed, 89 insertions(+), 3 deletions(-) create mode 100644 assets/buildings/labolatory.png create mode 100644 assets/buildings/labolatory.png.import diff --git a/assets/buildings/labolatory.png b/assets/buildings/labolatory.png new file mode 100644 index 0000000000000000000000000000000000000000..e229b7d739ae6d2941d229f00c002f7a71d1ed7a GIT binary patch literal 16125 zcmVz@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy32;bRa{vGf6951U69E94oEQKA00(qQO+^Rk3kekuG)smTkN^N6 z07*naRCwB@y?2yc$9X4OUsc`Mxu+-30D}w=kpuw}%%n()5|#BV*(--#pLJT>vgNf` z>)o~e-tIYX?X~wf>^jQ!%F2=@OQK~4NfgBhkOV*w8JL90p?f;rd~b#K$L+q;6F|~_ z!$WeWy1H(~uYOLXhG`nQju4Va z+Lj%$2uXwx%H?vH5QL-@ve9TrB#}f^p_xn;5JCufp67X9+^cjtqo@i(NN`baw4X?5 zHkXSl2SH#vcI%0{VVDL&fRJ<@*Z2LnJe$o@N)aH0P`zFkyfsA_t^EOnAf6-uKyiJv zX&s3GbyR?k|H@4p+^ik6dHL!;XtgJR0L3%4{u%3=+|coxJt=M-B~RK=y!Pw#9X0sR z8LGU=IQ|9A0|E(hO_6*jbG>2eH&&MKxDnY=*|Mx;E*09EJ1He&thM(rCWN$(st}y> z_;*4G#;uLX7?V;arwrOVDPjys8TXe`Wn<$2K-&-HoF_7&vk}HvyrDWPODQ>H5)hJW zdYCk_t}^2+9`lCbhWQRONqR!VFl_Z3<5VgY7e`U#x^7&qs;Xg{iF63V z5FsfMN||X@)es;gQ5c3{6vpeI>pCGcE>GkU0GMVf{+02_b)9%>HC0npEnZ5`b%HR6 z8&OqNQIvRZd7dW(M+o9Z;+{vW-9w3VLsvB|9-Cu3@rVc^W_vh{G1v3rO|Pn|*%G_R z_q{NFB9f+=YBz#{W;0nK(@Z6kNY@IN^;;e`+p97WD;qy1tDQ_;4;HGl_9SJ^(B-%{mukAU4 zHEZ*BO}?$fl(M~$a;-ROcLp{#xc;#aMp4pS`vOK7V@=mvQh>22j3hz`B&AeQ)VOvS zM!YS0R84CM0x5$akW$8b*f5ObhV(oSwMC4kYe)hD$r(@1uc9cFD)CMVf*`rDbzR38 z$5_Pky|^;QSktt)Z5FYJMMwfdQfv1_Na_1tTnHHJx)%3@GnPmmN~xl%@zg|Nlt^A( z*Ktd(N#FB@6!GlQRVgS$EO%vG+AbHIM=VNOPs+m}WQ@g2pc{Hp?s*>LJYF+OX?#XR zyYY4-O1p8vSWEOOs!A0aPp$9yNqs_TEH$JQEb3@Pp)o{a5lhN-!=RK(gh245kPs3- z5pFUZKqw5t1leJXJFXokxzp%Ia0E9IRdFTQ^om_u4y^)--r~e=4&UCYT&|TWuvs@d ziU0t~RS|nLG`Hz#-q5Jr43xfe*d=dL*uo_(=m_sbhP}g2L9Un8Z&Cf}^HcFPu~C*n zT)y$q@KzuhAq4fd76JgtohpRzJWoo5kW>^!({+$YA{0eoa^O`>Q)ufT_`V9PXd>cAQK-f%~?Tsyb-)rerMA7xug&l@r6h$#CG7KX@L$2$_LJ$z7QmOcfaSvO< zPE`{85%@l13=sO(li&Nqk9=4ni2w<{TA5O+=`F+)MNt@rv7FL0T~SsgiQpo>D^jTx z0FLLCCI=E@OlV7Fu!wQayQC!8x!|uB}zTU{m}hH=qjG3{}8pKnHGq zvf(Y|i`*arQdikZdh=M{Rh= zC@%Rf0CaZt=GwR14CJ-<%39b4TnOke(X3igGMV^$VGt%-i>B+Q(Y9&0ZV(2Qnc3#- z?7@d0R+SbSXj)CqTBoT{D6|_FjYcDp8ktO{C1QfmT{Y1dy4C`BmTj}P{L1I^F?6_D z4?WNK+Xyk8PAiHsGduguC%^yb19$aycdu4P2muPi(6Ku#PKFUT(qW>JnM_t`52w*+ zaM9Wg6mEL50N$#&{h?v7Qa7yK$!kt$T)%y=H>f^qFDck?@L^T;*>Io$ZgK>!k568_ za(!g5r?^tY(3W(ol@XFc9PR7*TFUsz*jNG>00|)>(QT9A zNE9n(t0)#)f_dFA<8oTB*JKMiKt7+3zsFcqtJM+{O;YarUQ%wFX5KWb)tc-1VHi4& z6HiSxo1>J(^=q|iYXbw08v#HOW7TS_TvN4tA>YDNo>!~Y;zlx=Oe&pDq()+*%IEX( z!C_HUuhrs}&<(xSLy)%R*p}7B#r^Xub7(31o_7NP=e%BDI~)Kck?(u8YAwFo%v7pS zD8%BpX<3%lQi<~UJjNv6PdM44vB-edzVA5N&_cYe^0k`$sWa!Ec;>lS8&6u;WPd~F zwJ&dek;{(l)@pB~oLUuyt4B0J>JlN;w4GYh^865OJREJ&xGFUh3Dy2!t-TzQj^MY| zGS&(m*=eF~HXBzLmKLkkt7Bsure+g>18*Z3WV_=aH+CuZICXiUQ0Nh&mH9brKIzqgoGA1}*C@QIJcUMtx z5vu_4Fy-1tB$6G_e|4CE+a_s=_^OE+(QG!?61qav8}-C+lg(t~T^)vDv)PQB)^#JB z%_VwY5ctOyR{rss=d!>38!aHy##ymgFBXa|RZfa#quJI6X*QdUmof+ftJ!P`LBmYS zEz3%9R-sUU*hC{ly#r@uGue3Ae9vpP8%d|rrfC`!Db=g>`rUCkp(LpshC#F0j5nsP z8`*3&wye31+jQNw*v%%(S#NZ@!jcWY(F(j4Z9oTBiT`yRx4Tpt9^BHj>~$v#61fGd zZY6kIP}06iJD)07Z%P?!xru}CW1==yl9F?N>ebg@K6QGjvSOI#u_OB*xbL2h=dS58=OPHgFbL#Z`o}iHQ50KOB&-2( zZS1@1-H`~XEt4?a=8R&#r{Nzq^4@AbSkl1CG}0yGz=q? zLfNcjEb_wEWMwj0+LoFzC>tFg|L*fAr zbv?^+J5{{If&R*?r=NcQFL@svi12_PPM`D2B!=Fmx6JQ5Q-x9 zo$o&1KiFrQddf63RY{w=uB+XB-RCY|+aTmnd8J}|-b%fBb!@s^uB_?S#?uG@7-Ikc zNNg&EU`i>aB)R%;svF8qvHErzBOydLO>dpV?U13q@0Y7Jgt3$&3`5^(L_tu{_6bv65}G1PB}qjw~ZFb zPt&qX#e8=$ZKN}^bMrz9Aw&W;C6Yo)5tmAVI(LRdQV1bsYum&#*s?teAqCaiZde2m z1VPKBB&6Oh2Y{BN7$GTg;>Sj0GsN33ZY87W;ui_7CT zX6Gw4O7N~-+mQs%^W**mL92(DU`mMX`iqr@%v)!ViMdGhJoX_@uj8fdfN++Y{#CNnHlKsNttH3vU1z4 z#yWczLa0zE5JD&+2#}D1s@fO6`VSK5z4x5ht*M^tDhhQSH;kC?`-Wj8&PvO&f*^>Z z&~@FeuA-1gQ51du-uriLd->&8%~XnDY}xLXfu62nF=8w+ilx(OUDu;1LI`*iDwHaU zf-#O~697od%>@V$4}9PA6A`ScDgr=KT9%c#?_1Wi*yH&Yp+%b-NLFnw63xvmG%eTj z{IlmSthLOn{;p}-iDO5Y?@I|rDwpjZ+PP=%^~t$cUVCF=a;i`$00JTSdI!8jQX(OQ zM6$1^XUCSo&=2D)=))g=Tq1}VA0MB(`}nO2rK|4q)jopnx*+972(${J&<6V(bOs-+ z+Sd|03jUWw6}7>UA2Cg#DN}p))J3ZuA-1j#Lg>~*2L^fzVc=tedwWX{+;_*vKJuP? zHhur`+f+qCNY2bxsyOeIrBjvx|a~!~1s;K(o`+2X~I#cI1!{!ViLm z?LGJWOT$Bh#jY+S5dzt$H>c(nE?ph__(wnJ2Yyd?>EXNYID7tLZDr-!m_I!=d;Y>z z-wR(qedgA~hgO|<01;!1v*F?4%hx6_U?ha&x)?y$jTl-=DO|4=eggoe(f0mHkyy_a zg{o@Htn3GVGQl)xUu1xBK4&J@qE29vge>^Jm(({+GYCQW#(4h1br$v1iY&!v}7u z)*B(?wesSQZQB;hE4J;Zs=|dB=<6Nm@BPF7_2*AL`!WJT2u-C@&%bnP@1EVJ*%o$E z+O~7~^3|1|r#c|0)#|egOW9mT@NnO*EyY6N)a!2;y57Py zQUbxZ9zF15AN%0a($eKC*P9KizOoWV(a`YVwvnOOOo{;j!`%FQCRf>LnnNk+|BpaMDCBcz z-aOBv;Kaclx@N@JaHoM!B4k-su2c$Ld)v$JwJc)+(q-*e;O(Fj`Z|y9q6B&p53x#NKqBW`LZ7(%MGK* zvaL7IUpRW(t^NJ|vAUz`TK?Vl?s?&C`S7mbg|qOM-cML3z(96JP|7tLBhYj@6aOv| zvTZxYBY<%_9YY7n1-ETGu0aS%r_*se5o5ZhQc5i+&@|OB3=ALv`9UCskW$Xg&0iZG zrBp$jd7gja?gKmBFyyej()h{?FaK$IaV4dMT&UyIhmIcBcW#GwotTfs|R^&!Fj=|{#Eb3NVHuTR)k^W4d0<@F2cUE2pf@DTpQaT`mCaI?CU zE0i)uZdliRg*Iz-Z)V)=-!jnMgUxh$^oHGZm&%o~i77F$n4YejxbxutTlT&F+G~6E z?tSQ?`(Jte%+8T5hYlWCsn$#<097Fp9T*uRlmZ9WS&jNkv`*psQQIz{D2mb&>eBc9 z#4cc(CMG0C;S_Eb9u03{dFd2yB37DLOmok z!Fsoh1ezI^S0ccTqld1TsnqrHhV6yEecORuecj!!ojRqes;a7~l&R9*%hyNWynMB3 zIeV^6U2+`#sh1Dle@Dwv({@mA5^1z5?lxGdW#@#zKUZeS&O_eFrV9rT&do0P@4Xuf z%!T-eZ$9zElV?;-^O=aEh%?q~)T&KKr3#WFZK#>Fe#?Q+EU8~us4{Y7h)te7I*Q%9?qVC$ct$Jv8{@|XbSJ#P>(hSdYZji`t)HOxP zX(|TDQsSmC3v8#38_V-#3quh%^95^Vg*U9FBm2+3{>C=LICuVXHk-+0v#CshODYig z!Z)5?Il2#FJUu(_XH%Me^X1PQnAU&_kGXxVr|6GjsN@qe7B4 z8Wv$TtwT!h8!YYGF_O=ip69&hk$Z31yStH1MfV=X5(e8hf`6-+t&oHk(1JMoT3Jp|5AnE0a^%OlHg0;f5ca z?8{jP_9Dasr@4Em0@%uC(+I=9TlN%+c?rnWHA7Pe1_y7(3{{5}KQOa~#`%H1 zo?5j&-LP4?j{Ayl?B7Ga@(*ub9-kvfbf+^h*?IZ!!rWB_@PoFifMnR1CxDmf?Q)Dqt73#A@3!1v zPO>}HQ~{F;l4TKwGO~~XN+}BGF!-(=d3DK{s%4Ct)hJ(gjG+OwGR9}G4edTKtPjoR zQr>L2v10@c4Aq`L6@|VwTM-H#*|y`rzHRwjdSd1VAh%e^V<~FSK0lq$lvipGKm1@{ zZ+BJKrI5LN4oQfjuu*S$|8!kXrowgIL{ChmRx>Q(R2C9vt_UHx;6ex~WL%610f3gJ zkc+k#lVC!8-@klqG+-P72*F*eHc&9qx*~-r7ILLxAF9r!gSIFw|RiV@msT z-GoOG3aS{I2&E)|lnVD9*IB8^uAU>?cipjdXop@r)V*boU=y}&+e&vNu$0ePc``cw z57p~0Z{OO}yM2Vap0#g#7`T~SfntEj-M_0}gl;~g-*(Gh&T%21&E>N_k3KlRP@bBa z&7@OOqI#pLX)3{l5F8JU3(f^cfZ}msLZocjM}-ip^Fs)|NfcIxhPO6q5!zwCp6@$t zUz4h7EDE-cY+stVL2FH%%l7nkOTo{+IWsia*Jw2QckN#6=^pT1K(Z2rXH%dA zu_al1zWsaT@013_xk~fY^Kv?S(~j-%;k3+nGsdHI(Z~BB0@R4 zZJW{8zklZz47^sWhe2SPDT;~h*jomAgTN=0sEYo<55M>1$oC2x)lDOemne2@SHVdQvWx!P>hs>SY}#pMd; zLQkotu0Qt3{k9uS-MDe$_FK~}?~Z)iK=JkQS=DMaz6mhKt(Y5-EMhCwmBiFpC=}zS z{lJf-g(Q+v3Ytk5O2v#m?J_|WHCrqly>i-8Hmmi0dv@!Z1^~LQ7m9^=x?IOuSy_pPmR*GoP_NfTJ8GSFc$kyGLs*k1u_1>^ zwscA9An7qi5YsRTB@FbIc5EBgHD!Ea($#=7cI@bFbMuQ*N^UhW%GPDOipjG|cEoDT zsVOI&Pe-cP3~1!%b<~`^a@Nc-0F1m@R`b-{t^QKkP-~v-Q&hFMJ5N`18oU}*7*DYe!3I-?+{{zBMpvrM%$l4H_H+{-g|3w~)$;Q4 z`3sk}3=a(S6e6!aIytkrT&Xvjir`#|W@W)D%f))is`~_45LOl!Ci3Y$lBQP{mv|6y z9&sK;+IFt)3+s*T=u7#^H@iw!S5GJ#U-4Hixl5s$B7Gwmr>rZly)uh|QbHBg%;dZv z+PZb?^j!yoFxoP*wV2OiOw4q8-nAMl&05WFHX5p`Nr2D&{dYe5wSTl)(RcD4XUhP_ z7z5xnJ~APslo&99w)e5+W)q1+jbMThy7Ky&zTUoKv6#=8#f<*^^DjR2^!IbwOs!HK zo17cJvG~*vPJQpCGqr|=0czE{pac}axCumX;kj<4qTUNPzBh6CB;)DQ;8s=Zvx0pL z?*&d&4PONvSAGJ|7=u8H8ctBGYv}pU=Cl`{Yy4{LL4?sjB4k8|Q@(#Zs5%2ON<~ zwei$?24YsAcT5r_O(p4+2E?yohquCqMV=b3Panh%2m!8mxKP|xSw(Y zm&$>MbN$&$Gi;Q-u_Y~>t&|=*>`z{6PL$1o1F7Imz&*arGhK%yP^Dbv(~F*KGZv;* z!2|b0dv=^Xb2gL9J8nP-Cd9OwHHpx^TXwHlku{hl^YtJMgp@N&m6u+BLscjUDUlrL z>)pG1C$t@LEMk5bgkhM^=Tqr)oDfadU2u?ukidr66aXRRnX_mA@PB`1VtO$M{38c; zo9XmScXrYBOG_e`&ovys?gT|zWwb~Y#dRIY8KtBP)19^YcUNk;u2jQPLW`z*w=G^f z&jOARPmd5^i9$c9F8YvlUVm}a$Qhs#q4YqP5{fJtd>@-W=U#s!v*(Cu_6F7E+9E=c zFkib^t~aTwguXjB7nDk+H!hAMB&+p6v8_@ji;)1VKKJ6Qx~BSmke+HbYh^F+p8WQ= z?zsEzm)}r;V8j>_f>8WByLJeKu8oerdHLGx!m{PKei%_obX6VbE|!XUx+z@P)Dg5? zsr>DizV_V9r%@Opz)=)2A^jk78n(tF$FYUPp=+ZctoFa)djJ3)M@d9MR0gWx^|UH9 z8QOM~NoT4nm1CJLXYFQ{q3+=$TaP_jzV>xZ^@0WfQA4k3MJuJs?YZ z+H}nlN%vSaCk%C^>x7!xV&8Zv`}pIwdrr~?ZFSz2Ay1*+VttScDMX#5 z(|+jZvT04zIp-^t8s`y<#C=C8_sv1d}haiTMpiSG^1)r3J~ba-}=tgu_+!$ z`$^HZ&x0R^m3s4ik3LBL%WwUbkgY??Id7d#LI@$Tvp{g(w5;zu`OJU&gFm}ot79QS zARa}B4(#jh>#H@JvQj6G@A-l6`L1K<^0_;Y9?(^&IznPiqd>RzmHPXvh2>#YUr@1{ zjwEIgXHHb4pmYsYA*^M3w`OuiZDFEOSwgbk_b?&|R3(*9HIDTxPw>UGuaQ5-{4qbjal^Lo>Ug)`7 zdqN&8&sPjT2!#-}Ft|1`M#CVR%~3*@t92n`69TmUhr!U)`;HxX@4N0R6!Ns$Y_?2@ zt>|lnkYtQC8Vw{R7ySH%OMmjGe=}dHE2gPrvshT6>kn@oI&kQK*s|Rk``*X#SGvgEI0ynJR5K*LO zdW_ORXTc9jhumu~d9DZPTd|P`&Oq?7Uh71+y3#VBWh5#TD z0xr*$YOGl62(LXSN0807noktH15B8@FL)SHst=ps7XwbHhlCUm(P|BIv+0T9P zt7k5ZTFoZa^e_w{VpvKcL|I1PS)5V~Htt@wS=LJ_B+kN-D z?)L)Ub-d8`knL{Sx>eWp`I(tp^4I>B^=lKm8uFN;*y=LCeSeOo__uMXml)%`G z1PG~VByt05zRoxoew4{*cPv-5(W&vv*UFY)-g+|M;W78l9My2)L9O6RN4q&=iSK z5GfIob1Rw~Y6z9f<>SX6OjTYyIdb>N>~tobc5D}8EQQomwZFG}>c&(mWtNwgOv6Ng zIp>XPZAdNbrG104WY;1m+qZJ&Y1Xy3yl6J&>z)&MHIIdi@vt_wlF8$~g@t>Bb7xqu zojW&kV+sN05%XQwbKQ)oszzEjj5}`IH!|E02x+R)Y*?qqr`?C|K6>^qFOBI4$?b+V zP4U$JqsE!(te$lYDQutQGT1aw!;)Mez|Cg!dp~$yC1~&7J*iZ>6*J-ctvCcgloHxb z(!h*!#@Nd*pZx2;`|{+}ybwH<$ucgeltM~`KuMXxS&;yN?_&(**_rJFeZ{U4kI zPdD}^hPUt=H-?4=CFh*;<>lpx8`D%(8x2b$T&-4%T}8+B3i<5V_++WOOO4nAnY{)v zntMmeb-#ga0X7W*E2@$<+_9N1oodtEc5T~nC+hX7xn%&1061gYw)Et(nSs6@L)Xuo zzoMxa0TNOMemFHff9jc3j=F36r?h2`Ao7bzubIwP}% zv}xGQMi_Vi@R`qlBn7C|s$m!^R7KE=h6lh? zvvazt_VknhV~@h}#LU&vDFC2YJb3>J!!V|&XOG@?@cQ+!LZL7`GQ3h=30%i@{T~=+ z*NIz>Kli);@Qj84QK~qu)7U+rX0qz=Ae)}HzJE%iYI^TZV{iyvx*mEi#Q*?2iWF64 zQKW0yU|;^<{_CH(_ny0w82VN3&f?aJbe zr>16H-&Yi6VQ~=y20y3|^f;X5XO~i*r>iuZrJAY%KoCU$LRC~R44;}DgM3OCgip@1 zC_J!dYd)VfRH}e{;NCke+a`pZ-!i;ZYYaz`na(b+G~5%%eq{Ws-*}}G?P*D*?{6G3W%ynA%Y;l7<10T2u3I7{@tg3^V?th?5>?V zTPB)LXFDdi-l$PZg%Fxy#$Hv&v4oUC;EP>DM?ds|saH;VHx_shaL%NZfg9}GwXM`u z^n<|n0%MXq*4;Qabz^9F2vhoQO`pNa`Ae7OwrzX6OGG6mN}WA-X?eLevUTv-KyQSx zrISiue(B6SAXMz?3K>%s1u!%l&1)0Wz8~nC#%3y!1cg$=Fm~_WK`D_!B8;yzt?O5= zrG5X=FwFP$PTrW}EX-!iM_zpS2UjYLQA}tq-&I|yxSj_Xq9`PkAkL)_imn%r9O&A$ z^ZdlP;dz2Zs-nfZ9mcp(ufT14#LiXC3*KbVE4-fS1+&;ttuhFm=7dcF_JGNSuZQFKFUyqqhVI~@lhUZwt zV##tmmD27)s;9fSW7{^@b(-}?SE)46-*?3{QewybnQYUtYn-cC&W=9q_~Ar#U}=eQ z5dlI*I@6=7`BL93v6o*utq=l$Fvgs~_Cx#nwr(5WvE3b;!V)oH7-PqERw~QB?~|4^ zfYro4A!OTD6@2N-U-{#|_&n!~5JCtI1HVu#`MysSg{rE+SS@w2dL#4#5&DX*4}bKr z{u|57m6b9?e5JCzr~6$GKJdo*^LO8SLKic0lP^}B17@b6YMMm&)af^-W|v*Z-nD(? zwj=w}X;YPXY)lpooQC9jaoJE zJShZ{A__uEC{7kcq@@k$|#Ch#4@>@5W)}q=cC}`RLSM@ zlamvMnd8%qt3dCZ%-mb}&%dhpIE>+Vo zrS)nV1Nfc?K$KKkV&dJg9cHE#MF~7l)3yHoA%u|UI)Fi;DvKBfn3)=n>6$RX=~U_u z{`+q~`p6?JVvI*pt~UhIdM(a-1q@Kg7vfFE8FL)xu}2>{bnw7ezxIvqeD@{KwIu?^ zn4&1DRND6(A*ErMV1i{eFjZ9D@QZl~FjcpY?%HNI>vQ8{TX*i57@uTAnQ(IP@(bbn z4}9Gm9-iNS@3njHxYBgfHOrj5k-9noOhmpvG(7ADETgD|AwOUtW0Wf8@=~)|x1^lw z?s9ewha-bM6yEL3X0LvYI*liPDD97x_H>m@)AXwqA7i2zf)Xv40oxS=y_jI%b179Z zp>ae!p(LghsZ}d+E}aydQ1VMZ`;#C2$cIX$lJEQJbeht15@fzguGiwaLQ*0O7{_Xm zz^yBwzpw8%{{63h=mYQj@4x?tlXI0Y3@poSHtN}IR@aRv3?zV}X;e`#A);wJpp0RD z)^9$%WpJO<6$FtGLYZ1gXL6OAeQ|2beM7e&E01lz{wh#6>hGU9vd_Ecz?E94E>}Fy zzcF7?bu+RPo}*e(s}8%jo^az4j6=k0~dgWLDru`ggCHl4W|kwe7-G31(an z3^<*0PwcnDD1CjFaK^omF-E8&r0{*O(P*SnCLwCz`%4RRNJ>f-A>~8&-|-)Q{ntiD zwgy2UMLWF$C+X~Bb+T4tt~xmt*5>2gdh3zD``f?x$L~D#`+xkGEW(H&&-VeaqAIbj zCxzsQ^Ow#lA9-&mgt2eW^MN;>HQ!fmdY-#~|L(rtp4U#Fo12|)HmrIrozM1jF0{pJ z$r?|oCvQ*j@rk8bM}5P}d204xe@yWu)bMNz|+$pK75 z{iEOiZx25BprRq18|;(7<5Y){sj%q0M{(TESoFpQ7=UmrPs?C4*8=5N3I!`H$n zjH1YD*0Z_1na(0W0x%$SZES+MPP$>`whTJD=FOBPl6?dHFJB)GJq8etPEHlFnJA1X zrHzK?2I1DB-Q@-Q`gB;#mlZ{k5;FmT7rBmaTmI9p6wFNC_dU;Uq%yjq634L^*Jo{HO1~Xs9Y+@Q3@0y*-SDjanmWG=fG`xBOlk%LgP+4Mc%_x*e> z_t?81IdpOk`2iu6NhuNW{cvt>KBep1ntoGLj7U@#%iEjYr0<5lZ=|zQatuIK4H1Zj z3+UE8%R296RXf0MZW;8?UrRG?A)LN{r!0 zKk}YG|C2v>?|UAjl-ic<`@Zk_nx>`G8N<*G!*CqOv7MM$Hz7sx= zTaO(6o4@>%Z$I(G|M;^1XEF`_1Ba!7OIt~d?i7FFN zD!=J&ug!NC<_yhPT+AHamoC?e%jKQvv`^Ksyv9{(YhZTe=5 zFF0P{`<&9nAA57>|HC@vUJ>H0p+CR{D{>}3sZKn3UaL-}0r_eRG zJaqCht(}Y1Ej^{uvp;;fUT;b%T-Q}qHO?W>b)&bZyQ!UpEZfw#v&3 zQivF5{_7w6(2sunWBvVo0MH6#Z0ADyo*ySynud{N6UJF#@y^NRau~On*=lX3lhs%U zBpGAXm>ESPP1BNCEkE$5bu-HM_txW07J@D@!>Oe&OU%e7)x*AK4XPkiuT zS2`O+{Oe!;X1-W7OoI|a2sKQTg^^|1#G~nK7GoTRAtBiFoTbH?FbpMFI>5H zIb*mlJwHA>gLiJ#GP#9|SE|ePP>8d>ySwQSMI9XM4E#1E#Noa5+6u+QG)+RVU`$BPSfnV5qA2C% z#f7=q!1p+3s;d3ofBjES{^K|9z5AXvmqnY|W+RCtpv^g}I{CH|KlBJImP zFA43|bUiMQ!Y~Y@_-UG^(Ri=QRW`{u1lSLPXTJNrKlr1+@B)Sji3tmGg)TyrC=B8) z7H1rK~b zYH`#`Lr=IY!F3%eg+u_d!v^1e(}0Ybdppv8+cb7Ee$#-F1YRbY$t`AqIPJF?r~S%m zt^SQ~J@K_~KI8kI5JFY8R3@vcs_WPoV}wA{b;daYi~xMk6@pVu$J>VJ&aH4^)SsUx z2lC<9>9VH>rixGS~PfW@U$xs{Oli}uJazjy#;^U# zgAd&MC;$7eE?t|H2nD{^s8{oaqNZuS?+1ZT2$hn@smq3G0#%?;(6?=Ku8ga?8F{Yf zd77$m!KtDUOf`-AzK5hJmlr+PMF^yj1N~jU{;6Mj-{bGqbj@?U#J1Va1K%td8#d!< z1L#O>UYkFdaM7%b8(kyiZ^9FP(+IE)<+tB{^soN>kAM5qzpSf@;9N>!TMgT4V!)=E z4g;SOA_OOdL{S(aGF(nZ5}KwHssIK;h~OedOwD?Ac4n$suSp>&A;0|d zKlRP8fARhAf1D5!MJ<|U=wL*Lb)pG6(kfRODBe+^B!pp@P|GE$=rL$5KZp|#C6cCTwzjH7Q`6Ib_qi{9`{^Gb1VW%VKsuK%_<=8k zpj6>f5F>?l45e<_!in`R-)Lk&6!)TKlN~o+<+G(2! zNt|R6TSKpsO2reJq@%<*E1_YqEjwZQ&E>L$(0HFGAPz9j=W;@d)2Gk=&p-aNtD{p< z6vccTsdP#=Qm$?5Mk+!=O{JyePQ7kudK3gP?|Bpkv(uAd7{=@#2lwvy^?(1#1N-;K z1iyx1=(^EjbZ&1dA!WT@TV=S)W)qxcJ5IcQx~`k1*-HC$oP<0nlg%m$ji;qnudU*& zRo?&A!wKu@OxFSx*-ppag!~fL+`H?(gaIEvcKcud`5%AvYhVAXzx!$!MqEhOcI;-e z*wqt-0ppwnfnk`sYOp92oHK-$7v>z-iLGv3+4O(?txv!Ay^m2!n^rSnRDw3kNk_Q0 z+$^JJJ%`dw8AdnDf2HWAgyx%(`*u(-Zu-TW<=A%qX&A;wKK#MEPTcX?&wuH;m(F;e zBLrHhENi-+D|7|E2M8g-F+dQ8bBl8_HW&!;tH1DXe)`}1RClQxpv|HNZ$p%K^DxoY zCV_trBPb-SMe%k`>{^`h7V%!2D+wVaxZqO6LWtni*NLq1mmo<=$BRv(D4{A=*1f9) zAt~f*ub=*dKm4=#rE0_?-AD<}s6q`h&7x>&aW>}XS2gvadyfD6PknOxwh`I}C_)O( zczodz3^7mmI$BM}BAMh>wrS~v6r9HtG!nzw*Q&IFvk)N^uY1AE8owc+2&&|ANkPTcis8f&wuHu@4tjGiCmXbMF{a5zw$F5`S6DZhlX&Ak^SwXITLw> zU~T4~yyoR>;QAdkJJeeW9c^dS3hy^#JM!0F8TW^3#z}IFeF&%VFy?wpE^IO09 zmw)oR`*w|R&OY+~cRl&7FZ{$$d?J-jwXeCiM?CW%ySQ5&@4F_DzXJ4Vnt0$$v{y4sOnaU&R@ z*=&xEjU764uuVh^gd{84qEcIJBuRB{M{LBzVaXeylASJuK&=4BHA6@Yp11?43nAh_ zB^E_3k5{Y`R4SEZb_y-hUBsd&xtQB&zZ-E@tV~ISS~x52VlI~>ZCT#NSrTv(unLT^ zW}^`|sHs|u7FZ(Bb6YP@0F=pO6dH3PK%-G#PZumDV=U>RVHmp6!dZ#>A%(29aTcK@ zm(3+F)w3Ntv1hHpS#5fiY&IL;B!Ez}*=z$>Njq}*Z_XjP8UILPzmRW#Rj(>tvNLfO zHaU`s6oH#q#L?#Lx*b9n)`zRZdNOUaIfRsQWB*rQLxI}VvYYWt!Oi(MZ)WkqpUOoFqa*tiE6&i48|SX1CQ4n_;@v9 zNzraZK>LFP#k8bGdvmm3pMr#t36WgVcuZ5?5~Fgpk$9bxG&Zu@h)8JA6;&mzHyX*- zJ1N_4Rn9-rkt3}rO2U~HhN0&ruVv7Z`knTyR64D8 z+Ozm7ja`Bv8}&}2h?asKgrQ@*Yn4qvfb0&7QZARrxJ8+om?{aSW~SA{PEOo7o43{5 zc2^na%{G^VrfHgCBq+~s4MC=25ga=#Y%7WwTBWfg@s6XbXHLrXr+5?14{lQaR*5WV zZ?H literal 0 HcmV?d00001 diff --git a/assets/buildings/labolatory.png.import b/assets/buildings/labolatory.png.import new file mode 100644 index 0000000..af8e3b0 --- /dev/null +++ b/assets/buildings/labolatory.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://de5drs5j21a34" +path="res://.godot/imported/labolatory.png-fa4bdd4a0ce66e3be36171e95748be48.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/buildings/labolatory.png" +dest_files=["res://.godot/imported/labolatory.png-fa4bdd4a0ce66e3be36171e95748be48.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/scenes/top_panel.tscn b/scenes/top_panel.tscn index fd3877b..fe5d9ea 100644 --- a/scenes/top_panel.tscn +++ b/scenes/top_panel.tscn @@ -34,3 +34,7 @@ text = "ddfdf" [node name="Technologies" type="Button" parent="HBoxContainer"] layout_mode = 2 text = "Technologies" + +[node name="SinceLabel" type="Label" parent="HBoxContainer"] +layout_mode = 2 +text = "ddfdf" diff --git a/scripts/BuildingsList.gd b/scripts/BuildingsList.gd index b050345..3564953 100644 --- a/scripts/BuildingsList.gd +++ b/scripts/BuildingsList.gd @@ -72,6 +72,18 @@ var BUILDINGS = { "build_time": 5.0, "texture": "res://assets/buildings/terraforming_center.png", "required_tech": null + }, + "laboratory": { + "name": "Laboratory", + "description": "Umożliwia prace naukowe", + "bonuses": { + + }, + "resource": null, + "cost": {"iron": 10}, + "build_time": 5.0, + "texture": "res://assets/buildings/labolatory.png", + "required_tech": null } } diff --git a/scripts/PlayerData.gd b/scripts/PlayerData.gd index 7e92587..bf6482a 100644 --- a/scripts/PlayerData.gd +++ b/scripts/PlayerData.gd @@ -27,7 +27,7 @@ var resources := { "chronite": 0.0, } -var science_points: float = 0.0 +var since_doc: float = 0.0 # Technologie odkryte var unlocked_techs = ["advanced_mining"] diff --git a/scripts/galaxy.gd b/scripts/galaxy.gd index bb29c09..16d68f0 100644 --- a/scripts/galaxy.gd +++ b/scripts/galaxy.gd @@ -49,6 +49,10 @@ func _generate_galaxy(count: int): planet.pname = Names.planet_names[randi() % Names.planet_names.size()] planet.orbit_radius = 55 + j * 40 planet.orbit_speed = randf_range(0.004, 0.01) + planet.since_potential = 0.1 + (2.0 - 0.1) * pow(randf(), 4.0) + + + planet.size = randi_range(1, 3) #assign_max_population(planet) generate_planet_resources(planet) # <-- tu losujemy surowce diff --git a/scripts/planet.gd b/scripts/planet.gd index 34a32cc..dc1402d 100644 --- a/scripts/planet.gd +++ b/scripts/planet.gd @@ -8,6 +8,7 @@ class_name Planet var pop_timer: float = 0.0 var res_timer: float = 0.0 var cons_timer: float = 0.0 +var since_pop: float = 0.0 var pname: String = "" var orbit_radius: float = 30.0 @@ -18,6 +19,8 @@ var size = 1 var max_pop = 1 var population: int = 0 var res_rich: float = 0.0 +var since_doc: float = 0.0 +var since_potential: float = 0.5 var resources := {} var buildings := [] var bonuses = { @@ -55,6 +58,7 @@ func _process(delta): if is_colonized: _pop_growth(delta) _res_growth(delta) + _since_growth(delta) _res_consumption(delta) print_data() label.text = str(pname) @@ -145,6 +149,24 @@ func _pop_growth(delta): else: population = max(population - 1000, 100) pop_timer = 0.0 +func _since_growth(delta): + since_pop += delta + if since_pop >= Settings.UPDATE_INTERVAL: + if has_building("laboratory"): + since_doc += since_potential * log(1 + population * 0.00001) + since_pop = 0 + + +func has_building(building_id: String) -> bool: + for b in buildings: + if typeof(b) == TYPE_DICTIONARY: + if b.get("id", "") == building_id: + return true + # jeśli trzymasz budynki jako stringi (rzadziej), obsłuż to też: + elif typeof(b) == TYPE_STRING and b == building_id: + return true + return false + func _res_growth(delta): res_timer += delta if res_timer < Settings.UPDATE_INTERVAL: diff --git a/scripts/planet_panel.gd b/scripts/planet_panel.gd index b44db41..47162eb 100644 --- a/scripts/planet_panel.gd +++ b/scripts/planet_panel.gd @@ -33,10 +33,11 @@ func _update_info(): text += "Biosfera: %.2f (+%.2f)\n" % [planet.biosfere, planet.bonuses.get("biosfere", 0.0)] text += "Zasobność surowców: %.2f\n" % planet.res_rich + text += "Potencjał naukowy: %.2f\n" % planet.since_potential text += "Limit populacji: %s\n" % GameData.format_number(planet.max_pop) text += "Populacja: %d\n" % int(planet.population) text += "Status: %s\n" % ("Skolonizowana" if planet.is_colonized else "Nieskolonizowana") - + text += "Raporty naukowe: %.2f\n" % planet.since_doc # Surowce var has_any_resource = false for key in planet.resources.keys(): @@ -130,7 +131,8 @@ func _on_send_resources_pressed(): if not planet: return - + PlayerData.since_doc += planet.since_doc + planet.since_doc = 0 for res_name in planet.resources.keys(): var res = planet.resources[res_name] if res.has("amount") and res["amount"] > 0: diff --git a/scripts/top_panel.gd b/scripts/top_panel.gd index de6cade..20e1f06 100644 --- a/scripts/top_panel.gd +++ b/scripts/top_panel.gd @@ -5,6 +5,7 @@ extends Control @onready var label_iron = $HBoxContainer/IronLabel @onready var label_water = $HBoxContainer/WaterLabel @onready var label_copper = $HBoxContainer/CopperLabel +@onready var label_since = $HBoxContainer/SinceLabel #@onready var label_population = $HBoxContainer/LabelPopulation func update_info(): @@ -15,6 +16,7 @@ func update_info(): label_iron.text = "%s: %.2f" % [tr("iron"), PlayerData.resources.iron] label_water.text = "%s: %.2f" % [tr("water"), PlayerData.resources.water] label_copper.text = "%s: %.2f" % [tr("copper"), PlayerData.resources.copper] + label_since.text = "%s: %.2f" % [tr("since"), PlayerData.since_doc] #label_population.text = "👥 Populacja: %s" % GameData.format_number(player.total_population)