Files
zyt/TongjiUniApp/dist/build/mp-weixin/tongji/endless-game/index.js
T
2026-08-11 17:41:36 +08:00

2 lines
31 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"use strict";const e=require("../../common/vendor.js");Math||l();const l=()=>"../components/TongjiIcon.js",a=300,t={__name:"index",setup(l){const t=[{source:"同行鼓励",text:"你需要加油哦!再向前一点,就能超过上一名。",tone:"warm"},{source:"同行鼓励",text:"你太棒了!今天也在认真认识食物。",tone:"bright"},{source:"开心鼓励",text:"你肯定是个大美女(大帅哥)!保持好心情。",tone:"bright"},{source:"亲友留言示例",text:"游戏虽好,可不要贪吃哦!",tone:"family"},{source:"亲友留言示例",text:"差不多行了,赶快洗洗睡吧!",tone:"family"},{source:"亲友留言示例",text:"你太努力了,你是我的榜样!",tone:"warm"},{source:"亲友留言示例",text:"好样的!",tone:"bright"},{source:"亲友自定义留言示例",text:"我血糖已经正常了,你们玩吧。",tone:"family",userGenerated:!0}],o={corn:{name:"玉米",short:"玉米",emoji:"🌽",color:"yellow",level:"mid",levelLabel:"中糖"},egg:{name:"鸡蛋",short:"鸡蛋",emoji:"🥚",color:"cream",level:"low",levelLabel:"低糖"},tomato:{name:"番茄",short:"番茄",emoji:"🍅",color:"red",level:"low",levelLabel:"低糖"},potato:{name:"红薯",short:"红薯",emoji:"🍠",color:"purple",level:"mid",levelLabel:"中糖"},cucumber:{name:"黄瓜",short:"黄瓜",emoji:"🥒",color:"yellow",level:"low",levelLabel:"低糖"},lettuce:{name:"生菜",short:"生菜",emoji:"🥬",color:"cream",level:"low",levelLabel:"低糖"},grainMantou:{name:"杂粮馒头",short:"杂粮馒头",emoji:"🫓",color:"red",level:"mid",levelLabel:"中糖"},wonton:{name:"馄饨",short:"馄饨",emoji:"🥟",color:"purple",level:"mid",levelLabel:"中糖"},celery:{name:"芹菜",short:"芹菜",emoji:"🌿",color:"yellow",level:"low",levelLabel:"低糖"},mushroom:{name:"香菇",short:"香菇",emoji:"🍄",color:"cream",level:"low",levelLabel:"低糖"},chicken:{name:"鸡肉",short:"鸡肉",emoji:"🍗",color:"red",level:"mid",levelLabel:"中糖"},taro:{name:"芋头",short:"芋头",emoji:"🥔",color:"purple",level:"mid",levelLabel:"中糖"},broccoli:{name:"西兰花",short:"西兰花",emoji:"🥦",color:"yellow",level:"low",levelLabel:"低糖"},milk:{name:"牛奶",short:"牛奶",emoji:"🥛",color:"cream",level:"low",levelLabel:"低糖"},brownRice:{name:"糙米饭",short:"糙米饭",emoji:"🍙",color:"red",level:"mid",levelLabel:"中糖"},apple:{name:"苹果",short:"苹果",emoji:"🍎",color:"yellow",level:"low",levelLabel:"低糖"},strawberry:{name:"草莓",short:"草莓",emoji:"🍓",color:"cream",level:"low",levelLabel:"低糖"},banana:{name:"香蕉",short:"香蕉",emoji:"🍌",color:"red",level:"mid",levelLabel:"中糖"},mango:{name:"芒果",short:"芒果",emoji:"🥭",color:"purple",level:"mid",levelLabel:"中糖"},tea:{name:"红茶",short:"红茶",emoji:"🍵",color:"yellow",level:"low",levelLabel:"低糖"},blackCoffee:{name:"黑咖啡",short:"黑咖啡",emoji:"☕",color:"cream",level:"low",levelLabel:"低糖"},coffee:{name:"咖啡",short:"咖啡",emoji:"☕",color:"red",level:"mid",levelLabel:"中糖"},pineapple:{name:"菠萝",short:"菠萝",emoji:"🍍",color:"purple",level:"mid",levelLabel:"中糖"},pepper:{name:"青椒",short:"青椒",emoji:"🫑",color:"yellow",level:"low",levelLabel:"低糖"},greenBean:{name:"四季豆",short:"四季豆",emoji:"🫛",color:"cream",level:"low",levelLabel:"低糖"},shrimp:{name:"虾仁",short:"虾仁",emoji:"🦐",color:"red",level:"mid",levelLabel:"中糖"},udon:{name:"乌冬面",short:"乌冬面",emoji:"🍲",color:"purple",level:"mid",levelLabel:"中糖"},onion:{name:"洋葱",short:"洋葱",emoji:"🧅",color:"yellow",level:"low",levelLabel:"低糖"},congee:{name:"白米粥",short:"白粥",emoji:"🥣",color:"orange",level:"high",levelLabel:"高糖",high:!0,replaceable:!0,tip:"白米粥煮得软烂,消化吸收通常较快。糖尿病患者应结合食用量、搭配和个人血糖情况,在医生或营养师指导下合理选择。"},eightCongee:{name:"八宝粥",short:"八宝粥",emoji:"🥣",color:"orange",level:"high",levelLabel:"高糖",high:!0,replaceable:!0,tip:"八宝粥常含糯米、豆类或添加糖,实际影响与配方和食用量有关,请留意营养成分。"},centuryCongee:{name:"皮蛋瘦肉粥",short:"瘦肉粥",emoji:"🥣",color:"orange",level:"high",levelLabel:"高糖",high:!0,replaceable:!0,tip:"粥类煮得软烂后通常吸收较快,搭配和食用量需要结合个人情况。"},milletCongee:{name:"小米粥",short:"小米粥",emoji:"🥣",color:"orange",level:"high",levelLabel:"高糖",high:!0,replaceable:!0,tip:"小米粥的升糖影响与浓稠度和食用量有关,游戏等级需由医生最终审核。"},orangeJuice:{name:"柳橙汁",short:"橙汁",emoji:"🧃",color:"orange",level:"high",levelLabel:"高糖",high:!0,replaceable:!0,tip:"果汁缺少完整水果的部分膳食纤维,饮用量和是否添加糖都需要注意。"},soda:{name:"含糖汽水",short:"汽水",emoji:"🥤",color:"orange",level:"high",levelLabel:"高糖",high:!0,replaceable:!0,tip:"含糖饮料中的糖吸收较快,日常应优先选择不加糖的饮品。"},riceNoodleSoup:{name:"汤粉",short:"汤粉",emoji:"🍜",color:"orange",level:"high",levelLabel:"高糖",high:!0,replaceable:!0,tip:"汤粉以精制米粉为主,实际影响与分量和配菜有关,应注意搭配。"},noodleSoup:{name:"汤面",short:"汤面",emoji:"🍜",color:"orange",level:"high",levelLabel:"高糖",high:!0,replaceable:!0,tip:"汤面以精细面食为主,汤汁和分量需要注意,具体建议以医生审核为准。"},milkTea:{name:"含糖奶茶",short:"奶茶",emoji:"🧋",color:"orange",level:"high",levelLabel:"高糖",high:!0,replaceable:!0,tip:"含糖奶茶可能同时含有较多添加糖和能量,应关注配方与饮用量。"},camel:{name:"驼乳",short:"驼乳",emoji:"🥛",color:"milk",level:"prop",levelLabel:"道具",product:!0}};Object.keys(o).forEach(e=>{o[e].img=`https://gz-1349751149.cos.ap-guangzhou.myqcloud.com/games/food/${e}.jpg`});const n=[{title:"中式早餐",safe:["egg","cucumber","corn","grainMantou"],danger:"congee"},{title:"家常粥餐",safe:["celery","mushroom","chicken","taro"],danger:"centuryCongee"},{title:"粗粮早餐",safe:["broccoli","milk","brownRice","potato"],danger:"milletCongee"},{title:"水果饮品",safe:["apple","strawberry","banana","mango"],danger:"orangeJuice"},{title:"日常饮品",safe:["milk","tea","blackCoffee","coffee"],danger:"soda"},{title:"南方汤粉",safe:["pepper","greenBean","shrimp","udon"],danger:"riceNoodleSoup"},{title:"北方面食",safe:["onion","celery","corn","grainMantou"],danger:"noodleSoup"}],{enabled:u,play:r,playLayer:i,playDrop:v,warmUp:c}=e.useGameSfx(),{proxy:s}=e.getCurrentInstance(),{ensureLoggedIn:f}=e.useGameAuth(s),{connected:m,loading:h,syncStatus:d,leaderboard:g,confirmedSessionLearned:p,connect:b,beginSession:y,queueProgress:w,flushProgress:x,syncAndRefresh:k,recordShare:M,dispose:j}=e.useGamePlatform(s,f),$=e.ref([]),L=e.ref(-1),S=e.ref(0),T=e.ref(0),_=e.ref(0),D=e.ref(0),C=e.ref(0),B=e.ref(3),N=e.ref(!1),z=e.ref(!1),A=e.ref(!1),I=e.ref(0),E=e.ref(o.congee),U=e.ref(0),R=e.ref(0),P=e.ref(0),G=e.ref(!1),q=e.ref(0),F=e.ref("交换相邻食物,三个相同即可消除"),O=e.ref({paddingTop:"20px"}),J={x:0,y:0,index:-1},X=e.ref(-1),Y=e.ref(-1),H=e.ref(0),K=e.ref(0),W=e.ref([]),Q=e.ref([]),V=e.ref(""),Z=e.ref(1),ee=e.ref({visible:!1,count:0,kicker:"",title:"",reward:""}),le=e.ref(!1),ae=e.ref({number:1,title:"",foods:[]}),te=e.ref(!1),oe=e.ref(!1),ne=e.ref(!1),ue=e.ref(!1),re=e.ref(!1),ie=e.ref(0),ve=["#ff3154","#ffd928","#28c76f","#4d8dff","#a855f7","#ff7a1a"],ce=Array.from({length:34},(e,l)=>({id:l,emoji:l%8==0?"🎉":l%11==0?"★":"",style:{left:(37*l+7)%100+"%",backgroundColor:l%8==0?"transparent":ve[l%ve.length],animationDelay:l%9*.065+"s",animationDuration:3.7+l%5*.36+"s",width:12+l%3*5+"rpx",height:22+l%4*6+"rpx"}}));let se=0,fe=1,me=null,he=null,de=null,ge=null,pe=null,be=0,ye=0,we=!1,xe="";const ke=e.computed(()=>n[I.value%n.length]),Me=e.computed(()=>{const e=ke.value.safe,l=[{key:e[0],label:`消除 7 个${Pe(e[0]).short}`,target:7,kind:"food"},{key:"special",label:"制造 1 个惊喜棋子",target:1,kind:"special"},{key:"combo",label:"完成连消 ×2",target:2,kind:"combo"},{key:e[1],label:`消除 8 个${Pe(e[1]).short}`,target:8,kind:"food"}];return l[U.value%l.length]}),je=e.computed(()=>Math.min(100,R.value/Me.value.target*100)),$e=e.computed(()=>$.value.filter(e=>e&&Pe(e.key).high).length),Le=e.computed(()=>Array.from({length:5},(e,l)=>$.value.slice(4*l,4*l+4).map((e,a)=>({...e,index:4*l+a})))),Se=e.computed(()=>Math.max(0,_.value-p.value)),Te=e.computed(()=>{var e;return Number((null==(e=g.value.me)?void 0:e.count)||0)+Se.value}),_e=e.computed(()=>{const l=Array.isArray(g.value.players)?g.value.players:[],a=e.index.getStorageSync("userData")||{},t=String(a.nickname||"我");return(l.length?l.map((e,l)=>({...e,isMe:!(!e.is_me&&!e.isMe),avatarUrl:e.avatar||"",avatar:String(e.name||"同行").slice(0,1),tone:l%7+1,count:e.is_me||e.isMe?Te.value:Number(e.count||0)})):[{id:"local-me",name:t,avatar:t.slice(0,1)||"我",avatarUrl:a.avatar||"",count:Te.value,tone:1,isMe:!0}]).sort((e,l)=>l.count-e.count||Number(l.best_score||0)-Number(e.best_score||0)).map((e,l)=>({...e,rank:l+1}))}),De=e.computed(()=>{var e;return(null==(e=_e.value.find(e=>e.isMe))?void 0:e.rank)||1}),Ce=e.computed(()=>0),Be=e.computed(()=>1===De.value),Ne=e.computed(()=>{const e=_e.value.findIndex(e=>e.isMe);return e<=0?0:Math.max(1,_e.value[e-1].count-Te.value+1)}),ze=e.computed(()=>t[ie.value%t.length]),Ae=e.computed(()=>{const e=g.value.week_start,l=g.value.week_end;return e&&l?`${Ge(e)}${Ge(l)}`:function(e){const l=new Date(e),a=l.getDay()||7,t=new Date(l);t.setDate(l.getDate()-a+1);const o=new Date(t);o.setDate(t.getDate()+6);const n=e=>`${e.getMonth()+1}${e.getDate()}日`;return`${n(t)}${n(o)}`}(new Date)}),Ie=e.computed(()=>g.value.sex_label||"同行"),Ee=e.computed(()=>Math.max(1,Number(g.value.member_count||_e.value.length))),Ue=e.computed(()=>h.value?"连接中":m.value?"pending"===d.value||"syncing"===d.value?"保存中":"真实周榜":"离线记录中");function Re(e,l=""){return{id:fe++,key:e,special:l}}function Pe(e){return o[e]||o.corn}function Ge(e){const l=String(e).split("-").map(Number);return 3!==l.length?String(e):`${l[1]}${l[2]}日`}function qe(){return _.value>0?`我在识糖小课堂认识了${_.value}份食物,一起来挑战吧`:"识糖小课堂:边玩边认识常见食物"}function Fe(){const e=String(g.value.invite_code||"");return`/tongji/endless-game/index${e?`?from=share&invite_code=${encodeURIComponent(e)}`:"?from=share"}`}function Oe(){Qe(),A.value||(z.value||ne.value||le.value||ee.value.visible?F.value="本次消除完成后即可查看同行榜":(re.value=!0,k(_.value,S.value),r("select",.72)))}function Je(){Qe(),re.value=!1,r("select",.86),Nl()}function Xe(){Qe(),ie.value=(ie.value+1)%t.length,r("select",.68)}function Ye(){me&&clearTimeout(me),y(),I.value=0,$.value=Cl(Dl(ke.value)),L.value=-1,S.value=0,_.value=0,D.value=0,C.value=0,B.value=3,N.value=!1,z.value=!1,A.value=!1,U.value=0,R.value=0,P.value=0,G.value=!1,W.value=[],Q.value=[],V.value="",ee.value.visible=!1,le.value=!1,te.value=!1,oe.value=!1,ne.value=!1,ue.value=!1,be=0,ye=0,Ze(),F.value="交换相邻食物,三个相同即可消除",Nl()}function He(){getCurrentPages().length>1?e.index.navigateBack({delta:1,fail:()=>e.index.redirectTo({url:"/tongji/pages/weekly"})}):e.index.redirectTo({url:"/tongji/pages/weekly"})}function Ke(){e.index.showModal({title:"玩法说明",content:"当前难度:5/10\n\n交换相邻食物,三个相同即可消除。四连、直线五连会生成火焰惊喜棋子;横向三个与竖向三个相交的 L/T 形五消,会生成范围爆破棋子,再次消除可清除周围九格。连消×2会计入连消小目标,连续普通消除后会出现一次连消机会;连消×3可获得额外惊喜奖励。完成小目标直接获得 1 罐驼乳粉;驼乳粉可替换本组指定稀食或饮品,三个驼乳连消后进入下一组食品。主动三消“高糖”食物代表吃掉,会结束本局;火焰特效波及高糖食物代表将它移出餐盘,不算吃掉。没有可走步时会自动洗牌。",showCancel:!1,confirmText:"知道了"})}function We(){u.value=!u.value;try{e.index.setStorageSync("tongji_game_sfx_enabled",u.value?"1":"0")}catch(l){}u.value&&(Qe(),r("select",.8)),e.index.showToast({title:u.value?"音效已开启":"音效已关闭",icon:"none"})}function Qe(){!we&&u.value&&(we=!0,c())}function Ve(e){const l=Pe(e.key);return[`is-${l.color}`,`is-level-${l.level}`,{"is-selected":L.value===e.index,"is-high":l.high,"is-camel-target":N.value&&l.replaceable,"is-clearing":W.value.includes(e.index),"is-fire-clearing":Q.value.includes(e.index),"is-dragging":X.value===e.index||Y.value===e.index}]}function Ze(){X.value=-1,Y.value=-1,H.value=0,K.value=0}function el(){Qe(),z.value||B.value<=0||A.value||(N.value=!N.value,L.value=-1,F.value=N.value?`请选择橙色边框的${Pe(ke.value.danger).short}进行替换`:"已取消使用驼乳粉")}function ll(e,l){const a=Math.floor(e/4),t=e%4,o=Math.floor(l/4),n=l%4;return Math.abs(a-o)+Math.abs(t-n)===1}async function al(e,l,a=!1){if(z.value||A.value)return;z.value=!0,a||r("swap",.85),tl(e,l),await Al(130);const t=yl($.value);if(!t.length)return tl(e,l),r("swapFail",.8),fl("light"),F.value="这一步没有形成三连,再试一次",z.value=!1,void(jl()||Nl());const o=[...new Set(t.flatMap(e=>e.indices))].map(e=>$.value[e]).find(e=>Pe(e.key).high);if(o)return r("lose",.9),fl("heavy"),E.value=Pe(o.key),zl(),A.value=!0,w(_.value,S.value,!0),void(z.value=!1);await ol(t,l),z.value=!1,A.value||Ml()}function tl(e,l){const a=[...$.value];[a[e],a[l]]=[a[l],a[e]],$.value=a}async function ol(l,t){const o="combo"===Me.value.kind;let u=l,r=0,c=0,s=0,f=!0;for(;u.length&&r<3;){r+=1,D.value=r;const e=new Set(u.flatMap(e=>e.indices));let l=-1,a="";const n=f?bl(u):null;if(f){const o=u.find(e=>e.indices.length>=4);n?(l=n.intersection,a="burst",e.delete(l),s=1):o&&(l=o.indices.includes(t)?t:o.indices[0],a=o.indices.length>=5?"all":o.direction,e.delete(l),s=1)}Q.value=[];const i=ml(e),m=u.filter(e=>e.indices.every(e=>{var l;return"camel"===(null==(l=$.value[e])?void 0:l.key)})).sort((e,l)=>l.indices.length-e.indices.length)[0],h=n?[...new Set([...n.row.indices,...n.col.indices])]:[],d=5===h.length&&h.every(e=>{var l;return"camel"===(null==(l=$.value[e])?void 0:l.key)})?5:0,g=Math.max(d,(null==m?void 0:m.indices.length)||0);g>=3&&il(g,e);const p=[...e].map(e=>$.value[e]).filter(Boolean).filter(e=>{const l=Pe(e.key);return!l.high&&!l.product}),b=Q.value.some(e=>{var l;return Pe(null==(l=$.value[e])?void 0:l.key).high}),y=Math.max(...u.map(e=>e.indices.length),"burst"===a||i.hasBurst?5:3);W.value=[...e];sl(y,r,b?"fire-high":i.hasBurst?"burst-triggered":i.hasFire?"fire-triggered":a),nl(y,r),fl(y>=5||r>=3?"medium":"light"),c+=p.length,_.value+=p.length,wl(p);const x=C.value>0?2:1;S.value+=(12*p.length+20*Math.max(0,r-1)+35*s)*x,w(_.value,S.value,!1),await Al(i.hasFire?330:210);const k=[...$.value];e.forEach(e=>{k[e]=null}),l>=0&&k[l]&&(k[l]={...k[l],special:a}),$.value=k,W.value=[],Q.value=[],s&&"special"===Me.value.kind&&xl(s),await Al(70);hl(f&&o&&P.value>=5),v(e.size),await Al(190),u=yl($.value);u.some(e=>e.indices.some(e=>{var l;return Pe(null==(l=$.value[e])?void 0:l.key).high}))?($.value=Bl($.value),u=[],F.value="自动掉落避开了高糖连消,棋盘已整理"):r>=3&&u.length&&($.value=Bl($.value),u=[],F.value="连消奖励已结算,棋盘已稳定"),f=!1,s=0}if(r>=3&&function(l){S.value+=a;const t=ul(1),o=rl(t);F.value=`${l} 连消惊喜:+300 分${o?` · ${o}`:""}`,ye=Date.now()+1800,t.granted>0&&kl();cl(),i("comboMega","fanfare",100,.82),fl("medium"),e.index.showToast({title:`${l} 连消惊喜:+300 分${t.granted>0?"、驼乳粉 +1":""}`,icon:"none"})}(r),o&&(r>=2?(P.value=0,xl(1)):P.value+=1),c>0&&C.value>0&&(C.value-=1),be>=3){const e=be;be=0;const l=e>=5?2300:4===e?2e3:1250;await Al(l),function(){const e=ke.value;I.value=(I.value+1)%n.length;const l=ke.value,a={};e.safe.forEach((e,t)=>{a[e]=l.safe[t]}),a[e.danger]=l.danger;const t=$.value.map(e=>e&&a[e.key]?{...e,key:a[e.key]}:e);$.value=t,(yl(t).length||!$l(t))&&($.value=Cl(Dl(l)));U.value=0,R.value=0,P.value=0,L.value=-1,N.value=!1,E.value=Pe(l.danger),ae.value={number:I.value+1,title:l.title,foods:[...l.safe,l.danger].map(e=>({key:e,...Pe(e)}))},le.value=!0,F.value=`已进入${l.title},橙框${Pe(l.danger).short}可替换`,i("fanfare","sparkle",100,.65),ge&&clearTimeout(ge);ge=setTimeout(()=>{le.value=!1},1800)}()}}function nl(e,l){l>=3?i("comboMega","blast",70,.55):2===l?i("combo3","pop",60,.5):e>=5?i("match5","blast",65,.55):e>=4?i("match4","sparkle",55,.5):i("match3","pop",45,.45)}function ul(e){const l=function(e){const l=Math.max(0,5-B.value),a=Math.min(e,l),t=e-a;return{granted:a,overflow:t,overflowScore:100*t}}(e);return B.value+=l.granted,S.value+=l.overflowScore,l}function rl(e){const l=[];return e.granted>0&&l.push(`驼乳粉 ×${e.granted}`),e.overflow>0&&l.push(`满仓多余奖励换 ${e.overflowScore} 分`),l.join(" · ")}function il(e,l){if(be=Math.max(be,e),e>=5){S.value+=1554;const e=ul(4);return C.value=Math.max(C.value,6),$.value.forEach((e,a)=>{Pe(null==e?void 0:e.key).high&&l.add(a)}),vl(5,"驼乳五连双倍大奖",`+1554 分 · ${rl(e)} · 双倍得分 ×6`),cl(),r("tap",.9,.82),setTimeout(()=>r("tap",1,1.05),150),setTimeout(()=>r("tap",1.08,1.35),300),setTimeout(()=>i("comboMega","fanfare",100,.85),430),setTimeout(()=>i("blast","sparkle",90,.75),690),fl("medium"),setTimeout(()=>fl("medium"),170),void setTimeout(()=>fl("heavy"),430)}if(4===e){S.value+=288;const e=ul(1),a=$.value.findIndex((e,a)=>Pe(null==e?void 0:e.key).high&&!l.has(a));return a>=0&&l.add(a),vl(4,"驼乳超级四连",`+288 分 · ${rl(e)} · 移出一份高糖食物`),i("match5","fanfare",90,.7),setTimeout(()=>r("tap",1.16,.58),260),void fl("medium")}S.value+=77,vl(3,"驼乳幸运三连","+77 分 · 轻量连消奖励"),i("match3","sparkle",44,.38),fl("light")}function vl(e,l,a){he&&clearTimeout(he),ee.value={visible:!0,count:e,kicker:e>=5?"JACKPOT · 777":4===e?"ONE MORE · 再来一罐":"LUCKY · 小惊喜",title:l,reward:a};he=setTimeout(()=>{ee.value.visible=!1},e>=5?2200:4===e?1900:1150)}function cl(){de&&clearTimeout(de),ue.value=!1,setTimeout(()=>{ue.value=!0},20),de=setTimeout(()=>{ue.value=!1},6e3)}function sl(e,l,a=""){Z.value=Math.min(3,l>=3||e>=5?3:e>=4?2:1),V.value="fire-high"===a?"火焰移出高糖!":l>=3?`${l} 连消!`:"fire-triggered"===a?"火焰清除!":"burst-triggered"===a?"范围爆破!":"burst"===a?"L形惊喜!":e>=5?"五连惊喜!":e>=4?"四连!":"消除!",setTimeout(()=>{V.value=""},520)}function fl(l="light"){try{e.index.vibrateShort({type:l})}catch(a){}}function ml(e){const l=[...e],a=new Set,t=new Set;let o=!1,n=!1;for(;l.length;){const u=l.shift();if(a.has(u))continue;a.add(u);const r=$.value[u];if(!(null==r?void 0:r.special))continue;n=!0;const i=[];if("row"===r.special){const e=Math.floor(u/4);for(let l=0;l<4;l+=1)i.push(4*e+l)}else if("col"===r.special){const e=u%4;for(let l=0;l<5;l+=1)i.push(4*l+e)}else if("burst"===r.special){o=!0;const e=Math.floor(u/4),l=u%4;for(let a=Math.max(0,e-1);a<=Math.min(4,e+1);a+=1)for(let e=Math.max(0,l-1);e<=Math.min(3,l+1);e+=1)i.push(4*a+e)}else $.value.forEach((e,l)=>{(null==e?void 0:e.key)===r.key&&i.push(l)});i.forEach(e=>t.add(e)),i.forEach(a=>{e.has(a)||(e.add(a),l.push(a))})}return Q.value=[...t],{hasBurst:o,hasFire:n}}function hl(e=!1){const l=Array(20).fill(null);for(let i=0;i<4;i+=1){const e=[];for(let l=4;l>=0;l-=1){const a=$.value[4*l+i];a&&e.push(a)}e.forEach((e,a)=>{l[4*(4-a)+i]=e})}const a=e?function(e){const l=new Set(e.map((e,l)=>e?-1:l).filter(e=>e>=0));for(let a=0;a<5;a+=1)for(let e=0;e<=1;e+=1){const t=[0,1,2].map(l=>4*a+e+l);if(t.every(e=>l.has(e)))return t}for(let a=0;a<4;a+=1)for(let e=0;e<=2;e+=1){const t=[0,1,2].map(l=>4*(e+l)+a);if(t.every(e=>l.has(e)))return t}return[]}(l):[],t=new Set(a),o=a.length?(n=l,u=a,(null==(r=ke.value.safe.map(e=>({key:e,nearby:n.reduce((l,a,t)=>(null==a?void 0:a.key)===e&&u.some(e=>ll(e,t))?l+1:l,0)})).sort((e,l)=>e.nearby-l.nearby)[0])?void 0:r.key)||ke.value.safe[0]):"";var n,u,r;for(let i=0;i<5;i+=1)for(let e=0;e<4;e+=1){const a=4*i+e;if(!l[a]){const n=t.has(a)?o:dl(l,a,e);l[a]=Re(n)}}return $.value=l,3===a.length}function dl(e,l,a){for(let t=0;t<16;t+=1){const t=pl(e,a);if(!gl(e,l,t))return t}return[...ke.value.safe,ke.value.danger].find(a=>!gl(e,l,a))||ke.value.safe[(l+a)%ke.value.safe.length]}function gl(e,l,a){const t=Math.floor(l/4),o=l%4,n=t=>{var o;return t===l?a:null==(o=e[t])?void 0:o.key};let u=1;for(let i=o-1;i>=0&&n(4*t+i)===a;i-=1)u+=1;for(let i=o+1;i<4&&n(4*t+i)===a;i+=1)u+=1;if(u>=3)return!0;let r=1;for(let i=t-1;i>=0&&n(4*i+o)===a;i-=1)r+=1;for(let i=t+1;i<5&&n(4*i+o)===a;i+=1)r+=1;return r>=3}function pl(e,l=-1){if(e.filter(e=>e&&Pe(e.key).high).length<3&&Math.random()<.1)return ke.value.danger;const a=ke.value.safe;return l>=0&&Math.random()<.72?a[l%a.length]:a[Math.floor(Math.random()*a.length)]}function bl(e){const l=e.filter(e=>"row"===e.direction&&3===e.indices.length),a=e.filter(e=>"col"===e.direction&&3===e.indices.length);for(const t of l)for(const e of a){const l=t.indices.find(l=>e.indices.includes(l));if(void 0!==l)return{intersection:l,row:t,col:e}}return null}function yl(e){var l,a,t,o;const n=[];for(let u=0;u<5;u+=1){let t=0;for(;t<4;){let o=t+1;for(;o<4&&(null==(l=e[4*u+o])?void 0:l.key)===(null==(a=e[4*u+t])?void 0:a.key);)o+=1;e[4*u+t]&&o-t>=3&&n.push({direction:"row",indices:Array.from({length:o-t},(e,l)=>4*u+t+l)}),t=o}}for(let u=0;u<4;u+=1){let l=0;for(;l<5;){let a=l+1;for(;a<5&&(null==(t=e[4*a+u])?void 0:t.key)===(null==(o=e[4*l+u])?void 0:o.key);)a+=1;e[4*l+u]&&a-l>=3&&n.push({direction:"col",indices:Array.from({length:a-l},(e,a)=>4*(l+a)+u)}),l=a}}return n}function wl(e){"food"===Me.value.kind&&xl(e.filter(e=>e.key===Me.value.key).length)}function xl(l){if(!l)return;if(R.value+=l,R.value<Me.value.target)return;S.value+=120;const a=ul(1);a.granted>0?(kl(),F.value="小目标完成,驼乳粉已放入道具栏"):F.value=`驼乳粉已满,多余奖励换 ${a.overflowScore} 分`,e.index.showToast({title:a.granted>0?"小目标完成:驼乳粉 +1":`驼乳粉已满:奖励换 ${a.overflowScore} 分`,icon:"none"}),U.value=(U.value+1)%4,R.value=0,P.value=0}function kl(){pe&&clearTimeout(pe),q.value+=1,G.value=!0,ye=Date.now()+1600,i("boost","sparkle",75,.55),fl("light"),pe=setTimeout(()=>{G.value=!1},1150)}function Ml(){zl(),jl()||(le.value||Date.now()<ye||(F.value=D.value>=2?`漂亮!完成 ${D.value} 连消`:"食物已从上方补充,继续挑战"),Nl())}function jl(){return!$l($.value)&&!ne.value&&(Sl(),!0)}function $l(e){return Boolean(Ll(e))}function Ll(e){for(let l=0;l<e.length;l+=1){const a=[];l%4<3&&a.push(l+1),l+4<e.length&&a.push(l+4);for(const t of a){const a=e.map(e=>({...e}));[a[l],a[t]]=[a[t],a[l]];const o=yl(a);if(o.length&&!o.flatMap(e=>e.indices).some(e=>Pe(a[e].key).high))return{from:l,to:t}}}return null}async function Sl(){if(ne.value||A.value)return;ne.value=!0,z.value=!0,oe.value=!1,te.value=!0,L.value=-1,N.value=!1,F.value="没有可消除组合,正在重新洗牌",r("reshuffle",.9),fl("medium"),await Al(760);const e=$.value.map(e=>({...e}));let l=null;for(let a=0;a<240;a+=1){const a=Tl(e);if(!yl(a).length&&$l(a)){l=a;break}}$.value=l||_l(),oe.value=!0,F.value="洗牌完成,新的消除机会已经出现",i("drop","sparkle",70,.55),fl("light"),await Al(520),te.value=!1,ne.value=!1,z.value=!1,Nl()}function Tl(e){const l=e.map(e=>({...e}));for(let a=l.length-1;a>0;a-=1){const e=Math.floor(Math.random()*(a+1));[l[a],l[e]]=[l[e],l[a]]}return l}function _l(){return Cl(Dl(ke.value))}function Dl(e){const[l,a,t,o]=e.safe,n=e.danger;return[l,a,t,o,a,t,o,l,t,o,l,n,o,l,n,a,l,a,t,o]}function Cl(e){let l=e.map(e=>Re(e));for(let a=0;a<240;a+=1){if(!yl(l).length&&$l(l))return l;l=Tl(l)}return function(e){const[l,a,t,o]=e.safe,n=e.danger;return[o,l,n,t,o,t,a,n,t,l,a,l,o,o,l,l,a,o,t,a]}(ke.value).map(e=>Re(e))}function Bl(e){const l=e.filter(Boolean).map(e=>({...e}));if(20===l.length)for(let a=0;a<300;a+=1){const e=Tl(l);if(!yl(e).length&&$l(e))return e}return _l()}function Nl(){me&&clearTimeout(me),me=setTimeout(()=>{if(z.value||A.value||le.value)return;const e=Ll($.value);e?F.value=function(e){var l,a;if(!e)return"";const t=Pe(null==(l=$.value[e.from])?void 0:l.key).short,o=Pe(null==(a=$.value[e.to])?void 0:a.key).short;return`提示:把${t}${e.to===e.from+1?"向右":"向下"}${o}交换`}(e):Sl()},5e3)}function zl(){S.value<=T.value||(T.value=S.value,e.index.setStorageSync("tongji_endless_best",T.value))}function Al(e){return new Promise(l=>setTimeout(l,e))}return e.onShareAppMessage(()=>(M(),{title:qe(),path:Fe()})),e.onShareTimeline(()=>{M();const e=String(g.value.invite_code||"");return{title:qe(),query:e?`from=share&invite_code=${encodeURIComponent(e)}`:"from=share"}}),e.onLoad((l={})=>{!function(){var l;let a=20,t=e.index.upx2px(28);try{const o=e.index.getSystemInfoSync();a=Number((null==(l=o.safeAreaInsets)?void 0:l.top)||o.statusBarHeight)||20;const n="function"==typeof e.index.getMenuButtonBoundingClientRect?e.index.getMenuButtonBoundingClientRect():null;n&&n.width>0&&(a=Math.max(a,Number(n.top)||0),t=Math.max(t,(Number(o.windowWidth)||0)-Number(n.left)+e.index.upx2px(8)))}catch(o){}O.value={paddingTop:`${a}px`,paddingRight:`${t}px`}}(),T.value=Number(e.index.getStorageSync("tongji_endless_best")||0),xe=String(l.invite_code||"").trim(),Ye(),re.value=!0,b(xe)}),e.onShow(()=>{b(xe).then(e=>{e&&x()})}),e.onUnload(()=>{(_.value>0||A.value)&&(w(_.value,S.value,A.value),x()),j(),me&&clearTimeout(me),he&&clearTimeout(he),de&&clearTimeout(de),ge&&clearTimeout(ge),pe&&clearTimeout(pe)}),(l,a)=>e.e({a:ue.value},ue.value?{b:e.f(e.unref(ce),(l,a,t)=>({a:e.t(l.emoji),b:l.id,c:l.emoji?1:"",d:e.s(l.style)}))}:{},{c:e.p({name:"chevron-left",size:"md",color:"#155e4b"}),d:e.o(He),e:e.t(I.value+1),f:e.t(ke.value.title),g:e.p({name:"volume",size:"sm",color:e.unref(u)?"#155e4b":"#94a3b8"}),h:e.o(We),i:e.p({name:"info",size:"sm",color:"#155e4b"}),j:e.o(Ke),k:e.s(O.value),l:e.t(_.value),m:e.t(S.value),n:e.t(De.value),o:z.value||ne.value||le.value||ee.value.visible?1:"",p:e.o(Oe),q:e.p({name:"trophy",size:"sm",color:"#8a5a10"}),r:e.t(Me.value.label),s:e.t(Math.min(R.value,Me.value.target)),t:e.t(Me.value.target),v:je.value+"%",w:G.value},G.value?{x:Pe("camel").img,y:q.value}:{},{z:e.t(Math.max(D.value,1)),A:D.value>=3?1:"",B:C.value>0},C.value>0?{C:e.t(C.value)}:{},{D:e.t($e.value),E:e.f(3,(e,l,a)=>({a:e,b:e<=$e.value?1:""})),F:e.f(Le.value,(l,a,t)=>({a:e.f(l,(l,a,t)=>{return e.e({a:l.special},l.special?e.e({b:"row"===l.special||"col"===l.special},("row"===l.special||"col"===l.special||l.special,{}),{c:"burst"===l.special,d:e.n(`is-${l.special}`)}):{},{e:Q.value.includes(l.index)},(Q.value.includes(l.index),{}),{f:Pe(l.key).img,g:e.t(Pe(l.key).short),h:e.t(Pe(l.key).levelLabel||"低糖"),i:e.n(`is-${Pe(l.key).level||"low"}`),j:N.value&&Pe(l.key).replaceable},(N.value&&Pe(l.key).replaceable,{}),{k:l.id,l:e.n(Ve(l)),m:e.s((o=l.index,X.value===o?{transform:`translate(${H.value}px, ${K.value}px) scale(1.05)`,zIndex:6}:Y.value===o?{transform:`translate(${.72*-H.value}px, ${.72*-K.value}px) scale(.96)`,zIndex:4}:{})),n:e.o(e=>async function(e){if(Qe(),Date.now()<se)return;if(z.value||A.value)return;const l=$.value[e];if(N.value){if(!Pe(l.key).replaceable)return void(F.value=`本组驼乳粉用于替换${Pe(ke.value.danger).short}`);$.value[e]=Re("camel"),$.value=[...$.value],B.value-=1,N.value=!1,L.value=-1,i("insulin","sparkle",55,.5),fl("light");const a=yl($.value);return void(a.length?(z.value=!0,F.value="驼乳棋子连起来了!",await ol(a,e),z.value=!1,Ml()):(F.value=`已将${Pe(ke.value.danger).short}移出餐盘,凑齐三个驼乳可换主题`,jl()||Nl()))}if(L.value<0)return L.value=e,r("select",.75),void(F.value="再选择一个相邻食物进行交换");if(L.value===e)return L.value=-1,void r("deselect",.65);if(!ll(L.value,e))return L.value=e,void(F.value="只能交换上下左右相邻的食物");const a=L.value;L.value=-1,al(a,e)}(l.index),l.id),o:e.o(e=>function(e,l){var a;Qe();const t=null==(a=e.touches)?void 0:a[0];t&&(J.x=t.clientX,J.y=t.clientY,J.index=l,X.value=l,Y.value=-1,H.value=0,K.value=0)}(e,l.index),l.id),p:e.o(e=>function(e,l){var a;const t=null==(a=e.touches)?void 0:a[0];if(!t||J.index!==l||z.value)return;const o=t.clientX-J.x,n=t.clientY-J.y,u=Math.abs(o)>Math.abs(n);H.value=u?Math.max(-82,Math.min(82,o)):0,K.value=u?0:Math.max(-82,Math.min(82,n));let r=l;u&&Math.abs(o)>10&&(r+=o>0?1:-1),!u&&Math.abs(n)>10&&(r+=n>0?4:-4),Y.value=r>=0&&r<20&&ll(l,r)?r:-1}(e,l.index),l.id),q:e.o(e=>async function(e,l){var a;const t=null==(a=e.changedTouches)?void 0:a[0];if(!t||J.index!==l)return void Ze();const o=t.clientX-J.x,n=t.clientY-J.y;if(Math.max(Math.abs(o),Math.abs(n))<32)return void Ze();let u=l;if(Math.abs(o)>Math.abs(n)?u+=o>0?1:-1:u+=n>0?4:-4,se=Date.now()+350,u>=0&&u<20&&ll(l,u)){const e=Math.abs(o)>Math.abs(n);H.value=e?o>0?78:-78:0,K.value=e?0:n>0?78:-78,Y.value=u,r("swap",.85),await Al(85),Ze(),al(l,u,!0)}else Ze(),r("swapFail",.65)}(e,l.index),l.id)});var o}),b:a})),G:z.value?1:"",H:V.value},V.value?{I:e.t(V.value),J:e.n(`is-level-${Z.value}`)}:{},{K:ee.value.visible},ee.value.visible?e.e({L:e.t(ee.value.kicker),M:3===ee.value.count},3===ee.value.count?{N:e.f(3,(e,l,a)=>({a:e})),O:Pe("camel").img}:4===ee.value.count?{Q:e.f(5,(l,a,t)=>e.e({a:l<5},l<5?{b:Pe("camel").img}:{},{c:l,d:5===l?1:""}))}:{R:e.f(5,(e,l,a)=>({a:e})),S:Pe("camel").img,T:e.f(3,(e,l,a)=>({a:e}))},{P:4===ee.value.count,U:e.t(ee.value.title),V:ee.value.count>=5},(ee.value.count,{}),{W:e.t(ee.value.reward),X:e.n(`is-match-${ee.value.count}`)}):{},{Y:e.p({name:"bulb",size:"sm",color:"#9a6718"}),Z:e.t(F.value),aa:Pe("camel").img,ab:e.p({name:"refresh",size:"sm",color:"#ffffff"}),ac:e.t(Pe(ke.value.danger).short),ad:e.t(B.value),ae:N.value?1:"",af:B.value<=0||z.value?1:"",ag:e.o(el),ah:re.value},re.value?e.e({ai:e.t(Ue.value),aj:e.unref(m)?"":1,ak:e.t(Ae.value),al:e.t(Ie.value),am:e.t(Ee.value),an:e.t(De.value),ao:e.t(Te.value),ap:Ce.value>0},Ce.value>0?{aq:e.t(De.value),ar:e.t(Ce.value)}:{as:e.t(De.value)},{at:Be.value},Be.value?{}:{av:e.t(Ne.value)},{aw:e.f(_e.value,(l,a,t)=>e.e({a:e.t(l.rank),b:l.avatarUrl},l.avatarUrl?{c:l.avatarUrl}:{d:e.t(l.avatar)},{e:e.n(`is-tone-${l.tone}`),f:e.t(l.name),g:l.isMe},(l.isMe,{}),{h:e.t(l.count),i:l.id,j:l.isMe?1:""})),ax:e.t(ze.value.source),ay:e.o(Xe),az:e.t(ze.value.text),aA:ze.value.userGenerated},(ze.value.userGenerated,{}),{aB:e.n(`is-${ze.value.tone}`),aC:e.o(Je),aD:e.o(()=>{})}):{},{aE:te.value},te.value?{aF:e.p({name:"refresh",size:"lg",color:"#ffffff"}),aG:e.t(oe.value?"洗牌完成":"没有可消除组合"),aH:e.t(oe.value?"新的消除机会已经出现":"正在为您重新洗牌,请稍候"),aI:e.o(()=>{})}:{},{aJ:le.value},le.value?{aK:e.t(ae.value.number),aL:e.t(ae.value.title),aM:e.f(ae.value.foods,(l,a,t)=>({a:l.img,b:e.t(l.short),c:l.key,d:l.high?1:""})),aN:e.o(()=>{})}:{},{aO:A.value},A.value?{aP:e.t(E.value.name),aQ:e.t(E.value.tip),aR:e.t(S.value),aS:e.t(T.value),aT:e.o(Ye),aU:e.o(He),aV:e.o(()=>{})}:{},{aW:e.o(Qe),aX:e.o(Qe)})}},o=e._export_sfc(t,[["__scopeId","data-v-87c9ce4c"]]);t.__runtimeHooks=6,wx.createPage(o);