From b5e3acfe52f23ad8a1242472492885a313b4adfd Mon Sep 17 00:00:00 2001 From: Uchida Mizuki Date: Sat, 24 Feb 2024 01:58:42 +0900 Subject: [PATCH] Update UI --- elm-stuff/0.19.1/Init.elmi | Bin 18291 -> 18909 bytes elm-stuff/0.19.1/Init.elmo | Bin 5707 -> 7126 bytes elm-stuff/0.19.1/MakeMultiples.elmi | Bin 2668 -> 2840 bytes elm-stuff/0.19.1/Model.elmi | Bin 4851 -> 5011 bytes elm-stuff/0.19.1/Model.elmo | Bin 2843 -> 2962 bytes elm-stuff/0.19.1/Msg.elmi | Bin 527 -> 737 bytes elm-stuff/0.19.1/Msg.elmo | Bin 307 -> 502 bytes elm-stuff/0.19.1/Subscriptions.elmi | Bin 2677 -> 2849 bytes elm-stuff/0.19.1/Update.elmi | Bin 36647 -> 70312 bytes elm-stuff/0.19.1/Update.elmo | Bin 5719 -> 16159 bytes elm-stuff/0.19.1/Utils.elmi | Bin 820 -> 1248 bytes elm-stuff/0.19.1/Utils.elmo | Bin 1331 -> 1968 bytes elm-stuff/0.19.1/View.elmi | Bin 27415 -> 29186 bytes elm-stuff/0.19.1/View.elmo | Bin 20762 -> 22521 bytes elm-stuff/0.19.1/d.dat | Bin 3325 -> 3234 bytes elm-stuff/0.19.1/i.dat | Bin 172597 -> 184928 bytes elm-stuff/0.19.1/o.dat | Bin 907013 -> 962977 bytes ...d89c1a30079e09f106ba5e31213bebee555c5.json | 1 + .../elm-stuff/0.19.1/Init.elmi | Bin 6361 -> 16955 bytes .../elm-stuff/0.19.1/Init.elmo | Bin 3043 -> 6155 bytes .../elm-stuff/0.19.1/Model.elmi | Bin 4810 -> 4594 bytes .../elm-stuff/0.19.1/Model.elmo | Bin 2786 -> 2706 bytes .../elm-stuff/0.19.1/Msg.elmi | Bin 154 -> 527 bytes .../elm-stuff/0.19.1/Msg.elmo | Bin 60 -> 307 bytes .../elm-stuff/0.19.1/Subscriptions.elmi | Bin 1552 -> 2561 bytes .../elm-stuff/0.19.1/Utils.elmi | Bin 518 -> 733 bytes .../elm-stuff/0.19.1/Utils.elmo | Bin 1097 -> 1157 bytes .../elm-stuff/0.19.1/View.elmi | Bin 7889 -> 26285 bytes .../elm-stuff/0.19.1/View.elmo | Bin 4909 -> 21154 bytes .../0.19.1-revision12/elm-stuff/0.19.1/d.dat | Bin 3226 -> 2886 bytes .../0.19.1-revision12/elm-stuff/0.19.1/i.dat | Bin 179389 -> 191720 bytes .../0.19.1-revision12/elm-stuff/0.19.1/o.dat | Bin 907013 -> 962977 bytes .../elm-test/0.19.1-revision12/elm.json | 2 + elm.json | 2 + index.html | 1170 +++++++++++++---- src/Init.elm | 100 +- src/Model.elm | 28 +- src/Msg.elm | 4 + src/Update.elm | 341 +++-- src/Utils.elm | 31 +- src/View.elm | 207 +-- 41 files changed, 1371 insertions(+), 515 deletions(-) create mode 100644 elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision12/dependencies.ab9a08feb2e537087a097ca5606d89c1a30079e09f106ba5e31213bebee555c5.json diff --git a/elm-stuff/0.19.1/Init.elmi b/elm-stuff/0.19.1/Init.elmi index 0baf4797cd589f0f7a1bfcf72497c842b7db55f0..9696350e0d152cc9e90fda9a57324d05cbb40203 100644 GIT binary patch literal 18909 zcmeHP>u%aG6i!D1ltDYxcAK{{c*Gt3*Kk7;ntvRp;(FC(oY$v5j`TIl;~YH6 zezguqi23OyL%$rSR>4v1jwr*`bCiaow9+HItpJ~rgc3}6Pt|1w9xLE&gl3p+fO+E( zN510}h}qStTD*gLE|Gg3rd(a-_q;xu4Y9sjMQW(Jdc?=~1+9Ck5Z9Old{O{u(yZ-Q zh!o20>cmX!!@1a(;fTBPVinMOvyrGi{8!a^43QtHS)_Bs;1 z-jZG4xyf$T%@3>W%@jvsZeo9v^xmTmvdgE8h_SOyd-tBU zKSL~5f_-wjUsPf?$Yu$>Y7FW9E%N=41cl{F%pIMInJA{vTF>daC1#MI(WY|h0`oQW zt&>%kQWJ=8l*WbCR7W(T>`hT4y$hL~sfW3ua6J?y6I58LJB+5-k}6e*7ch+F5ar8a zLBCX(wM%3^M~nJ)cSL=+JEFed9Z^5*f~Y3}it&XorstITm~CF9&kVRr2_J;NZ7WAF z=Ocr>!eKBGc7AOUY20&zyP3vA%u35WHuy5F)H1-$EmGwvyhBYbLA!1N40hIkx&(w5fpV4(@}UOj|1=pY0g|# zSd57=)ilR$54U%llI{*LUpf&C=XmDF?;)OX?njpN-pcub@B-ll u!kfLYV@t0h_-gGc2I3jbTVY^}SDuW9BkYTB3ffCw?Sqc6XOBIrUw;5pfb1Xu literal 18291 zcmeHPZExBz5DrTMltI_2>o#e>p-6lA1+-(Ww02dQR%zc%Vu&{`8?eV7-jquN0aF7C~zI*O3v)LcwsFJK&3J18YV>USwa!t2v9wv@W(iSUOU*@P_eDf_QK8dhqY+DRBF>Pi z!LF5O3a3i#fTH-l{+8~S83nuEeI9OWIZ26{{l_=*j%m6=JUJ8Guf=K@rdJz zF_*h)fen1sh12f1-Yvm*g|gpt;ZoP%H2Un<6$(R=3@w&ywtXdY&BjS+-Na`yy%7pl z)l--C+>lU2g)P;j#COKxLV>E@x!x9aa+`3?sQPYqRDHiYs(#o7RS$%wfoZh5`ZyJ5N&HV zpyjnX3M0yPDLoVC$$*uPm{wd#mUK|h#FsftFOh$(2KY)ta%U_AOG-7-EzCbr(!#6d z7Ru)QX!(KFbN^x{u7GZJFk^I1Q}9w4?&J&0`=M$8{1 zXA1}<5J(`9Kp>HT*!F5dxPENAm9xQlRI@We0KP{~RtDe$-~-?T-~-?*bDgaXd<}(r z*ErR=kJC_^9reHu0)7zigDkuNW|jodL7;;cN03U?bPRKa9Di%Z>c%fGLXLloA;(|7 z8Vi1qf9(gEWl#Tgj(<~8$Q~98FKj|K7Gz^71cVnwr-!NvWMe@#)@J|J03`Au+@C-q Ufkf*6R{;{a1tc=h;$OP?13~ff;Q#;t diff --git a/elm-stuff/0.19.1/Init.elmo b/elm-stuff/0.19.1/Init.elmo index 35879f9d4937dd066fca88f4a7d02881c8a6fa50..d8c2f5191344babc09b9da1e9892631187ddafd5 100644 GIT binary patch literal 7126 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 ML4Mb@;d%MeAKXR)NB{r; diff --git a/elm-stuff/0.19.1/MakeMultiples.elmi b/elm-stuff/0.19.1/MakeMultiples.elmi index 6b4db1977b3b5a9490e4655576d13503404286b4..52260972a9a25e764090de5eba6b26b284c2efc7 100644 GIT binary patch delta 238 zcmaDOGDB=aE;lb{a$-?Ru}e{6`Q(Xg;zEL8u75#6eqL%`iDzDB2}oFgA1oY@lUSKr z1QnE+*rOxD!JL|t%aWX5l*;0hSzH1pCjVm6=H^PvOwCF0%u7kF02#o=4d(l#=A}0O zqLhgX#TgkkPhbpURObm!%}GrzNlo!c%u9jlWMD)!qlAHBvI3(vC)6AWj{{;9l*7PM zQd*S9z%bE4jGrY0%!C-m$h^6hxu1FScJ}RzoC4{Ixv8FcY59}iva4+_=3L4M0Ak%R A5&!@I diff --git a/elm-stuff/0.19.1/Model.elmi b/elm-stuff/0.19.1/Model.elmi index cefba6bd4b918a11a76d4ffcecfa7875e6af10f7..5b2ee44ad8e717787c107179aa0531b99a6020b2 100644 GIT binary patch literal 5011 zcmeHLZBN@U5H@X`hSCBZuiJhDNPGJOz$z*ML+i9j`{pKY>dmnu*BNxbez6_5(AfJj zm_TYixUKK;-DBVR?$Qtya>7L`7yJi~CAj~r1z!rm?#}_x2(KxcVX-`Ke@CD4oHNX< zwlynQ`fOMMgr}VHg}z1w3?QQU1c7F&iD?$ZT;T8oO-Ve3eaevxMzp}7QIj?YOu|%P z%)pvc*c3Pcz$pT-PcSW|)f3H42Nz^2^{|+OmuNP^W^}3x&JkNETVE(UBe4wB;9TaM zgqJ+Q)Di>sl)CFN63O&Tpc}B^T-eh9>y-f`611JbEe$l@)v$FZ435na!SH_c7=jOb zfNgDSz!H4x@$`m9Tws>UiO1g^UPYw#M&RcCkgjUy`i5w8&Br$f1!6y^Ac|m?a+>tY z+j7LpE12bSc0|jt?W)*4zN)4o`^D+q&J@!!72rg(hi>){>*PSHG!wR*@uYK5Pa$js z4=KhuXw}$PS>YGKH=yI@9ehW^eW6}UX+oTfWTv0VTL)1 zl^$Q#ib~8kk~o9aSZbAs@0@3j6lDNmtn%d>uRWK|T&TVShtGxTd+_qP zQ2hX2J$Da!C^Sxis3NU$)MblY>)w=KBOnH-Ye80>nGn-+PFNjj0>g$K89aaTn) z!eXv>&x7Bxc$<}WJix96njQ5#Fs)B_KNZo)1JoN*^!g|xbOs=7XGto^cueFZRK=$t zosSe}We<3)aDf_Z(gm$Ldb8}mEnrH62xhY(m}o8=V0g^NO~wFzEBOHAE?{ z@S#WVp*l9x44o8GayIwKre}q=aCb#zq2s|HEL*Ui?0OdLEiW)0t+#!qPV6q=clKNF z{R~>OAKoec75jPu%F96!w-l=}LEFSKt{oiOUmoP;C+$6Gb5L&yC&I;MkGl0Ojeioj5D4jWmg& z4b?xQDE`hl-#NC==On07Qz6qriZ3Knz&}!WCYX@z_;={hD-ffcO-sXBaA7Zc#db?Wen!Ms5sU=BVMY; z4Q5!N%=ig)tB&^biDEVNbcxzasu7=s$URM_1|*s3lh47CKgs*lMr*1s!0|(&`Vu^O zC{$m8r}v-g-UQ|3Ov_GRNK9nC^LGR1XUBmDf~z6@Nx(q>x#f`OgifXk>;-U#4tG`M zBO+VBhXMSy!@Hxt9{_GTV4cz90L=QcSBZw`MgV9NGV}&0r)&lw?B;kP>3B@lG%?~( z(cT+Ia;=D`1{a%$>trBZMsMls50M}-FC%r6J2nNrwvybhloGsUvi+wB^A=5n%>e#rF@jt3t$@M7qCvg( zy#Rdw25w5;uz3_f+xpBabc62(@BlnuJztRQl`03X3wQE!vr^@|_+_lCx>98=_D%0v Rsq&JBuT=RzSLNnP_6s>kgr5Ka diff --git a/elm-stuff/0.19.1/Model.elmo b/elm-stuff/0.19.1/Model.elmo index e3ffd3dd230254b08da0f54959d7d4fd66675010..0bc6a5b549b482ba885b27cf83eeae09e3fe2db3 100644 GIT binary patch delta 649 zcmbO&Hc5QKjLBS#d~&?3X_=`xDcoSvCp9m;r zmzq}+oRgYbz*>};mtD-CoLH1n9FUV(nOfwTmsuhR=ED?%L^#1BE=7suEM=Lg<>Cww zz>5%PMKCe7vx0@Pi;;~)x0Dq_0PK2Jh_{fu!ivO3_AM(iXL2oLswx)$VhT-u#HgXq z0dpBM)Mt!riKQhO`9+Twp8S?kc5*XQ*=8!+G`#BvLJ$Z^#bAY}}P4P&~OMywVfRYJ}gBf5j8E{H~aR6hZ B#s&ZY delta 494 zcmbOvK3iHO>*K&3#_Cmzu)3zQ$B0D3G3*o9daDmhYCIR}!3AmAcu7S)Xxo6U(~I z_NHXG<(C$;dBaFDS~-N=+_d_AO3_ss@?}Q_T)jJ#k6<#3jONJRzk;dFVEAz!bq~ E0B0j24*&oF delta 34 ecmeyyyqSrU0SeeACo&38l$kx*ld*&YCI|pNzN}yW%0=@E&&sh8=17ZxzaLIb5cC>Qc^2G25@nM`97(6>60I_ ziB3*nWZBHY7{oYnIzLV`I9N(bi}Dy4*eB|XinD|O*@7SenA?JLQd0{iC$dRxc4Y2j ao_vmljnQ;+1M8B_=h?P1Zr;Fglo0?qxk|eL delta 203 zcmZ1|_Els;G&=`ta$-?R@#Kdr;uFv6@-s0&05fY^W>IkoNSKYSI5jyxZ}LMn30BsU zjLae+OLB7^V-TY{PjG5ZYH~?xibrBz3REWpBbpfu43qg7wK*ZC09Ao_9AJZ>95x1) zlG38Q$&Bn0A}k?57ThFema@#$a*)L44(1}}%}d$0Gja-~C+4Pl=B4FNzRj+-Ig#@K FBLL?>~A_0p7}X=IwV}sEF{U>FcZgw2U+o! z=XHCxKhwQn0ge1Kk_0wpW4lA6*dH=Z{gZGg^vhhxw)q1)mfxl)y)|ptB*Y1Tbhi;q~Uw@S#g@pt+o35ZYR~} z@Jk)8%SrN&Y*)6r@t8%yfow8fC9+<{sknI+$yC1TXt>CK>Nid8EN`KocCOjS zOA-WOGH%?jin(IBZ1`m5o;h>o*eYg_lHt7lY{{4pVc@K+W-psE;xESH#>4c6EMolU zrZ3q&R&SSgplvApE{W0!Y22%S9p%*VuIgR7V@|2ML}k}e>v}rec}mphJX6$P)~Bey zu1`^4uTN3mtV27Te^ob2VWr-MspImp2xt;fH}P;b;_!Nl$e?dD#Cg zqOlYv+qU8uLr;pHfC7(}!VEz?-R)sI{eRb&vwa&k#^zwo_y92H6 zdQy@EEbd+DKij`s!RwZO)z)f6;@tOvQZx1%s#~>fGzHP@JdY5~0-{;71Jn0FG($8m zq3sv(FWh|R+^ z2x8MjKoCO^Kd{FL5X2C~g}m7SMIL6Rt6F!8T*2SIWanbUczk#q2Oar4{Y1EPk&V@F zFHZv^fIlg)@>_DEhf zKiQs?tCf|ZCFvM=E_g0@uI-<}b5%C>Vw7hZTku@)T$w5X`FQUaJwwt$($?4rByF3d ztrYFTnH0R|Q#{wCF9yv8&Aro#GoZP(77JN*A0EuZQWW=MN z^lg*Apt+8;!B|~Qk7JfxL=lp<))GO|Lek#p`LxlAaOd8yPBdo~?p(NY3u1@7xTOW+ zJ9g(PhzoZvmKK(c0>m$t7FKJ-8>a%67XFH>AVd5@{9c&rI!6)2=WLtukz48d}N{xi0%4qBM0Z;B8tPP+m}8P+qKl z<~jS54yQ7Kr}Hfj#swG`YL5$HTxc^cREl|S!3WtSw&;MRp(7j9j~H`Dr> z2$-mbiE7oruNc^1q8cWu$#p}W;`Pos(ja;vdLeovIutZGBS~=9CVG)k0T~sLQ2`kh z938RIX~?Jmp$ef2p-N(^e2iBtPXZ@&HqFKExCs0Z24d3Ks_d&UBnd0sV4$;YLUn06 zD~-6Iv!Jt}v!Ju^-oksEhktF&MszTFL&{?79teqz#*7Dd}PvNr5Wi9ZS9CUUSbhdB2vsW|= zKgs7S#ZR|Kaxs}^RAvEF8&mcUyW2zgOd>mxOQ1O#2sOj#KnK`seV&A(A#h&@nw-0H z!n&i7M$&WNP)z+uqbz2nZlQQ@`9ak^SDvNqj-5Z}pGYf$esQ|OoEwo7tTv*?Y%$Ch z!)!6k7IV95=K*h^S)kckM*_v$rg&#>F=K#f+76>FjJ7b^!f5Lle!^&b8ZjbPLh_L8 zb`^XS$!;}jRLFG^)TrX#z`3)@z<5(Kg%Wf}=4xIb>I9J_b zfVP0PfVP0PjU5fLBdiWDVv&X!MyUFvJLkp%v<0;F6@V_e+vZLjjCnX3g<{f^CcIa9 zxF>5ErUG+7!7OEcBn9RVNBXHP-&MZ09JuC7=me&_RnqHHd_)`jx*Lh{d`G!!)c%l zmQDw$QK`Q;pJO{dIp4)~l8PbYjS*+xX-_!juTf7&J`ptg*Kr#4dAZtYGEg7KTPW~O znNLG=%+KC$H}7Vi@qELZ`(>BNo$G91~T8y`iot%#?aOX_k8w^n^ZGuWbEsa}<&> zENW8kwc%$ieke+KlbQ1**1Txk01 z%`W?OPJBOz2bQtwbwWmjlDS}M>{Hv2oyuH}NN-s^ObCVH^!nufqIXH zjK3*rq<5%_O&c9&GF4rVgrgxTtkvy?seIyCJK7s?N@WjN3v1kZOVl&PF{-{@A64J2 zkE-w2LDlC26467s>>M!eQ@(uU@8rTA7K_W^w{19@nYNuv9@Ahjw5>lz?qx1_mPTF5 zOY41-%a={{tz2+qAH*xgxfe zoU0C#N#3|Fy)EY-4;W-SQG`wDz+rbcwv*J=B>?4o zh=-vPD+VZ?DWY^$xPv}eXD@h1@Q%v5hDev}#R)J`#)c-|Ah3>L9bue?ae57m)2pzKEyFrq z&_rji%E%QY>QN~i&EE!MW)L$27f0Bx;o?}GG@T$DK{kSHyq7GE*Tbj{$x!q=93A24 z2uDYx^v-q!fMr_lOmMgCb-)!~RWk5neLO{ZMfrP90Gj8YP zqL|zN8PpY}?GL6oAr-&t}P}WY+ji4JrH&%vjoVYG7eE9PeJBQog(X`tAb& zvDl?VUD9^k`(R1fT>y*M0@!tuxW9{0v1_h3)p%QN{;6io=$GxhXwP-ELD{`1UKmzBu48J7d`a!XMj|kZ4@Xd183~$tZjW}}45T9c9d@|dVv!b~ywm1(r zkPfS&ykYZ!VV_`Jv=O-=j{zHqw%&cFIYJOA<6>yI9;_q$o~%%Za=MmxiE_wtyRW>R z4OCBzW=1!vD%HvoNxzr6GF$JxVOngFwQ~01mNf#kHbJ0Pku3;CKoBOw-u&h9nH^pc z^`O(MrCQB@D(C7hA+s5L`tm2TV32JRr*(FxvcV1Bh(%~xo|BeCcFmu9)D$Hjd9qX`V8JFDPat+&nn zy=h!Wdpls8U?7BTi(m@z;QuMc!05ZEE!K3}L(RYkL@ z{#dm+bTX^Z|2(fOxT$w#*6}a0H&$&bRUV6M3y@o&d0y8rl|3xD78#~yGZZg zXOaxejEn3JgF}*9$bRh~8qL=WZ3j~wO&U8w|)mXVhJe6t?Cw;vM|IGdtuP=J!s`0b{- zUX}}zsQWS@t6&WExTP#`4&Gix@m4#wlA7#dJN=8Vw$%>=RbB_DNyLxvU;1zJ<@ zwJvgLtuM3<*uM;;clr$6Nylj&=YO`T3_~mqHdx*U+ObQ1KCvZCX-KWh$@k z0*Q%?c}p%Xb?>xs)M z2XoWpWNjjXc4wW+Ju)$Awpp)t<+8ayH9_fxx@)T9)P|ZLAi3vJXdHi@h8yJ|C2b)DBMrKoa6rvq__A}C&wDmMS6_@of~UF5Fk*ojw=uI0MqgG zHrIH>b_^$z532dWBo{ygLx<(XRar>h@zX{Au_G_gQ9S^tA{;zKwwB!+YpxdxhPOnIL-6X_xM!6N`G29;85&k(f!;l8aND zn7ZB%;M{LJV8_Ny?W!(2jv;mgPK8}T=!$4QKC#P_;_UwDD;o1ji>uOk?jv&+GA+9yr%t98F& zeE^p0vAm0<|Jz%)s5+0TR9@q#~Ea+x9fULbVC}pp1AJ>rw@? z)BlfNR*QJ84(?KeMoqVfZWUe2@SctvWhI4q>!=CHcjZQ2N-w$tHIn zo?QL7XKg08|F*cpFr+Q+82gg!q>K!cE{cZT9UdAzs?!gCLLFt>PJ>%U|88Pv`mQ(~ zt2(&i_GeDu#thHyG}fBvEEvgizlogq!r)CU9wMT%f*GuUp-~8YUL>F;Oa~GMek9Qd zKcrRGY~5v}fpv(@pN@|Tg85b<{#@g?1PM))hPXc-WiCDj>-7XeF=;Q3%7bE=7=;5{ zRtI!SK$mT=b4^55l?ItLvB~!iw#H*oEV5uQ>PTAs>{BGyL>I-=+moYIne$stPuyz( z_7J9xQ9yCBoa;+#eRCq$9&_=J%&^2nMz8@J<4KDrH9zr>$2`w)^Up;y!)9KJFN(Ov zjuvd+yK1^)wq|l{h(w8<*nH%TZr3^acQ`#p)>y2R&Ay;y0~hkU)DC0Yx^Taz#vsG@ zLZY$~E^6YeWP%LaH-E9xMO1Q6IqE$wA&g9;1dA92jR{Zi;r+v{^cNq`F>x4Doufjl z5KT;_@hM*5G#xVRH&EbwYI|01ck9opvTbV?37D+G1P}NY+BK$@y{cw@J4=qluBRA7 zU{3n-?Blg6$t_43QcF6?wI0S$MD~PSd%=h;5hm1!?3qhHUyEm1u>%AyR;S5XX_XLN z6S+ROm)}|FmUn>p_qd|Yxm++$m6~}{Omamw&OnjXo96U(J6j9k=nO*0=Bm(q9dFZQIuuR9Q@!NPGvXAu>8mhstq1- zkuwbwbrIY9A6SF|sfKSFD7mJ&JpTJYuQ~&irX&37p5}!nKtm3%>!J9-&N9rO7J2&6 zKgsa!TPVYT8;$ffz19Kv%TnE9q_RJz$>j6q?(fTabNwv05c;iOcaf45xeUbZ}eNU#m5C;1{P2Cw%_Ty75(}Y53g9l6<_#aTg=$Pe430kx_@jo>pdrT zw!*eegwXJ6zWf5gL%-!U4<5p8_>)M7c~ph4b$^XUOv?`8Pp=tb8S+zWM$er!VGKth zq=hY0%{ zpyYzAh6Xw%^Ngk9Af?oRAjw7$<*f+7BolwP4Ss|;lZRh9^9cYA`K>lileG&X6U7UH zI|?ChI4n_cI9lD{U`Jtu!`@Xn0LQF<0-$qul?=Z!FFV93_WlQc48!;DFyeB4MD%YK CzwCbi literal 5719 zcmdT|-EZ4A5T`yUdqI{~+LB`LdmfhVKWK}g9oDUAPz>11pjvdSMV1Unj@$k9C3$x= zNl9*!xxnTZibwK3e|J2ZG5F1reA};@cD8Aozr~_Y-ffD!7s*x+>}%W>M(ggHubVM(gOrqD_b@EnpUKi(xc88cU-ml75 zE;?i&rYz~iqESbkRiviuWTTT*aUWCy{;n^pZk88XI7Tvr_>wBtd8x>s) z0U)N7MyeL5pDa?}U7&41VWGvCTi=cq7p_rwGysW7B&v11Xj;Kv=O5pT*>8>XQ+>Us zpUMK&FPnD#!}E0!*RnP+(nwaTV`_x%-iv;KO0rxXQzgL1gEW$gV6gVbM|_FlpdnWA zNNz-1iwckxd_NT;_nLNbXwD2pj;GvI?J#*4V&3W7QKnpj_XH$`k(WHnyK>P*`Q|Nw zl*2W6w)aE)YuWXD*;GYEoBaFTHHQ+(k?IFJa8|i9+sht0gnZ9OeD68S)oRRWL$ho& zw4rQ|KUVzl(mWLkEAcHKf7w7-G6!L>*6gD6{|bR~;~CH6a8egltkTjjUWt8@nen*F0S*npx#O48nD3CM`~4f zvJUx7kzduz#-VCf&{M%p>8yUM&OkFd5Tj4R+OuunH#MBJ>>#wQw}v8+kj* zONDyL@XiOXHu=Ij$Wu0x?EY+;^<#3_kXKky^Ex6ZUKZsoo(ySsr#?v^?6h(c(nEN6XIp Y2#NL|3P?I}VKw?^!rVcW)2oD^0LNeBlmGw# diff --git a/elm-stuff/0.19.1/Utils.elmi b/elm-stuff/0.19.1/Utils.elmi index 3c33fd528ca33019ec530a4afa054ed1fae84515..3d8fda3abef39f0b844882c17bc514b2a77e1023 100644 GIT binary patch delta 68 zcmdnO_JDJO7$e(8@k5Lp+{yWQC5f4NlQ|gkC)y@Yd@IPq;*_7C!GcjJ*<;_j3OiK04D+$R55)3fF!JL|t%aWX5l*;N0 VQUD<*2eODxwr3XIe21BZ5dg>Z7YP6W diff --git a/elm-stuff/0.19.1/Utils.elmo b/elm-stuff/0.19.1/Utils.elmo index e220e79210b66b2cab3e37d72ab28a7a499f7089..bade8a241bf0c22044994a8d4a8a2aa7028d402e 100644 GIT binary patch literal 1968 zcmd^A+m6&Q3{8`!1FYZyeuQ240>lGC0}lwEQQBr_%BB~k$x8e^X=A7EMX>Kw>U4DC z*yq@e!&rQZLV0)X?P;+6FI_qL!!>3+sk;88x|+QNGoD-3J>=Jby()w@ZC>?O=O3HO z6@I9d(_kp%Y>E4_n^yfU^;h4P+P)D#AKy|SgH0J{$*24>ZOA|S(ZMQyc=+?W=w?@l zF+u$iYQ+aNHq|K9a0Xkx@Fp>iw$wFlkq}M*5D1eE#0{aG$QE$RFIYUjO(8g9 zBIzMi5=KKOaB+Sp`=;tUreVtBC$s)JJ8!9qAt~b86O9$tw*QfyiGF|&xf2umI!!tSQilLtIFVCzaPN0HnOyQ+jcX@><)35(}s Hb*-{L8%5e2 delta 131 zcmdnMznP1Z0SZ_)a-L$+=gm#5OiK04D+$R55)8ahNk$HsxG-~knE{+PIgQQOoH-My W5(b#za;y+>W|#~*z4;~UaYg`Nni<#t diff --git a/elm-stuff/0.19.1/View.elmi b/elm-stuff/0.19.1/View.elmi index ae9db7161533a820d5593ac0248a6e0149bb0b77..dedcc68ddc19cd7abc1325699348fcb19c8e5dd7 100644 GIT binary patch literal 29186 zcmeHQYjc}M6vY)tvSK@Sn?7dx8|<0B{($4U_Dt+%s!Tf5Zy45y7FZ3eQaiss`vf8u zh$Fd`l9L%DqP;AaecU~qz4vP9FW8Lcqj^sMCINHQzscx^-u*>ss{ije-tc`v?}~;b zQAZ=R^MyX!-wpgcEY5QOU&k2@NRqk%&B^f8FXEsWTxRS@3j98w(~M;7GK=}0t%6Ub z;LF6nCwYgMcN>!=Y*q7Il`8di#-&E?i@0F&P<`iJ`S&+O9jz)&{X|N< zAX&s_Eh2kVKl_EBwd(DvLap|0rS@4IFjpL`3R=IM%w-$?SGV(WKl`U}oUxZiGzpLR z7&y*&XQy*^f1L1E-xp1Pa;?7_n-i<QPcUrNM4XQn%UM~CHIYyyI!O>B=4>FsgduqO8Z8z`-x+p-`>V-HWZ7`BHsHoAt^^2Cqm8@hteL6n$ic{RFFLLlM{(_ zq`Xu|tU-MSRjPBD-O?VlW&4^nL{!`(|D9+y1%^%+jM1#ON8}yqSM=QB+vPj-_2k#f z7j*aNvr7B}o>yu=tu6jN+Vc)=EC+f4v#k<(UDm_EzB~isHd<7yqJX#z5Ldp=srdzn z3y8Y{8VAI+TG{&@Bpc-d-YftSl&R%K>D34;=@cHY&P`1~m0rA=J9<2o+!>;ty`o9wdOiEQp3 zjPzcE`TQ_^-mGV77s6E62GkGhK>ZcDD|a{m)+^r=_-|AeK@4B}N(%oC;j09&4zRwm zs|mom-NdZszyop{tPEG!&7Ih%_t^X^2Qe6_UJhFba`|k3s(;(r~@4ib%thAkwhh@#wvJe@Y3L= zD<@86$G6?{V{>@v5>MCjrT|Yjv-rW2x|)RWq*l2ckqIwACcMW=+6O!hJdI3vohkc} z39m6lKF_en&B4=O8h%>gX_drR<7p(_D|2E4O#@9Muk=y^1F+Lzr+MaZczZNZjm$jo zu_2W3_JFrXE&K-F9$V<`QO}DFb{gz7k-rG@z@LRd6k^Q`B8m0p1);%vdcDX`y-)#9 zueVi!r-7$y3kmS__TXvbNmL~SEWxxoad%~0fcO=rrIHbyaS}w&o2M~ literal 27415 zcmeHQ?QYvP6qRSmc3me;yRI#;XGnl;eS);hQlQC#C1`>EQ!K{TMu`SRcTJyu{8VI% zvXUlkmEi=4te98i<(KZ^;l0ctUWz&6!v$x5lc@;I&vpO=F%EK``tSnuSxw$zVS&(rM9ulZ)sgB{XTw^1!5;tja9=@+n?O{k&NY z3NmH6%+s41iFwMK5`zg_ELcu*aTu!{{1pvNqE+faS*`GOIu-ijE!q3!ctPV!!oO8< z5s&kKWM7P;Y{qEvSoX+nE-RcZ#N{qc3$gW9UiOadS0i`h)qPSBDu)S4HfcXOT@h;P z$x+#g(NTPPPR!L?Y}vmzc*gbm4IT+XvE+H<7&z03wmSXrV@m#QlzpcY*Q);WSWc^x zI7!lc<{7Ke0cEjJGJmmUo)F)Vy^=Xy#M4drjATCV(?rZ0OS+omwMI9^45o}S{!3FO zqgN`~)G-LksTxKxUCiUgV#9N~B%W0LZkTaGWDnF7Qi*-;Z4#9f7*&70KdSzAe^h;W zA5{Hu7H8y@G&}o@CxmYv`8!VdfaT&e{p=f#W(sUO$wQLP=05vl3XnRZPo_LdAu+|pSiYv*M3hJKtvtrX*rtR?tEpdc{;6GOy@!?~cc0fow)K40*mIX%6U5!ALfkX*sbuB>bM^MU z>4qM5=&?hO9eRo#`dc^?0OtB_A*fd8&1NtRU@l;8-klx#Q^BQM*uZ>voI6T{X#wmv z0T)v8HM_j%>hRC4n`yQ9yL5x~G6#*F42Gp3dl1y{JGZkk? z_28Kb&(zx-a|IstZs9cc__4>2J^rt9c2svT>J!JK8jM;6WnfXkqJl*QiwYL?>X7Cy zjq)+nBoHbPDvk&cINj6}^WU-4O}m3o%bot}FU!7K2U4E)d2rBk!>YWV_3Qqj6?BGqi;zuxgWb`rf?% z|NVZy|Hpf`?x5d4Mw?OJL=JP=F;>i4E&69`FXHjc6$%26`QjwYt8cficDT|UyM{$$ zVzZ;}Se)Z>)t^orA+J%;mc?LO#F3 z=Zb4i4O2H>EsCr&rQ+)uSO3#FX;vsM<@iP27?GuYfcFIDU!1>D;5`>;^je$?f|$kP zn7|35N}|6+7alY`@f2+;X&}&_Hs$Ffb9@%Bnr{eGCymB5Q`?{|2#{o6$YQSMB{eKl zs*SR>9}Q@~@vWU;bCv2@-6vt}1}sxg3|K6x1sykbgtwWY|3VFzVtO0nD)*R4!D?tv zZ0!X8R~=xL2_QvjnLfa*M+R6Ois@!isq({ONShTig_(l!z@Oh}brhlZph( zafVOoc-2GYr0Er@XdtMS%Gv@r!e?AWo-LR@AsUG~_3~1CfueqOBZ1jao5RSiZ7Kk7 zg%%!@>~=U-TfRM92%iZcvQ&*_D3sW2CEMYha0_aK-S9;SM(WR&az&3NUpz9CqLB{T z6cBa@znqTH*4Iy@;PDpkH!Cx8)F>ym7g0>_Cq^Bosy?LqAJq)+En& zwIXDfmoFg%>reK>NKYH&8+x~=UQoD4x0B8ATK72Y)^%+sb4uggO-5nU(+iQFb$EW9 zfzMj@V6W*E{5|A^Jx3VswXz`eJAk1>@THHG`}(Gd>fmAL`qtu(;}86%{ij{I+SxrE<7DabpuBNQtlA{4p8z4K#Fr+jL<=u z;n(ocrHb}{B(q1qR4F`kgy7EbvO+xocOy4pq;7^<7YDXxx*i(lDXF zwUvg-ZA$ytDq0aLzoflCdma(+{p?*t!UuDId2M!q*Q&%Y1v%Z>dl*lvc2CilQMMa7 J{E9wE`~$RnTulG~ delta 1626 zcmb7^O>7%Q6vx?5*I9ohv6DLfN@!9y4b%yCjT|79HnCI&r$$b=HP9 z97r!91gMSsM?$JNv>>Pil?tqi!~v-w0T&QwBsid6sE{giLL8v%#A|mOB}LuCtme(U zdGmYk|K{(@)VcSm^>EK2Q7fe@l3b$iF~7#SkegVu)vBsUO8tnaG>%1`#FUf8RY@a; z_2|Z)yd+D-x>PbupMCd--NqJ;U95($yL^}sg6IkbF)KKDRuh%u4332Y_^H={XN5=c ziI7BJ$g_DlBlz{4;}`zU?k;@PH%cY&rgw6yLs~J&CNCAonSP&ssXxIW6DQN5kqN}6 z=THs&OtVE~gS&2L!&>kyWP}044<=!|zdOWaY71R0Qj!ESO%%5Q)ws~NITL7vM_7`H zv%C+=R0z%R<5tYEgHz;Od>Pp(&>UA$O43Q=F#HyIii%)-@G<049ImBzq_#q?c ze+}AcH1l@2XKXYrV`y(s|9saq9v?omPcJ_~Qw9u&-^YHnJIvd0Sh4lNops{OoE!d> zZ_rNezENqPkK>lrk|c9wQg~z3YIO!T@0&%<=CwKvZR^C>q@t>nw)7g`){CnzRjjWqY<(v!jfJw z0ecxqUgnQWnj*>UY^7GGhVkc)0W2L}!TOUPoX#ik-T^D$Ga55HYdv2?ptd4Hg|nXrR?^T(=AQi5j!cg zKgAX56}jeI7FS=CW|aE8Y7FgSc2wo4-Fg%(;!4xhm_?L#3Uxl>pS=4}7D;Z7wYDvm zd3(mi^WsbOMOCv^HFe2&)9yb0*5Y=P+G8@|>d4HJUZVAT|35IE9uDA<`A?}4+?Zda z7#uBxhH1X2%Bq$y3HVksw|QDkjZ1}xDH_)c9}lpe1##IZT3Jo2NzHQ qH*HguoF>(3rj2tD9eZ=m8)RCnZ5#V?MLJxk%EMk&yucI2jCLRNu~>yC8-ECd6D^lnj-HQfz`y1_z60US`SUdUn%^MM4}8 zRxoJIXhXF#hZP4S&Va$@WRRYEGb;951{68PQJ_X7_O4_!Q@k{0fGyX#6|O6 zMHa?D6fuZRp2rxH!s3#dT*Bg$SzN*eBJ^Aphz!JK z%)Z6x>;Xmj$*IM~Y(a^6Dfzi9A&JG=tf3{DImJ-(SwBNvBQSY2n;!>5X_O zq_iL>l{K^^Gp87;j@=V#s`um%tbT$AQt}K7PJRUj5Crgoi~+lD1sg9H+gyk!+uX_f u*?a}!7rblhWQ1EO3RUZ`iDV;+U20If{Gq0+Zhpru#XQ-B+ja7C?%x0*{$s-c diff --git a/elm-stuff/0.19.1/i.dat b/elm-stuff/0.19.1/i.dat index ee13d0e00ace1d935fd68bb6fc01f90aa7ed92d9..393ef55456ce6020e091ffd1cd86862d18f3f11a 100644 GIT binary patch delta 3899 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 T_4E@-W{;L3`hoHqoVfNsz%q!< delta 47 zcmaE`gnR1|E)E6=ux#XL(!L-0;x?>KL+V<0lO#0%}|3717-LBihWb6k3J(La# diff --git a/elm-stuff/0.19.1/o.dat b/elm-stuff/0.19.1/o.dat index 7c597c09bf07a159afd74bba39960890de482d0c..081f80fa3b95a24519b52cf0c4ea6c1439933d59 100644 GIT binary patch delta 37599 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 MATJPBBBYh?-_gdnY5)KL literal 6361 zcmeHLZEu?}5O&5(Xq0rT_Vz29ACYKTE3I9%R;#pc4mjY|*vOc6*{`2pFiRR}&?Zfd z=1364J@%c?cMo?CVI?xghXrTfQ7nM@MMp6sjDO^CUB3ZAxQz@hSb|6}S2&9qyr`f2 z0Foku01Q1uazADqg)>;h=Ak&-#}wN@2f*_?!b8WmT~!m=VX(r8$QbMxwJ=gM zZs0|%C>TXl>T4emeQp4DOjr=OMlz||M}$|k*x~~Y>0Jpx6yzx*$%)LkQ!16_g;<{w zT#Csjd7EC=uOj=flbb60d{J?keC?|J8!fbo{dIB&Tqf33;e2&7p$5QUxQjlP zp^Z3&WUA9z8a^N-o+4eCqyP<74rz^I{%kR`|Hkr>L-M7o{H}N-E5Y$J3$^BU+ z1fzTKZ zT_qWps%3fVOu&(iBb$-pnlGr-Res$hv@?x4(`xz%+qAl#zj2A@dj8FGOxN>op6&kC S>8)dG$JBq+^IL9u^#2P*YD3Nd diff --git a/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision12/elm-stuff/0.19.1/Init.elmo b/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision12/elm-stuff/0.19.1/Init.elmo index 0cd19e2cdac6d14b2c093f828e8ebd22a500594b..08c429e58d2fa4eff8f8a1fcf813bd64db7097a0 100644 GIT binary patch literal 6155 zcmd^DUvC^W5Z}H1bC)zpN!w5=UU|*sPaBYs5KCtJml6h;~D!mDL7RjK(xPsd5_T z?4P$TMf~8Wo81?&OK^n?p5YV~8*zY&G8|)q)-H;KPB1Blugf$VC3HLmO>6Qa+;FN} zsrvFagK`ggET$mnvO_v`#K?M!!~w@$OkFhG8BGW*SJCz zT~ehK^9CI2_!^N472#>#Q2#TH5`9PWqG?Hs9O6RFy)>7k3l*1K=O-6e^R|m^IMF5G zUT+t+QE3Hce3&%(xCxT_QX<*Y!q&-+$_y9jCWCvsVxB5%dbeFLz}GqI!*fZBo20A@ z6|-AWYdRuHb=|ZkV)mWlGQJc)A=d#;2l16LkFgULaIPtX3{{9ER9Uf4MsU_-n<`YT z$ciig-NNb!YgmZDG8V5^GS3qGdJtyTx+sxA62acP$cyyr6R zSK4^zTMHy9=#Bu8R-y?{;!rq(uFOPd$=wL`&oQ0mRrXN&8kVW|4LgwCcPrCirPzLSv7NY%H_Q6#L#M!0z4O^$Az z3tm?X{+@|QZwOT8tBfcq7WiflVHj5ds6lHj)`gi%#9XCI!UEoNruS31KbHKLOH~8N z^KzmO!Rc%IMIGibkwJ#;ftdP;At4?Y6UF|OzpyQTmf z{swT~pgfyWpa&lV{d`uA5P^ANv^)HK|KKrj!L7{7{=qs>g=J9H6T;$3W7!b4x#r`f z%!|8?c(qJ3l20Z%oyNR%o#kua6sTkujUg8spm&tr9TGS_D&l%!#dhA4QQN;@H8QW7 zU`7g{?Mx}Hn=f~ECQMH=%rMRhl+<}M9OH6l+%#WL#2UVmbH$o@+0)}xpm}&c2VmO`1klYE0;qNe0d%W@0J2@Yfj(Ei zfg$vCHN}8KwJ41T=HZQ6yULrXc!%}A@6!O^!hW+wCpIHB zY-c!}KBXia>2RQ})Oj=&=VjrYRy#Mk;vNoggJN%C3Dh6tsAz%y2@|51V0#wtjrUHZE? kSmuRFmYOLFo9312TCtuvwq5YtL`sf}u*U=*KASiG0HF5qGynhq diff --git a/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision12/elm-stuff/0.19.1/Model.elmi b/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision12/elm-stuff/0.19.1/Model.elmi index 6726944588563edc5638af67d0ae62819798bb33..a559e754cf39e10d15d0d4aaddbf55eb1890b901 100644 GIT binary patch delta 401 zcmX@5`bl|$oE#%dNNG_X0~%mr3&=^VOf8xyC@KP!;_xph$j?j7D}gFw1d8)8FfcJf z`K*%-`Fbo_-7-^iQs5?WFsJ6^vLxphrLy>B7MFktgcz%DVr5b)gq-+Mbh19P&*TC| zab8Z&BsB%BiFxuv7I6y-{Kvsk j0t#jp_Q@BSrPx`@GE>VLIDjq@-z>~>hHdjV?kj8nA*5`* delta 405 zcmeyQd`fkK+{6Hui2h*8HjO(00T=1 R$YK~^-W_C1pqj$QZE1i diff --git a/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision12/elm-stuff/0.19.1/Model.elmo b/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision12/elm-stuff/0.19.1/Model.elmo index 7245de3e7da0faa2fe8d4542966710e8be73d69b..0f03b408de3e395d889ecdab2c55ac084c08dadf 100644 GIT binary patch delta 400 zcmaDPI!Tn10SZ_ra`sQ=V&tpmWKGLV%}L=Z$VseBE%HdrOX0~cD9F!C%_{+Oic@n^ zlS@)lKpd8m(xN=pqQt!HV$S5mqLgCKyvz~^%cUr>oTV%?wOkx(0VhJ76~RPkg9_Gz zjDR?S6+)p{&x*oBawID<8|)%hh{Jf09n6ZtgE${df}P3=Bqy(C)Zk=>x|wnEKSmiw z=FPTDA*_rVlP9s4${?H$Q-korWL}P-&AA-k85K}m2~&vV!pWUnN<7GJnY^D%82~7@ Bd(Qv> delta 432 zcmbOv`bd@i;7Fwic^#G^HNw#GBS%Kr~QI()5 zWd-Y)SgBjj4pap+n5`fuu`;!YBfp>^KQA?}gr%gkD37%$F)zEAH94^;rI@8GGqoIM z13N^F6-t3k09gk#2yOx^oCP(T6-Gl$g&0100;7!*+*gb&8Hsste?WMwAhC&+a++)b zU?&o#cr!nfIV+>qWOw#bHi#o9-(U~ogM4HJFpF%q<9N)d3bqz1%mjBgOdZtS UlO4H~M4+JvlL80hPCe&z&0GEz&KZ$+X*`@z~&NE>EfZUX^*3O ziT1nxSY%h*Rc82O%T0+V#h+lhdu9XIJ@D8xx`w)|hs;JU3Q(V#+bbP|`mE8vEi*tr S8N1|k@og)kIG1EjfAR(nL245K delta 37 acmeBYnZ-E4n2~X!iLWFB1TaEr1O)(Ol>;CE diff --git a/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision12/elm-stuff/0.19.1/Msg.elmo b/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision12/elm-stuff/0.19.1/Msg.elmo index 5557ec29b2eab1feee01fee54beccf0a6cbdfbc6..f00d4d2b0b6f894c9562de8ceae24b727c2b8da6 100644 GIT binary patch literal 307 zcmZQzfB-hO#L|+C{37;(qWrAX`ROnpXnT#SGQOh(#AaTvtF&Vr6O(Ob?94riU#kwK%gX6{ZAgIs-OGaRp=e Yfd!9iID%74+%i*h;2vg#DTY}B0E|~dsQ>@~ delta 17 TcmdnYWW&fXagH$u0~7!NA8Z0! diff --git a/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision12/elm-stuff/0.19.1/Subscriptions.elmi b/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision12/elm-stuff/0.19.1/Subscriptions.elmi index a3f4f752fe9175bddce2b7033a94cd57dd38e628..6b6845a865e30c3c91c9a3eb0d39731351ee40e8 100644 GIT binary patch literal 2561 zcmdT_+m6#P5Y1A%H?_+mt`gs{mAHICcd51#T~-u<#G4aOQ-fnijsujh$99sobe;MI zA+=K6$Ud1lGjqn%C8b_V)ytLq28oWU-`Th*<04Tk*G!6{-i;#M{Tq%Kk^-;R26XnI zej5xDqG)lg$j>P1b%19mkqWv~Qm~}x%!RH1bHR*XF95F?aN6p3R-M+I`&$?2Ju9?Z zc6)e1HZfGI*VjnqxfCGu4H2y_QFT~*9PB(^vqU4icx`((hdC!3Q2)yvRz!R^rR?J@ zm7G2@^|%x!;4IghOKuW2wpp9p)?5AN#mjwE05@_0dW=2(r}aU)RKn=QD?#+h9HJi# zjMV%hMW5YaUAac1FNd-Gbw?;=BK2qx&$uMoVm``JP%yfvX?!Rc;i3k&(uSu&_6!Q{1r?y9NssL=>w_4w8;EwX9 z#C{i5R9~MC)it26#LoXV2Y$0irG-OK(Op#y6(4!;GeityWC0yY`wc+2|dI z%*>{V#UZ>lpuWK=Ci{)I`*~>-BPX+bFq@aj5*>K83@o-;=|r_4d7qc z1mC&gI4!l7BFMyf*#9En;rXG5P|cqnesH|@Pj+yd@&Fshez`YL19&sTx0mtAM6Fj+ WWs_wYcg%A*A3KX8wNIm$!~Z{Jr}K*d delta 266 zcmZn^nZPq4nvredJY6nkj{Jgx{Jhk>lF1jDB&0a}p*#jCU}R=1$VseBEdogkvIT(I z2+7H>7=2k;N=l3Jfbx=jAwUL_o)h$1-1R>qbp2o@p5}rJfO>MFxN3f7MhzE0ENM=b+>g3&Q qDw9uhXipB~)DsW|NkbfnknH5thUg1U%}GrzNlk%C$xq(G=?efEiBls0 diff --git a/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision12/elm-stuff/0.19.1/Utils.elmi b/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision12/elm-stuff/0.19.1/Utils.elmi index 1fd6532dc175359cb294e7f35794fb6ebb946b69..10ef49205866b8a878ecb6282fb21b2a16ec9942 100644 GIT binary patch delta 38 ncmZo;xyw31jFEYw_-kR#fy diff --git a/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision12/elm-stuff/0.19.1/Utils.elmo b/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision12/elm-stuff/0.19.1/Utils.elmo index 196e592b7307b825687bdb1cfd595fd2573c754a..95f5ae6ebe6c5d3cf6b23b69ecd982e8abec835d 100644 GIT binary patch delta 100 zcmX@f(aOom00qn&IWIGca3<%ZCKh=l=A|(3LM0d{e_>SSU}ebw3i7c{{=h6cIf+?> u*?=u?;sx=^6PT45nJ3?2wwZjK(RQNiwaGu2f+y!O>P_Cj$URw+MFRkPBN|o! delta 67 zcmZqWJjuby00m4NIWIF#zRaXCiAi|#2PPB7$&yUk%!X`v6EBEQj$=}0WS{(zS!A*U Ri|XXbOxlwV0NEKVvH&H|5s?4@ diff --git a/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision12/elm-stuff/0.19.1/View.elmi b/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision12/elm-stuff/0.19.1/View.elmi index f1a63de516f7df973f6eb4b82cad26feb030da63..1ccb6227abb879ae06f0ed5c8b2acc632eee2c1f 100644 GIT binary patch literal 26285 zcmeHQe^c8w7Bef82KGcjSjKjrK%Iue2T8TQZF*H4UP_U|BwdW(Y55sPVR zj!vlagS}c?8xbBCdz^d;f_|5#SvX>x_I62;jEe4IE{woop2!@%0?|c6)3`C;ee=}h z*BO*qgzu9==)?S8bVM%CsX2P{T4&QK%V{nSNZy!bXdc=e*XB9yB_k24gEwvO&EYg9 zmz3XEb`dA}-$f7%qHN64_^E7&d=Y&dC^DAliQ9raT=XCV-P^$O|iQ^<6dvq|`PZ<$P<^!AM zF_n6;R2_4f(dq%oCwhik~DH)1K{zchVh^j1B#{VyncVi=KhIw6hO zhUe*wdY-C28jU%ns@_XouXNxp_g0B|FEB;@_3;$-x5rb|H;2r^!D)bu>L~(@7rCWIXZB97gVilRKVe=ajdm`^3q&b@dG=xcZB9dU^zG zDX9J+RlI$YCF!MX+F=%td2(@)h)GWk)3ap#T}m@KH|;37P#wxn-d~p9l>LwLoTNK? ze%A83IBK+R8>Mth9Of6SwZ?S8m1N5Y>X!JUGP}0Ozfu)^q9@1QnGh^*Es4&d`bJ9* zFY7t9wfWEW7go3Z^SQXH@|M!*(w|l))E0T!^h=|$(fOs@Y9zMPqE#6G><9=)HF^Vt zb87$#?E&E|+%X*t5Kb=;t#Uj#v@>*+%bx(km+DDk!}LOQorqyQlPOhAnNd8kBhL z8kWpuc2FB~mU-g7WtH9eYWQM!%L^Hoz$C%f>SR_T|!1!VEvk z2Hj@40XYeB(t6h1nDH~X8TMrf8e6Pzni5ms682?fpM`x{yS16o`u}8KJ{4R#HTBHN zm?;Kh0jDZ_aoQqBVVSLL5td{7Z7XEna` z#!_-P(Vg!JFaG5CMS~Yj;5?f*g7Q?Wql37Lh^uJrA=vj)i>}7ju!~?9!7j>?@F7Guhxa197ae_sT`t(=A|tgsR?(fEdfc)1 zqRVC;Fv#9Zm KkqXP?+{M4Qr-2Rt literal 7889 zcmeHMZEw>s5KhUfMmIFE!LMk4LaYcurYdGWrcJxTim1Jg1LeDJ{%@&kLhnV0cASh;?Z}gBPY2g-Zl+ z+SzNWTQz#%C$uanfka4e7n6M20BoPA#9$3sSC8nkX}0)~0dl|cyd*3#iqlhwixCk* zi;}NL7_Ip6M^TKg&7;ItVqYMG1!XXrfE8M-{7b?EUNO=oI=EGhR&elu;P+1KooX~# zyL_jw=QLeUz~Vk*v?A#R#k6y#p=sS4BM1R5bKrT634~Kj0T1T5f-S9bdSS*O6!U9z zm5n}wVq;sIyhLct7nJh61)#-l^{O#~2ApJ|fER$JGl;TWXha9@*y5g+_e#Q)y7d`v zN(ujG7F(^9eB&u75MB!vJ1WwQq2&_sJd*ldq2YTB3vsZ<5*NrqtBL0g;wJh;Y%gR4 z;ITT~3O`f}C_3JtA8qCYxV`bUy;F1m2hMO%(= zW9JQxSY>@W*!XSwINzramGH7h#f2a4zCqu$IR0?_QM-QAVTIx{ci*s=lvJrQdw=je O_YHqf__1M%y~FE(w9MBwM~PMeNzLXV0GhJz%FJ{|)=`syNH?!6MK8m5hqs zU(@8x&eJrRj=zcXaj3xb2L*oc=fxtMC-dUFcy7(ov#D9b7t{D{l2_*hSc;l+@G6-y zB9n1-R#(jms9A%P?ED{DHtXyws4$vk<7C=frvFZc{cbXy^+s8q^dHB|bhL~n(=5w@ zus+_Mt)@V9|9+%!{lfT$g(86&Ff{(^Q;wA)zQ+-3$^*F?K~%hWjs=JP-P!mwPbZVK zIP0_BeZEQu-%gVmJEA^gdbTRCyFL8j$4DSNQV73z9FJa~=GkgKjz-xu%YCcwPV#K_ z^7Q24*I#2{n}dCU;wv8x4zilfv03ck&b8XX!^YI$fTB0)xH!A;^l))L>{D_C*#zH| z+}iBF!!+e@e0}1;LEvD-#3;%Cz8>VK3-4mEh{xk}e%fLyyKE~jfTgBvhPL?jv0TKX z_GG*QmWE^uwTfl=ILQY>$&ztPro7~;%CXdq#2yxWnlVc;iD&8bE%X$67T6LqJdI}w z2Y)J{0oA98{FocFKd~96$G{3oBI%j?m?>P-MpO1M<=K3aZ8SrZXS$hHFJzf<>2GbTOhA2e$x%Bj3C;6OtuIK5p2>w9HlTY{SCtg+RwGcnmA)KC|4vOWJ z4X*=G5?F@<8pEBqft1H{1Hjn0A(&CE4?4874hU)o%9>CoWQ#WiVM#Luphd~lEia%c za}*#U)D)Or*wh*~8>EAy5a})Q$WwR2 zBS{m&QGrv8nX_IMIddul9t%C2gNh(hOY5K+R2+8hiVgm_nw=!Mj}9HRhQt0okNZa1 zY_^)G#oN1rX`d(OMIPT39Qfi}{`XG0{4p!e7&+KpRBqX%S%${$oiY}yfAv}Yc(F+4 zV>KQEGCY4^!aBHuLyiOwD6a+mas-Bq7y9s3gx}rF{VPdzi*j$0PNx?}-#<&z)3bu` z!`P9)50~2YFXZD)m`riJz($DihFno(`_{Y5`SK#mi?noRP>IO5-#JSox4O+WO!Lsv za+`NNs1ZT?cS<0zyrarqDMPwZtbYK5%A>beWF~A%gzvm5`69@NSgZZB^uVK91+!HU z+NiYfexCU-5=8d=*gWL5ln$Q~Ksr3DmkexZ*(d?>p`c^&ig+PTwG)F+AYRgK-2fpo zy(|kVCQL29;RTJW^|;B;@SD}x!sfTEoE%dRzdG!EbfT*?H*Qals68DYc6Q@}1yU!g zB3Z(#?KDDKD1U;fiAoUZ61Bb#be;wRk1`(f~N}K zi2$qdE-INF4&=g~_8yq}Sk!SY#@Z@TqEOmUNGU~n)RsM4C`)|=2C3SVM>5`-cf3$B zJ1V^fPes4fNo$$(bSN>Z+=alXsLvkzq)vJt<+^9{#j5BtOIQ|pDIM5Orj$B zG05gG@?^R6`8RiFTP9U9qaLU{(hw&((4EB#tY586cYj!(?#i+O*HoE45?ScobS;SDyWV?}EE9g0#rLg9$hzS4b^+u281;I1 z4a>M5r1=f5r2rR-p{O90H3T#i42zEIT`CLLpTlOC?QT^SrUuFyncwy~U+t)X;xuJn z+@2a10)plyOhFJX*gC*<4wLyq_Zm(7lN$@^7c3&TVeTnD+joQ7h_`M9>gL%S$OH^{ zex5R5?@a-shW#cIv*oR zKT=C}Uq&rZkFn$;I0@W!c7OfP|7Z+tNK~x5)-=jf(A}8krZcqc#qPC`VctoH4m@IjPLgc&tidZlL63OU+VfPcq36wIw{7DN&fVUe}9 z*!mb!xTf3LC!=(>rM1#9T*^NB9I_O6!}vCv-p-%jub!4_xpC{KvUuHK*zS#z^Sps3vJZK1K|(<&qM%U=zTbz5z6c4bobEUvlSX(+Njp=?yJbqkAm zf1=-e=sn5fH-33j_n zJ+3wOm8M&lOLOgpF{Fx8NGe3V+%Vp0jq7_L!i_o*?8Y@Myf`$|y$?Fyuvl?fm$k$@ zll8=ck|M-ZK7}*Vj@yE`_yrH%;`DJD@M{0$S5=|>NXW>DMfwv<{m@7uezLc>KusMeITdwyn0dsI0V+Xg=(PUjs76+hbebfJWKv#WT5YO#4ejuwhbOO5a%T;(>?Uq!} zdtwh}`v@jf`f>2sai@%7=Y;|Q9G58=c2#!Ocu1GPF-oRPK<#k(7?v*&0ux>$#CPf* THK>Q^f#qOdJ$Xi+ALM=Bp>cOo z+4?CH;>SmE80`ZL(lZlCW@T6^i|EmDJjzZZbL@f?UN*IxCrc~W%XM?Lrp=j#S$7|` zI2NCT0y>d3M5z=JpoY|FkOO|EU^jhOwrD5pUVbWM<;`oqh*{(5Ul@N9a zk9BSc?W~AbQ&;evOZfL$O%PVGwF18J(q48yIN1$-CoqARB!~9#w=cxRFhS>p9A)*U zWt1v4Z&(tb8m4C2wi53<o1;?n2_US~Lwnk&^cPc7i{sW{%Vw_%O;VPi_> zdUklTcoCf-E%|k$O0Af6ou1d1SIb@ZzlkLLK4K5Xh}fJSbdh#Rg>gUCO`V?kWz)KR zR>fk9$M$$%kkEA1)O5oO!FwTcXmK%*kBs10(iy^ibSpo*7n@D8VDktQ>Yr-AhWD5M z?<9}hU<{TbVuU%2t=SeWI2u@?^C)DR9OpIoF!|VH5pvZ}xdaC0X}dBf(mi`|*hpa4 uE%~x^XrSNmbol1=O8Hs??+OY?amf4YK{0}>MR{_UbgsNtA?0jU56&ORr{Zh? diff --git a/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision12/elm-stuff/0.19.1/d.dat b/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision12/elm-stuff/0.19.1/d.dat index bfee5241bad69e8bf5a738ec3fce2d9b0c7fac75..112bcfc0ad7f6ad2cfcd766ad51bd086d45866b3 100644 GIT binary patch delta 391 zcmbOwc}z@*k&yucI1^Yr9A7V)yI`VFKPOa-fo1w5St&zgE?VyK3$r%U~&dq0g}dtY(9byT%0n4PtJi` zAPTY|jNLUSH8(Y{LmHcL{7k&yucI3Jj}q%5CYGHaqxKc^#9kYnO1UjbdCP^kk&vtpoPLX!(vLncQv z@=VTQ)Y4%INi5EW${;9S-^A=x-_o3t%z~WMVyL*?1J;fXrlN@yRSMnJmvHJ=ulDkAoq7)`EK;?`BP&#Ztg$12xDI z?8J%dO(*-Z3JEGy{=HJkhvvD-Ct0P1cwBQ*b5rw5^xX3EN?1Hfa&sovF-lC!aVs9r|V`@EfSA3La5WJGr*O$&3XI!JsFbXWb&KH3 zbngY&cz+R{rc3K+wvbn`SE% z;wjVfh7RGP(iTtl~CyDE=`NFfWPORd_Qf z$+MEg@hb!$48xPG(kp4*UNJQN5FQFbe~SJU^nq(eKBwE8#Ok;Xc68Ht1kXr-TjaQ{ z3T)kR>$ab+bnAIgDez~K+hzN9TaD*qNnz&aJKfgG;&KrcWE%k;e!kV8R@x3N8P`Pn2E z+q&jFxgoD&aOxpuccI*s49yPcS)4Ri>~)!^aj6(3w7VQ5HzL zgS!i=>UP@9ZiYD<=W49d>q}@7zUy&1S496E`ZBp?hZD?YHIaiJY#fp_aCPzFk2P~xmnq$P_S5X&a(^tOYh=*9~Aydno{ z+t_Fl?@ndjoBg`v{qJ(oQ!0`u+A22a{w~zGS%p#oQ7a`AY;jbEPtxCPqAcfIbgPQy zBivDKK1q+3Q8r;i-|;)*lTo!)Vi_OV>9!*k4zdjWw=@Qi?+I!#4S$PvsH&&DSL0c~ zklDo~7_y@En@WNHbP1A|L1NtQLP&!a3VnJmX|tn-?)UsUdR9vF_1zYUZU~#4%pE$# zVo}nutnILh+M(a8p-UO~m)Y&Ig=McGRL-UzJE%manK+Yl$mbZn2gRRfBA2lpOYi!! z5z(9LFGDmtn`lCj?Y?e66Xo*_Ydl=(^5ao(!!*1PKvTj2pw#bQ3Hu7v81GJgGkI+j z&591zqfL=pl+q5qOpYHy`p9uZND78E!|s}PUs9jr29pWbP)%dtxv%4aYtXZNcb8Jn9gqeX+rk3q0YpNjccU@9H8&J{bMDb1nCrCC8IsPEN6UR6YJK% zsqunu7ROR<&&X=W*PCA4A7n+uXQN7fplIv;hdEAiQ0q50}xWe^y0PW5~34 zAbn>ixpzsNFs&shdOj6}f%sS&OB^F>^!_t&HPsf3;P6V7FfP+t!&m+L;b!BIT4Vid zDnsPJfFEw`VEzM0>R)tOX2uy9nwUY+y%1~{y3`<^evZsZ0!}*S;A#Ab;HqWsjWGo} zg(*(c2O7*Gu$Ey{VU|e|?}GGS4fLG=)ux}JNU-rHxWW5}kfTu2(>mVpy ztX>{?1A-kJ6TI(_P0&4pvSmnF;9RkySq+>4Lt=~r+;)A%9=Q#P&#u$CD=_0P5)Hd; jel5Xyyky7d`x?~1w_6a>%X313KK!>JzV*)*y0`Ox%8!>t delta 47 zcmaEHlY8$^E)E6=ux#XL(!BiDE{bL!E+V-VoO#0%}7tCei+|E6d>25FpS|1M^ diff --git a/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision12/elm-stuff/0.19.1/o.dat b/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision12/elm-stuff/0.19.1/o.dat index 7c597c09bf07a159afd74bba39960890de482d0c..081f80fa3b95a24519b52cf0c4ea6c1439933d59 100644 GIT binary patch delta 37599 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 1000) ? A2( + $elm$core$List$cons, + x, + A2( + $elm$core$List$cons, + y, + A2( + $elm$core$List$cons, + z, + A2( + $elm$core$List$cons, + w, + A2($elm$core$List$takeTailRec, n - 4, tl))))) : A2( + $elm$core$List$cons, + x, + A2( + $elm$core$List$cons, + y, + A2( + $elm$core$List$cons, + z, + A2( + $elm$core$List$cons, + w, + A3($elm$core$List$takeFast, ctr + 1, n - 4, tl))))); + } else { + break _v0$5; + } + } + } else { + if (_v0.a === 1) { + break _v0$1; + } else { + break _v0$5; + } + } + } + } + return list; + } + var _v1 = _v0.b; + var x = _v1.a; + return _List_fromArray( + [x]); + } + }); +var $elm$core$List$take = F2( + function (n, list) { + return A3($elm$core$List$takeFast, 0, n, list); + }); +var $elm_community$list_extra$List$Extra$updateAt = F3( + function (index, fn, list) { + if (index < 0) { + return list; + } else { + var tail = A2($elm$core$List$drop, index, list); + if (tail.b) { + var x = tail.a; + var xs = tail.b; + return _Utils_ap( + A2($elm$core$List$take, index, list), + A2( + $elm$core$List$cons, + fn(x), + xs)); + } else { + return list; + } + } + }); +var $elm_community$list_extra$List$Extra$setAt = F2( + function (index, value) { + return A2( + $elm_community$list_extra$List$Extra$updateAt, + index, + $elm$core$Basics$always(value)); + }); var $author$project$Update$updateDeselectCard = F3( function (model, index, rank) { - var selectedHand = model.selectedHand; - var third = selectedHand.third; - var second = selectedHand.second; + var selectedHand = A3($elm_community$list_extra$List$Extra$setAt, index, $elm$core$Maybe$Nothing, model.selectedHand); var playerHand = A2($author$project$Utils$addHand, rank, model.playerHand); - var first = selectedHand.first; - switch (index) { - case 1: - return _Utils_Tuple2( - _Utils_update( - model, - { - playerHand: playerHand, - selectedHand: _Utils_update( - selectedHand, - {first: $elm$core$Maybe$Nothing}) - }), - $elm$core$Platform$Cmd$none); - case 2: - return _Utils_Tuple2( - _Utils_update( - model, - { - playerHand: playerHand, - selectedHand: _Utils_update( - selectedHand, - {second: $elm$core$Maybe$Nothing}) - }), - $elm$core$Platform$Cmd$none); - case 3: - return _Utils_Tuple2( - _Utils_update( - model, - { - playerHand: playerHand, - selectedHand: _Utils_update( - selectedHand, - {third: $elm$core$Maybe$Nothing}) - }), - $elm$core$Platform$Cmd$none); - default: - return _Utils_Tuple2(model, $elm$core$Platform$Cmd$none); - } + return _Utils_Tuple2( + _Utils_update( + model, + {playerHand: playerHand, selectedHand: selectedHand}), + $elm$core$Platform$Cmd$none); }); var $author$project$Update$updateDrawCardsOpponent = F2( - function (model, ranks) { - var opponentHand = A3($elm$core$List$foldl, $author$project$Utils$addHand, model.opponentHand, ranks); + function (model, cards) { + var opponentHand = A3($elm$core$List$foldl, $author$project$Utils$addHand, model.opponentHand, cards); return _Utils_Tuple2( _Utils_update( model, @@ -6511,35 +6690,38 @@ $elm$core$Platform$Cmd$none); }); var $author$project$Update$updateDrawCardsPlayer = F2( - function (model, ranks) { - var playerHand = A3($elm$core$List$foldl, $author$project$Utils$addHand, model.playerHand, ranks); + function (model, cards) { + var playerHand = A3($elm$core$List$foldl, $author$project$Utils$addHand, model.playerHand, cards); return _Utils_Tuple2( _Utils_update( model, {playerHand: playerHand}), $elm$core$Platform$Cmd$none); }); -var $elm$core$List$sum = function (numbers) { - return A3($elm$core$List$foldl, $elm$core$Basics$add, 0, numbers); -}; -var $author$project$Update$updateResize = F3( - function (model, w, h) { - var view = model.view; - var boxWidth = view.boxWidth; - var boxHeight = $elm$core$List$sum( - _List_fromArray( - [view.gameOpponentHandHeight, view.gameFieldHeight, view.gameInfoHeight, view.gameSelectedHandHeight, view.gamePlayerHandHeight, view.gamePlayerButtonHeight, view.boxPadding * 2, view.boxSpacing * 5])); - var boxZoom = (_Utils_cmp(w / h, boxWidth / boxHeight) < 0) ? (w / boxWidth) : (h / boxHeight); - return _Utils_Tuple2( - _Utils_update( - model, - { - view: _Utils_update( - view, - {boxZoom: boxZoom}) +var $elm$core$Dict$filter = F2( + function (isGood, dict) { + return A3( + $elm$core$Dict$foldl, + F3( + function (k, v, d) { + return A2(isGood, k, v) ? A3($elm$core$Dict$insert, k, v, d) : d; }), - $elm$core$Platform$Cmd$none); + $elm$core$Dict$empty, + dict); }); +var $author$project$Utils$clearHand = function (hand) { + return A2( + $elm$core$Dict$filter, + F2( + function (_v0, number) { + return number > 0; + }), + hand); +}; +var $elm$core$List$sortBy = _List_sortBy; +var $elm$core$List$sort = function (xs) { + return A2($elm$core$List$sortBy, $elm$core$Basics$identity, xs); +}; var $author$project$Utils$takeHand = F2( function (rank, hand) { return A3( @@ -6555,88 +6737,431 @@ }, hand); }); -var $author$project$Update$updateSelectCard = F2( - function (model, rank) { - var selectedHand = model.selectedHand; - var third = selectedHand.third; - var second = selectedHand.second; - var playerHand = A2($author$project$Utils$takeHand, rank, model.playerHand); - var first = selectedHand.first; - var _v0 = _Utils_Tuple3(first, second, third); - if (_v0.a.$ === 'Nothing') { - var _v1 = _v0.a; +var $author$project$Update$updatePlayCardsOpponent = F2( + function (model, maybeCards) { + if (maybeCards.$ === 'Just') { + var cards = maybeCards.a; + var turn = $author$project$Model$Player; + var opponentHand = $author$project$Utils$clearHand( + A3($elm$core$List$foldl, $author$project$Utils$takeHand, model.opponentHand, cards)); + var field = _Utils_ap( + A2( + $elm$core$List$map, + $elm$core$Maybe$Just, + $elm$core$List$sort(cards)), + A2( + $elm$core$List$repeat, + model.fieldLength - $elm$core$List$length(cards), + $elm$core$Maybe$Nothing)); + return _Utils_Tuple2( + _Utils_update( + model, + {field: field, opponentHand: opponentHand, turn: turn}), + $elm$core$Platform$Cmd$none); + } else { + var turn = $author$project$Model$Player; + return _Utils_Tuple2( + _Utils_update( + model, + {turn: turn}), + A2( + $elm$random$Random$generate, + $author$project$Msg$DrawCardsOpponent, + A2( + $elm$random$Random$list, + 1, + $mgold$elm_nonempty_list$List$Nonempty$sample(model.ranks)))); + } + }); +var $author$project$Model$Opponent = {$: 'Opponent'}; +var $author$project$Msg$TurnOpponent = {$: 'TurnOpponent'}; +var $elm$core$Process$sleep = _Process_sleep; +var $author$project$Update$turnOpponent = function (model) { + return A2( + $elm$core$Task$perform, + function (_v0) { + return $author$project$Msg$TurnOpponent; + }, + $elm$core$Process$sleep(model.turnOpponentSleep)); +}; +var $author$project$Update$updatePressPass = function (model) { + var turn = $author$project$Model$Opponent; + var selectedHand = A2( + $elm$core$List$repeat, + $elm$core$List$length(model.selectedHand), + $elm$core$Maybe$Nothing); + var playerHand = A3( + $elm$core$List$foldl, + $author$project$Utils$addHand, + model.playerHand, + A2($elm$core$List$filterMap, $elm$core$Basics$identity, model.selectedHand)); + return _Utils_Tuple2( + _Utils_update( + model, + {playerHand: playerHand, selectedHand: selectedHand, turn: turn}), + $elm$core$Platform$Cmd$batch( + _List_fromArray( + [ + A2( + $elm$random$Random$generate, + $author$project$Msg$DrawCardsPlayer, + A2( + $elm$random$Random$list, + model.cardsDraw, + $mgold$elm_nonempty_list$List$Nonempty$sample(model.ranks))), + $author$project$Update$turnOpponent(model) + ]))); +}; +var $elm$core$Maybe$andThen = F2( + function (callback, maybeValue) { + if (maybeValue.$ === 'Just') { + var value = maybeValue.a; + return callback(value); + } else { + return $elm$core$Maybe$Nothing; + } + }); +var $author$project$Update$fieldIndex = function (_v0) { + return 0; +}; +var $elm$core$List$head = function (list) { + if (list.b) { + var x = list.a; + var xs = list.b; + return $elm$core$Maybe$Just(x); + } else { + return $elm$core$Maybe$Nothing; + } +}; +var $elm_community$list_extra$List$Extra$getAt = F2( + function (idx, xs) { + return (idx < 0) ? $elm$core$Maybe$Nothing : $elm$core$List$head( + A2($elm$core$List$drop, idx, xs)); + }); +var $elm$core$List$sum = function (numbers) { + return A3($elm$core$List$foldl, $elm$core$Basics$add, 0, numbers); +}; +var $author$project$Update$updatePressPlay = function (model) { + var maybeNumberField = A2( + $elm$core$Maybe$andThen, + $elm$core$Basics$identity, + A2($elm_community$list_extra$List$Extra$getAt, model.fieldIndex, model.field)); + var cards = A2($elm$core$List$filterMap, $elm$core$Basics$identity, model.selectedHand); + var lengthCards = $elm$core$List$length(cards); + var numberCards = $elm$core$List$sum(cards); + if (maybeNumberField.$ === 'Just') { + var numberField = maybeNumberField.a; + if ((lengthCards > 0) && (!A2($elm$core$Basics$modBy, numberField, numberCards))) { + var turn = $author$project$Model$Opponent; + var selectedHand = A2( + $elm$core$List$repeat, + $elm$core$List$length(model.selectedHand), + $elm$core$Maybe$Nothing); + var playerHand = $author$project$Utils$clearHand(model.playerHand); + var field = _Utils_ap( + A2( + $elm$core$List$map, + $elm$core$Maybe$Just, + $elm$core$List$sort(cards)), + A2($elm$core$List$repeat, model.fieldLength - lengthCards, $elm$core$Maybe$Nothing)); return _Utils_Tuple2( _Utils_update( model, { + field: field, + fieldIndex: $author$project$Update$fieldIndex(cards), playerHand: playerHand, - selectedHand: _Utils_update( - selectedHand, - { - first: $elm$core$Maybe$Just(rank) - }) + selectedHand: selectedHand, + turn: turn }), - $elm$core$Platform$Cmd$none); + $author$project$Update$turnOpponent(model)); } else { - if (_v0.b.$ === 'Nothing') { - var _v2 = _v0.b; - return _Utils_Tuple2( - _Utils_update( - model, - { - playerHand: playerHand, - selectedHand: _Utils_update( - selectedHand, - { - second: $elm$core$Maybe$Just(rank) - }) - }), - $elm$core$Platform$Cmd$none); + return _Utils_Tuple2(model, $elm$core$Platform$Cmd$none); + } + } else { + return _Utils_Tuple2(model, $elm$core$Platform$Cmd$none); + } +}; +var $author$project$Update$updateResize = F3( + function (model, w, h) { + var view = model.view; + var boxWidth = view.boxWidth; + var boxHeight = $elm$core$List$sum( + _List_fromArray( + [view.gameOpponentHandHeight, view.gameFieldHeight, view.gameInfoHeight, view.gameSelectedHandHeight, view.gamePlayerHandHeight, view.gamePlayerButtonHeight, view.boxPadding * 2, view.boxSpacing * 5])); + var boxZoom = (_Utils_cmp(w / h, boxWidth / boxHeight) < 0) ? (w / boxWidth) : (h / boxHeight); + return _Utils_Tuple2( + _Utils_update( + model, + { + view: _Utils_update( + view, + {boxZoom: boxZoom}) + }), + $elm$core$Platform$Cmd$none); + }); +var $elm_community$list_extra$List$Extra$findIndexHelp = F3( + function (index, predicate, list) { + findIndexHelp: + while (true) { + if (!list.b) { + return $elm$core$Maybe$Nothing; } else { - if (_v0.c.$ === 'Nothing') { - var _v3 = _v0.c; - return _Utils_Tuple2( - _Utils_update( - model, - { - playerHand: playerHand, - selectedHand: _Utils_update( - selectedHand, - { - third: $elm$core$Maybe$Just(rank) - }) - }), - $elm$core$Platform$Cmd$none); + var x = list.a; + var xs = list.b; + if (predicate(x)) { + return $elm$core$Maybe$Just(index); } else { - return _Utils_Tuple2(model, $elm$core$Platform$Cmd$none); + var $temp$index = index + 1, + $temp$predicate = predicate, + $temp$list = xs; + index = $temp$index; + predicate = $temp$predicate; + list = $temp$list; + continue findIndexHelp; } } } }); -var $elm$core$List$sortBy = _List_sortBy; -var $elm$core$List$sort = function (xs) { - return A2($elm$core$List$sortBy, $elm$core$Basics$identity, xs); +var $elm_community$list_extra$List$Extra$findIndex = $elm_community$list_extra$List$Extra$findIndexHelp(0); +var $elm_community$maybe_extra$Maybe$Extra$isNothing = function (m) { + if (m.$ === 'Nothing') { + return true; + } else { + return false; + } }; +var $author$project$Update$updateSelectCard = F2( + function (model, rank) { + var selectedHand = function () { + var _v0 = A2($elm_community$list_extra$List$Extra$findIndex, $elm_community$maybe_extra$Maybe$Extra$isNothing, model.selectedHand); + if (_v0.$ === 'Just') { + var index = _v0.a; + return A3( + $elm_community$list_extra$List$Extra$setAt, + index, + $elm$core$Maybe$Just(rank), + model.selectedHand); + } else { + return model.selectedHand; + } + }(); + var playerHand = A2($author$project$Utils$takeHand, rank, model.playerHand); + return _Utils_Tuple2( + _Utils_update( + model, + {playerHand: playerHand, selectedHand: selectedHand}), + $elm$core$Platform$Cmd$none); + }); var $author$project$Update$updateSetField = F2( - function (model, ranks) { - var _v0 = $elm$core$List$sort(ranks); - if (((_v0.b && _v0.b.b) && _v0.b.b.b) && (!_v0.b.b.b.b)) { - var first = _v0.a; - var _v1 = _v0.b; - var second = _v1.a; - var _v2 = _v1.b; - var third = _v2.a; - return _Utils_Tuple2( - _Utils_update( - model, - { - field: {first: first, second: second, third: third} - }), - $elm$core$Platform$Cmd$none); + function (model, cards) { + var lengthCards = $elm$core$List$length(cards); + var field = _Utils_ap( + A2( + $elm$core$List$map, + $elm$core$Maybe$Just, + $elm$core$List$sort(cards)), + A2($elm$core$List$repeat, model.fieldLength - lengthCards, $elm$core$Maybe$Nothing)); + return _Utils_Tuple2( + _Utils_update( + model, + { + field: field, + fieldIndex: $author$project$Update$fieldIndex(cards) + }), + $elm$core$Platform$Cmd$none); + }); +var $author$project$Msg$PlayCardsOpponent = function (a) { + return {$: 'PlayCardsOpponent', a: a}; +}; +var $elm$random$Random$constant = function (value) { + return $elm$random$Random$Generator( + function (seed) { + return _Utils_Tuple2(value, seed); + }); +}; +var $elm$core$List$append = F2( + function (xs, ys) { + if (!ys.b) { + return xs; } else { - return _Utils_Tuple2(model, $elm$core$Platform$Cmd$none); + return A3($elm$core$List$foldr, $elm$core$List$cons, ys, xs); + } + }); +var $elm$core$List$concat = function (lists) { + return A3($elm$core$List$foldr, $elm$core$List$append, _List_Nil, lists); +}; +var $elm$core$List$concatMap = F2( + function (f, list) { + return $elm$core$List$concat( + A2($elm$core$List$map, f, list)); + }); +var $author$project$Update$cartesianListCards = F2( + function (hand, length) { + return (!length) ? _List_fromArray( + [_List_Nil]) : A2( + $elm$core$List$concatMap, + function (rank) { + return A2( + $elm$core$List$map, + function (listCards) { + return A2($elm$core$List$cons, rank, listCards); + }, + A2($author$project$Update$cartesianListCards, hand, length - 1)); + }, + $elm$core$Dict$keys(hand)); + }); +var $elm$core$List$filter = F2( + function (isGood, list) { + return A3( + $elm$core$List$foldr, + F2( + function (x, xs) { + return isGood(x) ? A2($elm$core$List$cons, x, xs) : xs; + }), + _List_Nil, + list); + }); +var $elm$core$Basics$ge = _Utils_ge; +var $author$project$Utils$containHand = F2( + function (hand1, hand2) { + return A6( + $elm$core$Dict$merge, + F3( + function (_v0, _v1, result) { + return result; + }), + F4( + function (_v2, a, b, result) { + return (_Utils_cmp(a, b) > -1) && result; + }), + F3( + function (_v3, _v4, result) { + return result; + }), + hand1, + hand2, + true); + }); +var $author$project$Update$filterCards = F2( + function (hand, listCards) { + return A2( + $elm$core$List$filter, + function (cards) { + return A2( + $author$project$Utils$containHand, + hand, + A3($elm$core$List$foldl, $author$project$Utils$addHand, $elm$core$Dict$empty, cards)); + }, + listCards); + }); +var $elm$core$Dict$values = function (dict) { + return A3( + $elm$core$Dict$foldr, + F3( + function (key, value, valueList) { + return A2($elm$core$List$cons, value, valueList); + }), + _List_Nil, + dict); +}; +var $author$project$Utils$lengthHand = function (hand) { + return $elm$core$List$sum( + $elm$core$Dict$values(hand)); +}; +var $elm$core$Basics$neq = _Utils_notEqual; +var $author$project$Utils$sumHand = function (hand) { + return A3( + $elm$core$Dict$foldl, + F3( + function (rank, number, sum) { + return (rank * number) + sum; + }), + 0, + hand); +}; +var $author$project$Update$listOpponentCards = F2( + function (model, rank) { + return A2( + $elm$core$List$filter, + function (cards) { + var maybeRank = A2( + $elm_community$list_extra$List$Extra$getAt, + $author$project$Update$fieldIndex(cards), + cards); + if (maybeRank.$ === 'Just') { + var rank_ = maybeRank.a; + return ((_Utils_cmp( + $author$project$Utils$lengthHand(model.opponentHand), + $elm$core$List$length(cards)) > 0) && (_Utils_cmp( + $author$project$Utils$lengthHand(model.playerHand), + model.fieldLength) < 1)) ? (!(!A2( + $elm$core$Basics$modBy, + rank_, + $author$project$Utils$sumHand(model.playerHand)))) : true; + } else { + return false; + } + }, + A2( + $elm$core$List$filter, + function (cards) { + return !A2( + $elm$core$Basics$modBy, + rank, + $elm$core$List$sum(cards)); + }, + A2( + $elm$core$List$concatMap, + function (length_) { + return A2( + $author$project$Update$filterCards, + model.opponentHand, + A2($author$project$Update$cartesianListCards, model.opponentHand, length_)); + }, + A2($elm$core$List$range, 1, model.fieldLength)))); + }); +var $mgold$elm_nonempty_list$List$Nonempty$map = F2( + function (f, _v0) { + var x = _v0.a; + var xs = _v0.b; + return A2( + $mgold$elm_nonempty_list$List$Nonempty$Nonempty, + f(x), + A2($elm$core$List$map, f, xs)); + }); +var $author$project$Update$generatorOpponentCards = F2( + function (model, rank) { + var _v0 = A2($author$project$Update$listOpponentCards, model, rank); + if (_v0.b) { + var x = _v0.a; + var xs = _v0.b; + return $mgold$elm_nonempty_list$List$Nonempty$sample( + A2( + $mgold$elm_nonempty_list$List$Nonempty$map, + $elm$core$Maybe$Just, + A2($mgold$elm_nonempty_list$List$Nonempty$Nonempty, x, xs))); + } else { + return $elm$random$Random$constant($elm$core$Maybe$Nothing); } }); +var $author$project$Update$updateTurnOpponent = function (model) { + var maybeRank = A2( + $elm$core$Maybe$andThen, + $elm$core$Basics$identity, + A2($elm_community$list_extra$List$Extra$getAt, model.fieldIndex, model.field)); + if (maybeRank.$ === 'Just') { + var rank = maybeRank.a; + return _Utils_Tuple2( + model, + A2( + $elm$random$Random$generate, + $author$project$Msg$PlayCardsOpponent, + A2($author$project$Update$generatorOpponentCards, model, rank))); + } else { + return _Utils_Tuple2(model, $elm$core$Platform$Cmd$none); + } +}; var $author$project$Update$update = F2( function (msg, model) { switch (msg.$) { @@ -6645,21 +7170,30 @@ var h = msg.b; return A3($author$project$Update$updateResize, model, w, h); case 'SetField': - var ranks = msg.a; - return A2($author$project$Update$updateSetField, model, ranks); + var cards = msg.a; + return A2($author$project$Update$updateSetField, model, cards); case 'DrawCardsPlayer': - var ranks = msg.a; - return A2($author$project$Update$updateDrawCardsPlayer, model, ranks); + var cards = msg.a; + return A2($author$project$Update$updateDrawCardsPlayer, model, cards); case 'DrawCardsOpponent': - var ranks = msg.a; - return A2($author$project$Update$updateDrawCardsOpponent, model, ranks); + var cards = msg.a; + return A2($author$project$Update$updateDrawCardsOpponent, model, cards); case 'SelectCard': var rank = msg.a; return A2($author$project$Update$updateSelectCard, model, rank); - default: + case 'DeselectCard': var index = msg.a; var rank = msg.b; return A3($author$project$Update$updateDeselectCard, model, index, rank); + case 'PressPass': + return $author$project$Update$updatePressPass(model); + case 'PressPlay': + return $author$project$Update$updatePressPlay(model); + case 'TurnOpponent': + return $author$project$Update$updateTurnOpponent(model); + default: + var maybeCards = msg.a; + return A2($author$project$Update$updatePlayCardsOpponent, model, maybeCards); } }); var $author$project$View$boxZoom = F2( @@ -7249,22 +7783,6 @@ var $mdgriffith$elm_ui$Internal$Style$Top = {$: 'Top'}; var $mdgriffith$elm_ui$Internal$Style$alignments = _List_fromArray( [$mdgriffith$elm_ui$Internal$Style$Top, $mdgriffith$elm_ui$Internal$Style$Bottom, $mdgriffith$elm_ui$Internal$Style$Right, $mdgriffith$elm_ui$Internal$Style$Left, $mdgriffith$elm_ui$Internal$Style$CenterX, $mdgriffith$elm_ui$Internal$Style$CenterY]); -var $elm$core$List$append = F2( - function (xs, ys) { - if (!ys.b) { - return xs; - } else { - return A3($elm$core$List$foldr, $elm$core$List$cons, ys, xs); - } - }); -var $elm$core$List$concat = function (lists) { - return A3($elm$core$List$foldr, $elm$core$List$append, _List_Nil, lists); -}; -var $elm$core$List$concatMap = F2( - function (f, list) { - return $elm$core$List$concat( - A2($elm$core$List$map, f, list)); - }); var $mdgriffith$elm_ui$Internal$Style$contentName = function (desc) { switch (desc.a.$) { case 'Top': @@ -10051,17 +10569,6 @@ function (size, height, vertical) { return {height: height / size, size: size, vertical: vertical}; }); -var $elm$core$List$filter = F2( - function (isGood, list) { - return A3( - $elm$core$List$foldr, - F2( - function (x, xs) { - return isGood(x) ? A2($elm$core$List$cons, x, xs) : xs; - }), - _List_Nil, - list); - }); var $elm$core$List$maximum = function (list) { if (list.b) { var x = list.a; @@ -10082,7 +10589,6 @@ return $elm$core$Maybe$Nothing; } }; -var $elm$core$Basics$neq = _Utils_notEqual; var $mdgriffith$elm_ui$Internal$Model$convertAdjustment = function (adjustment) { var lines = _List_fromArray( [adjustment.capital, adjustment.baseline, adjustment.descender, adjustment.lowercase]); @@ -11216,7 +11722,6 @@ } }; var $mdgriffith$elm_ui$Internal$Flag$borderWidth = $mdgriffith$elm_ui$Internal$Flag$flag(27); -var $elm$core$Basics$ge = _Utils_ge; var $mdgriffith$elm_ui$Internal$Model$skippable = F2( function (flag, style) { if (_Utils_eq(flag, $mdgriffith$elm_ui$Internal$Flag$borderWidth)) { @@ -12510,11 +13015,31 @@ x, x)); }; -var $author$project$View$CardField = {$: 'CardField'}; +var $author$project$View$FieldCard = function (a) { + return {$: 'FieldCard', a: a}; +}; var $mdgriffith$elm_ui$Internal$Model$Fill = function (a) { return {$: 'Fill', a: a}; }; var $mdgriffith$elm_ui$Element$fill = $mdgriffith$elm_ui$Internal$Model$Fill(1); +var $elm$core$List$intersperse = F2( + function (sep, xs) { + if (!xs.b) { + return _List_Nil; + } else { + var hd = xs.a; + var tl = xs.b; + var step = F2( + function (x, rest) { + return A2( + $elm$core$List$cons, + sep, + A2($elm$core$List$cons, x, rest)); + }); + var spersed = A3($elm$core$List$foldr, step, _List_Nil, tl); + return A2($elm$core$List$cons, hd, spersed); + } + }); var $mdgriffith$elm_ui$Internal$Model$AsRow = {$: 'AsRow'}; var $mdgriffith$elm_ui$Internal$Model$asRow = $mdgriffith$elm_ui$Internal$Model$AsRow; var $mdgriffith$elm_ui$Element$row = F2( @@ -12542,6 +13067,18 @@ var $author$project$Msg$SelectCard = function (a) { return {$: 'SelectCard', a: a}; }; +var $elm$core$Basics$composeL = F3( + function (g, f, x) { + return g( + f(x)); + }); +var $elm$core$List$all = F2( + function (isOkay, list) { + return !A2( + $elm$core$List$any, + A2($elm$core$Basics$composeL, $elm$core$Basics$not, isOkay), + list); + }); var $mdgriffith$elm_ui$Internal$Model$Button = {$: 'Button'}; var $mdgriffith$elm_ui$Internal$Model$Describe = function (a) { return {$: 'Describe', a: a}; @@ -12569,11 +13106,6 @@ var $mdgriffith$elm_ui$Element$Input$focusDefault = function (attrs) { return A2($elm$core$List$any, $mdgriffith$elm_ui$Element$Input$hasFocusStyle, attrs) ? $mdgriffith$elm_ui$Internal$Model$NoAttribute : $mdgriffith$elm_ui$Internal$Model$htmlClass('focusable'); }; -var $elm$core$Basics$composeL = F3( - function (g, f, x) { - return g( - f(x)); - }); var $elm$virtual_dom$VirtualDom$Normal = function (a) { return {$: 'Normal', a: a}; }; @@ -12737,6 +13269,13 @@ [child]))); }); var $mdgriffith$elm_ui$Element$fillPortion = $mdgriffith$elm_ui$Internal$Model$Fill; +var $elm_community$maybe_extra$Maybe$Extra$isJust = function (m) { + if (m.$ === 'Nothing') { + return false; + } else { + return true; + } +}; var $mdgriffith$elm_ui$Internal$Model$Empty = {$: 'Empty'}; var $mdgriffith$elm_ui$Element$none = $mdgriffith$elm_ui$Internal$Model$Empty; var $mdgriffith$elm_ui$Element$Font$size = function (i) { @@ -12768,9 +13307,16 @@ v)); }; var $author$project$View$viewGameCard = F4( - function (model, card, rank, cards) { - var labelRank = ((rank <= 0) || (!cards)) ? '' : $elm$core$String$fromInt(rank); - var labelNumber = ((rank <= 0) || (cards <= 1)) ? '' : ('× ' + $elm$core$String$fromInt(cards)); + function (model, gameCard, maybeRank, cards) { + var labelRank = function () { + if (maybeRank.$ === 'Just') { + var rank = maybeRank.a; + return (cards <= 0) ? '' : $elm$core$String$fromInt(rank); + } else { + return ''; + } + }(); + var labelNumber = ($elm_community$maybe_extra$Maybe$Extra$isNothing(maybeRank) || (cards <= 1)) ? '' : ('× ' + $elm$core$String$fromInt(cards)); var label = A2( $mdgriffith$elm_ui$Element$column, _List_fromArray( @@ -12820,8 +13366,35 @@ [$mdgriffith$elm_ui$Element$centerY]), $mdgriffith$elm_ui$Element$text(labelNumber))) ])); - var fontColor = ((rank <= 0) || (!cards)) ? model.view.color1 : model.view.color4; - var backgroundColor = ((rank <= 0) || (!cards)) ? model.view.color3 : model.view.color1; + var fontColor = model.view.color4; + var borderColor = function () { + switch (gameCard.$) { + case 'FieldCard': + var index = gameCard.a; + return _Utils_eq(index, model.fieldIndex) ? model.view.color5 : model.view.color3; + case 'SelectedHandCard': + return model.view.color5; + default: + return model.view.color3; + } + }(); + var backgroundColor = function () { + if ($elm_community$maybe_extra$Maybe$Extra$isNothing(maybeRank) || (!cards)) { + return model.view.color3; + } else { + switch (gameCard.$) { + case 'FieldCard': + var index = gameCard.a; + return _Utils_eq(index, model.fieldIndex) ? model.view.color1 : model.view.color3; + case 'PlayerHandCard': + return _Utils_eq(model.turn, $author$project$Model$Player) ? model.view.color1 : model.view.color3; + case 'OpponentHandCard': + return _Utils_eq(model.turn, $author$project$Model$Opponent) ? model.view.color1 : model.view.color3; + default: + return model.view.color1; + } + } + }(); var attributes = _List_fromArray( [ $mdgriffith$elm_ui$Element$Background$color( @@ -12835,7 +13408,7 @@ $mdgriffith$elm_ui$Element$Border$width( A2($author$project$View$boxZoom, model, model.view.gameCardBorderWidth)), $mdgriffith$elm_ui$Element$Border$color( - $mdgriffith$elm_ui$Element$fromRgb255(model.view.color3)), + $mdgriffith$elm_ui$Element$fromRgb255(borderColor)), $mdgriffith$elm_ui$Element$Border$rounded( A2($author$project$View$boxZoom, model, model.view.gameCardRounded)), $mdgriffith$elm_ui$Element$centerX, @@ -12843,25 +13416,26 @@ $mdgriffith$elm_ui$Element$Font$color( $mdgriffith$elm_ui$Element$fromRgb255(fontColor)) ]); - switch (card.$) { - case 'CardPlayerHand': + switch (gameCard.$) { + case 'PlayerHandCard': return A2( $mdgriffith$elm_ui$Element$Input$button, attributes, { label: label, - onPress: (cards <= 0) ? $elm$core$Maybe$Nothing : $elm$core$Maybe$Just( - $author$project$Msg$SelectCard(rank)) + onPress: ((!_Utils_eq(model.turn, $author$project$Model$Player)) || ((cards <= 0) || A2($elm$core$List$all, $elm_community$maybe_extra$Maybe$Extra$isJust, model.selectedHand))) ? $elm$core$Maybe$Nothing : A2($elm$core$Maybe$map, $author$project$Msg$SelectCard, maybeRank) }); - case 'CardSelectedHand': - var index = card.a; + case 'SelectedHandCard': + var index = gameCard.a; return A2( $mdgriffith$elm_ui$Element$Input$button, attributes, { label: label, - onPress: (rank <= 0) ? $elm$core$Maybe$Nothing : $elm$core$Maybe$Just( - A2($author$project$Msg$DeselectCard, index, rank)) + onPress: (!_Utils_eq(model.turn, $author$project$Model$Player)) ? $elm$core$Maybe$Nothing : A2( + $elm$core$Maybe$map, + $author$project$Msg$DeselectCard(index), + maybeRank) }); default: return A2($mdgriffith$elm_ui$Element$el, attributes, label); @@ -12906,14 +13480,21 @@ $mdgriffith$elm_ui$Element$spacing( A2($author$project$View$boxZoom, model, model.view.gameHandSpacing)) ]), - _List_fromArray( - [ - A4($author$project$View$viewGameCard, model, $author$project$View$CardField, model.field.first, 1), - A2($author$project$View$viewGameCardText, model, '≤'), - A4($author$project$View$viewGameCard, model, $author$project$View$CardField, model.field.second, 1), - A2($author$project$View$viewGameCardText, model, '≤'), - A4($author$project$View$viewGameCard, model, $author$project$View$CardField, model.field.third, 1) - ])); + A2( + $elm$core$List$intersperse, + A2($author$project$View$viewGameCardText, model, '≤'), + A2( + $elm$core$List$indexedMap, + F2( + function (index, maybeRank) { + return A4( + $author$project$View$viewGameCard, + model, + $author$project$View$FieldCard(index), + maybeRank, + 1); + }), + model.field))); }; var $author$project$View$viewGameInfo = function (model) { return A2( @@ -12925,10 +13506,13 @@ $mdgriffith$elm_ui$Element$px( A2($author$project$View$boxZoom, model, model.view.gameInfoHeight))), $mdgriffith$elm_ui$Element$centerX, - $mdgriffith$elm_ui$Element$Font$color( - $mdgriffith$elm_ui$Element$fromRgb255(model.view.color4)), + $mdgriffith$elm_ui$Element$centerY, + $mdgriffith$elm_ui$Element$spacing( + A2($author$project$View$boxZoom, model, model.view.gameHandSpacing)), $mdgriffith$elm_ui$Element$Font$size( - A2($author$project$View$boxZoom, model, model.view.gameInfoFontSize)) + A2($author$project$View$boxZoom, model, model.view.gameCardFontSize)), + $mdgriffith$elm_ui$Element$Font$color( + $mdgriffith$elm_ui$Element$fromRgb255(model.view.color5)) ]), A2( $mdgriffith$elm_ui$Element$el, @@ -12936,7 +13520,7 @@ [$mdgriffith$elm_ui$Element$centerX, $mdgriffith$elm_ui$Element$centerY]), $mdgriffith$elm_ui$Element$text('× n ='))); }; -var $author$project$View$CardOpponentHand = {$: 'CardOpponentHand'}; +var $author$project$View$OpponentHandCard = {$: 'OpponentHandCard'}; var $author$project$View$viewGameOpponentHand = function (model) { return A2( $mdgriffith$elm_ui$Element$row, @@ -12956,10 +13540,17 @@ function (_v0) { var rank = _v0.a; var cards = _v0.b; - return A4($author$project$View$viewGameCard, model, $author$project$View$CardOpponentHand, rank, cards); + return A4( + $author$project$View$viewGameCard, + model, + $author$project$View$OpponentHandCard, + $elm$core$Maybe$Just(rank), + cards); }, $elm$core$Dict$toList(model.opponentHand))); }; +var $author$project$Msg$PressPass = {$: 'PressPass'}; +var $author$project$Msg$PressPlay = {$: 'PressPlay'}; var $mdgriffith$elm_ui$Internal$Model$Left = {$: 'Left'}; var $mdgriffith$elm_ui$Element$alignLeft = $mdgriffith$elm_ui$Internal$Model$AlignX($mdgriffith$elm_ui$Internal$Model$Left); var $mdgriffith$elm_ui$Internal$Model$Right = {$: 'Right'}; @@ -12983,7 +13574,7 @@ _List_fromArray( [ A2( - $mdgriffith$elm_ui$Element$el, + $mdgriffith$elm_ui$Element$Input$button, _List_fromArray( [ $mdgriffith$elm_ui$Element$width( @@ -12996,13 +13587,16 @@ $mdgriffith$elm_ui$Element$Background$color( $mdgriffith$elm_ui$Element$fromRgb255(model.view.color4)) ]), + { + label: A2( + $mdgriffith$elm_ui$Element$el, + _List_fromArray( + [$mdgriffith$elm_ui$Element$centerX, $mdgriffith$elm_ui$Element$centerY]), + $mdgriffith$elm_ui$Element$text('Pass')), + onPress: (!_Utils_eq(model.turn, $author$project$Model$Player)) ? $elm$core$Maybe$Nothing : $elm$core$Maybe$Just($author$project$Msg$PressPass) + }), A2( - $mdgriffith$elm_ui$Element$el, - _List_fromArray( - [$mdgriffith$elm_ui$Element$centerX, $mdgriffith$elm_ui$Element$centerY]), - $mdgriffith$elm_ui$Element$text('Draw'))), - A2( - $mdgriffith$elm_ui$Element$el, + $mdgriffith$elm_ui$Element$Input$button, _List_fromArray( [ $mdgriffith$elm_ui$Element$width( @@ -13013,16 +13607,19 @@ $mdgriffith$elm_ui$Element$Border$rounded( A2($author$project$View$boxZoom, model, model.view.gamePlayerButtonRounded)), $mdgriffith$elm_ui$Element$Background$color( - $mdgriffith$elm_ui$Element$fromRgb255(model.view.color4)) + $mdgriffith$elm_ui$Element$fromRgb255(model.view.color5)) ]), - A2( - $mdgriffith$elm_ui$Element$el, - _List_fromArray( - [$mdgriffith$elm_ui$Element$centerX, $mdgriffith$elm_ui$Element$centerY]), - $mdgriffith$elm_ui$Element$text('Play'))) + { + label: A2( + $mdgriffith$elm_ui$Element$el, + _List_fromArray( + [$mdgriffith$elm_ui$Element$centerX, $mdgriffith$elm_ui$Element$centerY]), + $mdgriffith$elm_ui$Element$text('Play')), + onPress: (!_Utils_eq(model.turn, $author$project$Model$Player)) ? $elm$core$Maybe$Nothing : $elm$core$Maybe$Just($author$project$Msg$PressPlay) + }) ])); }; -var $author$project$View$CardPlayerHand = {$: 'CardPlayerHand'}; +var $author$project$View$PlayerHandCard = {$: 'PlayerHandCard'}; var $author$project$View$viewGamePlayerHand = function (model) { return A2( $mdgriffith$elm_ui$Element$row, @@ -13042,20 +13639,17 @@ function (_v0) { var rank = _v0.a; var cards = _v0.b; - return A4($author$project$View$viewGameCard, model, $author$project$View$CardPlayerHand, rank, cards); + return A4( + $author$project$View$viewGameCard, + model, + $author$project$View$PlayerHandCard, + $elm$core$Maybe$Just(rank), + cards); }, $elm$core$Dict$toList(model.playerHand))); }; -var $author$project$View$CardSelectedHand = function (a) { - return {$: 'CardSelectedHand', a: a}; -}; -var $author$project$Utils$maybeIntToInt = function (maybeInt) { - if (maybeInt.$ === 'Just') { - var _int = maybeInt.a; - return _int; - } else { - return 0; - } +var $author$project$View$SelectedHandCard = function (a) { + return {$: 'SelectedHandCard', a: a}; }; var $author$project$View$viewGameSelectedHand = function (model) { return A2( @@ -13071,29 +13665,21 @@ $mdgriffith$elm_ui$Element$spacing( A2($author$project$View$boxZoom, model, model.view.gameHandSpacing)) ]), - _List_fromArray( - [ - A4( - $author$project$View$viewGameCard, - model, - $author$project$View$CardSelectedHand(1), - $author$project$Utils$maybeIntToInt(model.selectedHand.first), - 1), - A2($author$project$View$viewGameCardText, model, '+'), - A4( - $author$project$View$viewGameCard, - model, - $author$project$View$CardSelectedHand(2), - $author$project$Utils$maybeIntToInt(model.selectedHand.second), - 1), - A2($author$project$View$viewGameCardText, model, '+'), - A4( - $author$project$View$viewGameCard, - model, - $author$project$View$CardSelectedHand(3), - $author$project$Utils$maybeIntToInt(model.selectedHand.third), - 1) - ])); + A2( + $elm$core$List$intersperse, + A2($author$project$View$viewGameCardText, model, '+'), + A2( + $elm$core$List$indexedMap, + F2( + function (index, maybeRank) { + return A4( + $author$project$View$viewGameCard, + model, + $author$project$View$SelectedHandCard(index), + maybeRank, + 1); + }), + model.selectedHand))); }; var $author$project$View$view = function (model) { return A2( diff --git a/src/Init.elm b/src/Init.elm index 1c715c0..14a87fe 100644 --- a/src/Init.elm +++ b/src/Init.elm @@ -25,40 +25,75 @@ init _ = initModel : Model initModel = - { field = { first = 0, second = 0, third = 0 } + { field = List.repeat initModelFieldLength Nothing + , fieldLength = initModelFieldLength + , fieldIndex = 0 , playerHand = Dict.empty , opponentHand = Dict.empty - , selectedHand = { first = Nothing, second = Nothing, third = Nothing } - , turn = () - , ranks = Nonempty 1 <| List.range 2 9 - , cards = 9 + , selectedHand = List.repeat initModelFieldLength Nothing + , turn = Model.Player + , turnOpponentSleep = 1000 + , ranks = initModelRanks + , cardsPlayerInit = 7 + , cardsOpponentInit = 5 + , cardsDraw = 1 , view = initModelView } +initModelFieldLength : Int +initModelFieldLength = + 3 + + +initModelRanks : Nonempty Int +initModelRanks = + Nonempty 1 <| List.range 2 initModelRanksMax + + +initModelRanksMax : Int +initModelRanksMax = + 5 + + -- https://colorhunt.co/palette/f4f4f2e8e8e8bbbfca495464 --- https://colorate.azurewebsites.net +-- https://colorhunt.co/palette/d04848f3b95ffde7676895d2 initModelView : Model.View initModelView = + let + lengthInitModelRanks = + max (initModelFieldLength * 2 - 1) (Nonempty.length initModelRanks) + + boxPadding = + 0.5 + + boxSpacing = + 0.5 + + boxRounded = + 0.5 + + boxWidth = + toFloat lengthInitModelRanks * 2 + toFloat (lengthInitModelRanks - 1) * boxSpacing + boxPadding * 2 + in { boxZoom = 1 - , boxWidth = 23 - , boxPadding = 0.5 - , boxSpacing = 0.5 - , boxRounded = 0.5 + , boxWidth = boxWidth + , boxPadding = boxPadding + , boxSpacing = boxSpacing + , boxRounded = boxRounded , gameFontFamily = Font.external { name = "Poppins", url = "https://fonts.googleapis.com/css?family=Poppins" } , gameOpponentHandHeight = 3 - , gameInfoHeight = 1.5 - , gameInfoFontSize = 1 + , gameInfoHeight = 2 , gameFieldHeight = 3 , gameSelectedHandHeight = 3 , gamePlayerHandHeight = 3 - , gamePlayerButtonWidth = 9.5 - , gamePlayerButtonHeight = 1.5 + , gamePlayerButtonWidth = boxWidth / 2 - 1 - boxPadding - boxSpacing + , gamePlayerButtonHeight = 2 , gamePlayerButtonRounded = 0.25 - , gamePlayerButtonFontSize = 0.75 + , gamePlayerButtonFontSize = 1 , gameHandSpacing = 0.5 , gameCardBorderWidth = 0.05 , gameCardWidth = 2 @@ -66,51 +101,32 @@ initModelView = , gameCardRounded = 0.25 , gameCardFontSize = 1 , gameCardNumberFontSize = 0.625 - , color1 = colorWhite - , color2 = colorGray - , color3 = colorPaleNavy - , color4 = colorGrayishBlue + , color1 = { red = 244, green = 244, blue = 242, alpha = 1 } + , color2 = { red = 232, green = 232, blue = 232, alpha = 1 } + , color3 = { red = 187, green = 191, blue = 202, alpha = 1 } + , color4 = { red = 73, green = 84, blue = 100, alpha = 1 } + , color5 = { red = 208, green = 72, blue = 72, alpha = 1 } } -colorWhite : Model.Color -colorWhite = - { red = 244, green = 244, blue = 242, alpha = 1 } - - -colorGray : Model.Color -colorGray = - { red = 232, green = 232, blue = 232, alpha = 1 } - - -colorPaleNavy : Model.Color -colorPaleNavy = - { red = 187, green = 191, blue = 202, alpha = 1 } - - -colorGrayishBlue : Model.Color -colorGrayishBlue = - { red = 73, green = 84, blue = 100, alpha = 1 } - - initSetField : Model -> Cmd Msg initSetField model = Nonempty.sample model.ranks - |> Random.list 3 + |> Random.list 1 |> Random.generate Msg.SetField initDrawCardsPlayer : Model -> Cmd Msg initDrawCardsPlayer model = Nonempty.sample model.ranks - |> Random.list model.cards + |> Random.list model.cardsPlayerInit |> Random.generate Msg.DrawCardsPlayer initDrawCardsOpponent : Model -> Cmd Msg initDrawCardsOpponent model = Nonempty.sample model.ranks - |> Random.list model.cards + |> Random.list model.cardsOpponentInit |> Random.generate Msg.DrawCardsOpponent diff --git a/src/Model.elm b/src/Model.elm index 1bcf5db..7ea9695 100644 --- a/src/Model.elm +++ b/src/Model.elm @@ -7,36 +7,32 @@ import List.Nonempty exposing (Nonempty) type alias Model = { field : Field + , fieldLength : Int + , fieldIndex : Int , playerHand : Hand , opponentHand : Hand - , selectedHand : SelectedHand + , selectedHand : Field , turn : Turn + , turnOpponentSleep : Float , ranks : Nonempty Int - , cards : Int + , cardsPlayerInit : Int + , cardsOpponentInit : Int + , cardsDraw : Int , view : View } type alias Field = - { first : Int - , second : Int - , third : Int - } + List (Maybe Int) type alias Hand = Dict Int Int -type alias SelectedHand = - { first : Maybe Int - , second : Maybe Int - , third : Maybe Int - } - - -type alias Turn = - () +type Turn + = Player + | Opponent type alias View = @@ -48,7 +44,6 @@ type alias View = , gameFontFamily : Font.Font , gameOpponentHandHeight : Float , gameInfoHeight : Float - , gameInfoFontSize : Float , gameFieldHeight : Float , gameSelectedHandHeight : Float , gamePlayerHandHeight : Float @@ -67,6 +62,7 @@ type alias View = , color2 : Color , color3 : Color , color4 : Color + , color5 : Color } diff --git a/src/Msg.elm b/src/Msg.elm index 7dcf8fc..f8b1e9c 100644 --- a/src/Msg.elm +++ b/src/Msg.elm @@ -8,3 +8,7 @@ type Msg | DrawCardsOpponent (List Int) | SelectCard Int | DeselectCard Int Int + | PressPass + | PressPlay + | TurnOpponent + | PlayCardsOpponent (Maybe (List Int)) diff --git a/src/Update.elm b/src/Update.elm index 1584615..cc4cc01 100644 --- a/src/Update.elm +++ b/src/Update.elm @@ -1,9 +1,15 @@ module Update exposing (..) +import Dict import List +import List.Extra +import List.Nonempty as Nonempty exposing (Nonempty(..)) +import Maybe.Extra import Model exposing (Model) import Msg exposing (Msg(..)) -import Tuple exposing (second) +import Process +import Random +import Task import Utils @@ -13,14 +19,14 @@ update msg model = Resize w h -> updateResize model w h - SetField ranks -> - updateSetField model ranks + SetField cards -> + updateSetField model cards - DrawCardsPlayer ranks -> - updateDrawCardsPlayer model ranks + DrawCardsPlayer cards -> + updateDrawCardsPlayer model cards - DrawCardsOpponent ranks -> - updateDrawCardsOpponent model ranks + DrawCardsOpponent cards -> + updateDrawCardsOpponent model cards SelectCard rank -> updateSelectCard model rank @@ -28,6 +34,18 @@ update msg model = DeselectCard index rank -> updateDeselectCard model index rank + PressPass -> + updatePressPass model + + PressPlay -> + updatePressPlay model + + TurnOpponent -> + updateTurnOpponent model + + PlayCardsOpponent maybeCards -> + updatePlayCardsOpponent model maybeCards + updateResize : Model -> Float -> Float -> ( Model, Cmd Msg ) updateResize model w h = @@ -61,30 +79,38 @@ updateResize model w h = updateSetField : Model -> List Int -> ( Model, Cmd Msg ) -updateSetField model ranks = - case List.sort ranks of - [ first, second, third ] -> - ( { model | field = { first = first, second = second, third = third } }, Cmd.none ) +updateSetField model cards = + let + lengthCards = + List.length cards - _ -> - ( model, Cmd.none ) + field = + List.map Just (List.sort cards) + ++ List.repeat (model.fieldLength - lengthCards) Nothing + in + ( { model + | field = field + , fieldIndex = fieldIndex cards + } + , Cmd.none + ) updateDrawCardsPlayer : Model -> List Int -> ( Model, Cmd Msg ) -updateDrawCardsPlayer model ranks = +updateDrawCardsPlayer model cards = let playerHand = - ranks + cards |> List.foldl Utils.addHand model.playerHand in ( { model | playerHand = playerHand }, Cmd.none ) updateDrawCardsOpponent : Model -> List Int -> ( Model, Cmd Msg ) -updateDrawCardsOpponent model ranks = +updateDrawCardsOpponent model cards = let opponentHand = - ranks + cards |> List.foldl Utils.addHand model.opponentHand in ( { model | opponentHand = opponentHand }, Cmd.none ) @@ -93,92 +119,251 @@ updateDrawCardsOpponent model ranks = updateSelectCard : Model -> Int -> ( Model, Cmd Msg ) updateSelectCard model rank = let + playerHand = + Utils.takeHand rank model.playerHand + selectedHand = - model.selectedHand + case List.Extra.findIndex Maybe.Extra.isNothing model.selectedHand of + Just index -> + List.Extra.setAt index (Just rank) model.selectedHand + + Nothing -> + model.selectedHand + in + ( { model + | playerHand = playerHand + , selectedHand = selectedHand + } + , Cmd.none + ) - first = - selectedHand.first - second = - selectedHand.second +updateDeselectCard : Model -> Int -> Int -> ( Model, Cmd Msg ) +updateDeselectCard model index rank = + let + playerHand = + Utils.addHand rank model.playerHand + + selectedHand = + List.Extra.setAt index Nothing model.selectedHand + in + ( { model + | playerHand = playerHand + , selectedHand = selectedHand + } + , Cmd.none + ) - third = - selectedHand.third +updatePressPass : Model -> ( Model, Cmd Msg ) +updatePressPass model = + let playerHand = - Utils.takeHand rank model.playerHand + model.selectedHand + |> List.filterMap identity + |> List.foldl Utils.addHand model.playerHand + + selectedHand = + List.repeat (List.length model.selectedHand) Nothing + + turn = + Model.Opponent in - case ( first, second, third ) of - ( Nothing, _, _ ) -> - ( { model - | playerHand = playerHand - , selectedHand = { selectedHand | first = Just rank } - } - , Cmd.none - ) + ( { model + | playerHand = playerHand + , selectedHand = selectedHand + , turn = turn + } + , Cmd.batch + [ Nonempty.sample model.ranks + |> Random.list model.cardsDraw + |> Random.generate Msg.DrawCardsPlayer + , turnOpponent model + ] + ) + + +updatePressPlay : Model -> ( Model, Cmd Msg ) +updatePressPlay model = + let + cards = + model.selectedHand + |> List.filterMap identity - ( _, Nothing, _ ) -> - ( { model - | playerHand = playerHand - , selectedHand = { selectedHand | second = Just rank } - } - , Cmd.none - ) + lengthCards = + List.length cards - ( _, _, Nothing ) -> - ( { model - | playerHand = playerHand - , selectedHand = { selectedHand | third = Just rank } - } - , Cmd.none - ) + numberCards = + List.sum cards + + maybeNumberField = + model.field + |> List.Extra.getAt model.fieldIndex + |> Maybe.andThen identity + in + case maybeNumberField of + Just numberField -> + if lengthCards > 0 && modBy numberField numberCards == 0 then + let + field = + List.map Just (List.sort cards) + ++ List.repeat (model.fieldLength - lengthCards) Nothing + + playerHand = + Utils.clearHand model.playerHand + + selectedHand = + List.repeat (List.length model.selectedHand) Nothing + + turn = + Model.Opponent + in + ( { model + | field = field + , fieldIndex = fieldIndex cards + , playerHand = playerHand + , selectedHand = selectedHand + , turn = turn + } + , turnOpponent model + ) + + else + ( model, Cmd.none ) _ -> ( model, Cmd.none ) -updateDeselectCard : Model -> Int -> Int -> ( Model, Cmd Msg ) -updateDeselectCard model index rank = +updateTurnOpponent : Model -> ( Model, Cmd Msg ) +updateTurnOpponent model = let - selectedHand = - model.selectedHand + maybeRank = + List.Extra.getAt model.fieldIndex model.field + |> Maybe.andThen identity + in + case maybeRank of + Just rank -> + ( model + , generatorOpponentCards model rank + |> Random.generate Msg.PlayCardsOpponent + ) - first = - selectedHand.first + _ -> + ( model, Cmd.none ) - second = - selectedHand.second - third = - selectedHand.third +updatePlayCardsOpponent : Model -> Maybe (List Int) -> ( Model, Cmd Msg ) +updatePlayCardsOpponent model maybeCards = + case maybeCards of + Just cards -> + let + field = + List.map Just (List.sort cards) + ++ List.repeat (model.fieldLength - List.length cards) Nothing - playerHand = - Utils.addHand rank model.playerHand - in - case index of - 1 -> - ( { model - | playerHand = playerHand - , selectedHand = { selectedHand | first = Nothing } - } - , Cmd.none - ) + opponentHand = + cards + |> List.foldl Utils.takeHand model.opponentHand + |> Utils.clearHand - 2 -> + turn = + Model.Player + in ( { model - | playerHand = playerHand - , selectedHand = { selectedHand | second = Nothing } + | field = field + , opponentHand = opponentHand + , turn = turn } , Cmd.none ) - 3 -> - ( { model - | playerHand = playerHand - , selectedHand = { selectedHand | third = Nothing } - } - , Cmd.none + Nothing -> + let + turn = + Model.Player + in + ( { model | turn = turn } + , Nonempty.sample model.ranks + |> Random.list 1 + |> Random.generate DrawCardsOpponent ) + +fieldIndex : List Int -> Int +fieldIndex _ = + 0 + + +turnOpponent : Model -> Cmd Msg +turnOpponent model = + Process.sleep model.turnOpponentSleep + |> Task.perform (\_ -> Msg.TurnOpponent) + + +generatorOpponentCards : Model -> Int -> Random.Generator (Maybe (List Int)) +generatorOpponentCards model rank = + case listOpponentCards model rank of + x :: xs -> + Nonempty x xs + |> Nonempty.map Just + |> Nonempty.sample + _ -> - ( model, Cmd.none ) + Random.constant Nothing + + +listOpponentCards : Model -> Int -> List (List Int) +listOpponentCards model rank = + List.range 1 model.fieldLength + |> List.concatMap + (\length_ -> + cartesianListCards model.opponentHand length_ + |> filterCards model.opponentHand + ) + |> List.filter + (\cards -> + modBy rank (List.sum cards) == 0 + ) + |> List.filter + (\cards -> + let + maybeRank = + List.Extra.getAt (fieldIndex cards) cards + in + case maybeRank of + Just rank_ -> + if Utils.lengthHand model.opponentHand > List.length cards && Utils.lengthHand model.playerHand <= model.fieldLength then + modBy rank_ (Utils.sumHand model.playerHand) /= 0 + + else + True + + Nothing -> + False + ) + + +filterCards : Model.Hand -> List (List Int) -> List (List Int) +filterCards hand listCards = + listCards + |> List.filter + (\cards -> + cards + |> List.foldl Utils.addHand Dict.empty + |> Utils.containHand hand + ) + + +cartesianListCards : Model.Hand -> Int -> List (List Int) +cartesianListCards hand length = + if length == 0 then + [ [] ] + + else + Dict.keys hand + |> List.concatMap + (\rank -> + cartesianListCards hand (length - 1) + |> List.map (\listCards -> rank :: listCards) + ) diff --git a/src/Utils.elm b/src/Utils.elm index 6d84dd3..55fe64b 100644 --- a/src/Utils.elm +++ b/src/Utils.elm @@ -39,11 +39,26 @@ clearHand hand = (\_ number -> number > 0) -maybeIntToInt : Maybe Int -> Int -maybeIntToInt maybeInt = - case maybeInt of - Just int -> - int - - Nothing -> - 0 \ No newline at end of file +containHand : Model.Hand -> Model.Hand -> Bool +containHand hand1 hand2 = + Dict.merge + (\_ _ result -> result) + (\_ a b result -> a >= b && result) + (\_ _ result -> result) + hand1 + hand2 + True + + +lengthHand : Model.Hand -> Int +lengthHand hand = + Dict.values hand + |> List.sum + + +sumHand : Model.Hand -> Int +sumHand hand = + Dict.foldl + (\rank number sum -> rank * number + sum) + 0 + hand diff --git a/src/View.elm b/src/View.elm index 2cede50..f4dd3c0 100644 --- a/src/View.elm +++ b/src/View.elm @@ -7,9 +7,9 @@ import Element.Border as Border import Element.Font as Font import Element.Input as Input import Html exposing (Html) +import Maybe.Extra import Model exposing (Model) import Msg exposing (Msg) -import Utils view : Model -> Html Msg @@ -46,7 +46,7 @@ viewGameOpponentHand model = , Element.spacing <| boxZoom model model.view.gameHandSpacing ] <| - List.map (\( rank, cards ) -> viewGameCard model CardOpponentHand rank cards) <| + List.map (\( rank, cards ) -> viewGameCard model OpponentHandCard (Just rank) cards) <| Dict.toList model.opponentHand @@ -59,12 +59,9 @@ viewGameField model = , Element.centerY , Element.spacing <| boxZoom model model.view.gameHandSpacing ] - [ viewGameCard model CardField model.field.first 1 - , viewGameCardText model "≤" - , viewGameCard model CardField model.field.second 1 - , viewGameCardText model "≤" - , viewGameCard model CardField model.field.third 1 - ] + <| + List.intersperse (viewGameCardText model "≤") <| + List.indexedMap (\index maybeRank -> viewGameCard model (FieldCard index) maybeRank 1) model.field viewGameInfo : Model -> Element Msg @@ -73,8 +70,10 @@ viewGameInfo model = [ Element.width Element.fill , Element.height <| Element.px <| boxZoom model model.view.gameInfoHeight , Element.centerX - , Font.color <| Element.fromRgb255 model.view.color4 - , Font.size <| boxZoom model model.view.gameInfoFontSize + , Element.centerY + , Element.spacing <| boxZoom model model.view.gameHandSpacing + , Font.size <| boxZoom model model.view.gameCardFontSize + , Font.color <| Element.fromRgb255 model.view.color5 ] <| Element.el @@ -94,12 +93,9 @@ viewGameSelectedHand model = , Element.centerY , Element.spacing <| boxZoom model model.view.gameHandSpacing ] - [ viewGameCard model (CardSelectedHand 1) (Utils.maybeIntToInt model.selectedHand.first) 1 - , viewGameCardText model "+" - , viewGameCard model (CardSelectedHand 2) (Utils.maybeIntToInt model.selectedHand.second) 1 - , viewGameCardText model "+" - , viewGameCard model (CardSelectedHand 3) (Utils.maybeIntToInt model.selectedHand.third) 1 - ] + <| + List.intersperse (viewGameCardText model "+") <| + List.indexedMap (\index maybeRank -> viewGameCard model (SelectedHandCard index) maybeRank 1) model.selectedHand viewGamePlayerHand : Model -> Element Msg @@ -112,7 +108,7 @@ viewGamePlayerHand model = , Element.spacing <| boxZoom model model.view.gameHandSpacing ] <| - List.map (\( rank, cards ) -> viewGameCard model CardPlayerHand rank cards) <| + List.map (\( rank, cards ) -> viewGameCard model PlayerHandCard (Just rank) cards) <| Dict.toList model.playerHand @@ -126,54 +122,133 @@ viewGamePlayerButton model = , Font.size <| boxZoom model model.view.gamePlayerButtonFontSize , Font.color <| Element.fromRgb255 model.view.color1 ] - [ Element.el + [ Input.button [ Element.width <| Element.px <| boxZoom model model.view.gamePlayerButtonWidth , Element.height Element.fill , Element.alignLeft , Border.rounded <| boxZoom model model.view.gamePlayerButtonRounded , Background.color <| Element.fromRgb255 model.view.color4 ] - <| - Element.el - [ Element.centerX - , Element.centerY - ] - <| - Element.text "Draw" - , Element.el + { onPress = + if model.turn /= Model.Player then + Nothing + + else + Just Msg.PressPass + , label = + Element.el + [ Element.centerX + , Element.centerY + ] + <| + Element.text "Pass" + } + , Input.button [ Element.width <| Element.px <| boxZoom model model.view.gamePlayerButtonWidth , Element.height Element.fill , Element.alignRight , Border.rounded <| boxZoom model model.view.gamePlayerButtonRounded - , Background.color <| Element.fromRgb255 model.view.color4 + , Background.color <| Element.fromRgb255 model.view.color5 ] - <| - Element.el - [ Element.centerX - , Element.centerY - ] - <| - Element.text "Play" + { onPress = + if model.turn /= Model.Player then + Nothing + + else + Just Msg.PressPlay + , label = + Element.el + [ Element.centerX + , Element.centerY + ] + <| + Element.text "Play" + } ] -viewGameCard : Model -> Card -> Int -> Int -> Element Msg -viewGameCard model card rank cards = +viewGameCard : Model -> GameCard -> Maybe Int -> Int -> Element Msg +viewGameCard model gameCard maybeRank cards = let labelRank = - if rank <= 0 || cards == 0 then - "" + case maybeRank of + Just rank -> + if cards <= 0 then + "" - else - String.fromInt rank + else + String.fromInt rank + + Nothing -> + "" labelNumber = - if rank <= 0 || cards <= 1 then + if Maybe.Extra.isNothing maybeRank || cards <= 1 then "" else "× " ++ String.fromInt cards + backgroundColor = + if Maybe.Extra.isNothing maybeRank || cards == 0 then + model.view.color3 + + else + case gameCard of + FieldCard index -> + if index == model.fieldIndex then + model.view.color1 + + else + model.view.color3 + + PlayerHandCard -> + if model.turn == Model.Player then + model.view.color1 + + else + model.view.color3 + + OpponentHandCard -> + if model.turn == Model.Opponent then + model.view.color1 + + else + model.view.color3 + + _ -> + model.view.color1 + + borderColor = + case gameCard of + FieldCard index -> + if index == model.fieldIndex then + model.view.color5 + + else + model.view.color3 + + SelectedHandCard _ -> + model.view.color5 + + _ -> + model.view.color3 + + fontColor = + model.view.color4 + + attributes = + [ Background.color <| Element.fromRgb255 backgroundColor + , Element.width <| Element.px <| boxZoom model model.view.gameCardWidth + , Element.height <| Element.px <| boxZoom model model.view.gameCardHeight + , Border.width <| boxZoom model model.view.gameCardBorderWidth + , Border.color <| Element.fromRgb255 borderColor + , Border.rounded <| boxZoom model model.view.gameCardRounded + , Element.centerX + , Element.centerY + , Font.color <| Element.fromRgb255 fontColor + ] + label = Element.column [ Element.width <| Element.fill @@ -201,53 +276,27 @@ viewGameCard model card rank cards = Element.el [ Element.centerY ] <| Element.text labelNumber ] - - backgroundColor = - if rank <= 0 || cards == 0 then - model.view.color3 - - else - model.view.color1 - - fontColor = - if rank <= 0 || cards == 0 then - model.view.color1 - - else - model.view.color4 - - attributes = - [ Background.color <| Element.fromRgb255 backgroundColor - , Element.width <| Element.px <| boxZoom model model.view.gameCardWidth - , Element.height <| Element.px <| boxZoom model model.view.gameCardHeight - , Border.width <| boxZoom model model.view.gameCardBorderWidth - , Border.color <| Element.fromRgb255 model.view.color3 - , Border.rounded <| boxZoom model model.view.gameCardRounded - , Element.centerX - , Element.centerY - , Font.color <| Element.fromRgb255 fontColor - ] in - case card of - CardPlayerHand -> + case gameCard of + PlayerHandCard -> Input.button attributes { onPress = - if cards <= 0 then + if model.turn /= Model.Player || cards <= 0 || List.all Maybe.Extra.isJust model.selectedHand then Nothing else - Just (Msg.SelectCard rank) + Maybe.map Msg.SelectCard maybeRank , label = label } - CardSelectedHand index -> + SelectedHandCard index -> Input.button attributes { onPress = - if rank <= 0 then + if model.turn /= Model.Player then Nothing else - Just (Msg.DeselectCard index rank) + Maybe.map (Msg.DeselectCard index) maybeRank , label = label } @@ -255,11 +304,11 @@ viewGameCard model card rank cards = Element.el attributes label -type Card - = CardField - | CardPlayerHand - | CardOpponentHand - | CardSelectedHand Int +type GameCard + = FieldCard Int + | PlayerHandCard + | OpponentHandCard + | SelectedHandCard Int viewGameCardText : Model -> String -> Element Msg