From 4846ab077b69300c1afd7c84ca4cb6563ddcead8 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 13 Jan 2024 18:03:31 +0900 Subject: [PATCH] enhance(drop-and-fusion): refactor and new mode(wip) --- .../{ => normal_monos}/cold_face.png | Bin .../{ => normal_monos}/exploding_head.png | Bin .../face_with_open_mouth.png | Bin .../face_with_symbols_on_mouth.png | Bin .../grinning_squinting_face.png | Bin .../{ => normal_monos}/heart_suit.png | Bin .../{ => normal_monos}/pleading_face.png | Bin .../smiling_face_with_hearts.png | Bin .../smiling_face_with_sunglasses.png | Bin .../{ => normal_monos}/zany_face.png | Bin .../{ => square_monos}/keycap_1.png | Bin .../{ => square_monos}/keycap_10.png | Bin .../{ => square_monos}/keycap_2.png | Bin .../{ => square_monos}/keycap_3.png | Bin .../{ => square_monos}/keycap_4.png | Bin .../{ => square_monos}/keycap_5.png | Bin .../{ => square_monos}/keycap_6.png | Bin .../{ => square_monos}/keycap_7.png | Bin .../{ => square_monos}/keycap_8.png | Bin .../{ => square_monos}/keycap_9.png | Bin .../sweets_monos/candy_color.svg | Bin 0 -> 8235 bytes .../sweets_monos/chocolate_bar_color.svg | Bin 0 -> 55848 bytes .../sweets_monos/cookie_color.svg | Bin 0 -> 11107 bytes .../sweets_monos/custard_color.svg | Bin 0 -> 3087 bytes .../sweets_monos/doughnut_color.svg | Bin 0 -> 25827 bytes .../sweets_monos/lollipop_color.svg | Bin 0 -> 8738 bytes .../sweets_monos/pancakes_color.svg | Bin 0 -> 25815 bytes .../sweets_monos/shaved_ice_color.svg | Bin 0 -> 16219 bytes .../sweets_monos/shortcake_color.svg | Bin 0 -> 15485 bytes .../sweets_monos/soft_ice_cream_color.svg | Bin 0 -> 17531 bytes .../sweets_monos/verts/candy_color.svg | Bin 0 -> 607 bytes .../sweets_monos/verts/custard_color.svg | Bin 0 -> 522 bytes .../{ => yen_monos}/10000yen.png | Bin .../{ => yen_monos}/1000yen.png | Bin .../{ => yen_monos}/100yen.png | Bin .../drop-and-fusion/{ => yen_monos}/10yen.png | Bin .../drop-and-fusion/{ => yen_monos}/1yen.png | Bin .../{ => yen_monos}/2000yen.png | Bin .../{ => yen_monos}/5000yen.png | Bin .../{ => yen_monos}/500yen.png | Bin .../drop-and-fusion/{ => yen_monos}/50yen.png | Bin .../drop-and-fusion/{ => yen_monos}/5yen.png | Bin .../src/pages/drop-and-fusion.game.vue | 173 +++++++++++--- .../frontend/src/pages/drop-and-fusion.vue | 15 +- .../src/scripts/drop-and-fusion-engine.ts | 216 +++++++++++++++++- 45 files changed, 356 insertions(+), 48 deletions(-) rename packages/frontend/assets/drop-and-fusion/{ => normal_monos}/cold_face.png (100%) rename packages/frontend/assets/drop-and-fusion/{ => normal_monos}/exploding_head.png (100%) rename packages/frontend/assets/drop-and-fusion/{ => normal_monos}/face_with_open_mouth.png (100%) rename packages/frontend/assets/drop-and-fusion/{ => normal_monos}/face_with_symbols_on_mouth.png (100%) rename packages/frontend/assets/drop-and-fusion/{ => normal_monos}/grinning_squinting_face.png (100%) rename packages/frontend/assets/drop-and-fusion/{ => normal_monos}/heart_suit.png (100%) rename packages/frontend/assets/drop-and-fusion/{ => normal_monos}/pleading_face.png (100%) rename packages/frontend/assets/drop-and-fusion/{ => normal_monos}/smiling_face_with_hearts.png (100%) rename packages/frontend/assets/drop-and-fusion/{ => normal_monos}/smiling_face_with_sunglasses.png (100%) rename packages/frontend/assets/drop-and-fusion/{ => normal_monos}/zany_face.png (100%) rename packages/frontend/assets/drop-and-fusion/{ => square_monos}/keycap_1.png (100%) rename packages/frontend/assets/drop-and-fusion/{ => square_monos}/keycap_10.png (100%) rename packages/frontend/assets/drop-and-fusion/{ => square_monos}/keycap_2.png (100%) rename packages/frontend/assets/drop-and-fusion/{ => square_monos}/keycap_3.png (100%) rename packages/frontend/assets/drop-and-fusion/{ => square_monos}/keycap_4.png (100%) rename packages/frontend/assets/drop-and-fusion/{ => square_monos}/keycap_5.png (100%) rename packages/frontend/assets/drop-and-fusion/{ => square_monos}/keycap_6.png (100%) rename packages/frontend/assets/drop-and-fusion/{ => square_monos}/keycap_7.png (100%) rename packages/frontend/assets/drop-and-fusion/{ => square_monos}/keycap_8.png (100%) rename packages/frontend/assets/drop-and-fusion/{ => square_monos}/keycap_9.png (100%) create mode 100644 packages/frontend/assets/drop-and-fusion/sweets_monos/candy_color.svg create mode 100644 packages/frontend/assets/drop-and-fusion/sweets_monos/chocolate_bar_color.svg create mode 100644 packages/frontend/assets/drop-and-fusion/sweets_monos/cookie_color.svg create mode 100644 packages/frontend/assets/drop-and-fusion/sweets_monos/custard_color.svg create mode 100644 packages/frontend/assets/drop-and-fusion/sweets_monos/doughnut_color.svg create mode 100644 packages/frontend/assets/drop-and-fusion/sweets_monos/lollipop_color.svg create mode 100644 packages/frontend/assets/drop-and-fusion/sweets_monos/pancakes_color.svg create mode 100644 packages/frontend/assets/drop-and-fusion/sweets_monos/shaved_ice_color.svg create mode 100644 packages/frontend/assets/drop-and-fusion/sweets_monos/shortcake_color.svg create mode 100644 packages/frontend/assets/drop-and-fusion/sweets_monos/soft_ice_cream_color.svg create mode 100644 packages/frontend/assets/drop-and-fusion/sweets_monos/verts/candy_color.svg create mode 100644 packages/frontend/assets/drop-and-fusion/sweets_monos/verts/custard_color.svg rename packages/frontend/assets/drop-and-fusion/{ => yen_monos}/10000yen.png (100%) rename packages/frontend/assets/drop-and-fusion/{ => yen_monos}/1000yen.png (100%) rename packages/frontend/assets/drop-and-fusion/{ => yen_monos}/100yen.png (100%) rename packages/frontend/assets/drop-and-fusion/{ => yen_monos}/10yen.png (100%) rename packages/frontend/assets/drop-and-fusion/{ => yen_monos}/1yen.png (100%) rename packages/frontend/assets/drop-and-fusion/{ => yen_monos}/2000yen.png (100%) rename packages/frontend/assets/drop-and-fusion/{ => yen_monos}/5000yen.png (100%) rename packages/frontend/assets/drop-and-fusion/{ => yen_monos}/500yen.png (100%) rename packages/frontend/assets/drop-and-fusion/{ => yen_monos}/50yen.png (100%) rename packages/frontend/assets/drop-and-fusion/{ => yen_monos}/5yen.png (100%) diff --git a/packages/frontend/assets/drop-and-fusion/cold_face.png b/packages/frontend/assets/drop-and-fusion/normal_monos/cold_face.png similarity index 100% rename from packages/frontend/assets/drop-and-fusion/cold_face.png rename to packages/frontend/assets/drop-and-fusion/normal_monos/cold_face.png diff --git a/packages/frontend/assets/drop-and-fusion/exploding_head.png b/packages/frontend/assets/drop-and-fusion/normal_monos/exploding_head.png similarity index 100% rename from packages/frontend/assets/drop-and-fusion/exploding_head.png rename to packages/frontend/assets/drop-and-fusion/normal_monos/exploding_head.png diff --git a/packages/frontend/assets/drop-and-fusion/face_with_open_mouth.png b/packages/frontend/assets/drop-and-fusion/normal_monos/face_with_open_mouth.png similarity index 100% rename from packages/frontend/assets/drop-and-fusion/face_with_open_mouth.png rename to packages/frontend/assets/drop-and-fusion/normal_monos/face_with_open_mouth.png diff --git a/packages/frontend/assets/drop-and-fusion/face_with_symbols_on_mouth.png b/packages/frontend/assets/drop-and-fusion/normal_monos/face_with_symbols_on_mouth.png similarity index 100% rename from packages/frontend/assets/drop-and-fusion/face_with_symbols_on_mouth.png rename to packages/frontend/assets/drop-and-fusion/normal_monos/face_with_symbols_on_mouth.png diff --git a/packages/frontend/assets/drop-and-fusion/grinning_squinting_face.png b/packages/frontend/assets/drop-and-fusion/normal_monos/grinning_squinting_face.png similarity index 100% rename from packages/frontend/assets/drop-and-fusion/grinning_squinting_face.png rename to packages/frontend/assets/drop-and-fusion/normal_monos/grinning_squinting_face.png diff --git a/packages/frontend/assets/drop-and-fusion/heart_suit.png b/packages/frontend/assets/drop-and-fusion/normal_monos/heart_suit.png similarity index 100% rename from packages/frontend/assets/drop-and-fusion/heart_suit.png rename to packages/frontend/assets/drop-and-fusion/normal_monos/heart_suit.png diff --git a/packages/frontend/assets/drop-and-fusion/pleading_face.png b/packages/frontend/assets/drop-and-fusion/normal_monos/pleading_face.png similarity index 100% rename from packages/frontend/assets/drop-and-fusion/pleading_face.png rename to packages/frontend/assets/drop-and-fusion/normal_monos/pleading_face.png diff --git a/packages/frontend/assets/drop-and-fusion/smiling_face_with_hearts.png b/packages/frontend/assets/drop-and-fusion/normal_monos/smiling_face_with_hearts.png similarity index 100% rename from packages/frontend/assets/drop-and-fusion/smiling_face_with_hearts.png rename to packages/frontend/assets/drop-and-fusion/normal_monos/smiling_face_with_hearts.png diff --git a/packages/frontend/assets/drop-and-fusion/smiling_face_with_sunglasses.png b/packages/frontend/assets/drop-and-fusion/normal_monos/smiling_face_with_sunglasses.png similarity index 100% rename from packages/frontend/assets/drop-and-fusion/smiling_face_with_sunglasses.png rename to packages/frontend/assets/drop-and-fusion/normal_monos/smiling_face_with_sunglasses.png diff --git a/packages/frontend/assets/drop-and-fusion/zany_face.png b/packages/frontend/assets/drop-and-fusion/normal_monos/zany_face.png similarity index 100% rename from packages/frontend/assets/drop-and-fusion/zany_face.png rename to packages/frontend/assets/drop-and-fusion/normal_monos/zany_face.png diff --git a/packages/frontend/assets/drop-and-fusion/keycap_1.png b/packages/frontend/assets/drop-and-fusion/square_monos/keycap_1.png similarity index 100% rename from packages/frontend/assets/drop-and-fusion/keycap_1.png rename to packages/frontend/assets/drop-and-fusion/square_monos/keycap_1.png diff --git a/packages/frontend/assets/drop-and-fusion/keycap_10.png b/packages/frontend/assets/drop-and-fusion/square_monos/keycap_10.png similarity index 100% rename from packages/frontend/assets/drop-and-fusion/keycap_10.png rename to packages/frontend/assets/drop-and-fusion/square_monos/keycap_10.png diff --git a/packages/frontend/assets/drop-and-fusion/keycap_2.png b/packages/frontend/assets/drop-and-fusion/square_monos/keycap_2.png similarity index 100% rename from packages/frontend/assets/drop-and-fusion/keycap_2.png rename to packages/frontend/assets/drop-and-fusion/square_monos/keycap_2.png diff --git a/packages/frontend/assets/drop-and-fusion/keycap_3.png b/packages/frontend/assets/drop-and-fusion/square_monos/keycap_3.png similarity index 100% rename from packages/frontend/assets/drop-and-fusion/keycap_3.png rename to packages/frontend/assets/drop-and-fusion/square_monos/keycap_3.png diff --git a/packages/frontend/assets/drop-and-fusion/keycap_4.png b/packages/frontend/assets/drop-and-fusion/square_monos/keycap_4.png similarity index 100% rename from packages/frontend/assets/drop-and-fusion/keycap_4.png rename to packages/frontend/assets/drop-and-fusion/square_monos/keycap_4.png diff --git a/packages/frontend/assets/drop-and-fusion/keycap_5.png b/packages/frontend/assets/drop-and-fusion/square_monos/keycap_5.png similarity index 100% rename from packages/frontend/assets/drop-and-fusion/keycap_5.png rename to packages/frontend/assets/drop-and-fusion/square_monos/keycap_5.png diff --git a/packages/frontend/assets/drop-and-fusion/keycap_6.png b/packages/frontend/assets/drop-and-fusion/square_monos/keycap_6.png similarity index 100% rename from packages/frontend/assets/drop-and-fusion/keycap_6.png rename to packages/frontend/assets/drop-and-fusion/square_monos/keycap_6.png diff --git a/packages/frontend/assets/drop-and-fusion/keycap_7.png b/packages/frontend/assets/drop-and-fusion/square_monos/keycap_7.png similarity index 100% rename from packages/frontend/assets/drop-and-fusion/keycap_7.png rename to packages/frontend/assets/drop-and-fusion/square_monos/keycap_7.png diff --git a/packages/frontend/assets/drop-and-fusion/keycap_8.png b/packages/frontend/assets/drop-and-fusion/square_monos/keycap_8.png similarity index 100% rename from packages/frontend/assets/drop-and-fusion/keycap_8.png rename to packages/frontend/assets/drop-and-fusion/square_monos/keycap_8.png diff --git a/packages/frontend/assets/drop-and-fusion/keycap_9.png b/packages/frontend/assets/drop-and-fusion/square_monos/keycap_9.png similarity index 100% rename from packages/frontend/assets/drop-and-fusion/keycap_9.png rename to packages/frontend/assets/drop-and-fusion/square_monos/keycap_9.png diff --git a/packages/frontend/assets/drop-and-fusion/sweets_monos/candy_color.svg b/packages/frontend/assets/drop-and-fusion/sweets_monos/candy_color.svg new file mode 100644 index 0000000000000000000000000000000000000000..6eab3ca49b84773eed8fcb66f806103860ae1926 GIT binary patch literal 8235 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 literal 0 HcmV?d00001 diff --git a/packages/frontend/assets/drop-and-fusion/sweets_monos/cookie_color.svg b/packages/frontend/assets/drop-and-fusion/sweets_monos/cookie_color.svg new file mode 100644 index 0000000000000000000000000000000000000000..42b628cca13536d363969cbe8d0b7c3f782d32a6 GIT binary patch literal 11107 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 literal 0 HcmV?d00001 diff --git a/packages/frontend/assets/drop-and-fusion/sweets_monos/custard_color.svg b/packages/frontend/assets/drop-and-fusion/sweets_monos/custard_color.svg new file mode 100644 index 0000000000000000000000000000000000000000..c76b3335e599f34d9e58263741d668f0bc67758d GIT binary patch literal 3087 zcmd5;O;6iE5WV+TtjvWRy4f%9M@5jFO&|xV9$GHFAPbztlCdM(5cv0VAc`=}oyydtkS7Sy98N6epDT(8m1B>1kdQHV+`)J2FTMNBT3 z#9Uu6fr<7{v}GJ?h#LUM6hg!pW-eG5tcBIsNH?o7-2tCh{=G}^uFQ^)HgTHQJYFm|L?EPtzaR4Ml|&q)*B3hLK%;RU{&AhTy_5#=3%;Fgz2}A-K{)64B9Z zDm0M;@UFg*RYtOR>f5u_Mqh!sYUSmmt?{s1^I3AOIZ#65BRT*GQCqy}<_k$P@S#SAyy-Z5J9XrOnxG>z3_y4&dj%pt8G zq1)fdyLSjQyumHJJ3%KnvYfOH;_1TVVNCa$S4$o0!4eNCctTf($VSm2GED6h4#O8% zHz&z?&z5^N ss!-ahq6Y+_IFz7=B!Hp(1xcba1D}O&OA^gJ?m$V#?K$qg*H6Fv0V(idn*aa+ literal 0 HcmV?d00001 diff --git a/packages/frontend/assets/drop-and-fusion/sweets_monos/doughnut_color.svg b/packages/frontend/assets/drop-and-fusion/sweets_monos/doughnut_color.svg new file mode 100644 index 0000000000000000000000000000000000000000..e8e225bc0a9fdef290f3dedfb02e54ec722be572 GIT binary patch literal 25827 zcmeI5+in|4l7{c+DG2&z`oeTo)+uW+8bG4Vo&_{mVCQf#H-=zQwyB zWSvA(lHIaluheL?__HFbGNa<0k?cQT|N3tB>Fng@{ocF?^V$3L*}L~Q{`uFl^{0c& z-}dI&ESnX9f9JE)v-9)4`NieMdOrK@m-CD3z4`l_n-70__3G27Pm52*;_~X|}5Lx6mxOM_w*NwWym}yC}+8$QL2Z>RDdT>SdlSnh2;DMd6pr zMI9OO*YaO^TtW@DE6uFPG^WUwA?Q0`i0L{X^7t=C*#rOmw~#HWS>7yao@^i6MdXXP zXmUNjF1ZsF_VKTIwWyYPu?TH*K38d3;mkA(TJOUp;g0q1?;gTpgdB9iKmQ?@MGa z+`~OIEiBR3W`+$|#5`0pbQvY|&!}|z#Op#CXi1eT>4ks(v%#V6If7E zUI!BmPS;%!bFBqQ%8CC*2JGZcdiZoO~osR@*uGPOkiBeYH0?C*&Y|b2>7i z6aP~#%80I_K1JOYOZno2bFled!`UJR$4-w)03V_GO~!aUY1tO&aIvTy*TOS!UfcDA z1G+Y*4~s?^h0Pc+!!mTZh>ne(>lN6ZSBk!yZ?R|-t{R_TNb~RTczwNYzi48yEDLkS zuin9tt$fRO^9_qvVHB}Xd8=q88mbm85ypUOtYAk;uuy6KvCug9+=$y*LM2wX#QOR* zM^!>j*(4N=(orR2$vCIv3Au5o9cIS+NXTABNRu`&tYE~KqBtzWJ$wnf`H~|KIXuXS z_Npb(SDRp7STJUgz^iEu8ZoeH;Z3$^17iuYV$N9N#sur!yh#!LYJz!!BIXvY!FG{B zJc31KW1W}>RsNuQGRZu_s*AoS?_pH2lTipjRusHE{8fxW!D&o5 z1Iv#&Mj?=335?T+MFlaQV0pfx^6MS067J}mgmHdG?>H=q%(2t+ zJg}bEG~@Y7=p2`=&o89;cX+(Mfp0OOcq6_Ii3CrmT(v`+2PsFDa0!-}2gN9;euuM! zMK8e*g`1Kp*LVdbjtj6UqA-%u5Q!V-9XGzFf45wG_);-L0UMV9jGwgzNr*RyFr8|bJ zMXVDxdJ=y{&7J+B(i zmx(*BbEC%z`TP@}uCJH07j;v_;_x1uRqf=P40OZ#;-U;$otuSr9E4@`8{r1NBy997 zSNKS_s^WT$Q?T)P2gi-D9B06abG^sdk`X;c0pVtmck~IDWg2hv%H_M~i9h{($rT*e zh0*7W+~=S0bbTYf9bmJvfp5LdlKZciZ)n=Kl^o&K>P03bDFPu%g(0J)mLQ}zO0Xhz zws9;-s1lO&;QmL5s>+BG_m5%eC_%&k46|`i5(5b739%h!CW!@=(I`pVG|wIlYv|WJ zSfzN6ReB0MXg|a5)I0SjF0wkytkhMbzf1Ha;apgHW0?3S2zT@mI{-f7`%>eflm3&t zX9?G456I=CU+-|0a7W)5=Dvx(!$s8dh>p_rN?6aM;y28fc_dufd`alj{5w2ZUoT59 z>QJ;}yVL7WBuXr(4z|<_Fs;joA~+^CCDHG&s(Ox{KBCCrqZY#_`UWl2csP)7CCq*6 z%CC1gChYV|J1S}!4eBWR4zsex$2&b1M40Dg&2+vo;WEv)O7rjVWPLqH2JOo4s}Mf3 zD8H`^NNh@JnfNVl8&ZK%))ZgTf)qD9sw+pL4EWEcI>JKd7D3mI#t|_aDnYW|O5TVy z6QZ~ba!O3Rp=j3};k$AlCrX|G(i1Y$wP9vT-iR|ZpG#%4?$EG?ZE_OsGs91T3HKG^ zctcU;03s2}4wNIb5#YE0>kSqvPjJ1%dBUPs3R(oNlRp+w8$rkXehi^T$2?PX~-jO8>j_IdmT|oF(gVX2S^!VW|?{wHI97M5HUBD1axeO zp`-~lhC0gD5Jf4Y6v8$IN225jAmzBN6~()m;rp1UoSxYgn{|hVHEffUdy~zlz=Y4q zC!3vd9Tf=$3usnAd9@W$IxJKDBI7l2)ghHshax^w#K9{?8%v4{1Te9UnWa*}iw%xd z&`QM&kpml`_EyQ51gmtl*3QfTqeBrNb(QEe0eV4E z_^@oZr9#}Uz^$>)Oe@jT61J6qgB-HBq?LiQghek#6mp=C0CgeU9kW$i_^ zUyuS0+P8JrqTR_i)&x3f!GdD1<4RcTB{Q`7J4Rp~7sApRCZ_pP#?W|dnd3rO zI%=58M{79IQv?x~O<B2^Ye8LI_iwIW~H6B;aqE5%Ippvtq|&0~((&64@kd z^y-yK^rh%2+jQ5dE>AGkYGI=nM<_1a^C}y!{WQbmH$LBl$$lJ<*Vl7ouv+211oW9j z;l2cv2#mBJc_aXo?;~<_%qEU}#|WEm>FKc#^30N78;|tKmmz%}HeW_Tld^@$d%`M9 z7&dweIvqCO*kgiK`A!N(ew~;O%=1*n7|&N_48yj2D*c|~$@;cQ(S7M@zvQROq6Z|e zLA$}K_(bvtnGSFd!akC z`(eZh7L`LI=0QMZtgSYphe_H_GzGcRXI1)~J2+a=HnDj?wmQ1Q)8NUD^mMDQr+m1p zwL<~1_OZ2}Ks{N`x=7esJjf{6^|sxrgz*%PMNjotJL+85b`0aG!FJeMJVw}BJbHS( zKQ#_g8TMK<9&fIi2XQys`D3i@eZ!(x0^sxIdDLt)-v+m?=X;AshuK}TfV`vk_4U&A zqFxpIeYSX~vT!S;Anbw48~wgKV99C8SK=DXIDftFtqck{qC~yMqImm3bYW zmA2}P>*-lJ7<%@nsH1b8C{NeD?ml30KEEz{aYFON3X}6|o-Kg{Tv0tBA#_!B>qP1E z>^U%U?)PQ+lN&q@mV8dmPwDwC_0r}c94up5q8=pZ8RAL~pnTsWKZHoZu3nWzf;~1~ zTkcLth*m1yr^ZVw;;fJ&(Fa0F{jJ#CRb-lznIk-PQP+rvav9Wv$|8Ln++SrN)J$EL z>L#huPHcBGwi;!%>nxXSp*y3=Z6f+$~kYK?=j&K?;A8pf56lY?1X zX`#Oqu%=j@J)!kNxm}lQ3z5cA=rYO|+8R|-pNEo0EZGKc+O7%6)sWii$uLd#hFC08 zX`d}AQR^aaj(@lccUq}EoXjd}Fq2ttci#v@y*%g#Y=xW#Ml4x^MN|}PuHvS%gdA5ss8)&lHq4JOd*@k zuGZHd&p9k`aQyav-(6jPyg2!^jxP?*KVHqQZ%z)^znH6&rnt6G(_UUO%-{9!ku`hSq3mB_(_X3cI!d?Iod}yB8{}tIkwi3pE zbXS3evma}g^QzOym1pt4M5`WG{KqYc&VLLqoqNWAqWgki@c9LNMFkl5rTGgWLcqh@ z3s5^YVe|6~_=+!J+~DR8z@s610R-LZEqi_eU-1QuJEZIdP~TD`k-Y#iFf}LL`2zB` z#Ywn}e-42xLi?-`XuOqaFM#-1+m7}E@W(1jPF_F*?2eG)l%M(k`$Ew1&X)0C840BU z=RXM!n@SV@Kj#3C8w8EF$m|6u`=*p`FMza9yHk@F!0yen20UgGHm+OR8=!)$a-pjL z5s{_Dqdef*1U+sRypaY|1}Qrqz=l-WW`hr)+Fw(d7*s%oiV~H0T0R(tbhVM+TZGt5 zgXx!{4rcPt;lPRfQ<19acOKZUb|H#^&-{O25y*dpfx^_u+4|zfs&U(Yo&i&o^D7x$ zMUKy~+TX=*6tgH1QZeKm>2r7CUApb|NR$%P_08o6N?Mm6URq&pZ~o%ob=;@oq@RMY ziuXy zx5+GC?=K?;T9bY?WhmeH4>fFZcw_6F>ZE>pgg>d+xHsoPck{5n{Ew^Si)-qBzwFI# z^pV=;`j6Tgp#<#u^V96=@HId*jRIfb3^K4Rd$Em@8pa2^^}#_JNRO$+t|AYmm%DB{dI2-MD^VNn(O})q9jyHCz-5sM-?9cFo z|KN|w)U+0^$Op4|YH_F>GFK?0#`~N}XZR=6J>>k^!4@BgkI!Hfxs>j0IcVSWHQYPERBmQ5Ofl1>`{+9U3}-^F=bUs_WOw zt;UyA$MuG-=H2hFwnPq_GSY-Y4;daFR&DG&Kfa8>w*tmtT=m;dgIU3qb@D-LLKbSI zBht^i)w0m5&}u_Trpk+Lw1(mfNg4Jg5$qDFS`4QQ16U>GDGV5?$M>xgjrf zOtx*toMcrkT z!KMt+%=aKR8y&65%wRfcmUXeAcO#=$&BcaJALJ$(8m{n5Cy?Ep*=%)2-;<%qzd_8b z7AbxSLoKe9pvKCki>*Ams21~OlX_q;}_VK5cbQ}mSmeS zZ(9IEKV9~as4nauEJp6(vCLA=yp}&TQr$+pKtjEJcpPQ8`wQ)uNX>vzuk?w?sf>_Ck%igxo zg!*MtvtQ>2p2JLXogJxBsP;Q)n2_I&<%oG#pD#7vBJM>HIDoD4E@AEOH7(_8**-*x zs%!~AwoB8)rDXFkmwO;J5qpm*u`WfGvd^Gtx7Dw?x|DEE@=KGW@Eu9X=6S8h4|U;N zlhf`^?U_Fm_EOnd8FV|ux|Tt66wov1w#o@d zM3tqKi0*QVa9EZf+y{kk5Zkf~p|h!KYgaxnl9M0M358t&uJ&GBYS=mENDN7kg|`?N z;xjic)F3G{|38qLZxP?>_k+q(NAhepWw0(kqSWk&cc~VzL8p9KWnE5c5F$uw2x-`* zOnEfl=lsy{7ulNcsi+&iLA(p&2>b7dZz+}EP67_|HpcyjM!m1nnJWE1 JNdEGN{{vW5;(-7F literal 0 HcmV?d00001 diff --git a/packages/frontend/assets/drop-and-fusion/sweets_monos/lollipop_color.svg b/packages/frontend/assets/drop-and-fusion/sweets_monos/lollipop_color.svg new file mode 100644 index 0000000000000000000000000000000000000000..ad90ac6f528e588e818d39f89cf3c46b2cfb202a GIT binary patch literal 8738 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 A*8l(j literal 0 HcmV?d00001 diff --git a/packages/frontend/assets/drop-and-fusion/sweets_monos/shortcake_color.svg b/packages/frontend/assets/drop-and-fusion/sweets_monos/shortcake_color.svg new file mode 100644 index 0000000000000000000000000000000000000000..75143105d25a1dac906bc05096cf10dece439c49 GIT binary patch literal 15485 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 S^zkA<=XJ)Gz7GEBhu;8MDWOgP literal 0 HcmV?d00001 diff --git a/packages/frontend/assets/drop-and-fusion/sweets_monos/soft_ice_cream_color.svg b/packages/frontend/assets/drop-and-fusion/sweets_monos/soft_ice_cream_color.svg new file mode 100644 index 0000000000000000000000000000000000000000..37be9c0cb3c2f8a11f6f48b79dc55be133bad4a7 GIT binary patch literal 17531 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 E1&$TT6951J literal 0 HcmV?d00001 diff --git a/packages/frontend/assets/drop-and-fusion/sweets_monos/verts/candy_color.svg b/packages/frontend/assets/drop-and-fusion/sweets_monos/verts/candy_color.svg new file mode 100644 index 0000000000000000000000000000000000000000..e673f430f5e3c0acfeba874ac976add228547acc GIT binary patch literal 607 zcmZuuTWi}e6n^io&;)x^bj{69+(MJC479eebYpunmKtkSBqO_a_V0Hb5?G-^NauX| zzH`(1=6LX^x2bh86j)G>kquQeF6;~Zy!$d)V$^nJFr|;d7C1zFbA7e`w0+#{em&ix zw%?nw+s=80esAOnY{p%BFTz%Yev6 zB8V6S6M~w~U`R1W9-QfFD2wyY7}eJ8>+a(9&JMTnSYVDgQW7@)zYl>CbQap;gWQsH zKIS@8@}qa*^&_IlvW%TxPt?3^$_i%CB-`55+lw9?_wr7ELTD8aY@FU-526?6{Up74 zo7>)oXw0heu6d8NU5c-E0_E60(SOV literal 0 HcmV?d00001 diff --git a/packages/frontend/assets/drop-and-fusion/sweets_monos/verts/custard_color.svg b/packages/frontend/assets/drop-and-fusion/sweets_monos/verts/custard_color.svg new file mode 100644 index 0000000000000000000000000000000000000000..db547a5cfc12c92776015cff11a04d4f4cae07f7 GIT binary patch literal 522 zcmZutTWi8F6n^(tWP!ceCT*RUY8AXp2Hhr1H@3IZ#5OY~C5f&3_e+Yx28M7B=bZ05 zmv1sVA33P0(oBj320n&>id+&ViUjVqkKPahZ8AYJE(J}XkZ?BbOzxJii|yxT1$142 z&2FAPEdcZo`iK??Ew@YX_Pz#zA0V`PfdH1qR53zL)A&u~OI4t?%Bqs(8d)H6Kubcl zSrGWd5NJoZ&J81`v}<8}4?#&;QJQO1Guq7MIe{2p5QX-`zjp)>*vo`YZp;ob#%|UH z5}!E}hg-m4G#a6{+CpPpWx3U$QdCn_(<|QwZ2ynnX8c?pkyG!7Thg9!?x_=}F|DbP zgp6~}s{a{nlsr(+u0y{i6S0yfLB^Ntkr}Euvn~$DRv=*Cq{>VQNCKaS-QXb&d#&wv h!+siJXTzR9=tejl_)*XK&?VctBYZ(*g?3U*JHJhrpppOp literal 0 HcmV?d00001 diff --git a/packages/frontend/assets/drop-and-fusion/10000yen.png b/packages/frontend/assets/drop-and-fusion/yen_monos/10000yen.png similarity index 100% rename from packages/frontend/assets/drop-and-fusion/10000yen.png rename to packages/frontend/assets/drop-and-fusion/yen_monos/10000yen.png diff --git a/packages/frontend/assets/drop-and-fusion/1000yen.png b/packages/frontend/assets/drop-and-fusion/yen_monos/1000yen.png similarity index 100% rename from packages/frontend/assets/drop-and-fusion/1000yen.png rename to packages/frontend/assets/drop-and-fusion/yen_monos/1000yen.png diff --git a/packages/frontend/assets/drop-and-fusion/100yen.png b/packages/frontend/assets/drop-and-fusion/yen_monos/100yen.png similarity index 100% rename from packages/frontend/assets/drop-and-fusion/100yen.png rename to packages/frontend/assets/drop-and-fusion/yen_monos/100yen.png diff --git a/packages/frontend/assets/drop-and-fusion/10yen.png b/packages/frontend/assets/drop-and-fusion/yen_monos/10yen.png similarity index 100% rename from packages/frontend/assets/drop-and-fusion/10yen.png rename to packages/frontend/assets/drop-and-fusion/yen_monos/10yen.png diff --git a/packages/frontend/assets/drop-and-fusion/1yen.png b/packages/frontend/assets/drop-and-fusion/yen_monos/1yen.png similarity index 100% rename from packages/frontend/assets/drop-and-fusion/1yen.png rename to packages/frontend/assets/drop-and-fusion/yen_monos/1yen.png diff --git a/packages/frontend/assets/drop-and-fusion/2000yen.png b/packages/frontend/assets/drop-and-fusion/yen_monos/2000yen.png similarity index 100% rename from packages/frontend/assets/drop-and-fusion/2000yen.png rename to packages/frontend/assets/drop-and-fusion/yen_monos/2000yen.png diff --git a/packages/frontend/assets/drop-and-fusion/5000yen.png b/packages/frontend/assets/drop-and-fusion/yen_monos/5000yen.png similarity index 100% rename from packages/frontend/assets/drop-and-fusion/5000yen.png rename to packages/frontend/assets/drop-and-fusion/yen_monos/5000yen.png diff --git a/packages/frontend/assets/drop-and-fusion/500yen.png b/packages/frontend/assets/drop-and-fusion/yen_monos/500yen.png similarity index 100% rename from packages/frontend/assets/drop-and-fusion/500yen.png rename to packages/frontend/assets/drop-and-fusion/yen_monos/500yen.png diff --git a/packages/frontend/assets/drop-and-fusion/50yen.png b/packages/frontend/assets/drop-and-fusion/yen_monos/50yen.png similarity index 100% rename from packages/frontend/assets/drop-and-fusion/50yen.png rename to packages/frontend/assets/drop-and-fusion/yen_monos/50yen.png diff --git a/packages/frontend/assets/drop-and-fusion/5yen.png b/packages/frontend/assets/drop-and-fusion/yen_monos/5yen.png similarity index 100% rename from packages/frontend/assets/drop-and-fusion/5yen.png rename to packages/frontend/assets/drop-and-fusion/yen_monos/5yen.png diff --git a/packages/frontend/src/pages/drop-and-fusion.game.vue b/packages/frontend/src/pages/drop-and-fusion.game.vue index c4906c2a14..f14f5dbff6 100644 --- a/packages/frontend/src/pages/drop-and-fusion.game.vue +++ b/packages/frontend/src/pages/drop-and-fusion.game.vue @@ -90,7 +90,7 @@ SPDX-License-Identifier: AGPL-3.0-only
-
SCORE: {{ gameMode === 'yen' ? '円' : 'pt' }}
+
SCORE: {{ getScoreUnit(gameMode) }}
MAX CHAIN:
TOTAL EARNINGS:
@@ -127,8 +127,8 @@ SPDX-License-Identifier: AGPL-3.0-only
-
SCORE: {{ gameMode === 'yen' ? '円' : 'pt' }}
-
HIGH SCORE: {{ gameMode === 'yen' ? '円' : 'pt' }}-
+
SCORE: {{ getScoreUnit(gameMode) }}
+
HIGH SCORE: {{ getScoreUnit(gameMode) }}-
TOTAL EARNINGS: -
@@ -197,70 +197,70 @@ type FrontendMonoDefinition = { const NORAML_MONOS: FrontendMonoDefinition[] = [{ id: '9377076d-c980-4d83-bdaf-175bc58275b7', sfxPitch: 0.25, - img: '/client-assets/drop-and-fusion/exploding_head.png', + img: '/client-assets/drop-and-fusion/normal_monos/exploding_head.png', imgSizeX: 256, imgSizeY: 256, spriteScale: 1.12, }, { id: 'be9f38d2-b267-4b1a-b420-904e22e80568', sfxPitch: 0.5, - img: '/client-assets/drop-and-fusion/face_with_symbols_on_mouth.png', + img: '/client-assets/drop-and-fusion/normal_monos/face_with_symbols_on_mouth.png', imgSizeX: 256, imgSizeY: 256, spriteScale: 1.12, }, { id: 'beb30459-b064-4888-926b-f572e4e72e0c', sfxPitch: 0.75, - img: '/client-assets/drop-and-fusion/cold_face.png', + img: '/client-assets/drop-and-fusion/normal_monos/cold_face.png', imgSizeX: 256, imgSizeY: 256, spriteScale: 1.12, }, { id: 'feab6426-d9d8-49ae-849c-048cdbb6cdf0', sfxPitch: 1, - img: '/client-assets/drop-and-fusion/zany_face.png', + img: '/client-assets/drop-and-fusion/normal_monos/zany_face.png', imgSizeX: 256, imgSizeY: 256, spriteScale: 1.12, }, { id: 'd6d8fed6-6d18-4726-81a1-6cf2c974df8a', sfxPitch: 1.5, - img: '/client-assets/drop-and-fusion/pleading_face.png', + img: '/client-assets/drop-and-fusion/normal_monos/pleading_face.png', imgSizeX: 256, imgSizeY: 256, spriteScale: 1.12, }, { id: '249c728e-230f-4332-bbbf-281c271c75b2', sfxPitch: 2, - img: '/client-assets/drop-and-fusion/face_with_open_mouth.png', + img: '/client-assets/drop-and-fusion/normal_monos/face_with_open_mouth.png', imgSizeX: 256, imgSizeY: 256, spriteScale: 1.12, }, { id: '23d67613-d484-4a93-b71e-3e81b19d6186', sfxPitch: 2.5, - img: '/client-assets/drop-and-fusion/smiling_face_with_sunglasses.png', + img: '/client-assets/drop-and-fusion/normal_monos/smiling_face_with_sunglasses.png', imgSizeX: 256, imgSizeY: 256, spriteScale: 1.12, }, { id: '3cbd0add-ad7d-4685-bad0-29f6dddc0b99', sfxPitch: 3, - img: '/client-assets/drop-and-fusion/grinning_squinting_face.png', + img: '/client-assets/drop-and-fusion/normal_monos/grinning_squinting_face.png', imgSizeX: 256, imgSizeY: 256, spriteScale: 1.12, }, { id: '8f86d4f4-ee02-41bf-ad38-1ce0ae457fb5', sfxPitch: 3.5, - img: '/client-assets/drop-and-fusion/smiling_face_with_hearts.png', + img: '/client-assets/drop-and-fusion/normal_monos/smiling_face_with_hearts.png', imgSizeX: 256, imgSizeY: 256, spriteScale: 1.12, }, { id: '64ec4add-ce39-42b4-96cb-33908f3f118d', sfxPitch: 4, - img: '/client-assets/drop-and-fusion/heart_suit.png', + img: '/client-assets/drop-and-fusion/normal_monos/heart_suit.png', imgSizeX: 256, imgSizeY: 256, spriteScale: 1.12, @@ -269,70 +269,70 @@ const NORAML_MONOS: FrontendMonoDefinition[] = [{ const YEN_MONOS: FrontendMonoDefinition[] = [{ id: '880f9bd9-802f-4135-a7e1-fd0e0331f726', sfxPitch: 0.25, - img: '/client-assets/drop-and-fusion/10000yen.png', + img: '/client-assets/drop-and-fusion/yen_monos/10000yen.png', imgSizeX: 512, imgSizeY: 256, spriteScale: 0.97, }, { id: 'e807beb6-374a-4314-9cc2-aa5f17d96b6b', sfxPitch: 0.5, - img: '/client-assets/drop-and-fusion/5000yen.png', + img: '/client-assets/drop-and-fusion/yen_monos/5000yen.png', imgSizeX: 512, imgSizeY: 256, spriteScale: 0.97, }, { id: '033445b7-8f90-4fc9-beca-71a9e87cb530', sfxPitch: 0.75, - img: '/client-assets/drop-and-fusion/2000yen.png', + img: '/client-assets/drop-and-fusion/yen_monos/2000yen.png', imgSizeX: 512, imgSizeY: 256, spriteScale: 0.97, }, { id: '410a09ec-5f7f-46f6-b26f-cbca4ccbd091', sfxPitch: 1, - img: '/client-assets/drop-and-fusion/1000yen.png', + img: '/client-assets/drop-and-fusion/yen_monos/1000yen.png', imgSizeX: 512, imgSizeY: 256, spriteScale: 0.97, }, { id: '2aae82bc-3fa4-49ad-a6b5-94d888e809f5', sfxPitch: 1.5, - img: '/client-assets/drop-and-fusion/500yen.png', + img: '/client-assets/drop-and-fusion/yen_monos/500yen.png', imgSizeX: 256, imgSizeY: 256, spriteScale: 0.97, }, { id: 'a619bd67-d08f-4cc0-8c7e-c8072a4950cd', sfxPitch: 2, - img: '/client-assets/drop-and-fusion/100yen.png', + img: '/client-assets/drop-and-fusion/yen_monos/100yen.png', imgSizeX: 256, imgSizeY: 256, spriteScale: 0.97, }, { id: 'c1c5d8e4-17d6-4455-befd-12154d731faa', sfxPitch: 2.5, - img: '/client-assets/drop-and-fusion/50yen.png', + img: '/client-assets/drop-and-fusion/yen_monos/50yen.png', imgSizeX: 256, imgSizeY: 256, spriteScale: 0.97, }, { id: '7082648c-e428-44c4-887a-25c07a8ebdd5', sfxPitch: 3, - img: '/client-assets/drop-and-fusion/10yen.png', + img: '/client-assets/drop-and-fusion/yen_monos/10yen.png', imgSizeX: 256, imgSizeY: 256, spriteScale: 0.97, }, { id: '0d8d40d5-e6e0-4d26-8a95-b8d842363379', sfxPitch: 3.5, - img: '/client-assets/drop-and-fusion/5yen.png', + img: '/client-assets/drop-and-fusion/yen_monos/5yen.png', imgSizeX: 256, imgSizeY: 256, spriteScale: 0.97, }, { id: '9dec1b38-d99d-40de-8288-37367b983d0d', sfxPitch: 4, - img: '/client-assets/drop-and-fusion/1yen.png', + img: '/client-assets/drop-and-fusion/yen_monos/1yen.png', imgSizeX: 256, imgSizeY: 256, spriteScale: 0.97, @@ -341,77 +341,149 @@ const YEN_MONOS: FrontendMonoDefinition[] = [{ const SQUARE_MONOS: FrontendMonoDefinition[] = [{ id: 'f75fd0ba-d3d4-40a4-9712-b470e45b0525', sfxPitch: 0.25, - img: '/client-assets/drop-and-fusion/keycap_10.png', + img: '/client-assets/drop-and-fusion/square_monos/keycap_10.png', imgSizeX: 256, imgSizeY: 256, spriteScale: 1.12, }, { id: '7b70f4af-1c01-45fd-af72-61b1f01e03d1', sfxPitch: 0.5, - img: '/client-assets/drop-and-fusion/keycap_9.png', + img: '/client-assets/drop-and-fusion/square_monos/keycap_9.png', imgSizeX: 256, imgSizeY: 256, spriteScale: 1.12, }, { id: '41607ef3-b6d6-4829-95b6-3737bf8bb956', sfxPitch: 0.75, - img: '/client-assets/drop-and-fusion/keycap_8.png', + img: '/client-assets/drop-and-fusion/square_monos/keycap_8.png', imgSizeX: 256, imgSizeY: 256, spriteScale: 1.12, }, { id: '8a8310d2-0374-460f-bb50-ca9cd3ee3416', sfxPitch: 1, - img: '/client-assets/drop-and-fusion/keycap_7.png', + img: '/client-assets/drop-and-fusion/square_monos/keycap_7.png', imgSizeX: 256, imgSizeY: 256, spriteScale: 1.12, }, { id: '1092e069-fe1a-450b-be97-b5d477ec398c', sfxPitch: 1.5, - img: '/client-assets/drop-and-fusion/keycap_6.png', + img: '/client-assets/drop-and-fusion/square_monos/keycap_6.png', imgSizeX: 256, imgSizeY: 256, spriteScale: 1.12, }, { id: '2294734d-7bb8-4781-bb7b-ef3820abf3d0', sfxPitch: 2, - img: '/client-assets/drop-and-fusion/keycap_5.png', + img: '/client-assets/drop-and-fusion/square_monos/keycap_5.png', imgSizeX: 256, imgSizeY: 256, spriteScale: 1.12, }, { id: 'ea8a61af-e350-45f7-ba6a-366fcd65692a', sfxPitch: 2.5, - img: '/client-assets/drop-and-fusion/keycap_4.png', + img: '/client-assets/drop-and-fusion/square_monos/keycap_4.png', imgSizeX: 256, imgSizeY: 256, spriteScale: 1.12, }, { id: 'd0c74815-fc1c-4fbe-9953-c92e4b20f919', sfxPitch: 3, - img: '/client-assets/drop-and-fusion/keycap_3.png', + img: '/client-assets/drop-and-fusion/square_monos/keycap_3.png', imgSizeX: 256, imgSizeY: 256, spriteScale: 1.12, }, { id: 'd8fbd70e-611d-402d-87da-1a7fd8cd2c8d', sfxPitch: 3.5, - img: '/client-assets/drop-and-fusion/keycap_2.png', + img: '/client-assets/drop-and-fusion/square_monos/keycap_2.png', imgSizeX: 256, imgSizeY: 256, spriteScale: 1.12, }, { id: '35e476ee-44bd-4711-ad42-87be245d3efd', sfxPitch: 4, - img: '/client-assets/drop-and-fusion/keycap_1.png', + img: '/client-assets/drop-and-fusion/square_monos/keycap_1.png', imgSizeX: 256, imgSizeY: 256, spriteScale: 1.12, }]; +const SWEETS_MONOS: FrontendMonoDefinition[] = [{ + id: '77f724c0-88be-4aeb-8e1a-a00ed18e3844', + sfxPitch: 0.25, + img: '/client-assets/drop-and-fusion/sweets_monos/shortcake_color.svg', + imgSizeX: 32, + imgSizeY: 32, + spriteScale: 1.12, +}, { + id: 'f3468ef4-2e1e-4906-8795-f147f39f7e1f', + sfxPitch: 0.5, + img: '/client-assets/drop-and-fusion/sweets_monos/pancakes_color.svg', + imgSizeX: 32, + imgSizeY: 32, + spriteScale: 1.12, +}, { + id: 'bcb41129-6f2d-44ee-89d3-86eb2df564ba', + sfxPitch: 0.75, + img: '/client-assets/drop-and-fusion/sweets_monos/shaved_ice_color.svg', + imgSizeX: 32, + imgSizeY: 32, + spriteScale: 1.12, +}, { + id: 'f058e1ad-1981-409b-b3a7-302de0a43744', + sfxPitch: 1, + img: '/client-assets/drop-and-fusion/sweets_monos/soft_ice_cream_color.svg', + imgSizeX: 32, + imgSizeY: 32, + spriteScale: 1.12, +}, { + id: 'd22cfe38-5a3b-4b9c-a1a6-907930a3d732', + sfxPitch: 1.5, + img: '/client-assets/drop-and-fusion/sweets_monos/doughnut_color.svg', + imgSizeX: 32, + imgSizeY: 32, + spriteScale: 1.12, +}, { + id: '79867083-a073-427e-ae82-07a70d9f3b4f', + sfxPitch: 2, + img: '/client-assets/drop-and-fusion/sweets_monos/custard_color.svg', + imgSizeX: 32, + imgSizeY: 32, + spriteScale: 1.12, +}, { + id: '2e152a12-a567-4100-b4d4-d15d81ba47b1', + sfxPitch: 2.5, + img: '/client-assets/drop-and-fusion/sweets_monos/chocolate_bar_color.svg', + imgSizeX: 32, + imgSizeY: 32, + spriteScale: 1.12, +}, { + id: '12250376-2258-4716-8eec-b3a7239461fc', + sfxPitch: 3, + img: '/client-assets/drop-and-fusion/sweets_monos/lollipop_color.svg', + imgSizeX: 32, + imgSizeY: 32, + spriteScale: 1.12, +}, { + id: '4d4f2668-4be7-44a3-aa3a-856df6e25aa6', + sfxPitch: 3.5, + img: '/client-assets/drop-and-fusion/sweets_monos/candy_color.svg', + imgSizeX: 32, + imgSizeY: 32, + spriteScale: 1.12, +}, { + id: 'c9984b40-4045-44c3-b260-d47b7b4625b2', + sfxPitch: 4, + img: '/client-assets/drop-and-fusion/sweets_monos/cookie_color.svg', + imgSizeX: 32, + imgSizeY: 32, + spriteScale: 1.12, +}]; + const props = defineProps<{ - gameMode: 'normal' | 'square' | 'yen'; + gameMode: 'normal' | 'square' | 'yen' | 'sweets'; mute: boolean; }>(); @@ -423,9 +495,18 @@ const monoDefinitions = computed(() => { return props.gameMode === 'normal' ? NORAML_MONOS : props.gameMode === 'square' ? SQUARE_MONOS : props.gameMode === 'yen' ? YEN_MONOS : + props.gameMode === 'sweets' ? SWEETS_MONOS : [] as never; }); +function getScoreUnit(gameMode: string) { + return gameMode === 'normal' ? 'pt' : + gameMode === 'square' ? 'pt' : + gameMode === 'yen' ? '円' : + gameMode === 'sweets' ? 'kcal' : + '' as never; +} + function getMonoRenderOptions(mono: Mono) { const def = monoDefinitions.value.find(x => x.id === mono.id)!; return { @@ -783,7 +864,7 @@ function getGameImageDriveFile() { ctx.fillStyle = '#000'; ctx.font = '16px bold sans-serif'; ctx.textBaseline = 'top'; - ctx.fillText(`SCORE: ${score.value.toLocaleString()}${props.gameMode === 'yen' ? '円' : 'pt'}`, 10, 10); + ctx.fillText(`SCORE: ${score.value.toLocaleString()}${getScoreUnit(props.gameMode)}`, 10, 10); ctx.globalAlpha = 0.7; ctx.drawImage(logo, game.GAME_WIDTH * 0.55, 6, game.GAME_WIDTH * 0.45, game.GAME_WIDTH * 0.45 * (logo.height / logo.width)); @@ -824,7 +905,7 @@ async function share() { if (!file) return; os.post({ initialText: `#BubbleGame (${props.gameMode}) -SCORE: ${score.value.toLocaleString()}${props.gameMode === 'yen' ? '円' : 'pt'}`, +SCORE: ${score.value.toLocaleString()}${getScoreUnit(props.gameMode)}`, initialFiles: [file], instant: true, }); @@ -897,8 +978,9 @@ function attachGameEvents() { const rect = canvasEl.value.getBoundingClientRect(); const domX = rect.left + (x * viewScale); const domY = rect.top + (y * viewScale); + const scoreUnit = getScoreUnit(props.gameMode); os.popup(MkRippleEffect, { x: domX, y: domY }, {}, 'end'); - os.popup(MkPlusOneEffect, { x: domX, y: domY, value: scoreDelta + (props.gameMode === 'yen' ? '円' : '') }, {}, 'end'); + os.popup(MkPlusOneEffect, { x: domX, y: domY, value: scoreDelta + (scoreUnit === 'pt' ? '' : scoreUnit) }, {}, 'end'); if (nextMono) { const def = monoDefinitions.value.find(x => x.id === nextMono.id)!; @@ -1064,6 +1146,23 @@ onMounted(async () => { } } + /* +const getVerticesFromSvg = async (path: string) => { + const svgDoc = await fetch(path) + .then((response) => response.text()) + .then((svgString) => { + const parser = new DOMParser(); + return parser.parseFromString(svgString, 'image/svg+xml'); + }); + const pathDatas = svgDoc.querySelectorAll('path'); + if (!pathDatas) return; + const vertices = Array.from(pathDatas).map((pathData) => { + return Matter.Svg.pathToVertices(pathData); + }); + return vertices; +}; +*/ + await start(); const bgmBuffer = await sound.loadAudio('/client-assets/drop-and-fusion/bgm_1.mp3'); diff --git a/packages/frontend/src/pages/drop-and-fusion.vue b/packages/frontend/src/pages/drop-and-fusion.vue index 0e8713ad63..5fc71f7001 100644 --- a/packages/frontend/src/pages/drop-and-fusion.vue +++ b/packages/frontend/src/pages/drop-and-fusion.vue @@ -27,6 +27,7 @@ SPDX-License-Identifier: AGPL-3.0-only + {{ i18n.ts.start }}
@@ -48,7 +49,7 @@ SPDX-License-Identifier: AGPL-3.0-only
- {{ r.score.toLocaleString() }} {{ gameMode === 'yen' ? '円' : 'pt' }} + {{ r.score.toLocaleString() }} {{ getScoreUnit(gameMode) }}
{{ i18n.ts.loading }}
@@ -84,7 +85,7 @@ SPDX-License-Identifier: AGPL-3.0-only