From 2dfea5b250927150f973dea4665ecbcb8805c066 Mon Sep 17 00:00:00 2001 From: anyreso Date: Thu, 9 May 2024 01:17:10 -0400 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20flag=20refactoring?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- entities/components/flag_carry_component.gd | 52 +++---- entities/dummy_target/dummy_target.tscn | 2 +- entities/flag/assets/flag.blend | Bin 0 -> 965248 bytes entities/flag/assets/flag.glb | Bin 21300 -> 15064 bytes entities/flag/flag.gd | 41 +++--- entities/flag/flag.tscn | 41 +++--- entities/flag/resources/collider.tres | 4 + entities/flag/resources/grip_area.tres | 4 + entities/flag/waypoint.gd | 52 ------- entities/flag/waypoint.tscn | 27 ---- entities/player/player.gd | 3 +- entities/player/player.tscn | 62 ++++----- .../collider.tres} | 0 interfaces/waypoint/assets/waypoint.svg | 1 + .../waypoint/assets/waypoint.svg.import | 38 ++++++ interfaces/waypoint/waypoint.gd | 129 ++++++++++++++++++ interfaces/waypoint/waypoint.tscn | 30 ++++ interfaces/waypoint/waypoint3d.gd | 45 ++++++ interfaces/waypoint/waypoint3d.tscn | 23 ++++ project.godot | 1 + systems/global.gd | 2 +- tests/test_flag.gd | 30 ++-- 22 files changed, 389 insertions(+), 198 deletions(-) create mode 100644 entities/flag/assets/flag.blend create mode 100644 entities/flag/resources/collider.tres create mode 100644 entities/flag/resources/grip_area.tres delete mode 100644 entities/flag/waypoint.gd delete mode 100644 entities/flag/waypoint.tscn rename entities/player/{collision_shape.tres => resources/collider.tres} (100%) create mode 100644 interfaces/waypoint/assets/waypoint.svg create mode 100644 interfaces/waypoint/assets/waypoint.svg.import create mode 100644 interfaces/waypoint/waypoint.gd create mode 100644 interfaces/waypoint/waypoint.tscn create mode 100644 interfaces/waypoint/waypoint3d.gd create mode 100644 interfaces/waypoint/waypoint3d.tscn diff --git a/entities/components/flag_carry_component.gd b/entities/components/flag_carry_component.gd index d9f6e49..d33fcdc 100644 --- a/entities/components/flag_carry_component.gd +++ b/entities/components/flag_carry_component.gd @@ -12,51 +12,43 @@ # # You should have received a copy of the GNU General Public License # along with this program. If not, see . +## This component allows its entity to interact with flags class_name FlagCarryComponent extends Node3D -## This component allows its entity to grab, carry and throw flags -## -## To work correctly the owner MUST set an attachment point for carried flags -## and a sensor to detect when flags are within grab range @export var max_throw_speed : float = 10.0 -@export var sensor : Area3D -@export var carrier : Player +@export var mesh : Node3D var _carried_flag : Flag -func _ready() -> void: - sensor.body_entered.connect(_sensor_on_body_entered) - -func _physics_process(_delta : float) -> void: +func _process(_delta : float) -> void: if _is_carrying(): _carried_flag.global_position = global_position - _carried_flag.global_rotation = global_rotation - -func _grab(flag : Flag) -> void: - if not _is_carrying(): - flag.grab(carrier) - _carried_flag = flag - show() - -func _release(inherited_velocity : Vector3, throw_speed : float, dropper : Player) -> void: - if _is_carrying(): - _carried_flag.drop(dropper) - _carried_flag.rotation_degrees.x = 0.0 - _carried_flag.linear_velocity = inherited_velocity + (global_basis.z * throw_speed) - # Throw the flag from some distance in front of the player to avoid regrabbing mid-air - _carried_flag.global_position = carrier.global_position + (global_basis.z * 1.7) - _carried_flag = null - hide() + _carried_flag.global_rotation = Vector3(.0, global_rotation.y, .0) func _is_carrying() -> bool: return _carried_flag != null -func _sensor_on_body_entered(collider : Flag) -> void: - if collider is Flag: - _grab(collider) +func grab(flag : Flag) -> void: + if not _is_carrying(): + flag.grabbed.emit(owner) + _carried_flag = flag + show() func drop(dropper : Player) -> void: _release(Vector3.ZERO, 0.0, dropper) func throw(inherited_velocity : Vector3, dropper : Player) -> void: _release(inherited_velocity, max_throw_speed, dropper) + +func _release(inherited_velocity : Vector3, throw_speed : float, dropper : Player) -> void: + if not _is_carrying(): + return + # update carried flag global rotation based on component global rotation + _carried_flag.global_rotation = Vector3(.0, global_rotation.y, .0) + _carried_flag.linear_velocity = inherited_velocity + (global_basis.z * throw_speed) + # Throw the flag from some distance in front of the player to avoid regrabbing mid-air + _carried_flag.global_position = owner.global_position + (global_basis.z * 1.7) + _carried_flag.dropped.emit(dropper) + _carried_flag = null + hide() + diff --git a/entities/dummy_target/dummy_target.tscn b/entities/dummy_target/dummy_target.tscn index 62806d3..54dc3f3 100644 --- a/entities/dummy_target/dummy_target.tscn +++ b/entities/dummy_target/dummy_target.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=5 format=3 uid="uid://dpnu1lvfncx6q"] [ext_resource type="Script" path="res://entities/dummy_target/dummy_target.gd" id="1_iup5v"] -[ext_resource type="Shape3D" uid="uid://cb8esdlnottdn" path="res://entities/player/collision_shape.tres" id="2_i5k5j"] +[ext_resource type="Shape3D" uid="uid://cb8esdlnottdn" path="res://entities/player/resources/collider.tres" id="2_i5k5j"] [ext_resource type="PackedScene" uid="uid://chuein4frnvwt" path="res://entities/dummy_target/assets/player_mesh.glb" id="4_fuync"] [sub_resource type="PhysicsMaterial" id="PhysicsMaterial_b0142"] diff --git a/entities/flag/assets/flag.blend b/entities/flag/assets/flag.blend new file mode 100644 index 0000000000000000000000000000000000000000..42f0767a7a90f181a43143dd3377a833494c743e GIT binary patch literal 965248 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

