From d05abccd455f32727d5844ffc92dfa7441d66d7b Mon Sep 17 00:00:00 2001 From: RosimInc Date: Sat, 15 Aug 2015 15:13:50 -0400 Subject: [PATCH] Implemented the death noticing and friendship beam coloring. Signed-off-by: RosimInc --- Assets/Art/LinkBeam.png | Bin 13172 -> 8954 bytes Assets/Prefabs/FriendshipLink.prefab | 4 +- Assets/Scripts/Link.cs | 95 +++++++++++++++++++----- Assets/Scripts/Models/Friendship.cs | 28 ++++--- Assets/Scripts/Models/FriendshipLink.cs | 8 +- Assets/Scripts/Models/LevelGenerator.cs | 8 +- Assets/Scripts/Models/Person.cs | 31 ++++++-- Assets/Scripts/NetworkingSphere.cs | 67 +++++++++++------ Assets/Scripts/PersonNode.cs | 33 +++++--- Assets/Tests/Gameplay_SR.unity | 69 +++++++++++++++-- 10 files changed, 262 insertions(+), 81 deletions(-) diff --git a/Assets/Art/LinkBeam.png b/Assets/Art/LinkBeam.png index 23886c70a7cef0d208825e7b5530f10952b00be6..74c4b657c0753a2ee03d0da3c780b4bfc6ceb065 100644 GIT binary patch literal 8954 zcmc(lWl$VZ)TSX2oDeL*J=j2ScY+4j!3KACmyjR{F2QAj1ZQy948b+H!vMhv3_ifX z@=0y&R_))f_Q&n6K6Uz>+f}!2zy0+4O;cSFABO@51qB6PSxHVC1qGGtd2nF8c#dRX zikUy3u-%mmy--kaiT-1tPOpVNpr9~RDa*;|`Y)g4In{9LrA3W)7dM@_z9yE2%6Qch zW~-niqSAjVq@rJ?WD=x%D-a{wTKtVcp@=@oKJInA3?q-FrKofSR`Cb!;wPiYsy|Mb z9Rt<2a}`|+k~udB&A4oVg({wW5nGq;JPW#r*Rojj|AU7lYB;Lw(EJ%4VLghtQUnJI z0TDee_X9q?wbS)I9g>rt1#9NjG^F9(4!1eM^ai193E#0Os_ZMY|48l)r7iAZ*+I8h zmRa^`j-bMb3Zsi~9+weUqGht?T1x%WcvOfbg7=@rF}LVKz9!|>_dcg$|7R-GbE+hD zF#)mX3tkxAiKyOxSCtM-di?f!dc0Pu24N?w&R;@Z46;)hviOAgE$QV~g6W>uvL)Oc z^&`r$p6A0XTpgSAQII>s)wuzg<(6YLa{r)n&wa;M-fpNWRzrW5A$EVInt1jh7oQ_oC$bk{HiK7FxH76 z-eLhk>`CTNOI@r3R7HMkyL)-XHeibm>{INoDcPFI2VGr54pkLE2><5F^2kYBtPXk= z@0>j5ouu$Vi_ESOhtj-xK7S+i>)E*N>h2e2B;DSpmo~BY-@VZ`S9j8zb+MfV2pofa5#sFY4)A4kQj$Pva1iLf?M{1Zkc;JaC!2< zoed-P_aK!EbkH}(+QxInIb^qVZ__c}^8)7GJ;-~ssC1Z5+V85JK+l1V8tMPm1% z?X}uwo)+79H!f>BKulCluc-p(AaC5si1^Ev`{Ar9WBCbzj*pVtRSgro3zq7F7AoLV z;`+c4GwOp!Tl^w7{Fak#0Kew)Sfb+4SOZE||Hc+0Uys5?75IGgM_P z_IPsV(-*OSAX3hptDhVU8bLd`(h$kIC5%XLf$87lhRFc~*U5jI`+tfgX2w+G6CqR5 zL{oH~Ya;BJq&9G8U>1Y?7@1p#XCyMUZJJ&5-K>%O@79W?`e_T_Yw+sJ+x4ZaQvt(f z@4v{QYVwVOvH-}k2o?0_q+vK*TvD%od?Y>$L{Hva`TIVqyRiVFI?a1%#|E@iK$f*2 zGX(ocKYp-^>rB{y8V%3r5;+mv71W8S%mxfhj1UAIf$c{LNYk)7a5;i z);z`G*n3ZtV0izoesAk$ipu+gEZeF6cfG53$n4(VMQR&gwD|QVoTX@#F^ETr-b>oO zbq&QCSF&)PO+ja6*DV&53(E`MG=3R#}G&^a=Zl>;nI#QpSYp+c7&y zM&P7P2I$TDNArB!ed9~{L6ouI4d!OH9jqRiXs;|qm!Wg7PESbpHn*{Uno+tdCxg0G~T|aIH@cw4^H&CPNX1<;ds}2 zJ_4vQ@cN5`4>9tv`8@|T3z=gUmHM#oJ1g`rKvdeVe^@SLsi?3YKT~ksHZn+_mo?Kk zQC!~Yb^sbjdw_^JXl*^8fksW3IGD|G60(n!WDS@7xg@~o9*#x(_WV4kX5|Y>lhwVq z*-nt;%?t2TXWJc|+@wL)%*bjr3oZDsNu$}{qbY3W#J^whWvp_&PMQ|f^&%h?CnugK zJiAD1NaIsn?iS@T8&0awI(Pn>ylsdB3whP}C6!fmU~h>~qgqsI>_gfEC3VKjai#d@4Gt1{H;L+MC(O6Aj1Jy;%LrN7xrJ}DqSFQd$%gLk(x(zp3EZnk z$)*^Wmpbkkwg)@TPb@0B-!o9&5W6F*V&fP{=al*QZa-kSQUbeBan`klG@$*Y0bWIu?#Vj;RD z%lh)HA5-BF@x>`VlXBm<5JvJifb%Cxlo@plJ_yfsfmQ@$Cs4dlGW{|5)h#neuXXT@ zn$WObYrr_CNXwe9vA+N@-t)_Ciy1{{S~r$?^c9mJ_*Cg)MOJ-R@#9o`OofdJEiBi$ zyDkD^L?=>KS^HAWL1G||{9<@2nNpCaaF)~+z<%D8^BxD8>9IYsS_sae@~7Y%%Lu{R zh{#$CJgRP~vH#Vxx9TxSP1bmn=eHi9s1D~hdGZ}}>E(P^uhH%@?PY3q>%h%uyFww! z09lS#j7}Mq>`(Y z7@%dgE_YwCXAnhOLoZH{Y16UZv0K^u+@v%d_IQ7q0XXkPBe-pS87h<5xz@@Tzc@4E zsM)OJtBY1}YaN%5Q#7lc?GY*;{`VE=3Dr=dCsRk z5De>3Jz)G8ZLaLrB~GfM`P$2jE5;#5@M%f+Y3_Mh*My$^!o=0mj>SRj3iXr&YYGv+ z2)RD`z((%gkI6JZBkEQTC)3HMYQD6xt45jOhxp)n-**Dqw*I{h`8zJ&$Z*7Z$=D)^ zsivxZ1vwKG|M_L=% zk?8CS>`ozm?)^f;fs?!aqQsFVxB+xKQR+QVPLX?R_;v*^k5R;)m+X>XKVAxLm&so$ z(b;lGTr!y@-=CpFATiK{O+oiMK4+)mOp%_`9qS3S(9yWcV@9!M-GQ`Ii00SRpJQoNU<7s!j?dho5$p>`fg7() zu-mu}p!*4VIy!fDIiqnjC&iv0CEhfABRDLo;pG~+|7z|eZ7l{L5zstt>-3IiR&U|< zlA?wuCo$YL`UfRbyYBKni)!V?_*#Bc^(p2!LrF$`ANR7Zgwf&pj4!ks8cK5lI2{LT zSZH1?VH1XK-oj#NtLKc%Nm@ z9LN0QB?@=Cq*&QV4jl00vnC_pMYrqnKnvVq0k6pF&xiH@&SS0B^je`BJ z6Ww*-Oj2g>Skg(Urw3f8d^7s+bsS#eXSK#PV9%9S`ODfM zC*>dbGP;nPSX7IXodw;8Jnl8$S7ux-PJFd7=Zln0{Qxth>-3p8geWSb)t4}tLzu5gjY{rATeT8g`b zu6#5E;w+C!bOz@&DyGls!i+0?C>h01E@U2JeS=&Wc`C-MM&NMzY-*CO?@p$mX9}xZwg!%Q{=Yg$~{Jx3tFJjaM?PLzmIcwYk z>uz01!z5HON%o2d(=hgB-aX7)giIU(ai>da<`(`?OwJv4RUWEHQr2dH! z{pkbQmWO>6EL4^}uBFk{wXeF}jA1RR+?Xz_3sv!-^G)f^-I*d9_=32N*FQfWp~y)Ty#fV`IdMA!FYPBfR&&DF%$E|9`H8}cy}@^ekVJ3k#rRr8`o zescyWlnj1aD(LAqNCFROx0+LClrHD73tcjxuG@m8bFF+sW>eV6EAPFaM>RdJuH#sa zJng(=g5Tbg%qaw`*g&#bXDmW(pXg<@N{kz)WxppACsiAu>MuS< z190nvN11$ZpJ3%3A043@Zq-T*D(aek0(xAcm6L#p!k8MR=PWr2Ag>#AJM=&UX;KlH zcqP$GmQs=Jomu%kEU6|1;X)r(C%v!J5VG+xykH--^{`Bg2VASrZyj3z1n${xj@yV{ zfD^+x@k85yi%n<0AFOhPG-tZyhg9lgqTSb}+vZm101HMPxbJT~VC!+tyHGzllEV>` zNbto};?r&RwuMP~-EvySF4%SmeMT#ihdQGQT4M}vaUE)xiN(v=>{-ZM!OJ3k)CXRV zK=UugGpMEhz%(+RC=gGEy!D5tUp;I*Y0`Aa_#nLXjM;g5r#SF6D-&}0B9_4;cFFgq z{bGQUhMB@$F|l!ty?a4hy06#2wQ)Q&T$Fwd8VVZEH*USC2wR>!|VC(iXnioU3nVW;b6 z9d|n^)aEu-S?V{@;bhvA?!psa^G^VEn47%C80EguuFss*EYa8=t;WJi&XZjlk{}pX zVZU0H=O~|5_vgZjSwl1)mSJCJOb^hm2;|xeyUyR@%>4FGrXx!Gp}OUdYb@80BRtW&_1e^cE^Ox4IYWi&^2C%`lqD6|AZ*LU*v{f{NG&V|97ajHw==P zbV45Zc(8iYXVDi1r>qpDfrbGWZ$$`w#)k}_+WZl1tA%~F$*P@4?QgBPpPD-mE#(`d zOFp|#i4Obu5#v(I@lRh{*l68YkSlALgJ}*XV2!n#r|rl1Lns-J7BJKkKCsqaQ7K4n z3B-Hq8WwX}ZtxS#x;up~%)56!23$iX!Wtw;SL2+r+FMN<79!gmYQfR$tH*Z@h08u% z&;){C*HiiM@Ij$D?U1=8bz5Ve%;;UI&bHm^mi6=K5!zZB!o0Tk25}`Yp|RhKsBS&T z=JLjuyo(S6$-*99Pw%`?psmwUdiKfSSN1?ralA4t#m=M_pgEOemD$1u(D-9zPwf@+ zR`qw0&blow!V~XdQi2?lv=+wT3xp))iI$7K%*K_z+$auhlR*P#FE3^PU5T}nWy%=S zWmsI0dVfa_E#a#9Mf-7(MK@b0aT6Gwz?sl41#9)32c_f$ zM2I+H_c_&cUGE9h^gISunn0p@n8@Bz?8k1X4`ok3%+s2CRa_~V(*e~wUh>-GBu_V* zay(rL6w1SincH~tbaRI_f%d~?XZI&P)R|Gcaar3xFuF~>w?F|tk$_W9afe+m@|cn0 zEW)r%q=-<~rsT)RK=&x1ekV@n?yXnCf$Rs$S>V>dkKe~F^{w4lsq@s+r729zRSr2u z#l1i;g)lM4-K*RxE$^V1p28(YXSt#UlfIfy@VFFw_UpMXfF<}bdc|;UjWyGK zH6#vXogneA8#@??)dyxU^@#Y)OWhq_zm@{NS1d`p0@+$YIi0stiqSKB+K@Hh$XJ9E zG#b>|B^8>=)F14iDt*|@y$|CFPT_$9MhfvwWM(j_4cJ?k%Zu3>z(ePVaU410)TN&O z=~*->m)rRum52icmIVGDrq84!lp31h$PsRe&m7i;w4z;C&+14g+p zRUJU5FKC}w{@~NUGp46?HQSxdgcDD$;xG2#nwl~HAh|_A=>HI?UZioUvG&7W_cX`Y ztCz`m6EICydCi9_OG#c7UA?~R{uWp2aXyTi$z|AVgwX8})kT$eJ1k8=<75OFKAzWx zbG0>c$B_DsixwM~Dm3+Mh4jRJSno@QAX^pe+TV|vFO@cM@_L|{K73M>cfshj*}2=t zOQ0=bS9Xmy<*;`FJ~=ih06J;7J7_RsKcl)_(nupxM25H(J!OB;wE>@3)$FiXw!YT8 zOgnvt46;h04aI&Kfgk0D`jvb^<|8=A0ws3()r?#{WiaYPmx6E^O-pAS;R9K3!d!JN10P%IK}F!vL76fn=8@b*szE08&d&d^ytEs9 zb{RwKeEvZi^T;c+X?NchX^+E6+h%DgP_2MpdpH&)DpTJdU#8rYd44a2n(B=R;gG`~ z&tKKMh~|dMeLvM&{=@$0-y1#q!kGHJ`{9pttWsIfnDdY5Lt( zpd7ag;G%dkK_2R;wQ>)Kc#j*Av}b!;Ud?-dcdHJd*6VOwfYlAs1c~o`OL_A4&gN|9 zbVjP50e)<}R8~b(7UNJn>R;B9y)W=9Jc`a#M2;`atimG72c_$$yHce=0V1$!a)-J{ zlh4<0oXP6wxBE*w2Mzq0$93{PF}Am&Ya|p5N9z#~)C4fWv^MK<@A$J9Yxh#$EDY#u8rUMg1yFD^p(!0m^Vz}c~}zBWYL-G;|Y+2qn-3h!(w7J?TZZQ zSVthI{>Xy#b~Kgk*-DOei~`ahIAB~d5qH_sA6o$`V71nzfavT)Rc&<%1&#jz%Un~+ z^s(-e&0F2Z(Rvp|Z$;1IUFC!Z$Su4^-E8FahfFW8)R^`#sg3H}=914?{3`|Hh#3bl zBN^HpVYb}ji?Fx!CL%h;>5Wu8B{G1AXJh~r86b7UJ{e}XE39F$w?wMh7**P{Z}^|+ zKPK&qdOBT?KF>03hV0R5{26Byp?Y$i&87HKtXzdkC)fwY|K?>qywduh;pQ9V5$&x* z7((3*9IEf~OAWf??qL_V|KZ>-#g0C1FTeQtHk{ASpvnH;vMMnS(4$sR8N@iHP=;j% zVrnRkiMSU_a?s9>Q!;402(-U#en*6K&K4mO;WZ4>(U{WtALy&MB~TW7jtPR^;^xyy78<*3a1z zBWGWX!P`Wm{q?Ve_45)*Tbw%hUCi=}ntF99ypgN9 z{uM=5)&-5*NHz8}_twcZ)^=Em#D*^O&@3W>2-=+@Jul~A=ww0AXx{qABX#>(BG0!{ zcjf?B>#5a5^DU?do_SYX4r*K44q>_M2*2LOVsu3>8R@~0Hl!2vyVVvsMBG5B2W&Z^ z_HJNKaG(>_irHI_vhPxpaG(#qJy>Jx5uC~u?}5BpaB}a%7qXwKYO4JGu_Mhx26-6F z=bC>=75v=;Ns-FJ@bYkuBvc$Vtg>!3%Iz2WWd$m89HOOk;M?LwWDu~Z@ZswY<0+@G zB=tj@ha~$)5H_=yfGtfqU_+$)D8{&lP4x3x!Z3lEfyXoA45f#~Vm~HRDe;A_QG7#U zRb;Fj3I0-iET6z0y!y!r7*TRVJM3ysgg9pqo@fsKKM4C+O0nLvc66Ly9E$Qm8$Iz*Gz6d8c1VeTX z*@l9V1!kCTxGIm1L+n>GJ24U`k+;TNBhF?9N-(BIYsmUyS>>M+sH;p?0pQXc!aSu= zeZNN`ojB|+KcNQ%`TUKk)VJ51dc*nR+c?H;@{&D8_H`PyQk^7sonlx*Wjy;K>Uac& zn9HphBJZ%#+B;GZ$4%i%u$}t?s$2@W+iQJ`uY<*FvfKJ_KKeH%xH+e}%+yB?Q(`IN zc)m&`CVewjR+fOz-p#q^#E*2jS23$4?yLp55psn?c7Wd zOmv@KW!-!9>_F`q(lZ15?DWl7KLmxF@=UF0xie!dbts6;M|)`FX6-Pk&^TSD-6;-C zmx2Gd$jYahl)sNx`;@m`)8I4y`Y0?@pmfmM$u(NV*5iO84p}YZ?G*RL^9b|4tr5*k z)-KD|bFxD;k4%cppHuRc1WC+pTME%bwFi+=-i{;9`t(+2{*6%-u29>4VeF1$tA8Yh zl5xK{PN~h%$sed%X9^yKu62|NyWF{ zcj`Xi^&zND+<(3F#7~Yqqq=LA*2mJ|(ylpRQ8L%QYO;?@i^70{M*+3z?&v+51>jJi z=mw+4{f#W9fJ@?=6=pJdg|7#17^?+Kc+xj7ZWd_XQxq+BjA6WCZRu+ROsL$pJpXMo z*cXY3I*z{3ADz#b^Hv-0A$uI>3FIvLN2NymwmIUL)<-QzOZEErJ6pb$cFji05%yRxK zb+^g4m0BIp=yow5>5w^qGl7G>8*qRlkf!|-`4nLj?ToW?=P#jZpVjXV8%f;8aq;srSY85f zCz0`uH8^yIha~}H=O4b`wU4J%-|1~rnQGK%!b`q0ZkM6{CyQEP)XXSf(51d(Tm3ge`YH;!2^Yzs=nG7w5}AI{_R3B) zfg`5V;jrk2#d|K%+w0oidtwV6(*eV!;14`sYnu{gXP;ToF(2UG7K(V?cUD&|g1nsR^N-HtS7?~V?kCVN3$G)Z$jaV9Wzm`4 zcJ$tnE3m(UHU70%ar&{zsgBD+_E2OQqKf9G=873z3sKz`k8`<*SyrCRMSA-fEdf)D z1L&9BLS7kK_LZ0BR}@jGxF5!V#F(rxBlcw7;Kf*d zN9G()s7Pq!#7ly@XYN^*%IWWZHzEcPAD%(ydo~@Q!(D2RB70000*N>WrA0D!>x5L$T1kC_xW9)ph^g1w}s z699mO{*OQa(lbA<0Khp*$%(;j!y}_3p)3hVdIJE&04Y%+Rrj@XAGugso&+Fg=H}rR zO{WFfy<`xelNKi+SlpPTrjJt07OtN#^_}htX{L z)Yw=9(eR;h2}{p4B0W8QECM(5$9DWW54<(GWvUhK3npoGZS$ToISr$3(vFLY!jJ#A z{Lh1NN{k!{M+c8clGhak18i)Ca~&O>ji3J({#H(_!@X;0gqjY{4_Dc1tt}m43l~r@ z3fL)D@xFy5t$}UcTVsPNJpU+nB`mhDw#!D@`R?sq?`~B6Ke)aM|FyRl`k&HgRk+ji zF-995JkS*_bffRh;cjCyx%^;SjHPY9~(R%6!F|n-iMe! zc#cRwp{KtbljB+4`IiZwa0xQ(ltWRnW^!!oSV?+%J<`?|cTq*-%1~=Y>@9yof{VQkV!)%2_S#I3B7uP~$vzQ`|ldcXPE5}}- zkF=nv@NC|~y|=gUa#-RMw%AG%#_7DdORfLuAqf5Tp+8P3b4SYt$!QPa zrNM*Gdc-gsA2;(?k(4Xx!?S&KFhJFBXL$VaAk&;-8LK%9Gu=!=^0dr_&4{4cR!AT^ z)k8ugH384Y00FU!+2z`IOE%-&fuf z|GuP=|93%rK_&jbI87_uZ3{uNx`Vj%8RBCeawbXAx5TeA8q5w{T3E0l4LqE!6 zR^#``Pkt)g+HXSz`w&wsJXudi8YtTC2o=7u_cCHHD;j0dBp}}Y?uX_x0kaIMv|zo% z3OD-K6DriktoWzBCrQ-8$#be&p{Qd>R+h07Z~2$BV6zf8PUYt6wQ zI8<$W%RW=9bzzo-l&aqbd=|r08m|eC#;l$~XbzTy`bzgt9$jUoWZmJp9J&v~130Q#EqL-0ZQA@35@i1H0(=w@&6@m zw`wW46u_YunkZN4>HEyjiZ}O+x!mN=uGji=)IS7Ja_%qk2pea9jS5$5z*Y0cF3_Ju zAfX;tn635wrlNMaM?G)Rtad^eS;dUrB?)>|QV(f#W`Q{CU(#QI`F_jrz#dRdC zjC9fRXO`OG2WM_P(Fv{{GURn5#$@2`R-`hMLonYF^z6prX<1iXISU1lNVp35C}7&r z)kPD-M>x@m>HxL@l746*L4zCR4sti<(vE=e-and=+iph^?N^pFOp z?W7&Zkzx&Db#Y{kz(aZQR<~a{6TVm~O1&c@HGKHW9QC#F6S0_ivGA%zVh&MSWu3mt zdU-S}*+uf18xKyB;r{kF$gXT#d}=N2+GC$Dbe2(B(~@HpaOn5RV&aKJ%IIarDW~4{ zzt)n@;+fZ;$C)oTA9$?9$L*kmzi;SHauyr^m~%)^-79ILW=ZZmq;*!9)yGwG`|9@% z2>Ga35!Qz28}Dzi9H0Ke(jKCgG6+>VLa>Sfi8NrZN9tx-@!mN5<9k$#fdOhPUP=Oq z2D(r$F%HHzayAy&QtXhyN}z(8#Sv0E_N+T%PdMPZ0sd!9kqF?YJT$FQ?uqWt!{FcB zvR#V;v9pRCwn|z;>r2Rc+f%~0T_ywR-}XPL4@UMgDeO~mqmw-r$2;=PZ>-N}wW%UU zOppFvO+8rXe)|%u=LH$edPl3qU;oyjz!Z`w@T;}eoi>G=;+wLCdw3fbt@9y)OJ&Q> z9}{vo*qi!zr3phAdtnS5(UM8qL$KD64VOR#UmJ9cn1%$aOxKbq7m!3)65DAPkLDAS zKwmB1n)#YD_S9kzEQrY)$Ei&Nu4ugIPGxSpAP!?nQ3gfEtauO}@RyI!av9%ssDrlT zpfpD=I6DgSAk)SlQ;sFgO)X-@86|dK6b#>8@YM%+*TB=FSRLJ=>{C=T^6ik83BrO; zKp@5N7w+Jz^QI8x4rBwUKXy8lkS6?E?p(vh0Yaz(1=e8)0_@6`G(qTM14|^1;DW&k zOv$X1tmiq>9Yo}kk^!s9m@T-9FzyPAvqM*st-RvaEii^;K4Gg#LNJcRpj8Ck`!Qwu zc~IaMOz?|!*-rRLfuQx1tg}=2_QJC8e8Afzl&VNT4@;fm$^P)4=b}1nd}EofMKF%F z9)I)<$WI*es)5;9s`wi$ssqBpJ+)x4B9SKJXG*kzrqTmXg_6zR+WiPVMhb$d>7rwd zi5KwndEajl`j{L%?mPDxl^FagAOUy7*Eeqv?)*!6AP>OJp@w!}YZTO7(=fn4cS_10 ztVdFbISRbD4u{Fl+N54{M2&B=S-647%R@xOOlx3f{_38+b&u0Kkf`Y6812=ZFVIV2 zaD$3rf)%|XSSjA8UJpM$7A9MX4G*7KXJr|5d_n0dQvQ(8)-{)c#47*2w#;FTn4URT zY89Xt^O?A;+~7tMiy-)<3j=Kq*6=UNaJ|vD6(eY5*P%Wm868>=n0Up!kqcsaAe`Bu>yTDvVKUXn`+dUe3W%z8c& z74#@8{O%Rl2u`wE0->cy$~T9AT`@uir>=;pK1bBygfwI)a3Fiw7EKz?tU6HM^nQ=C zRFTS+S7}jvk!I^`i+AoiN@<@ayY)xwlBp0t1?HcNY8r&aDBn zn7*=G4wRQP^rtFI%0wtBRQJfiL#IH#$(mq_c7LRB1aD~IlQn`{wKGBfEW%>oP&^q? zhDNEPtkGaZSD;g`cd1tXvyHSe{UV4!y;2$0Znfu=$eLfMX%f`5#p)qQzAUI<(*vNv z&7W!=D|}d+^7<^d>X@dyBt!nUvC)3wC+w!Gdz$JeV)>abD4wOqdx3&hK0=uJYee(u zj~7`JMbXh^ig=2u_Cu?f8>#>%*$HPGfRgqXJ|;Grro^5#Pr1%-Fy8qcRGV*f4k6qA zdj|YaZqRySqL8M*U%%Q{j4Ju?&srdKOlF%-^);PV#htjb`{jO6%E8ShqJ9(1Jrk|P z?>#2gs}XFv4>fnBL@|gFBuT*jEqsq8ky7}hFWy&&`SQ^-DVv&e( z&CP(OM`PxA>2CXORQe-cg#OQURMV)7KY6WGe5y>p^3Q{5xGNRrP8MQ%I2Na`5nh9> zpI#Ez4AxGr*2)Kka7pFOImCs_@**`?u|?`*zq?gw+~GlrRvsPpcf6SKwG23>dh#uB z;(@{T`U;E=5E=o99J&&OwGWKf!iM9<19p+m{VRc1=36Xv<(=G*oJ6DpbC0>D&s6&I zV$|G%_U=6g8$Xn5y!kY}ph*b}A%{pGyvw5Up;3u#J$2XcSTIE*yEA{-pk#S}lI54j zskmr-RW(=YuYU60wzW%wTN5{(Dprj?uQrk!hj&xdl=N}%WsKy4G8SDwJ-P#o>CaM> zZ1$w$Ponw+_zO1od-%+rJfBWGw?#JmKvmbJn6dRF4{TjPXY`FpnVZq1L!-`sq4r_t0hf! z{4(*qq*bS6l1Z{GAwBw40s%R*J}U{`qJ|1F5=}D)YOw^qCc}{~)WkKxbiH5(MY!ay z;gzeUAE<_x|28Wkqjz-pDSY%wLD>fmIH_>$qP5m6I zVP&Es;L3P-#!por|^vBLbv?bJw z+-H?`wsf>uk_3x@lC;dYcB| zxV@UX56G{)L8mHGtK1OEW;Ug!=VnRiQBCX4W%b!%QxnnH>Zpa?q$r82?)9ZPGIdgQ z25o|6UW5XuleK6^aW3n#A*k71KhG81sSy`< zFV;3caSS-fQ4OW{Tn``?6|wuK$O-B?D1FB&pw}@8Sh=sPCek6jJFO0akusoHVh(fd zwwx{OvDlbG)((Fv=K3a}nmt^l;;Q%CL6(zTx7fi|LzG)llWLz1>_hZWD1EH;tlETQ zTE*!7=-7uyKaL^=M%5FPSLn{|odo|#*9QR0c-Q3&Z&E4`yW3)X0~q|2+k&rfI(`~Q zfz&NSFfeJ8b1N(7C{RR#&ok1Z!YV=5P4{X=;Q6q6x~d5a7pmFbj~pZ3mO4hR(* z{>mLO%L9)kIwBsTex(MC6^OPbk6x{FMh*4XH3-K*MgOh=q7s$eY*+hjJx!0c*#f}= z`KQJLiu1)1)vgwR1O2;g!o%3Np8VhfR6{SG*fWy}ga!N^tE!;s$I#^o^M>P#i-)D^ zw%$TJa1b0Y|7E2<%P2F8l8Q^myRR*EwXP@GxoE9=1GbZZ$#Wc$!d<=hS*>eFZu$9D z_KBi@Ir%!fWnIp#H)+;Z4)(SLM(v%C!3$0}?kqnIci-2HB}f8L4Yg^ooy=Ny z|1`2z@kSjcKR%Y5IBZN%%k0csA$iGi0%5n;M|RW^b~GA&&+~7!w@%%=@0$8#l;{l9 zA|3!=I6@a8_1~x&!cTa``VJGgkpLrGO>u40rbf%j_gH6EnD-vY4rt6+H1P4wq$MRk z)O=P~ZH07UUH)RZSu9)L&__HF2341YSz-?>!c|C>EsNjXAA#O%)ItQT6+Y*341n|l zI`>*J@Bzu{=(saWT2ZSbvVQL$?_Ylem%J(TmQ6*dCR}@RMwE%S<`>67D44U&(^8Oikh z)MHa0SntK5n74T`Dm{B!Pr+MF*`L_mN3w8>JuwYf7lq|~-$0RPrK*c5ablp{WWM~K zKAnhP4jMILpUY3+Fs#`sv4*7xn<)G+iXp%BC zU}bDvBW8vuZZtDC8)h0f7r4)beC1TzBKwf!c%5SDirAoTJ8ZdBby*X3U!A5i@r+ivMZL3ebL*xd z)Ytc!j)dzMge7{2jFrJdI>;Vuf9O9UmOaRyYh!Q(W;z7l8^3TeCs|}{6iIvPvHSaA zC!7PMgNylrr%ZQ!or@K}vDEG@YDf7p4a$YFOQW8Fnb$zg z#1)rjk?XN^iEq&hc%h_5I(=4rW>#71iM4jPjF1ne`K17xQ0LUE?P#@Aw%qm52wlD@ zyY3%f;_v>LW{4*i>_+eu-k?@Qdn}fs-7@w<2VOOBE?Nr6)rg)t|IWnw{==X}^>i{N zq9!@U zvWqjniv)a$)vBRlAKXmOaZHp2ZL)2p?pCJwWr)|ih8&hmE?rD7f;&tqaes z*}6UYlrHA#NE5;{HbMzZoi)%0$1GQfL%yVtHIhsf5%vG5D!^4uF`*k>>Y4%BZ~_dd zuFG-f%<4~cMs3BPNlEKC)$k~n`e=tHC|2+*_l|_hpsz7~`cWX&y~>m#)GI>cBQe?V zg@=Dn%rw+1Xwk!pr4fyHA64^+Cm|Op%N$63p0Z}>@sl$nF&Vs=sYK^KIF@Y`MAxp1 zycv8GD7y#qF7URvkgX&MQcfeFNASxjGzp&zl?K2||qF?>`0(5xl ztV@A(Z?6K4Y!kC&Cu`d}W{T+(4mBO5M@rJ!@xR{-FB%4WB7R@$`uJ}_{F}3kf zK5X2g5S;oI+Gwl#m)s2T=P3KMNGZ-M}ZfFZ-e#8q*qneXpp(e zo}jpW5#U&bZ4Y~UUGjyYo&lQ7FnTs4F6$}XP;r5%e zzpuA0Vd}8*?zik_058rAIVgX;Za%GYrabMoH$XtM3?b^OpO>)Q&k%Td592ntTRB>> zymlGygGS#l1#I|i7d|1bxed7G$^)y#kd|*=0Ph^fd}q%5ydu%=K^FPO?SI^6(0Nwa zsn|FW@6=6Fmyn)a=WXG1!^aqRKC@EK!M0xlxx4YkD%mMn`Fo&^o_h_D_d4|C$`cqv znY&C_{b@9~0{n>m;eQhMyi1pO&~9p2OIcSDqIf@hpjlQPQYeMZdGi9S?-qOHM<2Kb zY$s6!O=wv(Q9(f_hDjROzmsrKyuSn)&24dWSK^7_k69#Q-Z){clm4}-cG<8n*-5^a zIM=RX=S19LF|NH>ehzacS!l{OW}dbr-B*+l^LrA&C_V2rDK#`=)T8J#767Uc%$XY~ z`3(HvAgP=q?q3`IgRSw5G1mcQ**J4C^}IF_#3JXm3TZAr&t3dUH>}IGlZzb}b;JST z&$f!`6{q88pJpXkUky2BjwSSZI19)Mcxg}?*$kRAz{LXOXLS%wjldL($#(F4^0g@_ z9$q>R_p(q|g6zpcBJVojhq6iowDl49lZfs(!n~$3<#2zoEb34P?qUHVlG+i>gPojc zA6FQJ3sY`-j^xiLeuZ#&DkTC@Evc)rsaLQyu#pLGarnd% zc=Tx#hf_sjR#XxJN__Qp(3x1uHKqoyd-KyfIf&5qzR)Az_8Y;@Wn({sQ#MpdD;%?D zd#zSIdV$)cc!n*t$9TD##KHERk(^zeZfWlvNI8=}-IDtq?VO~Y;%vsDk9Xl{q3pmc zRrv%(bDAihu$UM0Zc8Rxy_v9c!qMyYt9c< z_XCr~=b<=ZHy!^Iebua*xxUvMWv}hsfm>uzRymS}?WU~AMvn>&8@xgeI-m+mc!gYl ze0o^bCclA7)c(eV;4o9eyobs3lS}AiI=Lv_t`Y-VPQJ4vd--!k@il>fnygQ2^Zk)Z zE^Enw-P)psE%AlS4{c9Z+$`Bmj3H_(Z2xBZgZ2BhIW^|nXoG<2O&I5`3;#;S6)m#If`ndmp+ ze?TsL6YlAuCTMeCjQX4<-z`X8+~rF7B{y$yH$Wq}fGaa59Y&-Ki}d^5;Uv8&k+xjO zd>GHUC5|E7e&jEJEbP0R+%$Kh<-m zjq8NCi5rHxUpr`KRK$&~Z8m66$&QC!To=ZeHbJ@Szjd;iS|CWIR8d6IFg<<;qaA*w zmNUS#>M~(I4r}+1#M6zV*ULfP-qzd#E#@DE;H?7y=y3n^0;t!5EIWPEZ`{R}m7U7m z4%)==@I*>J(|ucS@Jr_n`_ZmAIpyM;eUeFH$;HiTvcun?JqZU!MrFF^+%-M6cr-J( z!$3n4UHkR34Kp#F(k;9@1P}#E_ipEfEyDdt}%P}g_!+o z^8q?;>Kt(`*C_j}znL`z z#;&Mt_No=mh*VwOaap^|-JO3vBj>}U*-&Y3&)Mpy*(iEg1kJ~}{cY|4lix`(Nj;;+ z(TYcc*G@*FAAIdP_*07=hQd9og8bW3ugB~Kr#E8i4;Y~l;9j`@O)=HPSXU93R-gNd zeD&z89+(%mpG`wUG+j#RPo&4~qtVIl$j?|CEcHF*E+j~hO915hKZ8qvj=fgPn1CLo zj&$ggXrJ6r=d>JJaUNI0`X!T2`QW`H5}C97fTrmXnx+9FDuBk$`TKV!wgqtC8v|?+ zx;tyw(FP8Hnq;S4J6UM?rZ{_I)- zW&fc#rS50v&S?TrUYH_&#hlOR*BU#unK1;qR2;Y=`yA)rm=cy2kyr9G000}N zg;vEyq1t8c1HwC^2*2i6>>ZN<(!yp$kQjo|g_cn6t+PNWUegI0G$*D`hS8U=(Sa*l zLef8%Zs-r7eSMF+5Mf|*p|1vcg=*U#$;o6Jxjh%D32pqTBp?a#o3z>NAuHAq4Fk@T zdm%n@LKM5*4cNT4v9-XNfHZVd1t~x(Lh6__r!dr1QQD-e|4r_O^rtgD-Bh;eFKWK} znulW$z4#sLTna(>=K^w3`J^FFYz6lMHq*<;i7yERVfpA{XqevCVOi`w42Ljw&GWrV zU~6~vD}v5WkCv>Qadk+V#phpU%SUBZqAMBx;W_sCwSp@#Txsw)#FfLjU-=MOn~#k3 zlhH|FHPiwArUA`t`X!|^?4Hp2cS0X)R(Fk<1iE}?N0*2z&MG<(x1 zukLBmd5f+Ep)IjXL-#;qM0!EBF;z#D+_W=oPlq`X86ZE!t$$J)sdDo=4QcGmx&bp^t0+nN_;!L4{k(;d_Ial`c{CSr=G2K(p~@cnpF!<*gq~t^HzY za}22x57YH}2?9KDMkjDoaO>Pc010pe=pCVu?dSJG|9GsU7(nUxFV#LD|29CNdCITVkB$R0G*_`dg)8k;d0xC%WSO6m ziiYGgdJv+$ww@2H6*XpCSG@zhySiy?AUaalp45C5Z|u?frmT3<{emK#U$6dr$av$u zZzey6==0@i&3Dj6OYa`%O|)(@!h{E1>Td$WYO?m?G={f3_Y?`W#8~glwuZ&LY^^48 zfmS1+JU4y1fxcyQY3w3iNb}r6>}(`?SbUFzD?&CA1`!A3U1HBvBo#o!roSd`3Jf>UDmosLQoV zb)5VQ>tCPCK$M5JbDp0xtN=@cZY7OXl!2#)lq7ZS7J^xpf8#>5FVcYF z)#mt+kedMg`X%7hw`@e+A+^+t8aKly6+)pCv&b#ynA}QeGLown1P;U@Y&5vPTjuLExq@Ztw-vc)i-)a zti{r+jZ_<#h(&pjOyhZAglOGsOuvqTT zQATx+9mcWC*ayaj$PeWueBZ97)CpMFDP;4doC}dHev@Dg=g#HUlTM!5yi(Ko&CN;2 z5vP9JVQTrY(F_u02KKZm04&m@@e(1;03qyucCBp8c3N2zueUjR)N?ufOCQGa77Zsr z1#Q=g=m@Hk9=u6~YDw|__F?qjJP`dMz8vtX=*CDP5=>han(^aaO$03R=|ZikL`;TN z@m_^n zbt@m!#T768&(9O|PoK(OFV78t9MRcW^PV7IFI;+@&m2VUY-+^X^IvY}Det zR&)Lc539B54gzBb*)}+T=Y$pndJsP@KTS>^T$;C`kTFy%E{9Jtj6uL%hP+UDveTE4 zbxWFn7~G6h^z0kfxK@retoW|Gh(4hTZI$(U{tj%a#RNi2#asm-v(S9az!eIdR9n^` z$Rl{S22r^QNao+Uwv4zYK?iJKBrJ6@K8cDkBsLP8Lc5-#z)?8ciV$!IqjxLS5tl!T9F1>o(wxW-yeOMTX`xIb z^F$=`ni}H1`g)VYyVG)5zf2OG-m4hG{Ovf9^gXhd3Ek9h=eKA-F1Zu_{xf*%LKMFl zL(x;GLdxuGTQvIdYuCCba43?nx_;Su+}1aRaZ;hd)kRp;d}xpl+nfp#Sipi=Vy7Y} z%@&mln;@Tf!Ke{IUNy`X3!^?N&At2bM{+{I!DLWei+L$NQ>;DAL;%biASnRzQ8!xu z5eUlwzbG};+PCU{7H4{rA7WV+nMv3f$WFDqfFOmhPczP^{$&9MKaT&Fcl{UbVCSRp zqHnABZp|*(c+iX8)8%d5!_%@4f?UhL^jjhg_#B06U3GYF1pRgec_D*I^%&ec78$JQ zilVbxsm{`yy6ZYDVc`su?l=dcPh94%JX0sX2r(uac6NOft@9n9mJd%dkW^j7QG0X) zw~ZYPZ-&c>7-q5Pq!pR%s13C+cR8EhAuld<0rToisH8m=8l5uD`Q7UB6i06dY%pe5 zC~({C)LFf$EAMEi1QL+95fO*xv*jj8cAxLzh?a7e>i4n+JBU7QtN2giqdsX=7EqPN z-@4wOM}jQt6~;#^J~`G$nEo;EEw4IW!;#?7*Nwv>c}AF!4=m9!EiO=lPa~a^sR7SiW zAvK$CE(Pm0EF==Gq&IwgnE{K{GK7mYUlu*q%+TZ1AA=1(k1j1d7){EQs;?R_Xevx@ zCli3)x9FaYo!Tq%3$WrV#&dAe%1)MT8KEgT8rk4WY)zA5@}zQq1g^-{GYe$fu6n9{ zU+o&YzXi3I8jKoLalXD9h^s5nBYZ!4N}-vGZVi@OUl8g*o>-Y&;9)($w;lZSJql?&eKP81dazI)vx>Xvg5Iq*jh}(ABqci98|r9K-ps9V@fmQA z{@_-`-BpQGgWG;_7&{TL3y`{Xnem(yLj`B?%1S8v@jRjA1PY3v1^yW*am zR{{^x$DrK;D~G6E_F1Z>IFFx*hk2%1hskJmzw-lDzI|NW4z)c{R`&yv!Ok2upW!^>qW_-&VG{FsC&J-8Pnu{%g!d zz%?8A!&R+=P2Y)Xga{zDbV=E4mB}S{Yw%Q#=R}nG>9%1kWCB+_MlCG?pkcL-=0h@9 zt89BkX4Dj0QVuqq83bMBotuImo_tE_)$GxSR+?%ALB~lh_VnZMf9&2!TfB)|jhVL& zp2x3)m1>jaUq#U-ahjyhiVa*Q^Me+gs@NTytZoxX8q+s>rGMHj4Iy9ZTdP&8@L)#a z7X6}(LKjW%O(FYqSN2*iS24!r44&F}-(){%KGzv0Ys9F*^A&QsRL8PFmJ4YX%6+9J zU$3UfwnLZoImNhcz|R(#{=p&_H+X)%5!lhAPdpQ3LH6r{Qh#o6f1A8Zz}4(Y31OY5Dc!3^8hddEfeq=dDtVyb_g^M1M9LeM0nhLH z0o>_OP zH0}cGZb8$`?+4vpu66hy1>`h=oBBx7Kbp6oR;ykMfqI=Bzu(iNAryM^n3?6_l$nt*d7- zQn{51!@8XyQ4UW{dcYnvFu@bknpG9NHa>Nf1QdQYg`6Z7Tk(OclTfO z24X};HirIw_vVzrIy%{tYd&DHV0!v(CIM-6Q#054LY z2_UhttKbB!_!a(3<|F2RFa`JMfAI{1gQOpQ|12oSy0nW|E^hSYg|Wtxu@Z%p zyz%Esvj;qyMo&tiw+?G3d)Kyuqp;X1Zt)+i#fM4w57%Gf&d7y(CnpYKNj@_qYImJ3 z>gw<|IypEvh&Vbt=KVt|j4OtVhl=XKf9QOW3I9!0{P*C$5R19+>HmTt{?QdJ%d+F$ z`wv`V5aolqm@jnAUj0|p*Zjy-53arcq9!_G7cL6ICFD~o{tNm5K036Wmt{qb6VWt6 z337O)SU%QP)M78or%Y1`0BbiR{|%A+lfM6*D#?4`{m2ITuXiZqm0vKTYj|fL#0)@6 MOkT7~*dXwK0ha@-DF6Tf diff --git a/Assets/Prefabs/FriendshipLink.prefab b/Assets/Prefabs/FriendshipLink.prefab index fade99c..5bd9d47 100644 --- a/Assets/Prefabs/FriendshipLink.prefab +++ b/Assets/Prefabs/FriendshipLink.prefab @@ -154,12 +154,10 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 9c9bbff116cac264d9d7fdcce8cf92e5, type: 3} m_Name: m_EditorClassIdentifier: - HighlightedColor: {r: 1, g: 1, b: 1, a: .501960814} + HighlightedColor: {r: 1, g: 1, b: 1, a: .258823544} StartPoint: {fileID: 495136} EndPoint: {fileID: 495134} BeamLine: {fileID: 12095142} - StartObject: {fileID: 0} - EndObject: {fileID: 0} --- !u!120 &12095142 LineRenderer: m_ObjectHideFlags: 1 diff --git a/Assets/Scripts/Link.cs b/Assets/Scripts/Link.cs index 253374d..f2730c9 100644 --- a/Assets/Scripts/Link.cs +++ b/Assets/Scripts/Link.cs @@ -1,11 +1,22 @@ using UnityEngine; -using System.Collections; +using System.Collections; +using DeathBook.Util; +using DeathBook.Model; [RequireComponent(typeof(LineRenderer))] -public class Link : MonoBehaviour -{ - public Color HighlightedColor = new Color(1f, 1f, 1f, 0.5f); - +public class Link : MonoBehaviour, IObserver +{ + private float highlightAlpha = 0.8f; + private float defaultAlpha = 0.5f; + + private Color currentDefaultColor; + private Color currentHighlightColor; + + private static float defaultScale = 0.03f; + private float hightlightScale = 0.2f; + + private bool isHighlighted = false; + [SerializeField] private Transform StartPoint; @@ -16,16 +27,28 @@ public class Link : MonoBehaviour private LineRenderer BeamLine; //public ParticleSystem BeamParticles; - [SerializeField] private Transform StartObject; - - [SerializeField] - private Transform EndObject; + private Transform EndObject; + + private FriendshipLink model; + public FriendshipLink Model + { + get { return model; } + set + { + model = value; + model.Subscribe(this); + + //Make it between 0.1 and 0.4 + GetColors(Model.Awareness); + hightlightScale = Model.Importance * 0.3f + 0.1f; + Highlight(false); + } + } private float LIFETIME_RATIO = 0.025f; private Renderer _renderer; - private Color _defaultColor; void Awake() { @@ -36,14 +59,21 @@ public class Link : MonoBehaviour _renderer.material = Instantiate(_renderer.material); - _defaultColor = _renderer.material.GetColor("_TintColor"); + //_defaultColor = _renderer.material.GetColor("_TintColor"); //Activate(false); - } + } + + public void Notify() + { + GetColors(Model.Awareness); + UpdateBeam(); + //TODO SR + } void Update() - { - UpdateVisualEffects(); + { + UpdateVisualEffects(); } public void Activate(bool state) @@ -79,10 +109,35 @@ public class Link : MonoBehaviour EndObject = destination.transform; } - public void Highlight(bool state, float weight) - { - // For now, the weight does nothing but it should eventually influence the intensity and size of the link - - _renderer.material.SetColor("_TintColor", state ? HighlightedColor : _defaultColor); - } + public void Highlight(bool state) + { +; isHighlighted = state; + UpdateBeam(); + } + + private void GetColors(float level) + { + //If level is 0.0, green [0,1,0]. + //If level is 0.5, yellow [1,1,0]. + //If level is 1.0, red [1,0,0]. + + float r = 1f; + float g = 1f; + + if (level < 0.5f) + r = Mathf.Lerp(0, 1, level*2); + else + g = Mathf.Lerp(1, 0, level * 2 - 1); + + currentDefaultColor = new Color(r, g, 0f, defaultAlpha); + currentHighlightColor = new Color(r, g, 0f, highlightAlpha); + } + + private void UpdateBeam() + { + float width = isHighlighted ? hightlightScale : defaultScale; + BeamLine.SetWidth(width, width); + + _renderer.material.SetColor("_TintColor", isHighlighted ? currentHighlightColor : currentDefaultColor); + } } diff --git a/Assets/Scripts/Models/Friendship.cs b/Assets/Scripts/Models/Friendship.cs index 48419d8..a1ff053 100644 --- a/Assets/Scripts/Models/Friendship.cs +++ b/Assets/Scripts/Models/Friendship.cs @@ -5,7 +5,7 @@ using DeathBook.Util; namespace DeathBook.Model { - public class Friendship : Observable, Updatable + public class Friendship : Updatable { private Person self; public Person Self { get { return self; } } @@ -18,21 +18,28 @@ namespace DeathBook.Model private FriendshipLink link; public FriendshipLink Link { get { return link; } } - private float awareness = 0; //on a scale from 0 to 1 - public float Awareness { get { return awareness; } } + private bool noticedDeath = false; - public Friendship(Person self, Person friend) + public Friendship(Person self, Person friend, FriendshipLink link) { this.self = self; this.friend = friend; + this.link = link; } public void Update(float deltaTime) { - //This function is only called when friend is dead - awareness = Mathf.Max(awareness + deltaTime * CalculateWeight(), 100); + if (noticedDeath) + return; - NotifyObservers(); + //This function is only called when friend is dead + //awareness = Mathf.Min(awareness + deltaTime * CalculateWeight(), 1); + link.Awareness = Mathf.Min(link.Awareness + deltaTime * 0.1f, 1f); + if (link.Awareness >= 1f) + { + self.NoticeDeath(this); + noticedDeath = true; + } } //returns a number between 0 and 1 @@ -41,13 +48,14 @@ namespace DeathBook.Model float weight = 0; weight += link.Importance; + //weight += friend.TimeBetweenPosts; - return weight; + return weight * 0.1f; } - internal enum Knowledge + /*internal enum Knowledge { Alive, Doubt, Dead - } + }*/ } } diff --git a/Assets/Scripts/Models/FriendshipLink.cs b/Assets/Scripts/Models/FriendshipLink.cs index 9bb47e1..231a861 100644 --- a/Assets/Scripts/Models/FriendshipLink.cs +++ b/Assets/Scripts/Models/FriendshipLink.cs @@ -13,8 +13,12 @@ namespace DeathBook.Model private float importance; //on a scale from 0 to 1 public float Importance { get { return importance; } } - private float risk = 0; //on a scale from 0 to 1 - public float Risk { get { return risk; } } + private float awareness = 0; //on a scale from 0 to 1 + public float Awareness + { + get { return awareness; } + set { awareness = value; NotifyObservers(); } + } public FriendshipLink(Person p1, Person p2, float importance) { diff --git a/Assets/Scripts/Models/LevelGenerator.cs b/Assets/Scripts/Models/LevelGenerator.cs index 2049ecd..b380224 100644 --- a/Assets/Scripts/Models/LevelGenerator.cs +++ b/Assets/Scripts/Models/LevelGenerator.cs @@ -111,8 +111,6 @@ namespace DeathBook.Model } list.Remove(smallest); } - - Debug.Log("Friends + " + p1.FriendCount); } return friendships; @@ -120,9 +118,9 @@ namespace DeathBook.Model private FriendshipLink CreateFriendship(Person p1, Person p2) { - FriendshipLink f = new FriendshipLink(p1, p2, Random.Range(1,100)); - Friendship f1 = new Friendship(p1, p2); - Friendship f2 = new Friendship(p2, p1); + FriendshipLink f = new FriendshipLink(p1, p2, Random.value); + Friendship f1 = new Friendship(p1, p2, f); + Friendship f2 = new Friendship(p2, p1, f); f1.Other = f2; f2.Other = f1; diff --git a/Assets/Scripts/Models/Person.cs b/Assets/Scripts/Models/Person.cs index ce38108..4a7b559 100644 --- a/Assets/Scripts/Models/Person.cs +++ b/Assets/Scripts/Models/Person.cs @@ -43,10 +43,7 @@ namespace DeathBook.Model private bool alive = true; public bool Alive { get { return alive; } } - //private int happiness = 1; //on a scale from 0 to 1 - //public int Happiness { get { return happiness; } } - - private bool online = false; + private bool online = true; public bool Online { get { return online; } } public Person(int id, Vector3 pos) @@ -66,21 +63,45 @@ namespace DeathBook.Model friendCount++; } - public void KillFriend(Friendship f) + public void NotifyFriendWasKilled(Friendship f) { + Debug.Log("I am " + id + " and my friend " + f.Friend.Id + " was killed"); numAliveFriends--; numDeadFriends++; deadFriendsList.Add(f); } + public void Kill() + { + Debug.Log("Person " + id + " died!"); + alive = false; + foreach (Friendship f in friendsList) + f.Friend.NotifyFriendWasKilled(f.Other); + NotifyObservers(); + } + + public void NoticeDeath(Friendship f) + { + //TODO apply more rules here + awarenessLevel = Mathf.Min(AwarenessLevel + 0.2f, 1f); + Debug.Log("I am " + id + " and I know my friend " + f.Friend.Id + " was killed.. " + AwarenessLevel); + //TODO remove from dead friends list to accelerate + NotifyObservers(); + } + public void Update(float deltaTime) { //TODO Update if connected int time = LevelManager.Instance.GameLevel.GameTime; + + //The following actions are only performed if user is online if (!Online) return; + + foreach (Friendship f in deadFriendsList) + f.Update(deltaTime); } } } \ No newline at end of file diff --git a/Assets/Scripts/NetworkingSphere.cs b/Assets/Scripts/NetworkingSphere.cs index 0d87057..eb8ca93 100644 --- a/Assets/Scripts/NetworkingSphere.cs +++ b/Assets/Scripts/NetworkingSphere.cs @@ -4,22 +4,37 @@ using System.Collections.Generic; using DeathBook.Model; public class NetworkingSphere : MonoBehaviour -{ - public Link LinkObj; - public PersonNode PersonObj; - public int NumPeople = 50; - public int AvgNumFriends = 20; - public float FriendshipLikeliness = 0.4f; - public float SphereRadius = 1f; - public float rotationSpeed = 0.7f; +{ + public GameObjectsOptions gameObjects = new GameObjectsOptions(); + public LevelOptions levelOptions = new LevelOptions(); + private NetworkDisconnection sphere; + + [System.Serializable] + public class GameObjectsOptions + { + public Link LinkObj; + public PersonNode PersonObj; + } + + [System.Serializable] + public class LevelOptions + { + public int NumPeople = 50; + public int AvgNumFriends = 20; + public float FriendshipLikeliness = 0.4f; + public float SphereRadius = 1f; + } + public float rotationSpeed = 0.7f; public float torqueForce = 50f; public PersonDetailsPanel DetailsPanel; private bool dragging = false; private Vector3 delta = new Vector3(); - private Rigidbody rb; + private Rigidbody rb; + + private LevelManager manager; private PersonNode[] peopleNodes; @@ -27,17 +42,24 @@ public class NetworkingSphere : MonoBehaviour void Awake() { - LevelManager manager = LevelManager.Instance; - manager.NewLevel(NumPeople, AvgNumFriends, FriendshipLikeliness, SphereRadius); + manager = LevelManager.Instance; + manager.NewLevel(levelOptions.NumPeople, levelOptions.AvgNumFriends, levelOptions.FriendshipLikeliness, levelOptions.SphereRadius); Level lvl = manager.GameLevel; InstantiateNodes(lvl); AssignLinks(lvl); rb = GetComponent(); - } + } + + /*void OnGUI() + { + GUI.Button(new Rect(10, 100, 400, 40), manager.GameLevel.GameTime + ""); + }*/ void Update() - { + { + manager.GameLevel.Update(Time.deltaTime); + //TEMPORARY QUICK FIX: Even though we are never moving the sphere, it starts moving as soon as it stops rotating transform.position = Vector3.zero; @@ -47,13 +69,13 @@ public class NetworkingSphere : MonoBehaviour Vector3 worldMousePos = Camera.main.ScreenToWorldPoint(screenMousePos); - // If the world position of the mouse is greater than the radius of the sphere, we are outside - if (Mathf.Sqrt(worldMousePos.x * worldMousePos.x + worldMousePos.y * worldMousePos.y) > SphereRadius + 1f) + // If the world position of the mouse is greater than the radius of the sphere, we are outside + if (Mathf.Sqrt(worldMousePos.x * worldMousePos.x + worldMousePos.y * worldMousePos.y) > levelOptions.SphereRadius + 1f) { transform.Rotate(Vector3.one * Time.deltaTime * rotationSpeed); } - //when right btn clicked, call the chnge rotation + //when right btn clicked, call the change rotation if (Input.GetMouseButtonDown(1)) { dragging = true; @@ -93,7 +115,7 @@ public class NetworkingSphere : MonoBehaviour { Person person = lvl.People[i]; - PersonNode pInst = Instantiate(PersonObj, person.InitialPosition, Quaternion.identity) as PersonNode; + PersonNode pInst = Instantiate(gameObjects.PersonObj, person.InitialPosition, Quaternion.identity) as PersonNode; pInst.OnClicked += OnNodeClicked; @@ -109,7 +131,9 @@ public class NetworkingSphere : MonoBehaviour if (_selectedNode != null) { _selectedNode.Select(false); - } + } + + node.Kill(); DetailsPanel.SetModel(node.Model); node.Select(true); @@ -120,10 +144,11 @@ public class NetworkingSphere : MonoBehaviour private void AssignLinks(Level lvl) { foreach (FriendshipLink f in lvl.Friendships) - { - Link link = Instantiate(LinkObj) as Link; + { + Link link = Instantiate(gameObjects.LinkObj) as Link; int id1 = f.Friend1.id; - int id2 = f.Friend2.id; + int id2 = f.Friend2.id; + link.Model = f; link.AttachToObjects(peopleNodes[id1].gameObject, peopleNodes[id2].gameObject); // Temporary stuff, for testing diff --git a/Assets/Scripts/PersonNode.cs b/Assets/Scripts/PersonNode.cs index c56fb28..7de53c8 100644 --- a/Assets/Scripts/PersonNode.cs +++ b/Assets/Scripts/PersonNode.cs @@ -7,7 +7,10 @@ using System; [RequireComponent(typeof(Collider))] public class PersonNode : MonoBehaviour, IObserver -{ +{ + private const float UpdateFrequency = 0.5f; + private float time = 0; + public Action OnClicked; public Color SelectedColor = Color.blue; @@ -25,7 +28,8 @@ public class PersonNode : MonoBehaviour, IObserver private Person _model; private Renderer _renderer; - private Transform _transform; + private Transform _transform; + public Person Model { @@ -46,7 +50,14 @@ public class PersonNode : MonoBehaviour, IObserver } void Update() - { + { + time += Time.deltaTime; + if (time > UpdateFrequency) + { + _model.Update(time); + time = 0; + } + // Find another way to do it if it lags to much _transform.LookAt(new Vector3(_transform.position.x, _transform.position.y, _transform.position.z + 1)); } @@ -71,16 +82,22 @@ public class PersonNode : MonoBehaviour, IObserver } } - private void UpdateLinks(bool state) + private void UpdateLinks(bool isHighlighted) { foreach (Link link in _links) { - link.Highlight(state, 1f); + link.Highlight(isHighlighted); } - } + } + + public void Kill() + { + _model.Kill(); + } public void Notify() - { + { + //Debug.Log("Received notification! " + Model.AwarenessLevel); UpdateInfo(); } @@ -149,7 +166,5 @@ public class PersonNode : MonoBehaviour, IObserver { OnClicked(this); } - - Debug.Log("clicked"); } } diff --git a/Assets/Tests/Gameplay_SR.unity b/Assets/Tests/Gameplay_SR.unity index 49defd9..60e1ec4 100644 --- a/Assets/Tests/Gameplay_SR.unity +++ b/Assets/Tests/Gameplay_SR.unity @@ -136,7 +136,7 @@ Camera: m_Enabled: 1 serializedVersion: 2 m_ClearFlags: 2 - m_BackGroundColor: {r: .192156866, g: .301960796, b: .474509805, a: .0196078438} + m_BackGroundColor: {r: .329584748, g: .33866781, b: .352941155, a: .0196078438} m_NormalizedViewPortRect: serializedVersion: 2 x: 0 @@ -581,7 +581,7 @@ Prefab: objectReference: {fileID: 0} - target: {fileID: 22417254, guid: c993e87661906234fba410e55ed66832, type: 2} propertyPath: m_AnchorMin.y - value: .293091238 + value: .690773964 objectReference: {fileID: 0} - target: {fileID: 22417254, guid: c993e87661906234fba410e55ed66832, type: 2} propertyPath: m_AnchorMax.x @@ -619,9 +619,40 @@ Prefab: value: objectReference: {fileID: 21300000, guid: 0c813218655d0a1468d7269b69deb9d5, type: 3} + - target: {fileID: 22458514, guid: c993e87661906234fba410e55ed66832, type: 2} + propertyPath: m_AnchoredPosition.y + value: -69.4402313 + objectReference: {fileID: 0} m_RemovedComponents: [] m_ParentPrefab: {fileID: 100100000, guid: c993e87661906234fba410e55ed66832, type: 2} m_IsPrefabParent: 0 +--- !u!1 &1012864059 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1012864060} + m_Layer: 0 + m_Name: Level + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1012864060 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1012864059} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 --- !u!1 &1057734534 GameObject: m_ObjectHideFlags: 0 @@ -639,7 +670,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!114 &1057734535 MonoBehaviour: m_ObjectHideFlags: 0 @@ -707,7 +738,7 @@ RectTransform: - {fileID: 534364717} - {fileID: 1608274018} m_Father: {fileID: 0} - m_RootOrder: 3 + m_RootOrder: 4 m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} m_AnchoredPosition: {x: 0, y: 0} @@ -976,7 +1007,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 4 + m_RootOrder: 5 --- !u!1 &2006180048 GameObject: m_ObjectHideFlags: 0 @@ -1076,7 +1107,7 @@ Prefab: objectReference: {fileID: 0} - target: {fileID: 433422, guid: 136ea38d5deb4c9418beb879167d9b03, type: 2} propertyPath: m_RootOrder - value: 2 + value: 3 objectReference: {fileID: 0} - target: {fileID: 11432906, guid: 136ea38d5deb4c9418beb879167d9b03, type: 2} propertyPath: DetailsPanel @@ -1094,6 +1125,32 @@ Prefab: propertyPath: AvgNumFriends value: 4 objectReference: {fileID: 0} + - target: {fileID: 11432906, guid: 136ea38d5deb4c9418beb879167d9b03, type: 2} + propertyPath: gameObjects.PersonObj + value: + objectReference: {fileID: 11417564, guid: 7a5b1db47a2c30e419038df40dffa79a, + type: 2} + - target: {fileID: 11432906, guid: 136ea38d5deb4c9418beb879167d9b03, type: 2} + propertyPath: gameObjects.LinkObj + value: + objectReference: {fileID: 11495142, guid: fab430cecad80ad4391987a06b550cb7, + type: 2} + - target: {fileID: 11432906, guid: 136ea38d5deb4c9418beb879167d9b03, type: 2} + propertyPath: levelOptions.AvgNumFriends + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 11432906, guid: 136ea38d5deb4c9418beb879167d9b03, type: 2} + propertyPath: levelOptions.SphereRadius + value: 7 + objectReference: {fileID: 0} + - target: {fileID: 11432906, guid: 136ea38d5deb4c9418beb879167d9b03, type: 2} + propertyPath: levelOptions.NumPeople + value: 50 + objectReference: {fileID: 0} + - target: {fileID: 11432906, guid: 136ea38d5deb4c9418beb879167d9b03, type: 2} + propertyPath: levelOptions.FriendshipLikeliness + value: .600000024 + objectReference: {fileID: 0} m_RemovedComponents: [] m_ParentPrefab: {fileID: 100100000, guid: 136ea38d5deb4c9418beb879167d9b03, type: 2} m_IsPrefabParent: 0