lNPxV*du`i(kg@q%5L@ExNb-xHb2hojE3 z%8$cu0maYvzPWvohyOXlCrmqXYXfK zfnI%9^UrD>W!!y8#xEXIF6-;cf&RNGdeDE5J?x>c^;jBPcu-tKkqb{6>+kFS%!Taq%~JQ>Cx65r>t zSaKP0VULTvMJ({opT|?FFN*rii${f)fDIlONzVg3f;aF8Yr!wQaebC{ej?sb9^qF! z{*V&rI{NYcmf-PPNi@F32mH9t*S2)7IH9w1#R}C|4o^OjFH(`D&qUFyx$F9&GGVCA$5~Vc(B6(9Q^}k305?emcd`K9<9}Vzz!miFREV!*IXz4 zs;52rL6(-pe^CCR2jxHZgonP?3FS&#-|JT){d8-0yMC4M1|FkNO210-iAo>tN15nX z(Iw{dEQjBnifWH@HLr&6z(3wCCO)rz)lj2=cH1u?3BP(As(4>!=2Ac0J!0-xp+xGE zyS5+Y5xjxNu#|7la=8;s_T!Q3GXAB;qx*f+PB7zZ3lcnnH}Hr6!LQw~DwpzyewES6 zvj0J8nNL4%r;+11efdD!4L|Ply~O>h{On8?qQj3zzL$tcTLVj`@4-BBzY6W`2r|`~ z&VH7I8^8N~<@z_(uX3f?tZd(Y75Y)=S0SC^{ViD!iFI|Dr;l+f$d926&iU6lKe986 z=SOZ zJ;xnW=h1I|q?^a|pC1X{z+-r$;t~Ar>@1t8Jx)Dt=|4Xbyn#n^lj0Hlrk++`k7V!g znEvx4!5est{aWz|eib`?Z+;}VkNgYfN2>J$;0-*Y-voXYk9}}{B=r%|PYmWq(sPdV zcfliSNAL^(&T{?gRrFW6JbKNK?9AFl=SL2HHNIXgl{Dx6sx?1SaF`!?$n$Hhch*iF zotupkr=QQ8thtf){K)g)yki4j@9BKNsWhK3Omheyp?QO(E;5eh7OtfEgiSPuko`~5 zJj0PRx9}J>pD+@tEH53?@IdRbmtQZT+aaD$c>CukwY+${J)dwy^!eh0j!vqfwfC9J8H>CWXQ-9dD_2s+DKKg3fWR8RSQEchxX?g_nBUL&k|EuO& zxaE3s4VrWvUj9f(pWEo1A2}$p-ZejxHG9pEM2Lx8F1ObFNEv@f*ZGk-Rw5*rAIV!O zWc5F|EAt~0rE736{Zk;AA8GXY`H{w!p3INry4jk`*=zG7vA-_9_t*9Pb)DZ=?A~ARZ6kUn&HF(K4!HG#gFfI4;|=Q+_CXG~ z4#7bma2I5|agYNpNAfN70jKY;3pwDzf`dNb)c(3Q50C>6NG ze8>Y|D|qNdxPExZ1K%ik=tcbX{Dt^K9{8Bxp|?=d&kqlI;I|7NdJ%6wJmi7TT`A=j z=^)|j`3~`iJn$8QhhC(Aj+QTghdl66!9y>?^}|CR`1OK^UNcGlgFNsZf`{H(!6P5& z`3LgA=SX`5y@sQpxZxM%ec5K^LT{=r z^U3?oKo7f^ z-)m&ZCfqX&_N#q+gZ*CZRM{D4%pW;u1O-(FUkGBa$C10)%{-4PNLlm ze@E6oN_&d-677GZPd^gvW~%$WhBvAGUg1W6EAO>m_G;&nr!vYZ^q`!Ez4Qh9y(Ul4 zog@Js!5er)bil9j2m8GuUHY2KJo0|8DBtP2-)s0A-tQIR>HEFT()N3WzpwB2iuMNW zk16A>XqWKZjptuHN8)+TneTa?3f4I#T_^UwtP>O0d{x??H+$CpKo9Dz*lQm8f^}j} z+WOQv+8^)+9;2@-9>K4Qbg)jWPm$+{40r@@;4v)a8~i#TJLS}Gz82SI{0r8J$#|IX z1|C5c_zl*HAw~M8%jMBpCnoLf2#Tiu%<2{MV4avs6|BE^rCFkNV$zR7zY6cO(ci*& zI^GN5`CcDi=g_$xI)MV_ee`K#Hd=4_I*p!quZ=Q4lzolh{*Uyl{^-#UVkJoq)Z?b; zLHUpU-a}vHNLmxbN8ek2@3&5Dw_ATNyn)B)Thgx*eieTuwEn(%qdMomv>#6EC~I8x zS@Q9oCVa3CuLJwx_}u6Dv?Y%3X3;#3w~VJV`RARdISlNF!{xwh{?sbvf7X;hCzPeaWq{llp8)gS^FWdh|hfw9t(*>{`vDLL0a{h7mx0hn(4o9 zH+Tb&NFVTP7{g0x2P!I$9mHjhxuw6_qK4c=1>Jn?=* zd|;n3_|<(iSIsa!pUOYp&vW3L`2J+H z(E3{t!*~|Puh8#8KMUhokY|_sTfAS_G$K-sV-2w=^?Fu}ek9{q;+n0YPmRSi?)q!x zI`yV<9`A379@Go5XFc@w;e8}WQHpW;>Bnx@-xA)yW3)~2h|fEQ zrycy*Hxl(b{9i%9<*NGLq-)N7Bs-}W*GbpB@-*PAm&?Ji9y}^EBzJ>-B!xHdi1O_& zmtOlwDjuEtNP6>R?<47RU-h?$3+FzPoz!+p? z#C}JLN9R70;0gOiVypyy+~+V7?{{=vKjx4Rzw*e>T-Zm_t328oEH!EShucSM9822U z5oD=H^|XWi;AV##ee8nX@9OR7VI0e)*JB^a`1+GiRR5;y>rbZD)Sp+gY{`YgxdXV= z6OBl_;~)oIt>B;!IDP#Igb$<(7Jjel8Avov*Es0T&h= z^Z{oW)z&G}6LP>o4*KBF&$e;Aegx$Z^Us?kJjf$|>-m7gWjy48Zx=lDnm+jmc*p~9 z{!HZ`=taIo{zSZhhdl6wf`{Hh3181wz(XGRTERmv!p#-l_3$ANe52r@7vcKhArE{^ z@X!mqo=*{f$OFG!@X(8J{qT?nKKCXmzpz8nFY04II4P#P{~2-!LU)Jnxa7d`o@P%<#K!jhjShu#Cn{vPd6& zM`f51%jBPTo@Sj~4rbDi%fTN!!c}ONy?ec3tM;?cSO20RXs2X{P^9w&a>haPd&_?P05^9Avkml4b4pFfYYh{F|x z@#9gUwUBzj8{H=JF#e|8UQpR170e^A_(r@Qr8MK@HhtnZW6JDs<#(r7p1)v8{qn_2 zD|-}p55b*uunM?6RQI*Ok-kVzq%Q(Py2Fq3U0OSDaZTm9H5cy0B<{=UiuB_2wbqYG zKjUM`zqs$`Qun2g9|P%2n*((`IvMB?|J{F=6e z(pJqgd&{bky~d=Yf0y^3;)XX%zwZ^Vep+%0(9S>)+8Oh=9{Nhma;32s=9z8zHR+;# ztl>KL(c|}Jlz;jSw7#9E-duX61+3%rJCf3l(@#HkxA&gl4Lrtvr+5UvDt%~Pneo_0 zJFVFNC*Sv;wwyY{JhNw|-=N*s`wP}QvyB;V85>F7k4NSZ<=_Yp9^F0m^#48xcmt17 zDc|5%rMbsEGvU!W&&-FX_&hV8`yM$BuMrvE%M@CF`{KHyh<|B&Bb zUuTuag^MdT(Xaf8JD0c7uMFRLp{}$6p17Rw!PoeJU)@h-o>_kO#ti-?<}p!uRA?1` zI{)SNk>{DA-A$KyW;$o?_q569nc*#Ce3seQJkJdMEA+Qw(%(WqtU|^KqvB%R7X2>R zdjqvCoUbR7%k%m(h}+d!R(~tQt8FqP^8FWa!>_6KH1@w9{UZdDz>W8}L=Wl(^K~zM z+V@|KT6g~|K{$Nt_ADi!zRPx|>TelvQBSD(NvglKn!f$QKmU3G>E}1EU!hgF{G?0C zo0bQ71aIIm_J;JggkNR6_WhTh@EBR3c!cZOZ%&;@zwf`ec})NBzkoOJ7;RTPg5RB; ziM{HkuE#0;zyAW>z+?FLibwF<^)%~UMDOsJ{@;HAZ{X2ImHq#1 z`JK-{cl$I#{M}JLeC~Tb|1{C_PZR0$eF5%x!o(No0l`!AE|`z`tO&6W-HofgKNK;Lq?kiOq?7=5#a z{m0OEUGAZ8xg4gx-(nbfv&PX^Ue;Z-_4;Rd@Ae|XPbJJtv(@)sjwM};zuWQsmv56U z!AE}Zt8+_VIqK!sw@xrh8NZgk|8m3$KW+IPegB2x(6Y~nHKF=1_X-_I-+!Sv6c>GX z(}w5w9a(Y`egB1YG#~QQmE*4XXT}qy8?G;H9B(N4s0+K4NGPjUWZS=@dxx{TDqh(uS#VL0+GZpK9MCA+P#LSJGww z7XJPVP+LlHhA@@O5-MJF-#UM3^X6h)pj<;=?_@rLLvNU+@Utz++VEY4E$Vt@Rrh;X0LnemuHsQup}Q&bFyH z!v~Mx4Ll+Y@T>eMQh6NjD3AXlzbcO(P?`A~{di6W%Hv<9!-RPn@Z&zhP_F9V@P039 zzX+aZ{kM#!4F36-N3H`B@u<-5kkZk|Jks_r2Kr5VW^r#I`9a+=>!_7=M{spyquht< z*FJGPcwHp)4D^Xd;nSo4#rxGzm(V(*2R~!=`xtN172MxL@VRgQHh!PyYQWE6wsUd) z(z<1J^^1%@-u58tU>WG#L53zCBc8D5RG)Y<*6UzA_mj~tMn4(rw=q8h>z*(lqt<6V z8`eL4MhVOPeXV`^0@s)jnlX`}8eZ6Tm<3Jne*YIXJ<2LC)P}oHV;i zr3YXay%g^+3UA=il=2OJm3jL9bnD|ha-EE45O1Cg;~+^RpZjVYhbljNf4YN-L;m^m zi1{t4@tFS4|KJTgN|GBWm;U?HRaoT_>ooYeYn*^NjrqXbdiZgl?}DspK`H(*F8c4sQJJ_m%7DcYR&)!CnBIX7R)4I}7}r z9Q&JUuTWm1pL+B|`tW+u|0E-;6*=NwQ>$)h9;0-*&BJk_CUUb@V+n%LgDf%J&41m4^ z`W<*KfM4Cmcw?gP669wW(DPlQ{v^i}{SdG6sL-%Rxn9@Y61$#{d9>DxO20#2FN*#N z+E4J!&jGvA;qEta9!h+CQ|m?J`{!;~<1Ss_KX>}P3+tCJGe+g*gU8k4!9iQ75Z$Pk>$ie4!E%3pbt3OgDZ>A5l_eg zhx`P6z|k8_>l8T10S7tggFipJHl8j#X51w4!v2cw;)gu)lb%i-F5@8&y!mr?{zpFW z!$ThULcv3CuJEL%H^PTJ@U?=6UgQfuJmi6I6g>1I-W?JTqzl4_Jn%8WLodSh!$ThU z?ShA1#6L&l1>r*;_}p8i+=?EgzaJj*z*h(!dJ%6wJmi6o3LbiqfAoBa_(LA}^@4}q zTuFC7Jmi7z5IpoE{TqDJ5AwjHzJ}hYgztxkJn+aL(2IC`;rabM+6BD-h-v$)BYd3) z@QU#8UXuIioz$P__slagKD6HW@Z&(qO|KSYEQU0V!+idl^|g46B>ZoWaRP$H zzBph!<2yQzD0J#UW5j$~;|`(+{p08tUiuc7shG(8#|Xb$=OeXwtaz_$&0~#RNmzRS z0e6S@AA@M0s?^`l|CyhKIKi~T`F@`3dA8em&79FVnbRew@L4Ne;c9BS?5%zC&h0!8 zrFPm(Yd%Uc1<|KwSn)_Er{6cvyxi(%fJg8K9+5AQPZZu`f6~ZU>v@&-p^WcO`ie(- zG9LSr`rNmkS0nUL`&^vW}YNGMxXm5 zr+bdL(RVv6Ug7HDCi91o@!zTF;B)f)F=rYI{F!d#Gou(O2N$; z=HX*m$^;&65h-O-gZeotg2sFzhr5OVY67%PwafSDT!V2SzamVuPAie1v_9@>_Np> zt=Max<82q$7nSptEn8AIfBCX5d{(OV2HUQClGr7$%Tut5_$qSS1v_9@(?iNG*lV8W zZI@)i%B73vRdppRb~x<1E{Rc$+ie&4fnBlp6<^@d zT<>SslA49qlV(?1W$Ft$>{{egzF^mZU9hfVxZ5t+0lS($kn#oIpZ2qhx*7|qV9_&l zS1jvr*fl$eT?ci+uAIZ%cEJwV75z}z1$)hAKfCG{EnPNmQB~cd1ziZ<$X##e!@?wX zVcumb`r8k8+XXvdSM5j2F4${s^0Vu_dTYF6@w{cVT_CKN8PJF#60a(Ov^dSZ5Ql-UFIwqXBXbgm;LNo zShuKV-jb9XWQknNVb|s)c6}=qgG8qNXt!Ok19o+YU9i`D&Cf2?LsUJf)FY59U!gLEnigE)ja6b#dggSyZE|S`NH^(6X$oHljpVz zcEGOaY-Jbh)%C>fT3mbK(z>cH)bMUiY}YssyY}IAUDA*0$~brXXt!Ok19sKUQFg&z zcWewJZr9Sf^OmcQlrEBzpY0mzVVAXDP3+n`B~41Gag5t8*a5r3-&J=5`ja)H-2^o!dPyZJ}f`z-xCb{*3XveKdUZzJOA z!SjPK9|-e);UY?V$(n?e+Ps7A~@q=JfE<3-g1F0@6kEgW@jc z)2ns0^p>ql^Mg*HwBz*C59eH<3}Tz@c3v~@_^z5Cbfdht7gyKQReyA{dS4$aP3^sX z(>VuQ`Kznpv@f|hUJqLHyd)ohN9Y5;%6}oH{g5`?Gpu=DcUpeu{vFdKlVDyK-p9a? z`*A(iiQ@4V5_az25vKh+xSsYqoaG?w$)k;i8mC5cjqrHZ!&Z9ai0c<#s@F~7FI$791%n@8Ti1LZqi_V0*(agxOg+!*%nSXwiDcGdEQi@W(StM>1Rvq_IYlzC|X zj@tWsr60F=SVwvU{Eq!QI6s=VPPFV( z(iui{sJ*`j_o1A}2-bJ6L*69+p-Mj4{v27P2>G9Na#3;nRUOCo_~=Ka(0$*z5{&QL zZJ?6xugPb-{4Ar}lcinYIO6CN@uk_e=K0T9?YoMb?N{mN^s80^@<>11uhP%s0;>gDtG+tj?`+=Em<0{4-p(0_m)v^(K`9{Ng($`xMv4<)=u3LmM> zFUI;iYdm{P3t_4M0C$J^#a;Uj?nx92uNNlHHOwk!7_wuF6>-DNxn1=i?%bs27mKUz zcK>fQq}rR>;?&xm*e`Rs)qe<|Z?`+#e*kab(acsnf?s73@2~RMM%y~}k9GL%JAC%M zcriZ!{$t!?;#2(xlYI96Dly|&gMYr$H{+W4-S3RJ&pvV2iuV30$j9ao#iNbbHP28U z!5er)`3Ao`+d97|UoPXQ&yw?Kw_b4`ho%>g;0-*2H}LDfze=rD9O$MPo#81*Q| z_us3>$Z_PWqSFa*@ zxIE6H%!zh)1l>Shg^ZUAZoKaGrEBOHe_e6HSh6e4PRY*7)JD$GuR=cx{VK!@{VlBf z%GK5{qJIT>b~*pnk;~%>JRp;w{kheB96;AfexmiOu9ENFiW}WS`c(&d^n(bWBmJuI zN2-4nUG$#Se}J8+$Ds%1KfI@xzVEvGQ9bEb&AmbOtKja?ui|kT?iHz?kzYMdCR*v| zH!hQ?U&U!)Hp%n+txu`vd2v~9PmZREs@&&J@Gk$lZu740mH+4kTE9wo1CQoj(yx+y zqQad_{U|>@7xQv@e^}SnMvv|B)czpRQwQfsXWoP&Q z))p%MI>x8QW4N0Rx+VagkjQ zw^FnaUwxhcVr=g7nQLDCsV7W1ZA>{&2wPTPzi?^gJev7?ehs9PyWuD7dgd;gC%}2& z3`$tItf4FOiV$MO@hblzeJ&f7=Efw6`t!RsMXIF2>{r^4}lC z&;3?D;KzM+HU8Hlf4)U|lYb=RlRr=GZ}*qI@~5D!K={jroP}}C%AdcI{Mjh|J#k|d z>iuT;Eam2&r1Du*+<2^gPQqiAeC`;*^`B|we=}3LI;`VC@BCSqB)ksCI9e+yMZA$e zn@(5pM|kF2U!LJyPwU8^-C7^fAbFNo3G=Skb0;jTIWLLIgtxh!;c%cA;Q)m2=TIw&Yu$0to}v9h zdlr-N5VUhj_m9gAtG|_#v4XU&U@boF znJWMfkD#qP^!AXxcQOnbE#A!gy!*|$|4-U6aXnNgyi}X7+Oek5%1tOtH*+6yw`c9E zZjQgFPK0gR`@4VReO8#qR@Ni&)yo@nnD4sVGv2MFbk59ExW~1mrn<{BX~XNA8eX3pFtobsMACW(y1Nj#Io#iHauEX=Z*Ssf;RdT$gc*Msq z`I>pBcmCviJvnmjk@5BY-T4kW!&<%#Yx&d6dDXS=4L|d6-;xij|EW&ne>s1yrVb5o zGwGb|9rpZM?#H^0V=f+8;<`YdCL_{9Jtg|7`uG=u_jE~Q^WQVm*+wkbSmxT73w88pL`PMy3i%Wi5)iUpg54V!O5aSs$h~x+! znNPYHzm_oUUqE^*NY|bUA6fIo&q8hAxu><@l1J!%B=o1^`$M^>Zrt#A;SZWA4$UvT z^ic5#V|wvzpPV0}ID|$&arK7t-`S(2U-5=#C=SnjvDa0_R~7uTWy#iuN+=E`_xvnB zv~J4y;#XeY$FgTb|GSU-iG4~naGeEw8!=+gP0K7DQJF&6&Bf@6w*TOOJ8>E}mU>2cxP12#-K z``FNZdqq6cqyOpWgzgw~#fJLH$260U=F{`)i+}Olz~Yy`I5I>!LO*`$_zf4`@^onS z-jQcW#}4)&9_j90vF^cmn#0yquQ~Ywwrg%AG~;(gEkiT^BV-)(_@qgBk4^fYXIo34 zV~G>dm@qACQ)<@)NZ;(}1&Q(Kxpdhy2QtPkIBM*ZUuv)Yvk zD%YmGFPS6d)+yt4ZtJr1rji?8%HOl*eS>lE_=@)dEL?A?u3oj{#z=n3HO(ALi7HP6 z-#q+y!?>ti)0>r*)&JnZ2JbRp$0t*Ik^C+3TUHGz=6S*Uj;7H%>KB&RoIP*(!fsBO z(*oZWy}P^pdDZi(^5*A_n^!Y-Y;|6B;rQ`ms`AE8sH(26nUFU>zpAFXpyupx<0e#& zt{j(_*Fe8f=PX{ZD>CgH=Ma^P_|KNI%8y=uil6UA7&8e!Ro)^Yce%B-_2_I%hEWn4 zY`nC2Gqs0XN^D&!9xCh-D^7N~=lE@=_B9??ZfiOI^5g5)0av_KkDjdd3*2_+HcxY~ zzjyRYHUF>c`+Lu*ryVZ3xT`=sdI?XiOL#Z&&9Lm_-FTbquPbiTYUMYNQ|mIKdCB(o zHeCCACl1xV%l*&c`;u#TeSdGr0oN|_(1*|rdd2VAY-pwGsA+qJ(p zKKNG*SYY)OI9+n-Voc(N{eriPAM)T=k2mm;2R`?9cYXvfet5_OUmc2QybwO* zfsYCvdcl()9`eAi7d-SL-nBmALmv1J!9y>?^}|CR_#7#}(2Mvt`h*X8;KPE4UZlSt z9`e992p)P7Z$CWbfk*uVy~sb{5%~)IK^}PAhhC&V(h>I=&ts6N=P>UnCiNcVfYpXjA; zVVTm~3+vIaPc>X=gIT|N-`=(LXfr77IQ{g)x%P~o5j-1f9kdJj!6SGBkH{C`SDD89 zRkyd+qO=RWt9N+N3fH;eSq`}SeRge?Af=V{jE+^>4N zN4N^jl6>qzb8%=UP8uHI5xjv%mM*RLOfcC(i9;xI}ywT^q86)&$bd^4uj zal?(xQ0-fErdK=Xin^x<0OqRd0s7qgac5ay<*@`s+TE(?z4e~>IiB49 zpuIu+gV50~>CcU5hwwZHd3LehitA6cUS%MSsd$%F^T)DYMcnYo(*FFvp0z*FgL=!H z?V+#rigFe2URdXVbt-T@pWApvf?Ac}S8pNx{MsL^X;AUjnO9fS;V5&JgW67ka3rGT-`NY@Ce?( zWAs$TBlz9f)+H*BsmIM)uadg>E+h#a!5erCS12CA@6I-AI9>E)U zG|x~xf?pLpeQ&(AWD}xdeQ!Ln-10lupS(_W93QtSXNUDCxG%Ti=;J8#-mB1fgVvwC zLHZK$$aArHT=+c+7Yf-`Xk6j%joU{$)~nzRJjTwH_EE~EvfgULTI`gt{ddsC$K(ch zS|fg}BeHRxXBLlFt8qR9vUi_&Khzi}}g#I4|1g7LV?6&76#_G}Cn}$#`p2>y8TPzF&EC z^Qh)0Bgk~*5xjv%*b08(-&w97j~pMANALdXwyd2M=bnUX9^#(In@ktCkJdb1!6ll< z`}QC9EYbD(&EqZq-*DH6n$Xdc zw(?w?`0@R%*FVeiaHbMIOqfSVj&4TAk*<}5Zz2r)pCY{@N!Kw7ABp_x+|u74^>XW$ z6O2;EKk>r8q32rWw!C=z$t@Izmc2);39Y)Pz4)MGpX4|cU;E)r8;&^Z^U$fqTbn5k zR-8BzlQ&#nN^vNC>^nCX&pkLd^jh?g4Hw_~=SOdwbbRwU7d$>G^U+tV_`w*db@gl7){c*refP_0lQ|CR$69IbU=P!yr}n5=r2pSk=j?jP zIr-{dN<~8Y99+&z(8cq3aSqpO9xv`Ca=F}E^LS+(DVWC_%;QazU!3=XdAz|q-e4ZD zvqU66kI&=n?Cw0?Q)(7f*DT?Qyw3gJl82mJ;`-zwz7p*+-!6BJnm1V?ZsDEEA0Dmd z@5b^I&*SB18+yd;^1xLiapg$N^UL2KZ-F|q;1CR89Uc}oA&+mg#&*6QrsnvG~ zA9f%gn8GWN#YtDJRUgK*Dja;4n^LW7&2r&Yaykfm+RH-WS1%R^v5*6iTk|C4yyili9@$V{~nWW z1g8hLn`kG|ZsIus?Wx}HK>LgK)TtNa@s)H@eNRE{T;x^9m>DvUO5A9*w3~Ha?VK|d z?{l=9(1UUsKHEcI>x6Qpr5EN=;X4X&9plFKev_%sqnb()do-MBX|Rk2m}23e@`K7l~3pQ6nHKUADqT~3{pD=!b(qIl)JZ_QJA&-g`wU*DgB!1Ved!wJr+-~> z!rUTPn$5Dmr-196&fKp;KMMUS#0&i`jAs;T<4WjXL7rXCzw^lD@rZ0X&(D6wdJ^=? z^QIx|qr{D#EA8eIkA9Fd5TA3Df9OH^51;3uujGi{>sPh@mUPj)X1G1~{Ss z;SD^R^^!j%pZH{hZ|t&Ho<`tY4)__?>p9lluj2XXmjaejJr@`5<0mMO;0-*+7Aqdz z<&yThHaecQO``p-TWdG5pD)Jb#u}?O5s$;ce%C(t_3;RLfAp4d2km!#2kGi0FdE|M`HhcCNwCuVrcm!|Y5f*`8<=-al;}6R}`S`Bp4Nu<_ z`rxc5n~P4{aqmLloo>GLmzkHY9)9JK^`L*@RUY%RyAxVhW4H6=na75ssDCW|rY|#7 z>mLgxhPmGUE-hO_aHHDStTEJzse{W84wmO%k*hrUsed))H{x8J~-K4%g^#7$mNr}(cln$#7oT)b z!ABLhTe7ULv>~IA?{Rp1kMU3a*h>+=e~^-5BTdoMW2RGD7xvXX+^VJrWfT-n^Kf}@Cikm{!~)*ySvM+->{RX z6#a2SY0<$qloYMrQdYF-g~>(7TvAdrX!G$!7e5~^8nks{QO-q^i@v(5tmu{zp`zx) zjxYLqQ)$sh8AU~>-!!x6l*rjdYt}9<8h!UgMUhXhD*EV-D~d+Hd4AD;hg23_&_1n* z(zIyymHQX%^Xh&@4-7h}=*`E56g}|i!9_2ec39Cz6^9m0{z-1pANN0^=>2<+EqZs& zsG@`ZR#-IW&tr?`pLulAhpUGa{q7e7iXJ}V&l8{c>7x^87cQJw)&CPTZ{5fd0c3Yd zfuQ^c<$rg|?}4rE6bQ)f)udVy{d0A_>Vg# zPb-Wk{{HZ5i-TW~20SRb=qD$b+8W=lDO0Tz?)rCE zXICw$TfB_-YjUn9LwG%L`8yfiJ!)lNmBPE#{xr4XuD?(Dqhr)QO=jWOyI&LHfqjA+ zC0;w)<=)Q-a=^s|2YtZn`!zuhxb1?2KH&8Inji;U?ypojK_77Xeoc@Au0n9o2b{iN z6Xbx43J&^goO{0}$N{%raL{MtPO-8$&o>@U7a<2+hv1+OxD^B3ILHB)bC>LQBzWNR zvzPH?;`shhkOM9(IOqdz#Q--Ba=`_^{xi7x~8z4|(7l1P{H4w;vwzz&8mVdeI)}Q#gfdEn9i zf?n9|hlf1yD4)=aczfY_eK`7gSRWo9>+bI%|Lf%tZm#u3Hm@~b z=D%gXI&s6x)Vk5w1s?0U5l8};)6?3oPV`{?n|Z#MzP`I(-5Hd2oPPST+wE5;yn#pL z3*-}(J|6qkMfTmq_niCHP4P%imcf2?KKHHlsQP|&Q!|GdQ%Rp!o@SlS{pwEl2v?z5 zl8@bBzd9+;;8EF4>l>ZrlD|9c*sqSiJKecL@#x&I4m|noSBLuuLtKl;%lh;4{s7Jw z^!@O>jH#LY^XJjIU!50^3ay2dhF-2$x079{uRo?Vi;txwuovSf2}JtDE!~z>_p3uY ziFVT*r`k=lr%~xQqW|Xi9D;UpHa(5=zA9Pd&d7MtN@K4&Cj5fhR|RhLLfLQO`(Eu_ z@+3yP2|XyMVK05bcc+sl=uVOVkKheFB0At#`Mth7J-UtWIlnvouz>NMY5lv?xG!Sj zsPTFIyVGkaSFa@ruRP5_XF2d%|F6&zL>fEHBY$@q4&@SoE?RbvF^SHAJflTp6YwVxbAKe>nW&84v~ z!=TKjj(wikMoq`LTo`cDQ@X$|wjIQzTWk)}`WKY}A{bat+2ls89`;S@vA)o%; zSd9D1#b4|GRq8uve2v?g=mCl3fmE*EF7<}r+`lK`ll|WdeQMiF{(pY#u%G{>_^I4b8tr^S`h8Kh^wSX@2uFw>|r5{zEkX5t=_w^H0?L<(mH_ z&0nGU=WG6jn*V&wAJP0*YyKNG|81JTN%KFV`8R0(=QRJzn*aBjf2-#ISo3e!{Fz$* z8l?FT()`0U|IwO%tmZG){9(<1isnB{^PjEx7i<2DH2)Qv|2oazsQK4u{`)omI?X?; z$f~b+wv<&Li=Ur^oc<#B}&pTb=C()vxbq{_Spm^h?bz-{Dl@ zlRlZ}8Ta>B^FHA>2Wb9*Zhv%7w?F*2dJX|Ty3Xx4pLF}fPr3ckr``V82DjgAcKgFE zZhy4Z?T3^Dhr9erp58OII_oF$|3>rwQTa!b#dc~in$u^;{-Zm;x)ILwRCxV9U$qbST@{{v z*Xjqvy$(ZKY7o)WtUW}D_=bRsnY3-mP`E#l(&m| z^>vSN#({4he!O8^Wa**zEUbXuvl#u}$g+M(>s3D<71}#K>2#ILV+FO*Xm9^b=X(Fb z%U*8A{f|LBsz*mgDysa|1b5OR1!j>I+fSPLFCLFX{}TO4^e?f#5B*Ne7stGJ^fUGO zj7-C4m_q8KJu^iQ>cQBLz4XnI z`cC>K*864-1pSo60pfkL)xVs31L>lE3EUm}C4;Q@%|j_Q67?@RMAqxqzf@?%%iX%+ zYC5>!5xjxN=ylS+6n>ShRqp46p70p?zTy$?4m_%P1F7=(J~e?}{Sr5i?lFLLs-(dq zcmt2&m5N93yR-AGSKZY0IPFc(3F*Y1odVzyyn#pa2E`-zwGlh#tao_a$GB|gME`3K z6+D7B@EH54;t~9+h|HaA7!S1Bks^QOKFja?uG^`SiFX;Px zg~n+a{PQ1wfe!9pyhnAbez;r2^#86Kcmt2KknOltTT(pfy9}tqahw2Gv3I$gMR)zavul%#N<4>pWD-^hDCVioW9|% z5jCNsCv7dZkga=;Klj&vZ@Fme_0RHtHd6^7Cd?xwNB1M+NY_fjHxY*YPm$h{r0W=k zkNk2$W$DJVHnqNX{kKXPzwU*7Lq9nB^p+QIKe>hC(6ZNvHKC)=c%}HDW1r+W6kq${ zO&jih@2{a#i?=pY9Gc(BnLK{dLy^|f4cC`a97-4D-ducOPHt$xrH5>Y&NUys7Xy$i=%U+kALfmQJcn8uPWQV$KTuj>+@+F8)uCwUpszP+tIK7t?Ys?rcLHJ zsGntB*V9A6j1jNaTj{~}6f9WSvg97yp0)43Q~Zl@wmq@?vP#;+${v9mhu*ialyp#< z>>kGz>vsI+XR6nne049iBB8U23qplYZE61K#T%QmK77CV`;?cU>+-_fqJRBwS?J1F zHZ=d@xZhi4MjzQqR9`_4yIgK7X!;w*ALdB8b;@|1XT&dZ{&XJ0OJCYNy*QKf;NW)A z`v4ZMw^UcJ+HqrKhSAS3%|=T}*eXxXF z1O0dCLI2(K)VF_`(%lQ=&Ghb0y$2W9(NE%a1O2S`Zam7E+IVvVr5&fAez?ae-A~uL z?5^wwkKheF!Y1&m{IX8X7^?V;k2k;NTBr7eyCH@uE5EYG`@Sl3Ooelu+WL&qnd?cP zSDuDql!FUAd1Q3@AIu}~Ki47qEpdOv%Wzx^KRw!d4~CRsJe3{8c^$HRuYo+ML;CsX zhAz0g=Zx2ZIKnM1E*|bBx4T?heBrX%`bGZM?k%?-qWsOj_#Uh>7q>fmur6Py_F&ET z54Kx(e$p+J0_EJV_KK^0K)H?LHaw*KG1+@HJW{179I{=ta1Gc*p}E6+HAJ{Ddk}&rzdZNt=JNAh-#+#>_@8b|s(TQk zokY8d=L9@ApuI%9?bi=NyID(hg}n#iIxAjY?PlynwdM}4xmvYvv0r+%bIBQCetC@v z^q`!2>I?QDOrD@SNdi2AH}Ht)fM4bJ+Jo?rHooWFTjl2h#$GCT!v;U@iW zKRdx%)kb-@BX0B#X@4H-S^EP$sJFtu^3d0MWVwnr-t9c+_B)O8IA=TgNPR6qe)dpG zjbv*HSg+q&0)7zgx@q~b`4!gvTl4nF|HnJ~k6C#CUs`!iC*v7I=Z}(j)l4WK2-R~kDjkAxnT3Ntv_r3gziT|v45-zz5Sb&&Buj5<2W=Q^8Dz~#uq*>Hjg|t zL~#h+ana8n{qw;CN>*KQMKi^rdG*!B`KxaJ<(OaZ@s|>cL&@{24-J{K*B7@p9QkNv z&NYw!e&v#9F536iNmVo7F21>A$UPtb_o%jC)!tlo%KWD{=4XUA9(Ts5vWl;6YTNY3 zrzRI>syXZ&4~naG^fW!5Cwm@!Dy zdmg!e)tDzv{*z@7;*suds_Q?zmy&5a(^a`b5;#E1&c=2G%PW8%QYdYuCvGbR5`HPt9Y9wWyA8{vT9X`e^?K~E_8ey z&zY0o?OSU?Fpn2|=yqcsZ|%J5x{`J?R;uN}eedAyJV&U{$K8~T9P=kY=gxI)1} zA8`6SUdRDgD>&!_PM^mMIp7)v2YtZl^LQZ#TugA#XXD)Scp(SecELfPjkD+D4yTKd z11@*1N>Atm&N+{lagYP9LU7OroMF65U7ieUO)KLd2V7Ke&`K_C42*=ju)mj|8~jdF;2sSQ#t zA&-2j=L6s&4}6nWz6*Ww1MrXszFqLpi*WUP0X*b^Hy@R9DSD6({qT?nzEJSci}>sL z3*kc^_*%h3FVfEs4|(7l1rNQ5w;vwzz{dm+y{Mn`e24f$9{BBohhC(=A0G0+=RPLo z80jGV>-iVqLmv1F!9#Cj5!t=a%^cyh0A}0L^=t1}~;SuEsE)U zM6|%K@(1(ckuH7BWgdB6Jj!>v&WjI!!}H=1o<1*rmNqXQ{=Pmh9_q7}cJmIsYF{`Hi33ULiM|28TyxG}Bpz=NcAsmb5?OhM!XHPWaiLwLj2Oa-aMAvNH}DvHM)HT`6J_herONFM9)BV{irYgTZzB%9_EK{5nEvzP!5est zwkRIK@6OJ%e)Gk+ETTU9g-3aGm%#L&zX{&JBkF1Jt9azS+3(+IbISf-x3S+jpZZ50 z>B%yfPwjJ`-%FP`)}_*a&nrQ|%O|K9B24Ln+jLw~@p@<*gS zWOwB=hVdgx`yV&c4p;hI0l;1ENa6QRAD&&pnkNyDD39LtYIj1@0^bF^+&(rOMg4l| zH+`AnIEvr9`hH|{wXfY{`1TG5%iEZ3r8G~(n$rn)2S9KkNP!>)f)of+AV`5A1%ea^ zQXoiyAO(UH2vQ(OfglBf6bMovNP!>)cB>TNp<#Oraknx(Fg8emAO(UH2vQ(OfglBf z6bMovNP!>)f)of+AV`5A1%ea^QXoiyAO*US0$m$VwD)S{pyE?i_bVZv`tCVj8z?_= ztfQZ}S>p11Oy2(h>t?WyCRVK0(O`WI*2`f14E9mLz6heu_zne%eM)&92yJv{?A4#w z(Rj~sj+*NG5^&8nStk+mTK9rb{N4Ea3(XO>R-D3{=ryx2GQQw zd|2yfwlor!*3rQATz|1w|Dlu`iPq5|{ruL^D6|TfS+^1v-ZXN-BX|Rk(dT6Sh48CP zE}?ned$-x_xcNo zPFgtN5xjxNu#|7`tBmFK7FiA+*{^tXuD|f(5$i8}?tAc9NF4IdpGPi_{Nwc($$8uj z)?Wy3;1QV={2IpaQp0$Q%HLze<4t9AH;mjg`nIdf*R5XBcIK?x%d)A?+>3tvZ87kK zdKBLqgJ0dpo{yhTHH^=v@;;6O-`u~1+cnB7{D+#fz53so!N0^jqFwUhQK4B~dLLXK zYbl-3-eyt~k~isL?+lStv`+{Oa>XJNGNnHQ*L9mbvuU@>nk6UISJ%v0Qd6Vf?Y{qf z4a(`?MAzc+NRs~j4^#^J8S}~vhrx&EKg0Ku{P5e`-4{huYXR4n;`Plw$4yU_Hd#^n0)WGE+i^_q1xS4bJ zGj!Qq*$*DU8+Z)=PRhBfT=KpLS8ufKW&e*Y|1e6&kwWAYTflY3^$s8E{S%ZD_qg=r~%k(?IBX|Rk<|~Rv@T)Ah%b&Nu zN9kkn7*XYsSmE!wr(PcYLUxzOfwY5Gdh-b0z$4mQ@axT+&1-Mhs~leM^O(&K6KQ#% zJc2jy2xGyo^8dKZD9PJ|dj{_>6ZuCQ`#3h{CWt%dETXY-Vgleo>iW9A{=VL0=Iz~Y>gcL^tDons zZi7dJl@tQ6Tr%s@|(cE*>3NHaW0-!{|m~ zfDOEC-GOuiJ!X8<*qn8~Mth?}-K#DsiIQoRe#{}aW*HYZ% zF}=&<5*PtSU{)b8KCyms)5z-4$)hizUSn2W8($0~utN|KlY?oRA>cqIhJ_~#Lb2z{ zg7ohGeqzo*2hAVSb!xS*5AHk4v-$l<++W0g3Ha_X)~k^o>#Vr%Nc-A7b+`1sW9hfJ z!fWI@HQe|+>b}wsq>FNWUChT(4(8+0_sYsUYo#o=59`$Dzh9Ik)~VrI_Z|0MxL3MH z?YBttOD_2#Z_zKngcFTU3=W9Q6?eigid$M`|XBlz9XweJs)`vz~_(HGK? zeDDa~z+?2!l1K0>#nW>lpHA;jW#QX*`wIE>=SH3`?m5tLjdX(jm5b*_a9%~j(boY2 zxejnbaL|1Ex$jruxe=OQ{71?Cs^b0Q;(CtH{Tx(oXLrFPcmt22nm2)8c^${C2+qGI z$jv8(&I)E=)D`i^|B5`NOtL+}19 zwU5Ga+7C_}E<}jHRM4Il&liiIJTAWfx?9Qj=ud;z4flU)>s!8dYFf^{&wFF*6X!%j zpTGL2;=8-zNw9fKmkvI>zP0Cn+?9T7b<HF_~>F_>3xofMa!`3hU)7Q8D=s*AX_IIB2 zzGb2g%U<(|FAaU_rH8dfKJ?GWKls6?9CzW(-@EPS=UjHue~U5;xpBPx z3)g3u>Z2#L7F_nrt zpmDMMKwh}zsk)8L>qa@}1q*|{!-La8qUFTRUiTmI(jd4@*tvyc!GZ<5iPs9~3DCSg zw1*WP^nB>mR~<66P+Zsk$BJ2&h{pc$qes7a(}iiOx%Fr5_{8Ys=5+7)IeGny*Nm)Q ze8J+SBcsP1w`TF06OKQA$?C<&y?FJSHKQ+He8CG>kFI&q=-Q=AUwq!N=Pg~l_!9A( zb&Apw?IQb0?WeYrwjZ_T`PgDEC*sNx6eJ%W$|%K3^NHkglHB^t-;v zZ>H13G>#332-E}njE7&4^7XXRU)&EJ>5%UPl@H}1{}p=_^C2Dbjj4Pn5BY+ixQ{y0 zA>WlMAId|%EA}YnLptP3R6dl4d@tPnX+p2^{pFDk`5ssKP+p$z*$ef2NQZobidU4E z=eux$o)77e?`)M10*@8}cJP@?WCzqg=>!5=~gl^^Az{hpxe0bWsm zq(}ZSl^^9^sqz6wGe6QJ|CK5~%7uJW4VPtk=C#?6F5b_x(uV_e#+l6Mp6)b0d~|`q_DaNALz7Bc&JMS6=;$ z!2Kt8=17RJ+E<(I=RZrGIH3ejI(2C0^EB5SZVS^{*w6HyfOwwuS;31J(62L(uM!g| zY6qv4$d$R3;9yVjEX1z%1|I6(*#(c_4Ll+j_?2O?Kl<(KwDkcI?)U!a@;w1s=Mg+E zp7-Jf^mFrghT!lD!M%$|nHyI#dtKu3adCO*r+?;YFD=~ZA=xLOe`Y`Gy+67dCoyiu z%cWg~@f71F#_us>`~*Dc_kH(AkG>)Ir-d8-Sgo7>d)YV#DQ*|-6y>0uCS~RE{^)KX zckmhT2;RUWss(;!nD<8qE<2k`JktK?Xy3DSfAn}e?~e|7=KkpKHTFkGc&FbVU5z&w ze{f$9_8aV8)Bc1#sOvqgsn9%!-qWZ3(RW+0m$(O2J~s-3UrM`8x$%F7nDPf{$-|EnTzJ@GiKcvNnWJi4BjE%G=Ao|jd; zfyd-$l1K0>b(+4%wdsyrzeRZX!mm*H+v4|qb>eSSyHml;!S}fw=TrN;xUcs2gAXmB zpSwM#ZBd-3{;c}>yxIR;7kC4Y=%>*xB^l=~4}y2x31YTwJ8yZ=-jedDKWFK9{w~`e z-EqEz#}mY}dGvGhNOhs-H(fl++^8`84Q zPY1&f3hZy14uXNsxn! zboD(PyhnqJ!TX$eUk2Y#!26u|E&|f;E}ogiKD6{64Sf&pDDfT*oiBSfHvFji?!0oN z|5oowJX!YM3#7PRJSU8D@SJe?SV?*9C)IPpcyH#^m9k`n-E!#6@2Tg5)Awlby?MCS z`xo^6gQLV-F!U?Og31JbuJ>qUZc0hV?0=62yn)B$m+Jisr6(y2?Hdf;(O)z?tDMrhobTEB=O_-q2za-z#Di> zeyheu)h;C^^qt83o7QsfD8tu@1fNs9fv1lcJgT6}N#ARGm;64E+CPBiC30@!YLEEt zyo<-;%w`U}pQv~PkFlEnf?o;#2`j{VY+ufa7!cvx)9|mwMpKBVJ*VK;-4Cn4L3(8F zPkDT+Xj^Lk0P%gGYlDN+pL@PKB+}E*kH=7aff-+;(rlKz4!f)mb_aL^kGLSTON4in zTdoKT=n>2A|MU0W z{)HFZFiiO`{LOK#_Wk=zfBnPqd;4!&aZl^+8~=3Z=`WDq+yBrxx7>Q!vp?K=?NIT1 z`#+3NStjbR?3Q;<4lRB29<6yt{PvcQ?)lss7d+zwTW|R4K0_OSb7bqIdw%@$8$Yw{ z&Nuzb$cp2a{Mnt6*gxQrXxoZkymjQx@BijqD^BPA0}6VxJp;ab1(c;Dz3Hv4?bf+N zFKV4|^Fv#I`t=WNUGT_HwvsNP%$cEEUIIVdp7#$>_mO7j{sE!y{s9M7?H{l}Y(Hu4 z9{>*Knv4At=Gt}RdU^kVAlo~D_7MOss{hl%=@}JHZ7RyQUG@(M9@;tg4~U;qcmIIb zymsK^HS0F7+t~LlOFobj*tPF$>=SUS{Qma|%AMLO!{JJ`f56K+?;kKvNEV+E>-r!& zVnF0VJ@6g*Sk=oe(D?qmN{4(msW8ezesli-q(i4t9 z4*5dpk;;#Jha39`ARY1{9m+%aaAW@f=qbK`KBnX$J$O9WkWczX`v)LB@?UA_KX@_m zLVl!2{zTMLRX?kMzhtqw=F%;13+l{78@d2dn-LPi5%8&HO4}4HA>RpyU-9JE$3s^r- zR2b#p`Y%!VK@Xr;NQdtr(|s8F{ynV&zjEFxv8PG-J-Bd0?H{1rC|LGbut}_7E|4zD z^>qnP+CKp0;67G3zpOmoKfo8)?VS!hf;aF8y#T+mUbKI}19#?iIfJUjLN0pU}nT@vpj-5ir0<0Bp;(XXOjH_n&qAFlen z^5j*~d9OL`yo)cK7~isK^1K~WYbh1$NpN>$U0kw(FYpAuNDtf*2ELPHBb!FgTR(c~ z4up7T#ua!GzUlrKYM${krN21ua>evzCqHOyd7)VIEFRMrEf6c8?t}24c^~F^nD@me ztNkz3{15Xz%s*Xr2Jc2jyh>C(=8Rq>jfXmM25|6b11={y)-Txxl&ih|Lp1J?UH;w%-5Z>wczfj{1 z#-B*tm&Uk+`!?qN6Wq_x^?s3hjtBc+9NuaFi!;>z7jXBK<4(9=Z{ts>%0a)C>{U|U z?d!!e+H|Pr^xIJ}EKfTB(sj}y_bohKvL4T+<%gu+xO?u_1u1u z$JzhfK6nF<(LRz#@GJQf`&|T|yhHlwuL!p<|4JV2?8E*SKUMA0NKNal!{+`MKNI_3 z{7j^GJlfx@w5h!7aXzz8q`i~u9R2rvSS03*N%FanGK zBftnS0*nA7Fn183=cV#{h;!$<`AQi9Mt~7u1Q-EEfDvE>7y(9r5nu!u0Y-okU<4Qe zMxY)7-Q7>jzfDMwtJ3|*^r*Z4g?euW@6n(*yw8dEW$^tEyw7>C@ja9yL}kqVFZS)U z|HUWO{ujzk_LtAsM~9ZY_kv1waPgcl%E5EO@zYAmyZ!AeWl`z-7bgU_uh7FCq{vhI zsON1eccL)hw{qE%OFn)3=5Ky?nDW2w z`V$NLCVcIS-z@B#F#ps$O7~6J^vC1NL>-ph_02aAz3;vATdNL#^p@xBzv#vv9Q=W; zmwjcQp?k!>3D4R8ZctfJd*_Qy_8{2g>$C@Qst4^#YE)ZvyEON^E4`1a<#`_f6PKz?|P( znlHW{K?i;3{pza@8CoDFRMrm zvU}Gag{@k#YW3*G(O~n)g`>g9x{V%Lyp#N;NI7-wf`6g!M^_!))S1eP50u|yuPV3v zeBK{x=i9kIKaYBm3xA$Y;C}X|^!md0-c`8H`|iCr-N)m3=k9wF{gy0QGK4;#-2LYd z1n2B4#{#`Pm;dx}K~fLLs?8%C*NjZ8>7fXbHOB?zOrA+|%AN1HT~w)k3w^7Jj$*y( z`=~T3cRIlLZ;V6)pahXpq~*4t7Zl$X-!nd8q4>a%@YC<$fOaoENBn}|)#68K52iqR zpk8nh50~QcyIskl@VsC@O&!M%c-u=T$1$5P+H?%EvdaiC0&@z1!*&aTz30>w^Tjd( zHUeUPmF>S~j{PD`+Y5_hceS4u#@F1H<9WNa{Iru#UwQJG=be1=YfnDe7L&%vd7R^9 zNi@&nNPHHnuVS2VKHyM?5azyKm334zQUApk%X)*`=Gv^ z4%=Oj%FMoR*?M&0(rNlVrhd`45B{Og{R>(CT>qPop}E}(%!}Bp{5uM_TWde|DRBp@ z-I8{?j4P&ehs=FWx(&Na&d)slzc&=_>*QzPYo~Vk0=KHB3Ge*np&lbPGgc40U|{*kNP*=0XP2n9Vx$=yMOV%A~8evfL?On(^~k^y*Cfi^~$j~VX%v!dhz9ErD^algWWZq;sbp^xXhij(1^h19k`V8b1`K}d7ljYQpP#Gep zaLF%!s*H4BaIrsyNGsMH#BV_SG(1H5WO*8%FHVU2&w+3$OnXM}b^moQ6^=^Zrgex^ zJ|z_;Eu(aFU1i7V;{zMkT{yORVD-rAvC)Bb8wWOzt(zQ}Oc#yHGW0!eczCb-j}Y}I zJo1B{^NK|f>q~nIzlKMau+E;@S>_%*RKF>qSXdYOTgAuB{~1ch!?WKl-SCv+zTb(8 zKjF{i`6=Zd{2m$3tJH3#_xOho+HF1uPEtV_hW^Ll9j3W|owopK7Bc#0ZgEL5frFy1u&Hvd$peSyi1}_X~ zWhh%6Y8At6BOLS`&aW)(6Eb{o@mSXlFTTx~hqha?U8E@&1Z|OZox%aD=QhO5h7dw1@@B?XoV74(mBbBo#i+IDz;P$;&QqV3xOO$%VyvJi@v z=Rs=YC>yRkD=$P%vW&jqlOuma*Fy9K5AOT&w4We7r@Gy7(+ww4+=KhxBYrO*rZoC7 zc-$?IlO9L=-0Oe6#aE{W_L1B5IZ?s*hM{fHzIY?dyN@BMY0)%hb&(1^q(K;{iT`T;O3q38$ z63=0(^w6vSBNCHtg}?fl>}U6pdKdmi?vn-m#5iK==Zxaj)X#WPQ9qNUbHDsLp`U1V z&_8mapD3>>{hayXH`43ZQDeUg0qB$I+UcQhz}Htlp;tcoN&A^%e)E3xpO61K}wCv_&{!Qn3NwKQLG2_9p{_U_o-*g{y5zI;KF^A{2JJoBVg(|!g&h#pzpxf zN8hJ}qCgLt;yY3Ej_`2i8(g_v@N2qu4)6_pefdWJ(-hx>KjQJsX3G_0@{F*Z9()5| zAHGA;zA+Bbc(zC@HdNzOIH2s@TjjVFKB?wmKT+TF@EbONiOxfD5tS@ zcp%$7Wqg#!q1~CTojPlW3SXagNK-fHQ#P+udKTWR^z)0_ASRg zLH0cK4SE?5cBhwbAiWIp>w{jRoTl_Ld?xE!X)MKlF+8l5{Fm zdImkj{n@|5`R7YL95eI~HHx0!ogSV`dML`q0X;-HP3hs_VXTM1yxN7{nXa7^dI)@d z^$_}$>7mjy=pohzu7nP`>eNP37HmBI@>L^)0A;n;qxhqe~EVod!* z*iH{U1irp{2z|=*Q0W=;0qaW8hi;$8A~h5DVOGc*x9#V#UiGSUe3$3>Z)XI+zv=Z} zT?^?2r(zBJ-n1O(O03o%>*`9?vwIJ0Ek4Ub_2$EcfT<%0+v$nFBSkduC0&6X2#!Tm zrV}RjkvNHUw+{+G&8slQnNs=}{(iBYQyO{yS9r4ZKdNIfOm!2h#{tTrcTi>7NIP%d zyeB@}+U?=Hw?6sQL&;5b81+euOUs`(kItzyTPY8nLpqW}-)OB=2eHtrqDRrh*G?zQ5DF1%xWuhOvr_0I9Ia_t(I$HXUpCVhq=dhxs; zkd2Jvm}8DUI{&|NbaMUXaek2$=&;KOFanGKBftnS0*nA7zzED$1O}GnHneC=2lsGreJCID#*{qN1M-fmDG$pDkcaXi zFH!PP56D|uQ(pRjxX256C?E0$BZ(*K0eQ#Qlt(r{9gv6eAum?)P!Gs^k<8ZhU)-;S zJd_W4GfE!n0eL5MElFkwRX)f=`H&aAT(v(X7xG?QQy%&r$V2&%H>KpE9*}oz%?<`{ zfj}P0hrI9=s{JXsnY@}E%u@_JQ9k62DS4XFH-*}>5LUOIp$%7?reB@gw;C5JKIBa)d8kJwuVx2xfN^~&AM(Ois`jVkX7XxwFi$h& zp?t_2Q}R#`$a`VU{)N^L=m4H5AMz3<5B138)$Ct>M~chjp?t_2JYBUvB{!2-vwwNI zArIw4UaaJy9+|wF{mVgyJd_W4GfE!nk;$vszZ`7HL-~*wy-Kw|B{!2-vwunV#S${1 zFDM`Krj$I?Ba>INe|d&+eJCID!e4Ba>j_G3Ca-4y@=QY>%7?r$B@gw;flIKIBFJE%8J>GI=%omqms=ln;4RN*?Nw$*bAF9B#-%`H&Yrs@k8D zo5`!$zZ_x6L-~+5rsSa>nY^0)3q3|X{Ac_<(9qF<`^r{rex zYW6SBGvuLs$eU8~P>)Pr&Hm;2hCGxHdEu{A`%`i=c{Tf&-!tT)e8?M9@=%XVUd{gH zC_^5~hrC3|Lp?HiHT#zr81hg)wLc{{lUK8UIogni@*yu)@=%XVUd{dmpRh!K zhVmhAM#)1xGI=%o7c^VQL-~*wJ+9iHlAFn^*}tIKLLSP8yeTCQ^?XFGqMZ1)T zW(#>JAMyr&quQU6o5@2(yOf7!3wbCX@?s?q^~mI*qFu^EvxPjA4|y|69_o?FLq)rk zhh__TC?E2o|55Ev$<5@UqFu^EvxPjA4|!8c9_o?FLq)rkmu@N`@<1NShrIB&s{JXs znLJdqOL-@%^pJ=0A#Y5{Lp>nx_?rDo`Y^I~eJCID5+x7y$mG@RU($~TYVuG% zYJW;@Ca-4yf`_w#C(4JsSjj^@GI=%o7xgf1rY|TT@@AAg)FYEuvws;j^abTZUi74D ze@bp9uV(+U%#erjA#X~_Lp?HiHT#$4hCGxHdEqwI{*>HIUd{eRJy@Lahw>qBOvyt% zGI=%omzBo#p?t_olswcUlUK8UIoXhh@*!_9m`?9!p&pR;qMH57%M5uaAM#=)5B138 z)$CtRG323q$eU5}P>)Pr&Hja+|b6k#bxqPKIBa)d8kJw zuV(-93PT>shrDpUygt+;lUK8UIn|Jd@*!_b$wNIdc{Tf&(+qhiAMz3<5B138)$Cth zX~;wQkT+)Q50{$-UR59LGN zn39KjWb$hEFJ~F@P(I`(N*?Nw$*bAFyvC4+@*!_+ zWb$hEFRwG?p?t`jQSwlaOkU0Yr{rexYW6R0GUTCr$cvRc)FYEuvwu0ykcaXiZ|Vi|y))D!lUK8UIp2_n z@*yugTFOH`GI=%omk~oA%7?r$B@gw;Vwe8@|bJk%qTSF?XvZOB9UkT-aY z#1r*^yki&F>tNOx@=!kH#Y!IPk;|*s!HgR6P(I|%D0!$yF0Wn(v(}J@@*yu;tn^dK z&E?hWU@kP|p?t`jQu0ubTwc8nhTdbQ1NI-vhrIAud3~ryF0Wn(vrdZ3qBM#)1xGI=#0;KgRv&`*>PdC?Np{*>HYUcLTh+_*lJ4|!8c9_o?HtJlA5 zGUTCr$P15C?N7XFN<*S}nB$V2&%7agzK zpOTx)tJlB0#gK>cA#X~_Lp?HiH6P%;#E^&bAuoK9YJW;@F0Wqya;YH?l81Wa z^6K?3ml^UR(lHf~See=Gmym(=M%S�%9HjSr3Ze#>4A@L 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ƀXr9AoSJ^7Ul-s;F{!(G-x~VX^^}5Ifqrj2$E&- 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%0De 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 literal 0 HcmV?d00001 diff --git a/entities/flag/assets/flag.glb b/entities/flag/assets/flag.glb index 391e0acccaa21839302331a2adbb8adce8036991..9fe08cc1cf159ba161f5eafe1721d2c5a631a18f 100644 GIT binary patch literal 15064 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 literal 21300 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 diff --git a/entities/flag/flag.gd b/entities/flag/flag.gd index 79c3a67..e1b0013 100644 --- a/entities/flag/flag.gd +++ b/entities/flag/flag.gd @@ -12,34 +12,39 @@ # # You should have received a copy of the GNU General Public License # along with this program. If not, see . -class_name Flag extends Node3D - -enum FlagState { FLAG_STATE_ON_STAND, FLAG_STATE_DROPPED, FLAG_STATE_TAKEN } - -@export var flag_state : FlagState = FlagState.FLAG_STATE_ON_STAND +class_name Flag extends RigidBody3D signal grabbed(grabber : Player) signal regrabbed(grabber : Player) signal dropped(dropper : Player) +enum FlagState { ON_STAND, DROPPED, TAKEN } + +@export var state : FlagState = FlagState.ON_STAND + +@onready var area : Area3D = $GripArea3D +@onready var mesh : Node3D = $Mesh + var last_carrier : Player = null -@onready var _mesh : Node = $Smoothing/Mesh -func can_be_grabbed() -> bool: - return flag_state != FlagState.FLAG_STATE_TAKEN +func _ready() -> void: + area.body_entered.connect(_on_body_entered) -func grab(grabber : Player) -> void: - if flag_state != FlagState.FLAG_STATE_TAKEN: - _mesh.hide() - flag_state = FlagState.FLAG_STATE_TAKEN +func _on_grabbed(grabber : Player) -> void: + if state != FlagState.TAKEN: + hide() + state = FlagState.TAKEN if (last_carrier == null) or (grabber != last_carrier): - grabbed.emit(grabber) last_carrier = grabber else: regrabbed.emit(grabber) -func drop(dropper : Player) -> void: - if flag_state == FlagState.FLAG_STATE_TAKEN: - _mesh.show() - flag_state = FlagState.FLAG_STATE_DROPPED - dropped.emit(dropper) +func _on_dropped(_dropper : Player) -> void: + if state == FlagState.TAKEN: + show() + state = FlagState.DROPPED + +func _on_body_entered(body: Node) -> void: + if body is Player: + assert(body.flag_carry_component) + body.flag_carry_component.grab(self) diff --git a/entities/flag/flag.tscn b/entities/flag/flag.tscn index c1a5337..1b1a89a 100644 --- a/entities/flag/flag.tscn +++ b/entities/flag/flag.tscn @@ -1,17 +1,15 @@ [gd_scene load_steps=8 format=3 uid="uid://c88l3h0ph00c7"] [ext_resource type="Script" path="res://entities/flag/flag.gd" id="1_y7d3d"] -[ext_resource type="Script" path="res://addons/smoothing/smoothing.gd" id="2_es4ce"] [ext_resource type="PackedScene" uid="uid://d3l7fvbdg6m5g" path="res://entities/flag/assets/flag.glb" id="2_i78em"] -[ext_resource type="PackedScene" uid="uid://bcgkc5fhhyauv" path="res://entities/flag/waypoint.tscn" id="3_tu6jg"] +[ext_resource type="Shape3D" uid="uid://dfko4x6uq27q" path="res://entities/flag/resources/collider.tres" id="2_kx0v0"] +[ext_resource type="Shape3D" uid="uid://b5a6oybteqj6n" path="res://entities/flag/resources/grip_area.tres" id="3_uhsc8"] +[ext_resource type="PackedScene" uid="uid://2350a3ce4xs8" path="res://interfaces/waypoint/waypoint3d.tscn" id="4_y8nj0"] [sub_resource type="PhysicsMaterial" id="PhysicsMaterial_4ymrw"] friction = 0.5 bounce = 0.5 -[sub_resource type="BoxShape3D" id="BoxShape3D_fkf1k"] -size = Vector3(0.5, 2.33994, 0.5) - [sub_resource type="SceneReplicationConfig" id="SceneReplicationConfig_lpijf"] properties/0/path = NodePath(".:position") properties/0/spawn = true @@ -19,10 +17,10 @@ properties/0/replication_mode = 1 properties/1/path = NodePath(".:linear_velocity") properties/1/spawn = true properties/1/replication_mode = 1 -properties/2/path = NodePath(".:flag_state") +properties/2/path = NodePath("Smoothing/Mesh:visible") properties/2/spawn = true properties/2/replication_mode = 2 -properties/3/path = NodePath("Smoothing/Mesh:visible") +properties/3/path = NodePath("Flag:state") properties/3/spawn = true properties/3/replication_mode = 2 @@ -40,20 +38,23 @@ continuous_cd = true script = ExtResource("1_y7d3d") [node name="CollisionShape3D" type="CollisionShape3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.175, 0) -shape = SubResource("BoxShape3D_fkf1k") +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0.00601196) +shape = ExtResource("2_kx0v0") + +[node name="GripArea3D" type="Area3D" parent="."] + +[node name="CollisionShape3D" type="CollisionShape3D" parent="GripArea3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0) +shape = ExtResource("3_uhsc8") + +[node name="Mesh" parent="." instance=ExtResource("2_i78em")] + +[node name="Waypoint" parent="." instance=ExtResource("4_y8nj0")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.25, 0) +foreground_color = Color(0, 0.75, 0.75, 1) [node name="MultiplayerSynchronizer" type="MultiplayerSynchronizer" parent="."] replication_config = SubResource("SceneReplicationConfig_lpijf") -[node name="Smoothing" type="Node3D" parent="."] -script = ExtResource("2_es4ce") - -[node name="WaypointAttachment" type="Marker3D" parent="Smoothing"] - -[node name="Waypoint" parent="Smoothing/WaypointAttachment" node_paths=PackedStringArray("attach_point", "flag") instance=ExtResource("3_tu6jg")] -attach_point = NodePath("..") -flag = NodePath("../../..") - -[node name="Mesh" parent="Smoothing" instance=ExtResource("2_i78em")] -transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0.0744106, 0) +[connection signal="dropped" from="." to="." method="_on_dropped"] +[connection signal="grabbed" from="." to="." method="_on_grabbed"] diff --git a/entities/flag/resources/collider.tres b/entities/flag/resources/collider.tres new file mode 100644 index 0000000..d2f56f4 --- /dev/null +++ b/entities/flag/resources/collider.tres @@ -0,0 +1,4 @@ +[gd_resource type="BoxShape3D" format=3 uid="uid://dfko4x6uq27q"] + +[resource] +size = Vector3(0.5, 2, 0.164246) diff --git a/entities/flag/resources/grip_area.tres b/entities/flag/resources/grip_area.tres new file mode 100644 index 0000000..cb56f58 --- /dev/null +++ b/entities/flag/resources/grip_area.tres @@ -0,0 +1,4 @@ +[gd_resource type="BoxShape3D" format=3 uid="uid://b5a6oybteqj6n"] + +[resource] +size = Vector3(0.5, 2, 0.5) diff --git a/entities/flag/waypoint.gd b/entities/flag/waypoint.gd deleted file mode 100644 index 12d6741..0000000 --- a/entities/flag/waypoint.gd +++ /dev/null @@ -1,52 +0,0 @@ -# This file is part of open-fpsz. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -extends Control - -@export var attach_point : Node3D -@export var flag : Flag - -@onready var _iff_container : Control = $IFFContainer - -func _ready() -> void: - attach_point.transform = attach_point.transform.translated( - Vector3(0, flag.get_node("CollisionShape3D").shape.size.y, 0)) - -func _process(_delta : float) -> void: - # disable waypoint repositioning when running headless - if DisplayServer.get_name() == "headless": - set_process(false) - return - - # repositon iff on viewport - var camera : Camera3D = get_viewport().get_camera_3d() - var viewport_rect : Rect2 = get_viewport_rect() - # if the player is NOT infront of the camera or camera does NOT have LOS to player - if camera.is_position_behind(attach_point.global_position): - _iff_container.hide() # hide the IFF and exit function - return - else: - _iff_container.show() # display the IFF - # get the screen location of the players head - var new_iff_position : Vector2 = camera.unproject_position(attach_point.global_position) - # check if the unprojected point lies inside the viewport - if !Rect2(Vector2(0, 0), viewport_rect.size).has_point(new_iff_position): - _iff_container.hide() # hide the IFF and exit function - return - # move the IFF up so the bottom of it is at the players head - new_iff_position.y -= _iff_container.size.y - # move the IFF left so it's centered horizontally above players head - new_iff_position.x -= _iff_container.size.x / 2 - # set the position of the IFF - position = new_iff_position diff --git a/entities/flag/waypoint.tscn b/entities/flag/waypoint.tscn deleted file mode 100644 index a3f5cc5..0000000 --- a/entities/flag/waypoint.tscn +++ /dev/null @@ -1,27 +0,0 @@ -[gd_scene load_steps=2 format=3 uid="uid://bcgkc5fhhyauv"] - -[ext_resource type="Script" path="res://entities/flag/waypoint.gd" id="1_gmnl6"] - -[node name="IFF" type="Control"] -layout_mode = 3 -anchors_preset = 0 -script = ExtResource("1_gmnl6") - -[node name="IFFContainer" type="MarginContainer" parent="."] -layout_mode = 0 -offset_right = 11.0 -offset_bottom = 20.0 -mouse_filter = 2 - -[node name="Chevron" type="Label" parent="IFFContainer"] -layout_direction = 2 -layout_mode = 2 -size_flags_vertical = 1 -theme_override_colors/font_color = Color(0, 1, 1, 0.784314) -theme_override_colors/font_outline_color = Color(0, 0, 0, 1) -theme_override_constants/outline_size = 3 -theme_override_constants/line_spacing = -20 -theme_override_font_sizes/font_size = 14 -text = "▼" -horizontal_alignment = 1 -vertical_alignment = 2 diff --git a/entities/player/player.gd b/entities/player/player.gd index c4ddee0..96d807b 100644 --- a/entities/player/player.gd +++ b/entities/player/player.gd @@ -18,6 +18,7 @@ enum PlayerState { PLAYER_ALIVE, PLAYER_DEAD } @export var iff : Control @export var health_component : HealthComponent +@export var flag_carry_component : FlagCarryComponent @export var walkable_surface_sensor : ShapeCast3D ## The inventory component can store up to [member Inventory.slots] objects. It @@ -49,7 +50,6 @@ enum PlayerState { PLAYER_ALIVE, PLAYER_DEAD } @onready var hud : CanvasLayer = $HUD @onready var animation_player : AnimationPlayer = $AnimationPlayer @onready var collision_shape : CollisionShape3D = $CollisionShape3D -@onready var flag_carry_component : FlagCarryComponent = %Pivot/FlagCarryComponent @onready var jetpack_particles : Array = $Smoothing/ThirdPerson/Mesh/JetpackFX.get_children() @onready var match_participant_component : MatchParticipantComponent = $MatchParticipantComponent @@ -65,7 +65,6 @@ static var pawn_player : Player func _ready() -> void: match_participant_component.player_id_changed.connect(_setup_pawn) match_participant_component.player_id_changed.connect(input.update_multiplayer_authority) - match_participant_component.nickname_changed.connect(iff.set_nickname) health_component.health_changed.connect(hud._on_health_changed) health_component.health_changed.connect(iff._on_health_changed) health_component.health_changed.emit(health_component.health) diff --git a/entities/player/player.tscn b/entities/player/player.tscn index dfaaac4..5ecea45 100644 --- a/entities/player/player.tscn +++ b/entities/player/player.tscn @@ -1,8 +1,8 @@ [gd_scene load_steps=45 format=3 uid="uid://cbhx1xme0sb7k"] [ext_resource type="Script" path="res://entities/player/player.gd" id="1_mk68k"] -[ext_resource type="Shape3D" uid="uid://cb8esdlnottdn" path="res://entities/player/collision_shape.tres" id="2_vjqny"] [ext_resource type="PackedScene" uid="uid://bcv81ku26xo" path="res://interfaces/hud/hud.tscn" id="3_ccety"] +[ext_resource type="Shape3D" uid="uid://cb8esdlnottdn" path="res://entities/player/resources/collider.tres" id="4_8kvcy"] [ext_resource type="Script" path="res://entities/components/match_participant_component.gd" id="6_lrose"] [ext_resource type="Script" path="res://entities/player/player_input.gd" id="6_ymcrr"] [ext_resource type="PackedScene" uid="uid://dsysi2rd3bu76" path="res://interfaces/hud/iffs/iff.tscn" id="7_8hc80"] @@ -206,8 +206,9 @@ particles_anim_loop = false [sub_resource type="QuadMesh" id="QuadMesh_uc7ts"] material = SubResource("StandardMaterial3D_2jwv2") -[node name="Player" type="RigidBody3D" node_paths=PackedStringArray("iff", "health_component", "walkable_surface_sensor", "inventory", "tp_mesh") groups=["Player"]] +[node name="Player" type="RigidBody3D" node_paths=PackedStringArray("iff", "health_component", "flag_carry_component", "walkable_surface_sensor", "inventory", "tp_mesh") groups=["Player"]] collision_mask = 2147483649 +collision_priority = 9.0 axis_lock_angular_x = true axis_lock_angular_y = true axis_lock_angular_z = true @@ -216,27 +217,20 @@ physics_material_override = SubResource("PhysicsMaterial_clur0") can_sleep = false continuous_cd = true script = ExtResource("1_mk68k") -iff = NodePath("Smoothing/ThirdPerson/IFF") +iff = NodePath("Smoothing/ThirdPerson/IFFAttachment/IFF") health_component = NodePath("HealthComponent") +flag_carry_component = NodePath("Pivot/FlagCarryComponent") walkable_surface_sensor = NodePath("WalkableSurfaceSensor") inventory = NodePath("Pivot/Inventory") tp_mesh = NodePath("Smoothing/ThirdPerson/Mesh") jump_height = 1.5 -[node name="Sensor" type="Area3D" parent="."] -collision_layer = 0 -collision_mask = 8 -monitorable = false - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Sensor"] -shape = ExtResource("2_vjqny") - [node name="HealthComponent" type="Area3D" parent="." node_paths=PackedStringArray("match_participant_component")] script = ExtResource("14_ctgxn") match_participant_component = NodePath("../MatchParticipantComponent") [node name="CollisionShape3D" type="CollisionShape3D" parent="HealthComponent"] -shape = ExtResource("2_vjqny") +shape = ExtResource("4_8kvcy") [node name="WalkableSurfaceSensor" type="ShapeCast3D" parent="."] transform = Transform3D(1.05, 0, 0, 0, 1.05, 0, 0, 0, 1.05, 0, -0.85, 0) @@ -245,7 +239,7 @@ target_position = Vector3(0, 0, 0) collision_mask = 2147483648 [node name="CollisionShape3D" type="CollisionShape3D" parent="."] -shape = ExtResource("2_vjqny") +shape = ExtResource("4_8kvcy") [node name="HUD" parent="." instance=ExtResource("3_ccety")] @@ -295,19 +289,17 @@ visible = false [node name="GrenadeLauncher" parent="Pivot/Inventory" instance=ExtResource("16_4xs2j")] visible = false -[node name="FlagCarryComponent" type="Node3D" parent="Pivot" node_paths=PackedStringArray("sensor", "carrier")] -transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 0) -visible = false -script = ExtResource("8_pdfbn") -sensor = NodePath("../../Sensor") -carrier = NodePath("../..") - -[node name="FlagMesh" parent="Pivot/FlagCarryComponent" instance=ExtResource("18_7nkei")] -transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 1.559e-08, -0.462981, -0.178329) - [node name="SpineIKTarget" type="Marker3D" parent="Pivot"] transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 0) +[node name="FlagCarryComponent" type="Node3D" parent="Pivot" node_paths=PackedStringArray("mesh")] +transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, -0.25, 0.377972) +visible = false +script = ExtResource("8_pdfbn") +mesh = NodePath("FlagMesh") + +[node name="FlagMesh" parent="Pivot/FlagCarryComponent" instance=ExtResource("18_7nkei")] + [node name="Smoothing" type="Node3D" parent="."] script = ExtResource("11_k330l") target = NodePath("..") @@ -329,7 +321,6 @@ bones/6/rotation = Quaternion(0.160951, 0.00623474, 0.0096637, 0.986895) bones/8/rotation = Quaternion(0.675761, -0.399581, 0.409695, 0.464577) bones/10/rotation = Quaternion(0.212344, -0.0870591, -0.287653, 0.929831) bones/12/rotation = Quaternion(0.0811501, 0.206806, -0.754068, 0.618084) -bones/14/position = Vector3(-0.074525, 0.220475, 0.075475) bones/14/rotation = Quaternion(0.00943715, 0.0971687, -0.145046, 0.984597) bones/20/rotation = Quaternion(-0.123455, 0.0248346, 0.23344, 0.964183) bones/24/rotation = Quaternion(0.0450683, -0.000817796, 0.0508488, 0.997689) @@ -347,9 +338,8 @@ bones/56/rotation = Quaternion(-0.0254885, 0.0439755, -0.00910637, 0.998666) bones/58/rotation = Quaternion(-0.0119802, 0.289956, -0.0527053, 0.955513) bones/62/rotation = Quaternion(0.689943, 0.375565, -0.410267, 0.463261) bones/64/rotation = Quaternion(0.337746, -0.290519, 0.159479, 0.880961) -bones/66/position = Vector3(0.055475, 0.231475, 0.000474975) bones/66/rotation = Quaternion(0.540371, -0.580679, 0.406779, 0.453147) -bones/68/position = Vector3(-0.014525, 0.270475, -0.054525) +bones/68/position = Vector3(-1.77636e-17, 0.240718, 0) bones/68/rotation = Quaternion(0.0150529, -0.289001, 0.0720108, 0.954498) bones/70/rotation = Quaternion(0.155965, 0.0109114, -0.00107202, 0.987702) bones/72/rotation = Quaternion(0.563923, 4.19095e-08, -0.0577906, 0.823803) @@ -376,7 +366,7 @@ bones/124/rotation = Quaternion(0.417677, -0.0431149, 0.00625689, 0.90755) bones/126/rotation = Quaternion(0.397818, -0.0427722, -0.00601182, 0.916447) [node name="HandAttachment" parent="Smoothing/ThirdPerson/Mesh/Node/Skeleton3D" index="0"] -transform = Transform3D(-0.152214, 0.0548832, 0.986823, 0.933991, 0.334546, 0.125459, -0.323252, 0.94078, -0.102183, -0.191759, 1.06335, 0.0698007) +transform = Transform3D(-0.152214, 0.0548832, 0.986823, 0.933991, 0.334546, 0.125459, -0.323252, 0.94078, -0.102183, -0.261612, 1.14328, 0.0896011) [node name="grip" parent="Smoothing/ThirdPerson/Mesh/Node/Skeleton3D/HandAttachment/SpaceGun/Mesh/Armature/Skeleton3D" index="0"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.84217e-14, 1.19209e-07, 2.38419e-07) @@ -400,7 +390,13 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.692504, 1.30946) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.692504, 1.30946) [node name="Barrels" parent="Smoothing/ThirdPerson/Mesh/Node/Skeleton3D/HandAttachment/ChainGun" index="3"] -transform = Transform3D(-1, 0, 8.9407e-08, 8.47504e-08, 0, 1, 0, 1, -3.72529e-09, 0, -2.38419e-07, -0.55315) +transform = Transform3D(-1, -1.49012e-08, 8.801e-08, 8.19564e-08, -3.72529e-09, 1, 0, 1, -7.45058e-09, 5.96046e-08, 0, -0.55315) + +[node name="Skeleton3D" parent="Smoothing/ThirdPerson/Mesh/Node/Skeleton3D/HandAttachment/GrenadeLauncher/Armature" index="0"] +bones/0/rotation = Quaternion(0, 0.707107, 0.707107, 0) +bones/1/rotation = Quaternion(0, 0.707107, 0.707107, 0) +bones/2/rotation = Quaternion(0, 0.707107, 0.707107, 0) +bones/3/rotation = Quaternion(0, 0.707107, 0.707107, 0) [node name="barrel" parent="Smoothing/ThirdPerson/Mesh/Node/Skeleton3D/HandAttachment/GrenadeLauncher/Armature/Skeleton3D" index="0"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.19209e-07, 0) @@ -443,11 +439,13 @@ draw_pass_1 = SubResource("QuadMesh_uc7ts") [node name="IFFAttachment" type="Marker3D" parent="Smoothing/ThirdPerson"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.27457, 0) +visible = false -[node name="IFF" parent="Smoothing/ThirdPerson" node_paths=PackedStringArray("player", "match_participant_component", "attach_point") instance=ExtResource("7_8hc80")] -player = NodePath("../../..") -match_participant_component = NodePath("../../../MatchParticipantComponent") -attach_point = NodePath("../IFFAttachment") +[node name="IFF" parent="Smoothing/ThirdPerson/IFFAttachment" node_paths=PackedStringArray("player", "match_participant_component", "attach_point") instance=ExtResource("7_8hc80")] +visible = false +player = NodePath("../../../..") +match_participant_component = NodePath("../../../../MatchParticipantComponent") +attach_point = NodePath("..") [connection signal="energy_changed" from="." to="HUD" method="_on_player_energy_changed"] diff --git a/entities/player/collision_shape.tres b/entities/player/resources/collider.tres similarity index 100% rename from entities/player/collision_shape.tres rename to entities/player/resources/collider.tres diff --git a/interfaces/waypoint/assets/waypoint.svg b/interfaces/waypoint/assets/waypoint.svg new file mode 100644 index 0000000..6a5a1b0 --- /dev/null +++ b/interfaces/waypoint/assets/waypoint.svg @@ -0,0 +1 @@ + diff --git a/interfaces/waypoint/assets/waypoint.svg.import b/interfaces/waypoint/assets/waypoint.svg.import new file mode 100644 index 0000000..600e8c8 --- /dev/null +++ b/interfaces/waypoint/assets/waypoint.svg.import @@ -0,0 +1,38 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cpb6vpa0c74rl" +path.s3tc="res://.godot/imported/waypoint.svg-e7e029f470e2f863636e9426f3893ced.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://interfaces/waypoint/assets/waypoint.svg" +dest_files=["res://.godot/imported/waypoint.svg-e7e029f470e2f863636e9426f3893ced.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +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=0 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/interfaces/waypoint/waypoint.gd b/interfaces/waypoint/waypoint.gd new file mode 100644 index 0000000..a3113dc --- /dev/null +++ b/interfaces/waypoint/waypoint.gd @@ -0,0 +1,129 @@ +# This file is part of open-fpsz. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +extends Control + +# Some margin to keep the marker away from the screen's corners. +const MARGIN : float = 8. + +# If `true`, the waypoint sticks to the viewport's edges when moving off-screen. +@export var sticky : bool = true + +# If `true`, the waypoint fades as the camera get closer. +@export var fade : bool = true + +# The waypoint's text. +@export var text : String = "Waypoint": + set(value): + text = value + # The label's text can only be set once the node is ready. + if is_inside_tree(): + label.text = value + +@onready var camera : Camera3D = get_viewport().get_camera_3d() +@onready var label : Label = $Label +@onready var parent : Node = get_parent() + +func _ready() -> void: + self.text = text + if not parent is Node3D: + push_error("The waypoint's parent node must inherit from Node3D.") + if DisplayServer.get_name() == "headless": + parent.queue_free() + +func _process(_delta : float) -> void: + if not camera.current: + # If the camera we have isn't the current one, get the current camera. + camera = get_viewport().get_camera_3d() + + var parent_position : Vector3 = parent.global_transform.origin + var camera_transform : Transform3D = camera.global_transform + var camera_position : Vector3 = camera_transform.origin + + # We would use "camera.is_position_behind(parent_position)", except + # that it also accounts for the near clip plane, which we don't want. + var is_behind : bool = camera_transform.basis.z.dot(parent_position - camera_position) > 0 + + # Fade the waypoint when the camera gets close. + if fade: + var distance : float = camera_position.distance_to(parent_position) + modulate.a = remap(distance, 0., 256., 0., 1.) + + var unprojected_position : Vector2 = camera.unproject_position(parent_position) + var viewport_size : Vector2 = get_viewport_rect().size + + if not sticky: + # For non-sticky waypoints, we don't need to clamp and calculate + # the position if the waypoint goes off screen. + position = unprojected_position + visible = not is_behind + return + + # We need to handle the axes differently. + # For the screen's X axis, the projected position is useful to us, + # but we need to force it to the side if it's also behind. + if is_behind: + if unprojected_position.x < viewport_size.x / 2.: + unprojected_position.x = viewport_size.x - MARGIN + else: + unprojected_position.x = MARGIN + + # For the screen's Y axis, the projected position is NOT useful to us + # because we don't want to indicate to the user that they need to look + # up or down to see something behind them. Instead, here we approximate + # the correct position using difference of the X axis Euler angles + # (up/down rotation) and the ratio of that with the camera's FOV. + # This will be slightly off from the theoretical "ideal" position. + if is_behind or unprojected_position.x < MARGIN or \ + unprojected_position.x > viewport_size.x - MARGIN: + var look : Transform3D = camera_transform.looking_at(parent_position, Vector3.UP) + var diff : float = angle_diff( + look.basis.get_euler().x, camera_transform.basis.get_euler().x) + unprojected_position.y = viewport_size.y * (0.5 + (diff / deg_to_rad(camera.fov))) + + position = Vector2( + clamp(unprojected_position.x, MARGIN, viewport_size.x - MARGIN), + clamp(unprojected_position.y, MARGIN, viewport_size.y - MARGIN) + ) + + label.visible = true + rotation = 0 + # Used to display a diagonal arrow when the waypoint is displayed in + # one of the screen corners. + var overflow : float = .0 + + if position.x <= MARGIN: + # Left overflow. + overflow = -TAU / 8.0 + label.visible = false + rotation = TAU / 4.0 + elif position.x >= viewport_size.x - MARGIN: + # Right overflow. + overflow = TAU / 8.0 + label.visible = false + rotation = TAU * 3.0 / 4.0 + + if position.y <= MARGIN: + # Top overflow. + label.visible = false + rotation = TAU / 2.0 + overflow + elif position.y >= viewport_size.y - MARGIN: + # Bottom overflow. + label.visible = false + rotation = -overflow + + +static func angle_diff(from : float, to : float) -> float: + var diff : float = fmod(to - from, TAU) + return fmod(2.0 * diff, TAU) - diff diff --git a/interfaces/waypoint/waypoint.tscn b/interfaces/waypoint/waypoint.tscn new file mode 100644 index 0000000..6a0f401 --- /dev/null +++ b/interfaces/waypoint/waypoint.tscn @@ -0,0 +1,30 @@ +[gd_scene load_steps=3 format=3 uid="uid://bcgkc5fhhyauv"] + +[ext_resource type="Script" path="res://interfaces/waypoint/waypoint.gd" id="1_gmnl6"] +[ext_resource type="Texture2D" uid="uid://cpb6vpa0c74rl" path="res://interfaces/waypoint/assets/waypoint.svg" id="2_xby6k"] + +[node name="Waypoint" type="Control"] +layout_mode = 3 +anchors_preset = 0 +size_flags_horizontal = 3 +script = ExtResource("1_gmnl6") +fade = false + +[node name="Marker" type="TextureRect" parent="."] +visible = false +layout_mode = 0 +offset_left = -8.0 +offset_top = -16.0 +offset_right = 8.0 +texture = ExtResource("2_xby6k") +expand_mode = 1 + +[node name="Label" type="Label" parent="."] +layout_mode = 0 +offset_left = -128.0 +offset_top = -42.0 +offset_right = 128.0 +offset_bottom = -19.0 +theme_override_font_sizes/font_size = 14 +horizontal_alignment = 1 +vertical_alignment = 2 diff --git a/interfaces/waypoint/waypoint3d.gd b/interfaces/waypoint/waypoint3d.gd new file mode 100644 index 0000000..d4311a9 --- /dev/null +++ b/interfaces/waypoint/waypoint3d.gd @@ -0,0 +1,45 @@ +# This file is part of open-fpsz. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +@tool +class_name Waypoint3D extends Node3D + +# If `true`, the waypoint sticks to the viewport's edges when moving off-screen. +@export var sticky : bool = true + +# If `true`, the waypoint fades as the camera get closer. +@export var fade : bool = true + +# The waypoint's text. +@export var text : String: + set(value): + text = value + # The label's text can only be set once the node is ready. + if is_inside_tree(): + label.text = value + +## The foreground color to modulate the waypoint color +@export var foreground_color : Color = Color.WHITE + +@onready var label : Label3D = $Label3D +@onready var sprite : Sprite3D = $Sprite3D + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + pass + +func _process(_delta : float) -> void: + sprite.modulate = foreground_color + label.modulate = foreground_color + label.outline_modulate.a = foreground_color.a diff --git a/interfaces/waypoint/waypoint3d.tscn b/interfaces/waypoint/waypoint3d.tscn new file mode 100644 index 0000000..ed8c190 --- /dev/null +++ b/interfaces/waypoint/waypoint3d.tscn @@ -0,0 +1,23 @@ +[gd_scene load_steps=3 format=3 uid="uid://2350a3ce4xs8"] + +[ext_resource type="Texture2D" uid="uid://cpb6vpa0c74rl" path="res://interfaces/waypoint/assets/waypoint.svg" id="1_502g6"] +[ext_resource type="Script" path="res://interfaces/waypoint/waypoint3d.gd" id="1_kq7bj"] + +[node name="Waypoint" type="Node3D"] +script = ExtResource("1_kq7bj") + +[node name="Label3D" type="Label3D" parent="."] +transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) +offset = Vector2(0, 48) +billboard = 2 +no_depth_test = true +fixed_size = true +line_spacing = 32.025 + +[node name="Sprite3D" type="Sprite3D" parent="."] +transform = Transform3D(0.05, 0, 0, 0, 0.05, 0, 0, 0, 0.05, 0, 0, 0) +offset = Vector2(0, 64) +billboard = 2 +no_depth_test = true +fixed_size = true +texture = ExtResource("1_502g6") diff --git a/project.godot b/project.godot index d5fa618..9f5432c 100644 --- a/project.godot +++ b/project.godot @@ -42,6 +42,7 @@ gdscript/warnings/property_used_as_function=2 gdscript/warnings/constant_used_as_function=2 gdscript/warnings/function_used_as_property=2 gdscript/warnings/untyped_declaration=1 +gdscript/warnings/static_called_on_instance=0 [editor] diff --git a/systems/global.gd b/systems/global.gd index 1b374a0..740b524 100644 --- a/systems/global.gd +++ b/systems/global.gd @@ -27,7 +27,7 @@ var type : Node: # keep reference to new type type = new_type if type != null: - add_child(type) + get_tree().get_root().add_child(type) type_changed.emit(type) func _unhandled_input(event : InputEvent) -> void: diff --git a/tests/test_flag.gd b/tests/test_flag.gd index 78a87e7..b0a8055 100644 --- a/tests/test_flag.gd +++ b/tests/test_flag.gd @@ -29,46 +29,46 @@ func _is_mesh_visible() -> bool: return mesh.is_visible() func test_that_flag_is_on_stand_by_default() -> void: - assert_eq(_subject.flag_state, Flag.FlagState.FLAG_STATE_ON_STAND) + assert_eq(_subject.flag_state, Flag.FlagState.ON_STAND) func test_that_mesh_is_visible_by_default() -> void: assert_true(_is_mesh_visible()) func test_that_flag_on_stand_can_be_grabbed() -> void: - _subject.flag_state = Flag.FlagState.FLAG_STATE_ON_STAND - assert_true(_subject.can_be_grabbed()) + _subject.flag_state = Flag.FlagState.ON_STAND + assert_true(_subject.state != _subject.FlagState.TAKEN) func test_that_dropped_flag_can_be_grabbed() -> void: - _subject.flag_state = Flag.FlagState.FLAG_STATE_DROPPED - assert_true(_subject.can_be_grabbed()) + _subject.flag_state = Flag.FlagState.DROPPED + assert_true(_subject.state != _subject.FlagState.TAKEN) func test_that_taken_flag_cannot_be_grabbed() -> void: - _subject.flag_state = Flag.FlagState.FLAG_STATE_TAKEN - assert_false(_subject.can_be_grabbed()) + _subject.flag_state = Flag.FlagState.TAKEN + assert_false(_subject.state != _subject.FlagState.TAKEN) func test_that_on_stand_flag_grab_emits_grab_signal_and_changes_state() -> void: - _subject.flag_state = Flag.FlagState.FLAG_STATE_ON_STAND + _subject.flag_state = Flag.FlagState.ON_STAND var player : Player = PLAYER.instantiate() _subject.grab(player) assert_signal_emitted_with_parameters(_subject, 'grabbed', [player]) - assert_eq(_subject.flag_state, Flag.FlagState.FLAG_STATE_TAKEN) + assert_eq(_subject.flag_state, Flag.FlagState.TAKEN) assert_eq(_subject.last_carrier, player) player.free() func test_that_dropped_flag_grab_emits_grab_signal_and_changes_state() -> void: - _subject.flag_state = Flag.FlagState.FLAG_STATE_DROPPED + _subject.flag_state = Flag.FlagState.DROPPED var player : Player = PLAYER.instantiate() _subject.grab(player) assert_signal_emitted_with_parameters(_subject, 'grabbed', [player]) - assert_eq(_subject.flag_state, Flag.FlagState.FLAG_STATE_TAKEN) + assert_eq(_subject.flag_state, Flag.FlagState.TAKEN) assert_eq(_subject.last_carrier, player) player.free() func test_that_taken_flag_grab_does_not_emit_grab_signal_and_keeps_state() -> void: - _subject.flag_state = Flag.FlagState.FLAG_STATE_TAKEN + _subject.flag_state = Flag.FlagState.TAKEN _subject.grab(null) # doesn't matter that it's null in this case assert_signal_not_emitted(_subject, 'grabbed') - assert_eq(_subject.flag_state, Flag.FlagState.FLAG_STATE_TAKEN) + assert_eq(_subject.flag_state, Flag.FlagState.TAKEN) assert_null(_subject.last_carrier) func test_that_flag_grab_hides_mesh() -> void: @@ -82,14 +82,14 @@ func test_that_taken_flag_drop_emits_signal_and_changes_state() -> void: _subject.grab(player) _subject.drop(player) assert_signal_emitted_with_parameters(_subject, 'dropped', [player]) - assert_eq(_subject.flag_state, Flag.FlagState.FLAG_STATE_DROPPED) + assert_eq(_subject.flag_state, Flag.FlagState.DROPPED) player.free() func test_that_on_stand_flag_drop_does_not_emit_signals_and_keeps_state() -> void: var player : Player = PLAYER.instantiate() _subject.drop(player) assert_signal_not_emitted(_subject, 'dropped') - assert_eq(_subject.flag_state, Flag.FlagState.FLAG_STATE_ON_STAND) + assert_eq(_subject.flag_state, Flag.FlagState.ON_STAND) player.free() func test_that_flag_drop_shows_mesh() -> void: