diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml new file mode 100644 index 0000000..4a2771a --- /dev/null +++ b/.gitea/workflows/deploy.yml @@ -0,0 +1,90 @@ +name: Deploy to Production + +on: + push: + branches: + - main + - master + +jobs: + deploy: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Deploy to server + run: | + echo "🚀 Deploying to /var/www/html/games" + echo "📁 Current directory: $(pwd)" + echo "📁 GITHUB_WORKSPACE: $GITHUB_WORKSPACE" + + # Read game info from readme.md + if [ -f "$GITHUB_WORKSPACE/readme.md" ]; then + GAME_TITLE=$(sed -n '1p' "$GITHUB_WORKSPACE/readme.md") + GAME_DESC=$(sed -n '2p' "$GITHUB_WORKSPACE/readme.md") + GAME_TYPE=$(sed -n '3p' "$GITHUB_WORKSPACE/readme.md") + else + GAME_TITLE="Untitled Game" + GAME_DESC="No description" + GAME_TYPE="quiz" + fi + + # Create base directory + mkdir -p /var/www/html/games/ + + # Find and deploy all game folders (exclude source, .git, .gitea, etc.) + DEPLOYED_FOLDERS="" + DEPLOYED_URLS="" + for folder in $GITHUB_WORKSPACE/*/; do + folder_name=$(basename "$folder") + + # Skip excluded folders + if [[ "$folder_name" == "source" ]] || \ + [[ "$folder_name" == ".git" ]] || \ + [[ "$folder_name" == ".gitea" ]] || \ + [[ "$folder_name" == "node_modules" ]] || \ + [[ "$folder_name" == "logs" ]] || \ + [[ "$folder_name" == "uploads" ]]; then + echo "⏭️ Skipping: $folder_name" + continue + fi + + # Deploy the folder + echo "📦 Deploying: $folder_name" + rsync -av --delete "$folder" "/var/www/html/games/$folder_name/" + DEPLOYED_FOLDERS="$DEPLOYED_FOLDERS $folder_name" + GAME_URL="https://senaai.tech/games/$folder_name/" + DEPLOYED_URLS="$DEPLOYED_URLS\n 🔗 $GAME_URL" + + # Get thumbnail (first image found or default) + THUMBNAIL=$(find "$folder" -type f \( -name "*.png" -o -name "*.jpg" -o -name "*.jpeg" \) 2>/dev/null | head -n 1 || true) + if [ -z "$THUMBNAIL" ]; then + THUMBNAIL="https://senaai.tech/games/$folder_name/images/default.png" + else + THUMBNAIL="https://senaai.tech/games/$folder_name/$(basename "$THUMBNAIL")" + fi + + # Submit game info to API + echo "📤 Submitting game info to API..." + curl --location 'http://senaai.tech:10000/api/games/save-with-check' \ + --header 'Content-Type: application/x-www-form-urlencoded' \ + --data-urlencode "title=$GAME_TITLE" \ + --data-urlencode "description=$GAME_DESC" \ + --data-urlencode "url=$GAME_URL" \ + --data-urlencode "thumbnail=$THUMBNAIL" \ + --data-urlencode "type=$GAME_TYPE" || true + echo "" + done + + # Show deployment summary + echo "" + echo "==========================================" + echo "🎉 Deployment Completed Successfully!" + echo "==========================================" + echo "" + echo "📍 Deployed URLs:" + echo -e "$DEPLOYED_URLS" + echo "" + echo "==========================================" \ No newline at end of file diff --git a/PairOrNotPair/c2runtime.js b/PairOrNotPair/c2runtime.js index eaf1cec..67f5814 100644 --- a/PairOrNotPair/c2runtime.js +++ b/PairOrNotPair/c2runtime.js @@ -19347,6 +19347,15 @@ cr.plugins_.SenaPlugin = function (runtime) { this.bgMusicPlaying = false; this.bgMusicPaused = false; this.calculatedPositions = []; + this.customData = { + data1: "", + data2: "", + data3: "", + data4: "", + data5: "" + }; + this.lastMessageData = null; + this.lastSenderUUID = ""; }; instanceProto.onDestroy = function () { if (this.sdk) { @@ -19376,6 +19385,15 @@ cr.plugins_.SenaPlugin = function (runtime) { Cnds.prototype.OnResume = function () { return true; }; + Cnds.prototype.OnPairCorrect = function () { + return true; + }; + Cnds.prototype.OnPairWrong = function () { + return true; + }; + Cnds.prototype.OnMessage = function () { + return true; + }; pluginProto.cnds = new Cnds(); function Acts() {} Acts.prototype.Load = function () { @@ -19383,6 +19401,16 @@ cr.plugins_.SenaPlugin = function (runtime) { var gameCode = this.properties[0] || "G2510S1T30"; if (window["SenaSDK"]) { this.sdk = new window["SenaSDK"](gameCode); + this.sdk.onCustomMessage = function (data, senderUuid) { + console.log('Runtime received custom message from:', senderUuid); + console.log('Data:', data); + self.lastMessageData = data; + self.lastSenderUUID = senderUuid; + window["SenaTrigger"].runtime.trigger( + cr.plugins_.SenaPlugin.prototype.cnds.OnMessage, + window["SenaTrigger"] + ); + }; this.sdk.load(function (success) { if (success) { console.log("SDK loaded successfully"); @@ -19506,16 +19534,92 @@ cr.plugins_.SenaPlugin = function (runtime) { objectWidth, margin, maxWidth, + rowBreak, + rowGap, + type, + groupGap ) { - var self = this; this.calculatedPositions = []; - var totalWidth = count * objectWidth + (count - 1) * margin; - var startX = (maxWidth - totalWidth) / 2; - for (var i = 0; i < count; i++) { - var posX = startX + i * (objectWidth + margin) + objectWidth / 2; - this.calculatedPositions.push(posX); + if (count <= 0) return; + var rows = []; + if (rowBreak > 0) { + for (var i = 0; i < count; i += rowBreak) { + rows.push(Math.min(rowBreak, count - i)); + } + } else { + if (count <= 5) { + rows.push(count); + } else { + var top = Math.ceil((count + 1) / 2); + var bottom = count - top; + rows.push(top); + rows.push(bottom); + } + } + var baseY = 0; + if (type === "word") { + baseY = groupGap || (rowGap * rows.length); // word always below slot + } + var index = 0; + for (var r = 0; r < rows.length; r++) { + var itemsInRow = rows[r]; + var rowWidth = itemsInRow * objectWidth + (itemsInRow - 1) * margin; + var startX = (maxWidth - rowWidth) / 2; + for (var i = 0; i < itemsInRow; i++) { + this.calculatedPositions.push({ + x: startX + i * (objectWidth + margin) + objectWidth / 2, + y: baseY + r * rowGap + }); + index++; + } + } + console.log("Calculated positions (multi-row):", this.calculatedPositions); + }; + Acts.prototype.LoadLevelG5 = function (levelIndex) { + if (this.sdk && this.sdk.loadLevelG5) { + this.sdk.loadLevelG5(levelIndex); + } + }; + Acts.prototype.CheckPair = function (idx1, idx2) { + var self = this; + if (this.sdk && this.sdk.checkPair) { + this.sdk.checkPair(idx1, idx2, function (isMatch) { + if (isMatch) { + window["SenaTrigger"].runtime.trigger( + cr.plugins_.SenaPlugin.prototype.cnds.OnPairCorrect, + window["SenaTrigger"], + ); + } else { + window["SenaTrigger"].runtime.trigger( + cr.plugins_.SenaPlugin.prototype.cnds.OnPairWrong, + window["SenaTrigger"], + ); + } + }); + } + }; + Acts.prototype.SetData = function (data1, data2, data3, data4, data5) { + this.customData.data1 = data1 || ""; + this.customData.data2 = data2 || ""; + this.customData.data3 = data3 || ""; + this.customData.data4 = data4 || ""; + this.customData.data5 = data5 || ""; + console.log('Custom data set:', this.customData); + }; + Acts.prototype.PostMessage = function () { + if (this.sdk && this.sdk.sendMessageToParent) { + var dataToSend = { + data1: this.customData.data1, + data2: this.customData.data2, + data3: this.customData.data3, + data4: this.customData.data4, + data5: this.customData.data5 + }; + this.sdk.sendMessageToParent(dataToSend); + console.log('Posted message to parent:', dataToSend); + } else { + console.error('SDK not initialized or sendMessageToParent not available'); } - console.log("Calculated positions:", this.calculatedPositions); }; pluginProto.acts = new Acts(); function Exps() {} @@ -19658,12 +19762,15 @@ cr.plugins_.SenaPlugin = function (runtime) { } }; Exps.prototype.getPosXbyIndex = function (ret, index) { - if ( - this.calculatedPositions && - index >= 0 && - index < this.calculatedPositions.length - ) { - ret.set_float(this.calculatedPositions[index]); + if (this.calculatedPositions[index]) { + ret.set_float(this.calculatedPositions[index].x); + } else { + ret.set_float(0); + } + }; + Exps.prototype.getPosYbyIndex = function (ret, index) { + if (this.calculatedPositions[index]) { + ret.set_float(this.calculatedPositions[index].y); } else { ret.set_float(0); } @@ -19703,6 +19810,59 @@ cr.plugins_.SenaPlugin = function (runtime) { ret.set_string(""); } }; + Exps.prototype.getTimePerCard = function (ret) { + if (this.sdk && this.sdk.getTimePerCard) { + ret.set_int(this.sdk.getTimePerCard()); + } else { + ret.set_int(0); + } + }; + Exps.prototype.getTotalLevels = function (ret) { + if (this.sdk && this.sdk.getTotalLevels) { + ret.set_int(this.sdk.getTotalLevels()); + } else { + ret.set_int(1); + } + }; + Exps.prototype.getCurrentLevel = function (ret) { + if (this.sdk) { + ret.set_int(this.sdk.currentLevel || 1); + } else { + ret.set_int(1); + } + }; + Exps.prototype.GetCardType = function (ret, index) { + if (this.sdk && this.sdk.getCardType) { + ret.set_string(this.sdk.getCardType(index)); + } else { + ret.set_string(""); + } + }; + Exps.prototype.getCardID = function (ret, index) { + if (this.sdk && this.sdk.getCardID) { + ret.set_string(this.sdk.getCardID(index) || ""); + } else { + ret.set_string(""); + } + }; + Exps.prototype.getData = function (ret, dataIndex) { + var dataKey = "data" + dataIndex; + if (this.customData && this.customData[dataKey] !== undefined) { + ret.set_string(this.customData[dataKey]); + } else { + ret.set_string(""); + } + }; + Exps.prototype.getLastSenderUUID = function (ret) { + ret.set_string(this.lastSenderUUID || ""); + }; + Exps.prototype.getLastMessageJSON = function (ret) { + if (this.lastMessageData) { + ret.set_string(JSON.stringify(this.lastMessageData)); + } else { + ret.set_string("{}"); + } + }; pluginProto.exps = new Exps(); })(); ; @@ -25489,13 +25649,13 @@ cr.getObjectRefTable = function () { return [ cr.plugins_.Function.prototype.cnds.OnFunction, cr.plugins_.Sprite.prototype.acts.SetInstanceVar, cr.plugins_.SenaPlugin.prototype.cnds.OnLoad, - cr.plugins_.SenaPlugin.prototype.acts.Start, cr.plugins_.Sprite.prototype.acts.SetAnimFrame, + cr.plugins_.SenaPlugin.prototype.acts.CalcObjectPositions, cr.behaviors.Rex_MoveTo.prototype.acts.SetTargetPos, cr.plugins_.Sprite.prototype.acts.SetVisible, cr.behaviors.Fade.prototype.acts.RestartFade, + cr.plugins_.SenaPlugin.prototype.acts.Start, cr.plugins_.SenaPlugin.prototype.cnds.OnStart, - cr.plugins_.SenaPlugin.prototype.acts.CalcObjectPositions, cr.system_object.prototype.cnds.Compare, cr.plugins_.Browser.prototype.exps.ExecJS, cr.plugins_.Function.prototype.exps.Param, diff --git a/PairOrNotPair/data.js b/PairOrNotPair/data.js index cbe31c7..f9a9c01 100644 --- a/PairOrNotPair/data.js +++ b/PairOrNotPair/data.js @@ -1 +1 @@ -{"project": [null,"Layout 1",[[0,true,false,false,false,false,false,false,false,false],[1,true,false,false,false,false,false,false,false,false],[2,true,false,false,false,false,false,false,false,false],[3,true,false,false,false,false,false,false,false,false],[4,false,true,true,true,true,true,true,true,false],[5,false,true,true,true,true,true,true,true,false],[6,true,false,false,false,false,false,false,false,false]],[["t0",4,false,[832645631551847,747030953755907],1,0,null,[["Default",0,false,1,0,false,890718070517948,[["images/card-sheet0.png",259973,0,0,400,400,1,0.5,0.5,[],[],0],["images/card-sheet1.png",263,0,0,400,400,1,0.5,0.5,[],[],3]]]],[["Fade",7,109423985995084]],false,true,189668074067921,[],null],["t1",2,false,[],0,0,null,null,[],false,false,446899036715176,[],null,[]],["t2",1,false,[],0,0,null,null,[],false,false,279951028294032,[],null,[]],["t3",6,false,[],0,0,null,null,[],false,false,638675311149895,[],null,[1]],["t4",0,false,[],0,0,null,null,[],false,false,323812348975738,[],null,[0,0,0,1,1,600,600,10000,1]],["t5",4,false,[],1,0,null,[["Default",5,false,1,0,false,603224529360234,[["images/sprite-sheet0.png",168,0,0,250,250,1,0.5,0.5,[],[],3]]]],[["MoveTo",8,322958347596443]],false,true,766178524824789,[],null],["t6",4,false,[],2,0,null,[["Default",5,false,1,0,false,424523015814364,[["images/logo-sheet0.png",265042,0,0,500,373,1,0.5,0.5013405084609985,[],[],0]]]],[["Fade",7,428554181912784],["Anchor",9,745231053998957]],false,true,552570555626384,[],null],["t7",4,false,[],0,0,null,[["Default",5,false,1,0,false,652126218465288,[["images/dim-sheet0.png",168,0,0,250,250,1,0.5,0.5,[],[],2]]]],[],false,false,110156613665136,[],null],["t8",4,false,[],0,0,null,[["Default",5,false,1,0,false,350754728101400,[["images/whitebg-sheet0.png",10721,0,0,300,300,1,0.5,0.5,[],[],0]]]],[],false,true,579527970976703,[],null],["t9",5,false,[],2,0,null,null,[["Fade",7,178464480505189],["Pin",10,467526081848334]],false,true,786176055574544,[],null],["t10",4,false,[497177436793595,729239309366386],2,0,null,[["Default",0,false,1,0,false,669985239709455,[["images/board-sheet0.png",71326,1,1,375,248,1,0.5066666603088379,0.5645161271095276,[],[],0],["images/board-sheet0.png",71326,1,251,375,248,1,0.5066666603088379,0.5645161271095276,[],[],0],["images/board-sheet1.png",34926,0,0,375,248,1,0.5066666603088379,0.5645161271095276,[],[],0]]]],[["MoveTo",8,528559270144365],["Flash",11,612902044506076]],false,true,287865184791218,[],null],["t11",4,false,[],1,0,null,[["Default",5,false,1,0,false,874838186239528,[["images/khunganh-sheet0.png",17395,0,0,344,333,1,0.5,0.5015015006065369,[],[-0.4447674155235291,-0.4444443881511688,0,-0.4744744896888733,0.4389529824256897,-0.4384384155273438,0.4302330017089844,0.4264264702796936,-0.4389534890651703,0.4354354739189148,-0.4709301888942719,-0.003003507852554321],0]]]],[["Pin",10,231061795543969]],false,true,140945273690195,[],null],["t12",4,false,[],1,0,null,[["Default",5,false,1,0,false,874621596859031,[["images/khungchu-sheet0.png",17800,0,0,346,335,1,0.5,0.5014925599098206,[],[-0.4421964883804321,-0.4417910575866699,0,-0.47164186835289,0.43641597032547,-0.4358208775520325,0.4277459979057312,0.4238804578781128,-0.4364162087440491,0.4328354597091675,-0.4682081043720245,-0.002985566854476929],0]]]],[["Pin",10,159833150200432]],false,true,697937616815567,[],null],["t13",4,false,[],2,0,null,[["Default",5,false,1,0,false,292221362444914,[["images/pair-sheet0.png",35236,0,0,260,261,1,0.5,0.5019156932830811,[],[-0.3499999940395355,-0.3524906933307648,0,-0.4980842769145966,0.3500000238418579,-0.3524906933307648,0.4961540102958679,-0.003831684589385986,0.3500000238418579,0.3486592769622803,0,0.4942532777786255,-0.3499999940395355,0.3486592769622803,-0.5,-0.003831684589385986],0]]]],[["Flash",11,789549466343500],["Fade",7,109950111032208]],false,true,105578797035894,[],null],["t14",4,false,[],2,0,null,[["Default",5,false,1,0,false,276152198258229,[["images/notpair-sheet0.png",40570,0,0,260,261,1,0.5,0.5019156932830811,[],[-0.3499999940395355,-0.3524906933307648,0,-0.4980842769145966,0.3500000238418579,-0.3524906933307648,0.5,-0.003831684589385986,0.3500000238418579,0.3486592769622803,0,0.4942532777786255,-0.3499999940395355,0.3486592769622803,-0.496153861284256,-0.003831684589385986],0]]]],[["Flash",11,211067305910300],["Fade",7,707312699042370]],false,true,997385037897763,[],null],["t15",4,false,[],0,0,null,[["Default",5,false,1,0,false,528242315250110,[["images/logo-sheet0.png",265042,0,0,500,373,1,0.5,0.5013405084609985,[],[-0.2120000123977661,-0.1152815222740173,0,-0.4450401961803436,0.2099999785423279,-0.1126005053520203,0.4919999837875366,-0.00268051028251648,0.4279999732971191,0.4021444916725159,0,0.4986594915390015,-0.4280000030994415,0.4021444916725159,-0.492000013589859,-0.00268051028251648],0]]]],[],false,false,787074605580749,[],null],["t16",4,false,[],2,0,null,[["Default",5,false,1,0,false,241515652223496,[["images/khung_timer-sheet0.png",22389,0,0,219,94,1,0.5022830963134766,0.5,[],[],0]]]],[["Fade",7,997231556306015],["Anchor",9,576660608109436]],false,true,674005020294876,[],null],["t17",5,false,[],2,0,null,null,[["Pin",10,526181864648140],["Fade",7,214281814711301]],false,true,455447771867255,[],null],["t18",4,false,[],2,0,null,[["Default",5,false,1,0,false,153430687635755,[["images/boardsetting-sheet0.png",60604,0,0,150,400,1,0.5,0.5,[],[],0]]]],[["Fade",7,604101039505646],["Anchor",9,138538394509026]],false,true,431512464365480,[],null],["t19",4,false,[381570362356615],3,0,null,[["Default",5,false,1,0,false,195566463117201,[["images/setting-sheet0.png",32258,0,0,150,150,1,0.5,0.5,[],[],0]]]],[["Anchor",9,181018554915782],["Fade",7,697411744476075],["Sine",12,997418456065223]],false,true,926529243533863,[],null],["t20",4,false,[452969016405330],4,0,null,[["Default",0,false,1,0,false,548234840993164,[["images/bgm-sheet0.png",181109,0,0,400,400,1,0.5,0.5,[],[],0],["images/bgm-sheet1.png",180959,0,0,400,400,1,0.5,0.5,[],[],0]]]],[["Sine",12,183671727734831],["Flash",11,337903721709512],["Anchor",9,505384369971295],["Fade",7,366891279915273]],false,true,581146236372492,[],null],["t21",4,false,[913684452373396],3,0,null,[["Default",0,false,1,0,false,917131691043351,[["images/pause-sheet0.png",33562,0,0,160,160,1,0.5,0.5,[],[],0],["images/pause-sheet1.png",35372,0,0,160,160,1,0.5,0.5,[],[],0]]]],[["Fade",7,248858186771519],["Flash",11,738861606422096],["Anchor",9,730664206632598]],false,true,221443440458609,[],null],["t22",4,false,[127981865584797],0,0,null,[["Default",5,false,1,0,false,877413420385013,[["images/black-sheet0.png",1222,0,0,150,150,1,0.5,0.5,[],[],0]]]],[],false,true,641318819175131,[],null],["t23",4,false,[],1,0,null,[["Default",5,false,1,0,false,969763266374721,[["images/pauseicon-sheet0.png",175556,0,0,400,400,1,0.5,0.5,[],[],0]]]],[["EaseTween",13,368488122770317]],false,true,326852708047056,[],null],["t24",3,false,[],0,0,null,null,[],false,false,933974240192996,[],null,["G40611S1T30"]],["t25",4,false,[],1,0,null,[["Default",5,false,1,0,false,730596281533864,[["images/wrong-sheet0.png",67941,0,0,240,220,1,0.5,0.5,[],[],0]]]],[["Fade",7,554451434897465]],false,true,398408225416723,[],null],["t26",4,false,[],1,0,null,[["Default",5,false,1,0,false,195891535423786,[["images/correct-sheet0.png",47573,0,0,265,211,1,0.501886785030365,0.5023696422576904,[],[],0]]]],[["Fade",7,274742837785012]],false,true,662615136772730,[],null],["t27",4,false,[709456647926299],1,0,null,[["Default",5,false,1,0,false,156299836628869,[["images/khungaudio-sheet0.png",77963,0,0,300,300,1,0.5,0.5,[],[-0.4433594048023224,-0.4433594048023224,0,-0.4472655951976776,0.4257810115814209,-0.4257811903953552,0.4472659826278687,0,0.4316409826278687,0.4316409826278687,-0.4394530951976776,0.4394530057907105,-0.4550780951976776,0],0]]]],[["Pin",10,344973824848344]],false,true,399155464340678,[],null],["t28",4,true,[],1,0,null,null,[["Pin",10,613555469553139]],false,false,679965430658239,[],null]],[[28,0]],[["Layout 1",1200,1200,false,"Event sheet 1",844875475670604,[["Layer 0",0,884568816551023,true,[255,255,255],true,0,0,1,false,false,0,0,0,[[[619,595,0,3836,4064,0,0,0.1500000059604645,0.5,0.5,0,0,[]],8,27,[],[],[0,"Default",0,1]],[[2354,200,0,250,250,0,0,1,0.5,0.5,0,0,[]],5,19,[],[[1,1200,0,0]],[0,"Default",0,1]],[[600,-2500,0,1085.85107421875,718.1094970703125,0,0,1,0.5066666603088379,0.5645161271095276,0,0,[]],10,0,[[0],[0]],[[1,1500,0,0],[]],[0,"Default",0,1]],[[361.6038208007813,497.9408569335938,0,438.356689453125,438.356689453125,0,0,1,0.5,0.5,0,0,[]],0,7,[[0],[""]],[[],[0,1,0,0,0]],[0,"Default",0,1]],[[363.9991455078125,504.7830810546875,0,510.8400573730469,497.0929565429688,0,0,1,0.5,0.5015015006065369,0,0,[]],11,4,[],[[]],[0,"Default",0,1]],[[851,506,0,505.8770141601563,492.2630004882813,0,0,1,0.5,0.5014925599098206,0,0,[]],12,5,[],[[]],[0,"Default",0,1]],[[482,998,0,200,200,0,0,1,0.5,0.5019156932830811,0,0,[]],13,6,[],[[],[0,1,0,0,0]],[1,"Default",0,1]],[[732,998,0,200,200,0,0,1,0.5,0.5019156932830811,0,0,[]],14,10,[],[[],[0,1,0,0,0]],[1,"Default",0,1]],[[842.8190307617188,494.7768249511719,0,381.1463623046875,405.7266235351563,0,0,1,0.5,0.5,0,0,[]],9,3,[],[[0,1,0,0,0],[]],["Text",1,"72pt UTM Alexander","rgb(0,0,0)",1,1,4,0,0]],[[119.0068130493164,91.40592193603516,0,215.9014129638672,159.5821075439453,0,0,1,0.5,0.5013405084609985,0,0,[]],6,26,[],[[1,1,0,0,0],[0,0,0,0,1]],[0,"Default",0,1]],[[1064,81,0,261.9682922363281,112.4430236816406,0,0,1,0.5022830963134766,0.5,0,0,[]],16,8,[],[[1,1,0,0,0],[1,0,1,0,1]],[0,"Default",0,1]],[[1031.379150390625,81.32679748535156,0,123.6445922851563,73.16305541992188,0,0,1,0.5,0.5,0,0,[]],17,13,[],[[],[1,1,0,0,0]],["",0,"bold 29pt UTM Alexander","rgb(255,255,255)",1,1,4,0,0]],[[1145.981323242188,1060.192260742188,0,87.490966796875,251.1931762695313,0,0,1,0.5,0.5,0,0,[]],18,16,[],[[1,0.5,0,0,1],[1,1,1,1,1]],[1,"Default",0,1]],[[1145.585083007813,1147.567260742188,0,100,100,0,0,1,0.5,0.5,0,0,[]],19,20,[[0]],[[1,1,1,1,1],[1,1,0,0,0],[0,2,1,0.5,0,0,0,5,0]],[0,"Default",0,1]],[[1145,990,0,60,60,0,0,1,0.5,0.5,0,0,[]],20,1,[[0]],[[0,2,0,4,0,0,0,10,0],[],[1,1,1,1,1],[1,0.5,0,0,0]],[1,"Default",0,1]],[[1145,1060,0,60,60,0,0,1,0.5,0.5,0,0,[]],21,22,[[0]],[[1,0.5,0,0,0],[],[1,1,1,1,1]],[1,"Default",0,1]],[[-2480,-736,0,146.2369995117188,123.5670013427734,0,0,1,0.5,0.5,0,0,[]],25,2,[],[[1,0.5,0,0.5,1]],[0,"Default",0,1]],[[-2610,-1226,0,146.2371978759766,123.566764831543,0,0,1,0.501886785030365,0.5023696422576904,0,0,[]],26,9,[],[[1,0.5,0,0.5,1]],[0,"Default",0,1]],[[-3617,-645,0,505.8770141601563,492.2630004882813,0,0,1,0.5,0.5,0,0,[]],27,15,[[""]],[[]],[0,"Default",0,1]]],[]],["Layer 1",1,697639113343856,false,[255,255,255],true,0,0,1,false,false,1,0,0,[],[]],["Layer 2",2,892205975914457,false,[255,255,255],true,0,0,1,false,false,1,0,0,[[[664,585,0,4164.1083984375,3901.98779296875,0,0,0.699999988079071,0.5,0.5,0,0,[]],22,14,[[2]],[],[0,"Default",0,1]],[[600,600,0,520.5765991210938,520.5765991210938,0,0,1,0.5,0.5,0,0,[]],23,23,[],[[0,7,17,"current","100, 100",1,"0,0",5,0,1,0,""]],[0,"Default",0,1]]],[]]],[],[]]],[["Event sheet 1",[[1,"gameState",1,"\"Loading\"",false,false,917912348433941,false],[1,"isAnswered",0,0,false,false,343001073098932,false],[0,null,false,null,735973858432743,[[-1,14,null,1,false,false,false,678751856976844,false]],[[-1,15,null,835582632273930,false,[[11,"isAnswered"],[7,[0,1]]]],[-1,15,null,689205929193097,false,[[11,"gameState"],[7,[2,"Loading"]]]],[4,16,null,504954620332075,false,[[2,["8-bit-gaming-background-music-358443",false]],[3,1],[0,[0,-10]],[1,[2,"bgm"]]]],[17,17,null,767732578198252,false,[[0,[4,[20,17,18,false,null],[0,5]]]]],[17,19,"Pin",142253184886856,false,[[4,16],[3,0]]],[0,20,null,315313699671418,false],[12,20,null,360932376727750,false],[27,20,null,574700871571887,false],[-1,21,null,230151175983218,false,[[0,[1,0.1]]]],[1,22,null,492445486390135,false,[[1,[2,"initAnimation"]],[13]]],[-1,21,null,875969266385846,false,[[0,[0,1]]]],[24,23,null,156201835247813,false],[17,24,null,488326011734529,false,[[7,[20,24,25,false,null]]]],[9,26,null,927956499011984,false,[[3,1]]]]],[0,null,false,null,409190670644589,[[1,27,null,2,false,false,false,588434831572510,false,[[1,[2,"initAnimation"]]]]],[[10,28,null,507439785677112,false,[[10,0],[7,[0,600]]]],[10,28,null,677170194000670,false,[[10,1],[7,[0,500]]]]]],[0,null,false,null,510830548248475,[[24,29,null,1,false,false,false,748270851559986,false]],[[24,30,null,758448960329902,false],[-1,15,null,591675398880057,false,[[11,"isAnswered"],[7,[0,0]]]],[10,31,null,486350455968594,false,[[0,[0,0]]]]],[[0,null,false,null,482049696267697,[],[[10,32,"MoveTo",953887716607701,false,[[0,[21,10,false,null,0]],[0,[21,10,false,null,1]]]],[-1,21,null,759098381466480,false,[[0,[0,2]]]],[13,33,null,194936901832718,false,[[3,1]]],[14,33,null,277189195476717,false,[[3,1]]],[13,34,"Fade",270950208064557,false],[14,34,"Fade",789810456457350,false],[-1,21,null,884957720804727,false,[[0,[1,0.5]]]],[4,16,null,362569822775843,false,[[2,["alert-234711",false]],[3,0],[0,[0,0]],[1,[2,""]]]]]]]],[0,null,false,null,947589776952019,[[24,35,null,1,false,false,false,576838624565327,false]],[[24,36,null,875073218407452,false,[[0,[0,2]],[0,[0,500]],[0,[0,0]],[0,[0,1200]]]],[1,22,null,119531161639034,false,[[1,[2,"SpawnItem"]],[13,[7,[0,0]]]]]]],[0,null,false,null,994967716794356,[[1,27,null,2,false,false,false,509631773544509,false,[[1,[2,"SpawnItem"]]]]],[],[[0,null,false,null,610164049410395,[[-1,37,null,0,false,false,false,392447189620764,false,[[7,[20,2,38,false,null,[[10,[10,[2,"window.SenaTrigger.sdk.getOptionsValue("],[20,1,39,false,null,[[0,0]]]],[2,").type"]]]]],[8,0],[7,[2,"image"]]]]],[[-1,40,null,961739969714974,false,[[4,0],[5,[0,0]],[0,[20,24,41,false,null,[[20,1,39,false,null,[[0,0]]]]]],[0,[20,10,42,false,null]]]],[0,31,null,270011674650562,false,[[0,[20,1,39,false,null,[[0,0]]]]]],[0,28,null,851634350619732,false,[[10,1],[7,[20,2,38,false,null,[[10,[10,[2,"window.SenaTrigger.sdk.getOptionsValue("],[20,1,39,false,null,[[0,0]]]],[2,").value"]]]]]]],[0,43,null,644358142787251,false,[[1,[21,0,true,null,1]],[3,1],[3,0]]],[0,19,"Pin",140288022014696,false,[[4,10],[3,0]]],[11,19,"Pin",287935358648710,false,[[4,0],[3,0]]]]],[0,null,false,null,452373755432223,[[-1,37,null,0,false,false,false,372535880888446,false,[[7,[20,2,38,false,null,[[10,[10,[2,"window.SenaTrigger.sdk.getOptionsValue("],[20,1,39,false,null,[[0,0]]]],[2,").type"]]]]],[8,0],[7,[2,"text"]]]]],[[-1,40,null,135459156920740,false,[[4,12],[5,[0,0]],[0,[20,24,41,false,null,[[20,1,39,false,null,[[0,0]]]]]],[0,[20,10,42,false,null]]]],[12,19,"Pin",479285466269610,false,[[4,10],[3,0]]],[9,24,null,745772589589107,false,[[7,[20,2,38,false,null,[[10,[10,[2,"window.SenaTrigger.sdk.getOptionsValue("],[20,1,39,false,null,[[0,0]]]],[2,").value"]]]]]]],[9,19,"Pin",210195178789605,false,[[4,12],[3,0]]],[9,44,null,112674879895800,false,[[0,[19,45,[[6,[0,48],[7,[0,9],[19,46,[[0,1],[19,47,[[20,9,48,true,null]]]]]]],[0,36],[0,100]]]]]],[9,26,null,945994360328021,false,[[3,1]]]]],[0,null,false,null,823956903714782,[[-1,37,null,0,false,false,false,111518794934965,false,[[7,[20,2,38,false,null,[[10,[10,[2,"window.SenaTrigger.sdk.getOptionsValue("],[20,1,39,false,null,[[0,0]]]],[2,").type"]]]]],[8,0],[7,[2,"audio"]]]]],[[-1,40,null,958762952957998,false,[[4,27],[5,[0,0]],[0,[20,24,41,false,null,[[20,1,39,false,null,[[0,0]]]]]],[0,[20,10,42,false,null]]]],[27,28,null,190838365534884,false,[[10,0],[7,[20,2,38,false,null,[[10,[10,[2,"window.SenaTrigger.sdk.getOptionsValue("],[20,1,39,false,null,[[0,0]]]],[2,").value"]]]]]]],[27,19,"Pin",788912892555357,false,[[4,10],[3,0]]]]],[0,null,false,null,282901785531611,[[1,49,null,0,false,false,false,979740074943771,false,[[0,[0,0]],[8,0],[7,[0,0]]]]],[[-1,21,null,271555275693773,false,[[0,[1,0.0001]]]],[1,22,null,843330116360929,false,[[1,[2,"SpawnItem"]],[13,[7,[0,1]]]]]]]]],[0,null,false,null,425167135176713,[[3,50,null,1,false,false,false,410949676731972,false,[[4,13]]],[-1,51,null,0,false,false,false,816908260311263,false,[[11,"isAnswered"],[8,0],[7,[0,0]]]],[13,52,null,0,false,false,false,774510238044776,false],[-1,53,null,0,false,true,false,436315931424812,false,[[5,[0,2]]]]],[[-1,15,null,664374503571565,false,[[11,"isAnswered"],[7,[0,1]]]],[4,16,null,134866217507700,false,[[2,["button-124476",false]],[3,0],[0,[0,0]],[1,[2,""]]]],[24,54,null,466732186127560,false,[[7,[2,"pair"]]]]]],[0,null,false,null,519733936846496,[[3,50,null,1,false,false,false,721726484518019,false,[[4,14]]],[-1,51,null,0,false,false,false,346185755632153,false,[[11,"isAnswered"],[8,0],[7,[0,0]]]],[14,52,null,0,false,false,false,349282808967504,false],[-1,53,null,0,false,true,false,730764445901707,false,[[5,[0,2]]]]],[[-1,15,null,760207462598177,false,[[11,"isAnswered"],[7,[0,1]]]],[4,16,null,948069073352963,false,[[2,["button-124476",false]],[3,0],[0,[0,0]],[1,[2,""]]]],[24,54,null,827612706299655,false,[[7,[2,"not_pair"]]]]]],[0,null,false,null,567576099568646,[[24,55,null,1,false,false,false,860707230149725,false]],[[4,16,null,163533988803741,false,[[2,["collect-5930",false]],[3,0],[0,[0,20]],[1,[2,""]]]],[10,31,null,229711739866817,false,[[0,[0,1]]]],[13,33,null,750136158739880,false,[[3,0]]],[14,33,null,739031542223604,false,[[3,0]]],[-1,40,null,292867760183386,false,[[4,26],[5,[0,0]],[0,[0,600]],[0,[0,500]]]],[26,56,null,259290996539027,false,[[0,[0,3]]]],[-1,15,null,587915663134748,false,[[11,"gameState"],[7,[2,"End"]]]],[24,57,null,155371668329003,false],[-1,21,null,412149329128792,false,[[0,[0,1]]]]]],[0,null,false,null,106140135917498,[[24,58,null,1,false,false,false,776838699966765,false]],[[4,16,null,740684180176215,false,[[2,["error-010-206498",false]],[3,0],[0,[0,0]],[1,[2,""]]]],[10,31,null,665223792015155,false,[[0,[0,2]]]],[-1,40,null,236412359087257,false,[[4,25],[5,[0,0]],[0,[0,600]],[0,[0,600]]]],[25,56,null,397550030508045,false,[[0,[0,3]]]],[13,33,null,403044106628594,false,[[3,0]]],[14,33,null,872121206783216,false,[[3,0]]],[-1,15,null,861076094882004,false,[[11,"gameState"],[7,[2,"End"]]]],[24,57,null,154289412636345,false],[-1,21,null,648080589768195,false,[[0,[0,1]]]]]],[0,null,false,null,193489767858303,[[3,50,null,1,false,false,false,915162646906181,false,[[4,27]]],[-1,53,null,0,false,true,false,302546429403442,false,[[5,[0,2]]]],[-1,51,null,0,false,false,false,439090010223468,false,[[11,"isAnswered"],[8,0],[7,[0,0]]]]],[[4,16,null,986337956721232,false,[[2,["bubble-pop-389501",false]],[3,0],[0,[0,0]],[1,[2,""]]]],[4,59,null,773146276942959,false,[[1,[2,"bgm"]],[3,0]]],[-1,21,null,347061226330189,false,[[0,[1,0.5]]]],[2,60,null,648947335287896,false,[[1,[10,[10,[2,"if(window.currentAudio){window.currentAudio.pause();} window.currentAudio = new Audio('"],[21,27,true,null,0]],[2,"'); window.currentAudio.play();"]]]]],[-1,21,null,199211375649296,false,[[0,[0,2]]]],[4,59,null,430049925753612,false,[[1,[2,"bgm"]],[3,1]]]]],[0,[true,"SettingInteract"],false,null,662425289282046,[[-1,61,null,0,false,false,false,662425289282046,false,[[1,[2,"SettingInteract"]]]]],[],[[0,null,false,null,306848596057752,[[3,50,null,1,false,false,false,932944923218261,false,[[4,20]]],[20,62,null,0,false,false,false,914347585587317,false,[[10,0],[8,0],[7,[0,0]]]],[20,52,null,0,false,false,false,692995811551301,false],[-1,51,null,0,false,false,false,155675808149733,false,[[11,"gameState"],[8,1],[7,[2,"End"]]]]],[[20,31,null,948504849133416,false,[[0,[0,1]]]],[4,16,null,350221524561958,false,[[2,["bubble-pop-389501",false]],[3,0],[0,[0,10]],[1,[2,""]]]],[20,63,"Flash",384183747004861,false,[[0,[1,0.1]],[0,[1,0.1]],[0,[1,0.4]]]],[-1,21,null,129817462866840,false,[[0,[1,0.5]]]],[4,64,null,345479695800143,false,[[1,[2,"bgm"]],[3,0]]],[20,28,null,999361144941120,false,[[10,0],[7,[0,1]]]]]],[0,null,false,null,123258644011593,[[3,50,null,1,false,false,false,160800476342728,false,[[4,20]]],[20,62,null,0,false,false,false,135562346389702,false,[[10,0],[8,0],[7,[0,1]]]],[20,52,null,0,false,false,false,774664381192139,false],[-1,51,null,0,false,false,false,903705098494192,false,[[11,"gameState"],[8,1],[7,[2,"End"]]]]],[[20,31,null,995180335278842,false,[[0,[0,0]]]],[4,16,null,623817860047631,false,[[2,["bubble-pop-389501",false]],[3,0],[0,[0,10]],[1,[2,""]]]],[20,63,"Flash",452912332476200,false,[[0,[1,0.1]],[0,[1,0.1]],[0,[1,0.4]]]],[-1,21,null,387647570576161,false,[[0,[1,0.5]]]],[4,64,null,928498562204487,false,[[1,[2,"bgm"]],[3,1]]],[20,28,null,728381318168794,false,[[10,0],[7,[0,0]]]]]],[0,null,false,null,448357049179749,[[3,50,null,1,false,false,false,509238486781376,false,[[4,21]]],[21,62,null,0,false,false,false,807349238828883,false,[[10,0],[8,0],[7,[0,0]]]],[21,52,null,0,false,false,false,129566289663620,false],[-1,51,null,0,false,false,false,262712753646433,false,[[11,"gameState"],[8,1],[7,[2,"End"]]]]],[[-1,15,null,851639367683860,false,[[11,"gameState"],[7,[2,"Idle"]]]],[24,57,null,851391870192552,false],[21,31,null,539370083281492,false,[[0,[0,1]]]],[4,16,null,264880397815434,false,[[2,["bubble-pop-389501",false]],[3,0],[0,[0,10]],[1,[2,""]]]],[21,63,"Flash",930155068909623,false,[[0,[1,0.1]],[0,[1,0.1]],[0,[1,0.4]]]],[-1,21,null,182340588341415,false,[[0,[1,0.5]]]],[-1,65,null,887896485448977,false,[[5,[0,2]],[3,1]]],[1,22,null,667007922604395,false,[[1,[2,"Invis"]],[13]]],[4,64,null,284397683519709,false,[[1,[2,"bgm"]],[3,0]]],[21,28,null,924106335524232,false,[[10,0],[7,[0,1]]]]]],[0,null,false,null,450003808395272,[[3,50,null,1,false,false,false,622815553660478,false,[[4,21]]],[21,62,null,0,false,false,false,187413472833021,false,[[10,0],[8,0],[7,[0,1]]]],[21,52,null,0,false,false,false,215014215432666,false],[-1,51,null,0,false,false,false,552421940797053,false,[[11,"gameState"],[8,1],[7,[2,"End"]]]]],[[24,66,null,325986602204176,false],[21,31,null,869440382600965,false,[[0,[0,0]]]],[4,16,null,811491220024793,false,[[2,["bubble-pop-389501",false]],[3,0],[0,[0,10]],[1,[2,""]]]],[21,63,"Flash",664033056273386,false,[[0,[1,0.1]],[0,[1,0.1]],[0,[1,0.4]]]],[-1,21,null,446253560863407,false,[[0,[1,0.5]]]],[-1,65,null,675652887990582,false,[[5,[0,2]],[3,0]]],[1,22,null,111519736151017,false,[[1,[2,"Visible"]],[13]]],[4,64,null,622050455857077,false,[[1,[2,"bgm"]],[3,1]]],[21,28,null,123625541667893,false,[[10,0],[7,[0,0]]]]]],[0,null,false,null,565410792316623,[[3,50,null,1,false,false,false,170061980256947,false,[[4,23]]],[-1,53,null,0,false,false,false,146755769816102,false,[[5,[0,2]]]],[-1,51,null,0,false,false,false,131004524611628,false,[[11,"gameState"],[8,1],[7,[2,"End"]]]]],[[24,66,null,101906306923225,false],[21,31,null,535836765357221,false,[[0,[0,0]]]],[4,16,null,779854080480739,false,[[2,["bubble-pop-389501",false]],[3,0],[0,[0,10]],[1,[2,""]]]],[23,67,"EaseTween",101732131620840,false],[21,63,"Flash",241321545878932,false,[[0,[1,0.1]],[0,[1,0.1]],[0,[1,0.4]]]],[-1,21,null,378528681684007,false,[[0,[1,0.5]]]],[-1,65,null,126821242265351,false,[[5,[0,2]],[3,0]]],[1,22,null,717796177026843,false,[[1,[2,"Visible"]],[13]]],[4,64,null,475471582095738,false,[[1,[2,"bgm"]],[3,1]]],[21,28,null,771765994050223,false,[[10,0],[7,[0,0]]]]]],[0,null,false,null,712399735829728,[[3,50,null,1,false,false,false,904799046757544,false,[[4,19]]],[19,62,null,0,false,false,false,241135556455023,false,[[10,0],[8,0],[7,[0,0]]]],[-1,51,null,0,false,false,false,612736826734962,false,[[11,"gameState"],[8,1],[7,[2,"End"]]]]],[[1,22,null,434869539815797,false,[[1,[2,"SettingOnTop"]],[13]]],[4,16,null,862665500463100,false,[[2,["button-124476",false]],[3,0],[0,[0,0]],[1,[2,""]]]],[19,68,"Sine",668734804640600,false,[[3,1]]],[-1,21,null,352156281630067,false,[[0,[1,0.5]]]],[18,33,null,316223170614386,false,[[3,1]]],[21,33,null,281060938349899,false,[[3,1]]],[20,33,null,121991134379827,false,[[3,1]]],[1,22,null,522252274037370,false,[[1,[2,"Fade"]],[13]]],[19,28,null,379040796545314,false,[[10,0],[7,[0,1]]]],[19,68,"Sine",894915935809908,false,[[3,0]]]]],[0,null,false,null,804058792300540,[[3,50,null,1,false,false,false,352400815987313,false,[[4,19]]],[19,62,null,0,false,false,false,698224849695398,false,[[10,0],[8,0],[7,[0,1]]]],[-1,51,null,0,false,false,false,217718240079500,false,[[11,"gameState"],[8,1],[7,[2,"End"]]]]],[[1,22,null,770223255730318,false,[[1,[2,"SettingOnTop"]],[13]]],[4,16,null,483980074041194,false,[[2,["button-124476",false]],[3,0],[0,[0,0]],[1,[2,""]]]],[19,68,"Sine",121002498648825,false,[[3,1]]],[-1,21,null,819229917518326,false,[[0,[1,0.5]]]],[18,33,null,933254203753226,false,[[3,0]]],[21,33,null,618144486811910,false,[[3,0]]],[20,33,null,319111452250371,false,[[3,0]]],[-1,21,null,484006872888461,false,[[0,[1,0.1]]]],[19,28,null,511880856713501,false,[[10,0],[7,[0,0]]]],[19,68,"Sine",582728533834561,false,[[3,0]]]]],[0,null,false,null,222974659250444,[[1,27,null,2,false,false,false,290211026209909,false,[[1,[2,"Fade"]]]]],[[18,34,"Fade",221570681707837,false],[21,34,"Fade",538083817109571,false],[20,34,"Fade",421531648145727,false]]],[0,null,false,null,936735808359626,[[1,27,null,2,false,false,false,720196850101048,false,[[1,[2,"SettingOnTop"]]]]],[[18,69,null,255241951441322,false],[21,69,null,352824334568013,false],[20,69,null,480699942817325,false],[19,69,null,647464890701990,false]]]]],[0,null,false,null,592932631137115,[[-1,70,null,0,false,false,false,540891267007448,false]],[[11,71,null,860366334236641,false,[[0,[6,[20,0,72,false,null],[1,1.13]]],[0,[6,[20,0,73,false,null],[1,1.13]]]]]]],[1,"CurrentTime",0,0,false,false,155043793599981,false],[0,null,false,null,587690435899080,[[-1,70,null,0,false,false,false,973137293246634,false],[-1,51,null,0,false,false,false,910229288089595,false,[[11,"gameState"],[8,1],[7,[2,"End"]]]]],[[-1,15,null,619271796347755,false,[[11,"CurrentTime"],[7,[19,46,[[0,0],[5,[20,24,25,false,null],[20,24,74,false,null]]]]]]],[17,24,null,176764917811129,false,[[7,[19,75,[[19,46,[[0,0],[19,76,[[5,[20,24,25,false,null],[20,24,74,false,null]]]]]]]]]]]],[[0,null,false,null,629058354879533,[[-1,37,null,0,false,false,false,537230878897647,false,[[7,[20,24,74,false,null]],[8,5],[7,[20,24,25,false,null]]]]],[],[[0,null,false,null,610022337034013,[[-1,77,null,0,false,false,false,952522393895503,false],[-1,51,null,0,false,false,false,894986910431854,false,[[11,"isAnswered"],[8,0],[7,[0,0]]]]],[[-1,15,null,308282624828840,false,[[11,"gameState"],[7,[2,"End"]]]],[-1,15,null,712652624529486,false,[[11,"isAnswered"],[7,[0,1]]]],[24,57,null,256565761310229,false],[-1,21,null,630594951110651,false,[[0,[1,0.1]]]],[-1,40,null,359008398855499,false,[[4,25],[5,[0,0]],[0,[0,600]],[0,[0,600]]]],[25,56,null,457688650876889,false,[[0,[1,3.5]]]],[24,54,null,847864227661504,false,[[7,[2,""]]]]]]]]]],[0,null,false,null,733512889543758,[[1,27,null,2,false,false,false,473074764835965,false,[[1,[2,"Invis"]]]]],[[0,33,null,535204822254148,false,[[3,0]]],[12,33,null,255520568969699,false,[[3,0]]],[27,33,null,473035349117911,false,[[3,0]]],[9,26,null,480583205022706,false,[[3,0]]],[11,33,null,926051808474031,false,[[3,0]]]]],[0,null,false,null,432626632944379,[[1,27,null,2,false,false,false,762798926810478,false,[[1,[2,"Visible"]]]]],[[0,33,null,729502721973018,false,[[3,1]]],[12,33,null,441779994184153,false,[[3,1]]],[27,33,null,895815782028179,false,[[3,1]]],[9,26,null,471237351701842,false,[[3,1]]],[11,33,null,382987712523447,false,[[3,1]]]]]]]],[["alert-234711.ogg",23907],["bubble-pop-389501.ogg",18257],["button-124476.ogg",13157],["collect-5930.ogg",10731],["error-010-206498.ogg",11425],["8-bit-gaming-background-music-358443.ogg",934596],["edugamery-music-20.ogg",1614594]],"media/",false,1200,1200,3,true,true,true,"1.0.0.0",true,true,3,0,28,false,true,1,true,"PairOrNotPair",0,[[0,11],[9,12]]]} \ No newline at end of file +{"project": [null,"Layout 1",[[0,true,false,false,false,false,false,false,false,false],[1,true,false,false,false,false,false,false,false,false],[2,true,false,false,false,false,false,false,false,false],[3,true,false,false,false,false,false,false,false,false],[4,false,true,true,true,true,true,true,true,false],[5,false,true,true,true,true,true,true,true,false],[6,true,false,false,false,false,false,false,false,false]],[["t0",4,false,[832645631551847,747030953755907],1,0,null,[["Default",0,false,1,0,false,890718070517948,[["images/card-sheet0.png",259973,0,0,400,400,1,0.5,0.5,[],[],0],["images/card-sheet1.png",263,0,0,400,400,1,0.5,0.5,[],[],3]]]],[["Fade",7,109423985995084]],false,true,189668074067921,[],null],["t1",2,false,[],0,0,null,null,[],false,false,446899036715176,[],null,[]],["t2",1,false,[],0,0,null,null,[],false,false,279951028294032,[],null,[]],["t3",6,false,[],0,0,null,null,[],false,false,638675311149895,[],null,[1]],["t4",0,false,[],0,0,null,null,[],false,false,323812348975738,[],null,[0,0,0,1,1,600,600,10000,1]],["t5",4,false,[],1,0,null,[["Default",5,false,1,0,false,603224529360234,[["images/sprite-sheet0.png",168,0,0,250,250,1,0.5,0.5,[],[],3]]]],[["MoveTo",8,322958347596443]],false,true,766178524824789,[],null],["t6",4,false,[],2,0,null,[["Default",5,false,1,0,false,424523015814364,[["images/logo-sheet0.png",265042,0,0,500,373,1,0.5,0.5013405084609985,[],[],0]]]],[["Fade",7,428554181912784],["Anchor",9,745231053998957]],false,true,552570555626384,[],null],["t7",4,false,[],0,0,null,[["Default",5,false,1,0,false,652126218465288,[["images/dim-sheet0.png",168,0,0,250,250,1,0.5,0.5,[],[],2]]]],[],false,false,110156613665136,[],null],["t8",4,false,[],0,0,null,[["Default",5,false,1,0,false,350754728101400,[["images/whitebg-sheet0.png",10721,0,0,300,300,1,0.5,0.5,[],[],0]]]],[],false,true,579527970976703,[],null],["t9",5,false,[],2,0,null,null,[["Fade",7,178464480505189],["Pin",10,467526081848334]],false,true,786176055574544,[],null],["t10",4,false,[497177436793595,729239309366386],2,0,null,[["Default",0,false,1,0,false,669985239709455,[["images/board-sheet0.png",71326,1,1,375,248,1,0.5066666603088379,0.5645161271095276,[],[],0],["images/board-sheet0.png",71326,1,251,375,248,1,0.5066666603088379,0.5645161271095276,[],[],0],["images/board-sheet1.png",34926,0,0,375,248,1,0.5066666603088379,0.5645161271095276,[],[],0]]]],[["MoveTo",8,528559270144365],["Flash",11,612902044506076]],false,true,287865184791218,[],null],["t11",4,false,[],1,0,null,[["Default",5,false,1,0,false,874838186239528,[["images/khunganh-sheet0.png",17395,0,0,344,333,1,0.5,0.5015015006065369,[],[-0.4447674155235291,-0.4444443881511688,0,-0.4744744896888733,0.4389529824256897,-0.4384384155273438,0.4302330017089844,0.4264264702796936,-0.4389534890651703,0.4354354739189148,-0.4709301888942719,-0.003003507852554321],0]]]],[["Pin",10,231061795543969]],false,true,140945273690195,[],null],["t12",4,false,[],1,0,null,[["Default",5,false,1,0,false,874621596859031,[["images/khungchu-sheet0.png",17800,0,0,346,335,1,0.5,0.5014925599098206,[],[-0.4421964883804321,-0.4417910575866699,0,-0.47164186835289,0.43641597032547,-0.4358208775520325,0.4277459979057312,0.4238804578781128,-0.4364162087440491,0.4328354597091675,-0.4682081043720245,-0.002985566854476929],0]]]],[["Pin",10,159833150200432]],false,true,697937616815567,[],null],["t13",4,false,[],2,0,null,[["Default",5,false,1,0,false,292221362444914,[["images/pair-sheet0.png",35236,0,0,260,261,1,0.5,0.5019156932830811,[],[-0.3499999940395355,-0.3524906933307648,0,-0.4980842769145966,0.3500000238418579,-0.3524906933307648,0.4961540102958679,-0.003831684589385986,0.3500000238418579,0.3486592769622803,0,0.4942532777786255,-0.3499999940395355,0.3486592769622803,-0.5,-0.003831684589385986],0]]]],[["Flash",11,789549466343500],["Fade",7,109950111032208]],false,true,105578797035894,[],null],["t14",4,false,[],2,0,null,[["Default",5,false,1,0,false,276152198258229,[["images/notpair-sheet0.png",40570,0,0,260,261,1,0.5,0.5019156932830811,[],[-0.3499999940395355,-0.3524906933307648,0,-0.4980842769145966,0.3500000238418579,-0.3524906933307648,0.5,-0.003831684589385986,0.3500000238418579,0.3486592769622803,0,0.4942532777786255,-0.3499999940395355,0.3486592769622803,-0.496153861284256,-0.003831684589385986],0]]]],[["Flash",11,211067305910300],["Fade",7,707312699042370]],false,true,997385037897763,[],null],["t15",4,false,[],0,0,null,[["Default",5,false,1,0,false,528242315250110,[["images/logo-sheet0.png",265042,0,0,500,373,1,0.5,0.5013405084609985,[],[-0.2120000123977661,-0.1152815222740173,0,-0.4450401961803436,0.2099999785423279,-0.1126005053520203,0.4919999837875366,-0.00268051028251648,0.4279999732971191,0.4021444916725159,0,0.4986594915390015,-0.4280000030994415,0.4021444916725159,-0.492000013589859,-0.00268051028251648],0]]]],[],false,false,787074605580749,[],null],["t16",4,false,[],2,0,null,[["Default",5,false,1,0,false,241515652223496,[["images/khung_timer-sheet0.png",22389,0,0,219,94,1,0.5022830963134766,0.5,[],[],0]]]],[["Fade",7,997231556306015],["Anchor",9,576660608109436]],false,true,674005020294876,[],null],["t17",5,false,[],2,0,null,null,[["Pin",10,526181864648140],["Fade",7,214281814711301]],false,true,455447771867255,[],null],["t18",4,false,[],2,0,null,[["Default",5,false,1,0,false,153430687635755,[["images/boardsetting-sheet0.png",60604,0,0,150,400,1,0.5,0.5,[],[],0]]]],[["Fade",7,604101039505646],["Anchor",9,138538394509026]],false,true,431512464365480,[],null],["t19",4,false,[381570362356615],3,0,null,[["Default",5,false,1,0,false,195566463117201,[["images/setting-sheet0.png",32258,0,0,150,150,1,0.5,0.5,[],[],0]]]],[["Anchor",9,181018554915782],["Fade",7,697411744476075],["Sine",12,997418456065223]],false,true,926529243533863,[],null],["t20",4,false,[452969016405330],4,0,null,[["Default",0,false,1,0,false,548234840993164,[["images/bgm-sheet0.png",181109,0,0,400,400,1,0.5,0.5,[],[],0],["images/bgm-sheet1.png",180959,0,0,400,400,1,0.5,0.5,[],[],0]]]],[["Sine",12,183671727734831],["Flash",11,337903721709512],["Anchor",9,505384369971295],["Fade",7,366891279915273]],false,true,581146236372492,[],null],["t21",4,false,[913684452373396],3,0,null,[["Default",0,false,1,0,false,917131691043351,[["images/pause-sheet0.png",33562,0,0,160,160,1,0.5,0.5,[],[],0],["images/pause-sheet1.png",35372,0,0,160,160,1,0.5,0.5,[],[],0]]]],[["Fade",7,248858186771519],["Flash",11,738861606422096],["Anchor",9,730664206632598]],false,true,221443440458609,[],null],["t22",4,false,[127981865584797],0,0,null,[["Default",5,false,1,0,false,877413420385013,[["images/black-sheet0.png",1222,0,0,150,150,1,0.5,0.5,[],[],0]]]],[],false,true,641318819175131,[],null],["t23",4,false,[],1,0,null,[["Default",5,false,1,0,false,969763266374721,[["images/pauseicon-sheet0.png",175556,0,0,400,400,1,0.5,0.5,[],[],0]]]],[["EaseTween",13,368488122770317]],false,true,326852708047056,[],null],["t24",3,false,[],0,0,null,null,[],false,false,933974240192996,[],null,["G30910S1T15"]],["t25",4,false,[],1,0,null,[["Default",5,false,1,0,false,730596281533864,[["images/wrong-sheet0.png",67941,0,0,240,220,1,0.5,0.5,[],[],0]]]],[["Fade",7,554451434897465]],false,true,398408225416723,[],null],["t26",4,false,[],1,0,null,[["Default",5,false,1,0,false,195891535423786,[["images/correct-sheet0.png",47573,0,0,265,211,1,0.501886785030365,0.5023696422576904,[],[],0]]]],[["Fade",7,274742837785012]],false,true,662615136772730,[],null],["t27",4,false,[709456647926299],1,0,null,[["Default",5,false,1,0,false,156299836628869,[["images/khungaudio-sheet0.png",77963,0,0,300,300,1,0.5,0.5,[],[-0.4433594048023224,-0.4433594048023224,0,-0.4472655951976776,0.4257810115814209,-0.4257811903953552,0.4472659826278687,0,0.4316409826278687,0.4316409826278687,-0.4394530951976776,0.4394530057907105,-0.4550780951976776,0],0]]]],[["Pin",10,344973824848344]],false,true,399155464340678,[],null],["t28",4,true,[],1,0,null,null,[["Pin",10,613555469553139]],false,false,679965430658239,[],null]],[[28,0]],[["Layout 1",1200,1200,false,"Event sheet 1",844875475670604,[["Layer 0",0,884568816551023,true,[255,255,255],true,0,0,1,false,false,0,0,0,[[[619,595,0,3836,4064,0,0,0.1500000059604645,0.5,0.5,0,0,[]],8,27,[],[],[0,"Default",0,1]],[[2354,200,0,250,250,0,0,1,0.5,0.5,0,0,[]],5,19,[],[[1,1200,0,0]],[0,"Default",0,1]],[[600,-2500,0,1085.85107421875,718.1094970703125,0,0,1,0.5066666603088379,0.5645161271095276,0,0,[]],10,0,[[0],[0]],[[1,1500,0,0],[]],[0,"Default",0,1]],[[361.6038208007813,497.9408569335938,0,438.356689453125,438.356689453125,0,0,1,0.5,0.5,0,0,[]],0,7,[[0],[""]],[[],[0,1,0,0,0]],[0,"Default",0,1]],[[363.9991455078125,504.7830810546875,0,510.8400573730469,497.0929565429688,0,0,1,0.5,0.5015015006065369,0,0,[]],11,4,[],[[]],[0,"Default",0,1]],[[851,506,0,505.8770141601563,492.2630004882813,0,0,1,0.5,0.5014925599098206,0,0,[]],12,5,[],[[]],[0,"Default",0,1]],[[482,998,0,200,200,0,0,1,0.5,0.5019156932830811,0,0,[]],13,6,[],[[],[0,1,0,0,0]],[1,"Default",0,1]],[[732,998,0,200,200,0,0,1,0.5,0.5019156932830811,0,0,[]],14,10,[],[[],[0,1,0,0,0]],[1,"Default",0,1]],[[842.8190307617188,494.7768249511719,0,381.1463623046875,405.7266235351563,0,0,1,0.5,0.5,0,0,[]],9,3,[],[[0,1,0,0,0],[]],["Text",1,"bold 72pt Segoe UI","rgb(0,0,0)",1,1,4,0,0]],[[119.0068130493164,91.40592193603516,0,215.9014129638672,159.5821075439453,0,0,1,0.5,0.5013405084609985,0,0,[]],6,26,[],[[1,1,0,0,0],[0,0,0,0,1]],[0,"Default",0,1]],[[1064,81,0,261.9682922363281,112.4430236816406,0,0,1,0.5022830963134766,0.5,0,0,[]],16,8,[],[[1,1,0,0,0],[1,0,1,0,1]],[0,"Default",0,1]],[[1031.379150390625,81.32679748535156,0,123.6445922851563,73.16305541992188,0,0,1,0.5,0.5,0,0,[]],17,13,[],[[],[1,1,0,0,0]],["",0,"bold italic 36pt Segoe UI","rgb(255,255,255)",1,1,4,0,0]],[[1145.981323242188,1060.192260742188,0,87.490966796875,251.1931762695313,0,0,1,0.5,0.5,0,0,[]],18,16,[],[[1,0.5,0,0,1],[1,1,1,1,1]],[1,"Default",0,1]],[[1145.585083007813,1147.567260742188,0,100,100,0,0,1,0.5,0.5,0,0,[]],19,20,[[0]],[[1,1,1,1,1],[1,1,0,0,0],[0,2,1,0.5,0,0,0,5,0]],[0,"Default",0,1]],[[1145,990,0,60,60,0,0,1,0.5,0.5,0,0,[]],20,1,[[0]],[[0,2,0,4,0,0,0,10,0],[],[1,1,1,1,1],[1,0.5,0,0,0]],[1,"Default",0,1]],[[1145,1060,0,60,60,0,0,1,0.5,0.5,0,0,[]],21,22,[[0]],[[1,0.5,0,0,0],[],[1,1,1,1,1]],[1,"Default",0,1]],[[-2480,-736,0,146.2369995117188,123.5670013427734,0,0,1,0.5,0.5,0,0,[]],25,2,[],[[1,0.5,0,0.5,1]],[0,"Default",0,1]],[[-2610,-1226,0,146.2371978759766,123.566764831543,0,0,1,0.501886785030365,0.5023696422576904,0,0,[]],26,9,[],[[1,0.5,0,0.5,1]],[0,"Default",0,1]],[[-3477,95,0,505.8770141601563,492.2630004882813,0,0,1,0.5,0.5,0,0,[]],27,15,[[""]],[[]],[0,"Default",0,1]]],[]],["Layer 1",1,697639113343856,false,[255,255,255],true,0,0,1,false,false,1,0,0,[],[]],["Layer 2",2,892205975914457,false,[255,255,255],true,0,0,1,false,false,1,0,0,[[[664,585,0,4164.1083984375,3901.98779296875,0,0,0.699999988079071,0.5,0.5,0,0,[]],22,14,[[2]],[],[0,"Default",0,1]],[[600,600,0,520.5765991210938,520.5765991210938,0,0,1,0.5,0.5,0,0,[]],23,23,[],[[0,7,17,"current","100, 100",1,"0,0",5,0,1,0,""]],[0,"Default",0,1]]],[]]],[],[]]],[["Event sheet 1",[[1,"gameState",1,"\"Loading\"",false,false,917912348433941,false],[1,"isAnswered",0,0,false,false,343001073098932,false],[0,null,false,null,735973858432743,[[-1,14,null,1,false,false,false,678751856976844,false]],[[-1,15,null,835582632273930,false,[[11,"isAnswered"],[7,[0,1]]]],[-1,15,null,689205929193097,false,[[11,"gameState"],[7,[2,"Loading"]]]],[4,16,null,504954620332075,false,[[2,["8-bit-gaming-background-music-358443",false]],[3,1],[0,[0,-10]],[1,[2,"bgm"]]]],[17,17,null,767732578198252,false,[[0,[4,[20,17,18,false,null],[0,5]]]]],[17,19,"Pin",142253184886856,false,[[4,16],[3,0]]],[0,20,null,315313699671418,false],[12,20,null,360932376727750,false],[27,20,null,574700871571887,false],[-1,21,null,230151175983218,false,[[0,[1,0.1]]]],[1,22,null,492445486390135,false,[[1,[2,"initAnimation"]],[13]]],[-1,21,null,875969266385846,false,[[0,[0,1]]]],[24,23,null,156201835247813,false],[17,24,null,488326011734529,false,[[7,[20,24,25,false,null]]]],[9,26,null,927956499011984,false,[[3,1]]]]],[0,null,false,null,409190670644589,[[1,27,null,2,false,false,false,588434831572510,false,[[1,[2,"initAnimation"]]]]],[[10,28,null,507439785677112,false,[[10,0],[7,[0,600]]]],[10,28,null,677170194000670,false,[[10,1],[7,[0,500]]]]]],[0,null,false,null,510830548248475,[[24,29,null,1,false,false,false,748270851559986,false]],[[-1,15,null,591675398880057,false,[[11,"isAnswered"],[7,[0,0]]]],[10,30,null,486350455968594,false,[[0,[0,0]]]],[24,31,null,875073218407452,false,[[0,[0,2]],[0,[0,500]],[0,[0,0]],[0,[0,1200]],[0,[0,0]],[0,[0,0]],[1,[2,""]],[0,[0,0]]]],[1,22,null,119531161639034,false,[[1,[2,"SpawnItem"]],[13,[7,[0,0]]]]],[10,32,"MoveTo",881957871173606,false,[[0,[21,10,false,null,0]],[0,[21,10,false,null,1]]]],[-1,21,null,135394486905375,false,[[0,[0,2]]]],[13,33,null,401953975703572,false,[[3,1]]],[14,33,null,395476966684005,false,[[3,1]]],[13,34,"Fade",367248807633985,false],[14,34,"Fade",364265020988916,false],[24,35,null,758448960329902,false]],[[0,null,false,null,482049696267697,[],[]]]],[0,null,false,null,947589776952019,[[24,36,null,1,false,false,false,576838624565327,false]],[[4,16,null,168825584638955,false,[[2,["alert-234711",false]],[3,0],[0,[0,0]],[1,[2,""]]]]]],[0,null,false,null,994967716794356,[[1,27,null,2,false,false,false,509631773544509,false,[[1,[2,"SpawnItem"]]]]],[],[[0,null,false,null,610164049410395,[[-1,37,null,0,false,false,false,392447189620764,false,[[7,[20,2,38,false,null,[[10,[10,[2,"window.SenaTrigger.sdk.getOptionsValue("],[20,1,39,false,null,[[0,0]]]],[2,").type"]]]]],[8,0],[7,[2,"image"]]]]],[[-1,40,null,961739969714974,false,[[4,0],[5,[0,0]],[0,[20,24,41,false,null,[[20,1,39,false,null,[[0,0]]]]]],[0,[20,10,42,false,null]]]],[0,30,null,270011674650562,false,[[0,[20,1,39,false,null,[[0,0]]]]]],[0,28,null,851634350619732,false,[[10,1],[7,[20,2,38,false,null,[[10,[10,[2,"window.SenaTrigger.sdk.getOptionsValue("],[20,1,39,false,null,[[0,0]]]],[2,").value"]]]]]]],[0,43,null,644358142787251,false,[[1,[21,0,true,null,1]],[3,1],[3,0]]],[0,19,"Pin",140288022014696,false,[[4,10],[3,0]]],[11,19,"Pin",287935358648710,false,[[4,0],[3,0]]]]],[0,null,false,null,452373755432223,[[-1,37,null,0,false,false,false,372535880888446,false,[[7,[20,2,38,false,null,[[10,[10,[2,"window.SenaTrigger.sdk.getOptionsValue("],[20,1,39,false,null,[[0,0]]]],[2,").type"]]]]],[8,0],[7,[2,"text"]]]]],[[-1,40,null,135459156920740,false,[[4,12],[5,[0,0]],[0,[20,24,41,false,null,[[20,1,39,false,null,[[0,0]]]]]],[0,[20,10,42,false,null]]]],[12,19,"Pin",479285466269610,false,[[4,10],[3,0]]],[9,24,null,745772589589107,false,[[7,[20,2,38,false,null,[[10,[10,[2,"window.SenaTrigger.sdk.getOptionsValue("],[20,1,39,false,null,[[0,0]]]],[2,").value"]]]]]]],[9,19,"Pin",210195178789605,false,[[4,12],[3,0]]],[9,44,null,112674879895800,false,[[0,[19,45,[[6,[0,48],[7,[0,9],[19,46,[[0,1],[19,47,[[20,9,48,true,null]]]]]]],[0,36],[0,100]]]]]],[9,26,null,945994360328021,false,[[3,1]]]]],[0,null,false,null,823956903714782,[[-1,37,null,0,false,false,false,111518794934965,false,[[7,[20,2,38,false,null,[[10,[10,[2,"window.SenaTrigger.sdk.getOptionsValue("],[20,1,39,false,null,[[0,0]]]],[2,").type"]]]]],[8,0],[7,[2,"audio"]]]]],[[-1,40,null,958762952957998,false,[[4,27],[5,[0,0]],[0,[20,24,41,false,null,[[20,1,39,false,null,[[0,0]]]]]],[0,[20,10,42,false,null]]]],[27,28,null,190838365534884,false,[[10,0],[7,[20,2,38,false,null,[[10,[10,[2,"window.SenaTrigger.sdk.getOptionsValue("],[20,1,39,false,null,[[0,0]]]],[2,").value"]]]]]]],[27,19,"Pin",788912892555357,false,[[4,10],[3,0]]]]],[0,null,false,null,282901785531611,[[1,49,null,0,false,false,false,979740074943771,false,[[0,[0,0]],[8,0],[7,[0,0]]]]],[[-1,21,null,271555275693773,false,[[0,[1,0.0001]]]],[1,22,null,843330116360929,false,[[1,[2,"SpawnItem"]],[13,[7,[0,1]]]]]]]]],[0,null,false,null,425167135176713,[[3,50,null,1,false,false,false,410949676731972,false,[[4,13]]],[-1,51,null,0,false,false,false,816908260311263,false,[[11,"isAnswered"],[8,0],[7,[0,0]]]],[13,52,null,0,false,false,false,774510238044776,false],[-1,53,null,0,false,true,false,436315931424812,false,[[5,[0,2]]]]],[[-1,15,null,664374503571565,false,[[11,"isAnswered"],[7,[0,1]]]],[4,16,null,134866217507700,false,[[2,["button-124476",false]],[3,0],[0,[0,0]],[1,[2,""]]]],[24,54,null,466732186127560,false,[[7,[2,"pair"]]]]]],[0,null,false,null,519733936846496,[[3,50,null,1,false,false,false,721726484518019,false,[[4,14]]],[-1,51,null,0,false,false,false,346185755632153,false,[[11,"isAnswered"],[8,0],[7,[0,0]]]],[14,52,null,0,false,false,false,349282808967504,false],[-1,53,null,0,false,true,false,730764445901707,false,[[5,[0,2]]]]],[[-1,15,null,760207462598177,false,[[11,"isAnswered"],[7,[0,1]]]],[4,16,null,948069073352963,false,[[2,["button-124476",false]],[3,0],[0,[0,0]],[1,[2,""]]]],[24,54,null,827612706299655,false,[[7,[2,"not_pair"]]]]]],[0,null,false,null,567576099568646,[[24,55,null,1,false,false,false,860707230149725,false]],[[4,16,null,163533988803741,false,[[2,["collect-5930",false]],[3,0],[0,[0,20]],[1,[2,""]]]],[10,30,null,229711739866817,false,[[0,[0,1]]]],[13,33,null,750136158739880,false,[[3,0]]],[14,33,null,739031542223604,false,[[3,0]]],[-1,40,null,292867760183386,false,[[4,26],[5,[0,0]],[0,[0,600]],[0,[0,500]]]],[26,56,null,259290996539027,false,[[0,[0,3]]]],[-1,15,null,587915663134748,false,[[11,"gameState"],[7,[2,"End"]]]],[24,57,null,155371668329003,false],[-1,21,null,412149329128792,false,[[0,[0,1]]]]]],[0,null,false,null,106140135917498,[[24,58,null,1,false,false,false,776838699966765,false]],[[4,16,null,740684180176215,false,[[2,["error-010-206498",false]],[3,0],[0,[0,0]],[1,[2,""]]]],[10,30,null,665223792015155,false,[[0,[0,2]]]],[-1,40,null,236412359087257,false,[[4,25],[5,[0,0]],[0,[0,600]],[0,[0,600]]]],[25,56,null,397550030508045,false,[[0,[0,3]]]],[13,33,null,403044106628594,false,[[3,0]]],[14,33,null,872121206783216,false,[[3,0]]],[-1,15,null,861076094882004,false,[[11,"gameState"],[7,[2,"End"]]]],[24,57,null,154289412636345,false],[-1,21,null,648080589768195,false,[[0,[0,1]]]]]],[0,null,false,null,193489767858303,[[3,50,null,1,false,false,false,915162646906181,false,[[4,27]]],[-1,53,null,0,false,true,false,302546429403442,false,[[5,[0,2]]]],[-1,51,null,0,false,false,false,439090010223468,false,[[11,"isAnswered"],[8,0],[7,[0,0]]]]],[[4,16,null,986337956721232,false,[[2,["bubble-pop-389501",false]],[3,0],[0,[0,0]],[1,[2,""]]]],[4,59,null,773146276942959,false,[[1,[2,"bgm"]],[3,0]]],[-1,21,null,347061226330189,false,[[0,[1,0.5]]]],[2,60,null,648947335287896,false,[[1,[10,[10,[2,"if(window.currentAudio){window.currentAudio.pause();} window.currentAudio = new Audio('"],[21,27,true,null,0]],[2,"'); window.currentAudio.play();"]]]]],[-1,21,null,199211375649296,false,[[0,[0,2]]]],[4,59,null,430049925753612,false,[[1,[2,"bgm"]],[3,1]]]]],[0,[true,"SettingInteract"],false,null,662425289282046,[[-1,61,null,0,false,false,false,662425289282046,false,[[1,[2,"SettingInteract"]]]]],[],[[0,null,false,null,306848596057752,[[3,50,null,1,false,false,false,932944923218261,false,[[4,20]]],[20,62,null,0,false,false,false,914347585587317,false,[[10,0],[8,0],[7,[0,0]]]],[20,52,null,0,false,false,false,692995811551301,false],[-1,51,null,0,false,false,false,155675808149733,false,[[11,"gameState"],[8,1],[7,[2,"End"]]]]],[[20,30,null,948504849133416,false,[[0,[0,1]]]],[4,16,null,350221524561958,false,[[2,["bubble-pop-389501",false]],[3,0],[0,[0,10]],[1,[2,""]]]],[20,63,"Flash",384183747004861,false,[[0,[1,0.1]],[0,[1,0.1]],[0,[1,0.4]]]],[-1,21,null,129817462866840,false,[[0,[1,0.5]]]],[4,64,null,345479695800143,false,[[1,[2,"bgm"]],[3,0]]],[20,28,null,999361144941120,false,[[10,0],[7,[0,1]]]]]],[0,null,false,null,123258644011593,[[3,50,null,1,false,false,false,160800476342728,false,[[4,20]]],[20,62,null,0,false,false,false,135562346389702,false,[[10,0],[8,0],[7,[0,1]]]],[20,52,null,0,false,false,false,774664381192139,false],[-1,51,null,0,false,false,false,903705098494192,false,[[11,"gameState"],[8,1],[7,[2,"End"]]]]],[[20,30,null,995180335278842,false,[[0,[0,0]]]],[4,16,null,623817860047631,false,[[2,["bubble-pop-389501",false]],[3,0],[0,[0,10]],[1,[2,""]]]],[20,63,"Flash",452912332476200,false,[[0,[1,0.1]],[0,[1,0.1]],[0,[1,0.4]]]],[-1,21,null,387647570576161,false,[[0,[1,0.5]]]],[4,64,null,928498562204487,false,[[1,[2,"bgm"]],[3,1]]],[20,28,null,728381318168794,false,[[10,0],[7,[0,0]]]]]],[0,null,false,null,448357049179749,[[3,50,null,1,false,false,false,509238486781376,false,[[4,21]]],[21,62,null,0,false,false,false,807349238828883,false,[[10,0],[8,0],[7,[0,0]]]],[21,52,null,0,false,false,false,129566289663620,false],[-1,51,null,0,false,false,false,262712753646433,false,[[11,"gameState"],[8,1],[7,[2,"End"]]]]],[[-1,15,null,851639367683860,false,[[11,"gameState"],[7,[2,"Idle"]]]],[24,57,null,851391870192552,false],[21,30,null,539370083281492,false,[[0,[0,1]]]],[4,16,null,264880397815434,false,[[2,["bubble-pop-389501",false]],[3,0],[0,[0,10]],[1,[2,""]]]],[21,63,"Flash",930155068909623,false,[[0,[1,0.1]],[0,[1,0.1]],[0,[1,0.4]]]],[-1,21,null,182340588341415,false,[[0,[1,0.5]]]],[-1,65,null,887896485448977,false,[[5,[0,2]],[3,1]]],[1,22,null,667007922604395,false,[[1,[2,"Invis"]],[13]]],[4,64,null,284397683519709,false,[[1,[2,"bgm"]],[3,0]]],[21,28,null,924106335524232,false,[[10,0],[7,[0,1]]]]]],[0,null,false,null,450003808395272,[[3,50,null,1,false,false,false,622815553660478,false,[[4,21]]],[21,62,null,0,false,false,false,187413472833021,false,[[10,0],[8,0],[7,[0,1]]]],[21,52,null,0,false,false,false,215014215432666,false],[-1,51,null,0,false,false,false,552421940797053,false,[[11,"gameState"],[8,1],[7,[2,"End"]]]]],[[24,66,null,325986602204176,false],[21,30,null,869440382600965,false,[[0,[0,0]]]],[4,16,null,811491220024793,false,[[2,["bubble-pop-389501",false]],[3,0],[0,[0,10]],[1,[2,""]]]],[21,63,"Flash",664033056273386,false,[[0,[1,0.1]],[0,[1,0.1]],[0,[1,0.4]]]],[-1,21,null,446253560863407,false,[[0,[1,0.5]]]],[-1,65,null,675652887990582,false,[[5,[0,2]],[3,0]]],[1,22,null,111519736151017,false,[[1,[2,"Visible"]],[13]]],[4,64,null,622050455857077,false,[[1,[2,"bgm"]],[3,1]]],[21,28,null,123625541667893,false,[[10,0],[7,[0,0]]]]]],[0,null,false,null,565410792316623,[[3,50,null,1,false,false,false,170061980256947,false,[[4,23]]],[-1,53,null,0,false,false,false,146755769816102,false,[[5,[0,2]]]],[-1,51,null,0,false,false,false,131004524611628,false,[[11,"gameState"],[8,1],[7,[2,"End"]]]]],[[24,66,null,101906306923225,false],[21,30,null,535836765357221,false,[[0,[0,0]]]],[4,16,null,779854080480739,false,[[2,["bubble-pop-389501",false]],[3,0],[0,[0,10]],[1,[2,""]]]],[23,67,"EaseTween",101732131620840,false],[21,63,"Flash",241321545878932,false,[[0,[1,0.1]],[0,[1,0.1]],[0,[1,0.4]]]],[-1,21,null,378528681684007,false,[[0,[1,0.5]]]],[-1,65,null,126821242265351,false,[[5,[0,2]],[3,0]]],[1,22,null,717796177026843,false,[[1,[2,"Visible"]],[13]]],[4,64,null,475471582095738,false,[[1,[2,"bgm"]],[3,1]]],[21,28,null,771765994050223,false,[[10,0],[7,[0,0]]]]]],[0,null,false,null,712399735829728,[[3,50,null,1,false,false,false,904799046757544,false,[[4,19]]],[19,62,null,0,false,false,false,241135556455023,false,[[10,0],[8,0],[7,[0,0]]]],[-1,51,null,0,false,false,false,612736826734962,false,[[11,"gameState"],[8,1],[7,[2,"End"]]]]],[[1,22,null,434869539815797,false,[[1,[2,"SettingOnTop"]],[13]]],[4,16,null,862665500463100,false,[[2,["button-124476",false]],[3,0],[0,[0,0]],[1,[2,""]]]],[19,68,"Sine",668734804640600,false,[[3,1]]],[-1,21,null,352156281630067,false,[[0,[1,0.5]]]],[18,33,null,316223170614386,false,[[3,1]]],[21,33,null,281060938349899,false,[[3,1]]],[20,33,null,121991134379827,false,[[3,1]]],[1,22,null,522252274037370,false,[[1,[2,"Fade"]],[13]]],[19,28,null,379040796545314,false,[[10,0],[7,[0,1]]]],[19,68,"Sine",894915935809908,false,[[3,0]]]]],[0,null,false,null,804058792300540,[[3,50,null,1,false,false,false,352400815987313,false,[[4,19]]],[19,62,null,0,false,false,false,698224849695398,false,[[10,0],[8,0],[7,[0,1]]]],[-1,51,null,0,false,false,false,217718240079500,false,[[11,"gameState"],[8,1],[7,[2,"End"]]]]],[[1,22,null,770223255730318,false,[[1,[2,"SettingOnTop"]],[13]]],[4,16,null,483980074041194,false,[[2,["button-124476",false]],[3,0],[0,[0,0]],[1,[2,""]]]],[19,68,"Sine",121002498648825,false,[[3,1]]],[-1,21,null,819229917518326,false,[[0,[1,0.5]]]],[18,33,null,933254203753226,false,[[3,0]]],[21,33,null,618144486811910,false,[[3,0]]],[20,33,null,319111452250371,false,[[3,0]]],[-1,21,null,484006872888461,false,[[0,[1,0.1]]]],[19,28,null,511880856713501,false,[[10,0],[7,[0,0]]]],[19,68,"Sine",582728533834561,false,[[3,0]]]]],[0,null,false,null,222974659250444,[[1,27,null,2,false,false,false,290211026209909,false,[[1,[2,"Fade"]]]]],[[18,34,"Fade",221570681707837,false],[21,34,"Fade",538083817109571,false],[20,34,"Fade",421531648145727,false]]],[0,null,false,null,936735808359626,[[1,27,null,2,false,false,false,720196850101048,false,[[1,[2,"SettingOnTop"]]]]],[[18,69,null,255241951441322,false],[21,69,null,352824334568013,false],[20,69,null,480699942817325,false],[19,69,null,647464890701990,false]]]]],[0,null,false,null,592932631137115,[[-1,70,null,0,false,false,false,540891267007448,false]],[[11,71,null,860366334236641,false,[[0,[6,[20,0,72,false,null],[1,1.13]]],[0,[6,[20,0,73,false,null],[1,1.13]]]]]]],[1,"CurrentTime",0,0,false,false,155043793599981,false],[0,null,false,null,587690435899080,[[-1,70,null,0,false,false,false,973137293246634,false],[-1,51,null,0,false,false,false,910229288089595,false,[[11,"gameState"],[8,1],[7,[2,"End"]]]]],[[-1,15,null,619271796347755,false,[[11,"CurrentTime"],[7,[19,46,[[0,0],[5,[20,24,25,false,null],[20,24,74,false,null]]]]]]],[17,24,null,176764917811129,false,[[7,[19,75,[[19,46,[[0,0],[19,76,[[5,[20,24,25,false,null],[20,24,74,false,null]]]]]]]]]]]],[[0,null,false,null,629058354879533,[[-1,37,null,0,false,false,false,537230878897647,false,[[7,[20,24,74,false,null]],[8,5],[7,[20,24,25,false,null]]]]],[],[[0,null,false,null,610022337034013,[[-1,77,null,0,false,false,false,952522393895503,false],[-1,51,null,0,false,false,false,894986910431854,false,[[11,"isAnswered"],[8,0],[7,[0,0]]]]],[[-1,15,null,308282624828840,false,[[11,"gameState"],[7,[2,"End"]]]],[-1,15,null,712652624529486,false,[[11,"isAnswered"],[7,[0,1]]]],[24,57,null,256565761310229,false],[-1,21,null,630594951110651,false,[[0,[1,0.1]]]],[-1,40,null,359008398855499,false,[[4,25],[5,[0,0]],[0,[0,600]],[0,[0,600]]]],[25,56,null,457688650876889,false,[[0,[1,3.5]]]],[24,54,null,847864227661504,false,[[7,[2,""]]]]]]]]]],[0,null,false,null,733512889543758,[[1,27,null,2,false,false,false,473074764835965,false,[[1,[2,"Invis"]]]]],[[0,33,null,535204822254148,false,[[3,0]]],[12,33,null,255520568969699,false,[[3,0]]],[27,33,null,473035349117911,false,[[3,0]]],[9,26,null,480583205022706,false,[[3,0]]],[11,33,null,926051808474031,false,[[3,0]]]]],[0,null,false,null,432626632944379,[[1,27,null,2,false,false,false,762798926810478,false,[[1,[2,"Visible"]]]]],[[0,33,null,729502721973018,false,[[3,1]]],[12,33,null,441779994184153,false,[[3,1]]],[27,33,null,895815782028179,false,[[3,1]]],[9,26,null,471237351701842,false,[[3,1]]],[11,33,null,382987712523447,false,[[3,1]]]]],[0,null,false,null,975588327399438,[[-1,70,null,0,false,false,false,293336248632009,false]],[[11,71,null,378355680806522,false,[[0,[6,[20,0,72,false,null],[1,1.2]]],[0,[6,[20,0,73,false,null],[1,1.15]]]]]]]]]],[["alert-234711.ogg",23907],["bubble-pop-389501.ogg",18257],["button-124476.ogg",13157],["collect-5930.ogg",10731],["error-010-206498.ogg",11425],["8-bit-gaming-background-music-358443.ogg",934596],["edugamery-music-20.ogg",1614594]],"media/",false,1200,1200,3,true,true,true,"1.0.0.0",true,true,3,0,28,false,true,1,true,"PairOrNotPair",0,[[0,11],[9,12]]]} \ No newline at end of file diff --git a/PairOrNotPair/index.html b/PairOrNotPair/index.html index d0d5449..b4c7d40 100644 --- a/PairOrNotPair/index.html +++ b/PairOrNotPair/index.html @@ -81,7 +81,7 @@ - + diff --git a/PairOrNotPair/offline.js b/PairOrNotPair/offline.js index 6c81d01..d4249a9 100644 --- a/PairOrNotPair/offline.js +++ b/PairOrNotPair/offline.js @@ -1,5 +1,5 @@ { - "version": 1770267014, + "version": 1772180794, "fileList": [ "data.js", "c2runtime.js", diff --git a/PairOrNotPair/sena_sdk.js b/PairOrNotPair/sena_sdk.js index d7eb697..fb0f4ac 100644 --- a/PairOrNotPair/sena_sdk.js +++ b/PairOrNotPair/sena_sdk.js @@ -50,6 +50,7 @@ function SenaSDK(gid = "G2510S1T30") { // 'preview' - Timeout 5s rồi fallback sample (testing với data thật) // 'dev' - Load sample ngay lập tức (development) this.mode = "preview"; // Default mode + this.role = "student"; // Default role } /** @@ -118,6 +119,7 @@ SenaSDK.prototype.loadFromPostMessage = function (inputJson, callback) { console.warn("⚠️ Sena SDK: tdv_sdk not found, storing data locally"); self.data = inputJson.data; self.correctAnswer = inputJson.answer; + self._parseGameCode(); // Thêm dòng này để SDK đọc đuôi thời gian T30 if (callback) callback(true); } return true; @@ -147,6 +149,19 @@ SenaSDK.prototype.loadFromPostMessage = function (inputJson, callback) { audio: inputJson.data.audio || "", hint: inputJson.data.hint || null, }; + + // --- [UPDATE G5] Khởi tạo Master List cho G5 --- + if (self.gameType === 5 && self.data && self.data.options) { + // Lưu trữ danh sách gốc + self.masterList = [...self.data.options]; + // Tính tổng số level + self.totalLevels = Math.ceil(self.masterList.length / 6); + self.currentLevel = 0; + + // Load Level 1 ngay lập tức để self.data.options chỉ chứa 6 card đầu + self.loadLevelG5(1); + } + self.correctAnswer = inputJson.answer; // Cũng set vào list để hỗ trợ multi-question API @@ -166,6 +181,9 @@ SenaSDK.prototype.loadFromPostMessage = function (inputJson, callback) { self.currentQuestion = self.list[0]; self.userResults = []; + // [UPDATE G4] Process G4 Data + if (self.gameType === 4) self._processG4Data(); + console.log( "✅ Sena SDK: Single question loaded -", inputJson.description || inputJson.data.question, @@ -234,9 +252,9 @@ SenaSDK.prototype.loadFromPostMessage = function (inputJson, callback) { */ SenaSDK.prototype._parseGameCode = function () { let self = this; - const gameCode = self.gameCode || "G2510S1T30"; + const gameCode = self.gameCode || "G4410S1T30"; // G4 mẫu - // FIX: Regex chấp nhận 2 chữ số cho Count (\d{1,2}) + // Regex hỗ trợ G1-G9 const regex = /^G([1-9])(\d{1,2})([0-2])([0-2])(?:S([0-1]))?(?:T(\d+))?$/; let match = gameCode.match(regex); @@ -248,7 +266,14 @@ SenaSDK.prototype._parseGameCode = function () { const shuffleFlag = match[5] !== undefined ? match[5] : "1"; const timeStr = match[6] !== undefined ? match[6] : "0"; self.shuffle = shuffleFlag === "1"; - self.timeLimit = parseInt(timeStr, 10); + // --- [UPDATE G5] Logic Time Per Card --- + if (self.gameType === 5) { + self.timePerCard = parseInt(timeStr, 10); // T5 = 5s mỗi card + self.timeLimit = 0; // G5 không giới hạn tổng thời gian + } else { + self.timeLimit = parseInt(timeStr, 10); + self.timePerCard = 0; + } } }; @@ -350,9 +375,15 @@ SenaSDK.prototype.load = function (callback, template = "G2510S1T30") { self.mode = urlMode.toLowerCase(); } + // THÊM 2 DÒNG NÀY: Lấy role từ URL + const urlRole = urlParams.get("role"); + if (urlRole) self.role = urlRole.toLowerCase(); + console.log( "🎮 Sena SDK: Mode =", self.mode.toUpperCase(), + "| Role =", + self.role || "student", "| GameCode =", self.gameCode, ); @@ -483,6 +514,21 @@ SenaSDK.prototype._loadFromServer = function ( console.log("🎮 Sena SDK: Data shuffled immediately on load"); } + // --- [UPDATE G5] Khởi tạo Master List cho G5 --- + if (self.gameType === 5 && self.data && self.data.options) { + // Lưu trữ danh sách gốc + self.masterList = [...self.data.options]; + // Tính tổng số level + self.totalLevels = Math.ceil(self.masterList.length / 6); + self.currentLevel = 0; + + // Load Level 1 ngay lập tức để self.data.options chỉ chứa 6 card đầu + self.loadLevelG5(1); + } + + // [UPDATE G4] Process G4 Data + if (self.gameType === 4) self._processG4Data(); + console.log("🎮 Sena SDK: Data loaded for", self.gameCode); self._dataLoadedFromServer = true; if (callback) callback(true); @@ -840,14 +886,12 @@ SenaSDK.prototype.guide = function () { return guide; }; /** - * Get the question text - * @returns {string} Question or request text + * Get the question text/url + * @returns {string} Question, request text, or URL */ SenaSDK.prototype.getQuestionValue = function () { var q = String(this.data.question || "").trim(); - if (q.toLowerCase().startsWith("http")) { - return ""; - } + // Đã bỏ chặn URL để có thể lấy link ảnh/audio return q; }; /** @@ -905,7 +949,10 @@ SenaSDK.prototype.getRequestType = function () { * @returns {number} Number of options */ SenaSDK.prototype.getOptionsCount = function () { - return this.data.options.length; + if (this.data && this.data.options) { + return this.data.options.length; + } + return 0; }; /** @@ -1037,8 +1084,7 @@ SenaSDK.prototype.canReloadData = function () { /** * End the game and check answer - * @param {string} answer - User's answer (single text or multiple answers separated by |) - * @returns {Object} Result object with isCorrect, duration, correctAnswer, and userAnswer + * [UPDATE] Support Unordered Answers & Auto-cleanup empty strings */ SenaSDK.prototype.end = function (answer, callback) { let self = this; @@ -1071,88 +1117,98 @@ SenaSDK.prototype.end = function (answer, callback) { self.endTime = Date.now(); const duration = (self.endTime - self.startTime) / 1000; - // Parse user answer - split by | for multiple answers + // 1. CLEANUP INPUT: Tách chuỗi, Xóa khoảng trắng, Chuyển thường, LỌC BỎ RỖNG + // .filter(a => a) sẽ loại bỏ ngay cái đuôi "" do dấu | thừa tạo ra const userAnswers = answer.includes("|") - ? answer.split("|").map((a) => a.trim().toLowerCase()) - : [answer.trim().toLowerCase()]; + ? answer + .split("|") + .map((a) => a.trim().toLowerCase()) + .filter((a) => a) + : [answer.trim().toLowerCase()].filter((a) => a); - // Get correct answer(s) from data + // 2. GET CORRECT ANSWERS let correctAnswers = []; if (self.correctAnswer) { - // Check if answer is an array (multiple answers) or single answer if (Array.isArray(self.correctAnswer)) { - correctAnswers = self.correctAnswer.map((a) => { - if (typeof a === "string") return a.toLowerCase(); - if (a.text) return a.text.toLowerCase(); - return ""; - }); - } else if (typeof self.correctAnswer === "string") { - correctAnswers = [self.correctAnswer.toLowerCase()]; - } else if (self.correctAnswer.text) { - correctAnswers = [self.correctAnswer.text.toLowerCase()]; + correctAnswers = self.correctAnswer.map((a) => + (typeof a === "object" ? a.text || "" : String(a)).trim().toLowerCase(), + ); + } else { + let str = + typeof self.correctAnswer === "object" + ? self.correctAnswer.text + : String(self.correctAnswer); + correctAnswers = str.includes("|") + ? str.split("|").map((a) => a.trim().toLowerCase()) + : [str.trim().toLowerCase()]; } } - // Check if answer is correct + // 3. COMPARE + // Nếu là Game Type 2 (Sort) thì giữ nguyên thứ tự, nếu không thì sort (unordered) + const isStrictOrder = self.gameType === 2; + const finalUser = isStrictOrder ? [...userAnswers] : [...userAnswers].sort(); + const finalCorrect = isStrictOrder + ? [...correctAnswers] + : [...correctAnswers].sort(); + let isCorrect = false; - // Helper to normalize and strip proxy from URL - const normalizeAnswer = (str) => { - let val = String(str || "") - .trim() - .toLowerCase(); - if (val.includes("corsproxy.io/?")) { - try { - let decoded = decodeURIComponent(val.split("corsproxy.io/?")[1]); - if (decoded) val = decoded.toLowerCase().trim(); - } catch (e) {} - } - return val; - }; - - // Helper to get filename from URL + // Helper check file name for URL matching const getFileName = (url) => { if (!url.startsWith("http")) return url; - const parts = url.split("/"); - return parts[parts.length - 1].split("?")[0]; + try { + return url.split("/").pop().split("?")[0]; + } catch (e) { + return url; + } }; - const normUser = userAnswers.map(normalizeAnswer); - const normCorrect = correctAnswers.map(normalizeAnswer); - - if (normUser.length === normCorrect.length) { - // For ordered multiple answers - isCorrect = normUser.every((ans, index) => { - if (ans === normCorrect[index]) return true; - // Fuzzy match for URLs - if (ans.startsWith("http") || normCorrect[index].startsWith("http")) { - return getFileName(ans) === getFileName(normCorrect[index]); + if (finalUser.length === finalCorrect.length) { + isCorrect = finalUser.every((uVal, index) => { + let cVal = finalCorrect[index]; + if (uVal === cVal) return true; + // Fuzzy match cho URL (so sánh tên file ảnh) + if (uVal.startsWith("http") || cVal.startsWith("http")) { + return getFileName(uVal) === getFileName(cVal); } return false; }); - } else if (normUser.length === 1 && normCorrect.length === 1) { - // For single answer - const u = normUser[0]; - const c = normCorrect[0]; - isCorrect = u === c; - if (!isCorrect && (u.startsWith("http") || c.startsWith("http"))) { - isCorrect = getFileName(u) === getFileName(c); - } } + // ----------------------------------------------------------- + // [BƯỚC 1] Kiểm tra Time Limit TRƯỚC (Sửa biến isCorrect) + // ----------------------------------------------------------- + // THÊM ĐIỀU KIỆN: Nếu là teacher thì bỏ qua kiểm tra thời gian + if ( + self.role !== "teacher" && + self.timeLimit > 0 && + duration > self.timeLimit + ) { + isCorrect = false; // CHỈ sửa biến boolean, KHÔNG gọi result.isCorrect + console.log("🎮 Sena SDK: Time Limit Exceeded -> Result set to False"); + } + + // ----------------------------------------------------------- + // [BƯỚC 2] Sau đó mới tạo biến result (Dùng isCorrect đã chốt) + // ----------------------------------------------------------- const result = { - isCorrect: isCorrect, + isCorrect: isCorrect, // Lúc này isCorrect đã được xử lý xong xuôi duration: duration, correctAnswer: correctAnswers.join(" | "), userAnswer: userAnswers.join(" | "), }; - // if time spent more than time limit, mark as incorrect - if (self.timeLimit > 0 && duration > self.timeLimit) { - result.isCorrect = false; - } - console.log(`Time spent in game: ${duration} seconds`); - console.log(`Result: ${isCorrect ? "CORRECT" : "INCORRECT"}`); + + // ----------------------------------------------------------- + // [BƯỚC 3] Log và Return + // ----------------------------------------------------------- + console.log(`Time spent: ${duration}s`); + console.log( + `Result: ${isCorrect ? "CORRECT" : "INCORRECT"} (User: ${result.userAnswer} vs Correct: ${result.correctAnswer})`, + ); + if (callback) callback(result.isCorrect); + return result; // Return full object for debug }; SenaSDK.prototype.playVoice = function (type) { @@ -1331,6 +1387,17 @@ SenaSDK.prototype.registerPostMessageListener = function () { } break; + case "SEQUENCE_SYNC": + console.log("📥 Sena SDK: Received SEQUENCE_SYNC", event.data); + if (event.data.uuid === self.uuid) { + console.log("🔄 Sena SDK: Own message echoed back, processing..."); + } + + if (typeof self.onCustomMessage === "function") { + self.onCustomMessage(event.data.data, event.data.uuid); + } + break; + case "SDK_ERROR": // Server gửi error console.error("❌ Sena SDK: Received SDK_ERROR", event.data.payload); @@ -1657,6 +1724,189 @@ SenaSDK.prototype.getCardAudio = function (index) { } return ""; }; + +/** + * [UPDATE G5] Load data cho level cụ thể (Phân trang tự nhiên) + * Logic mới: Lấy vừa đủ số lượng còn lại, không lặp lại (wrap-around) data cũ. + */ +SenaSDK.prototype.loadLevelG5 = function (levelIndex) { + let self = this; + if (self.gameType !== 5 || !self.masterList) return false; + + self.currentLevel = levelIndex; + let count = 6; // Khóa cứng max 6 card/trang cho G5 + + window.Sena_TotalLevels = Math.ceil(self.masterList.length / count); + + let startIndex = (levelIndex - 1) * count; + + // --- LOGIC MỚI: CẮT DATA (SLICING) --- + // Tính điểm kết thúc: Nếu vượt quá độ dài list thì lấy độ dài list (không wrap) + let endIndex = Math.min(startIndex + count, self.masterList.length); + + // Cắt danh sách card cho level hiện tại + let levelOptions = self.masterList.slice(startIndex, endIndex); + + // Gán vào data.options để C2 render + self.data.options = levelOptions; + + console.log( + `🎮 Sena SDK: Loaded Level ${levelIndex} (G5) with ${levelOptions.length} cards`, + ); + return true; +}; + +/** + * [NEW G5] Lấy thông tin Level + */ +SenaSDK.prototype.getTotalLevels = function () { + return this.totalLevels || 1; +}; + +SenaSDK.prototype.getTimePerCard = function () { + if (this.timePerCard === undefined) { + this._parseGameCode(); + } + + if (this.timePerCard && this.timePerCard > 0) { + return this.timePerCard; + } + + return 5; +}; + +SenaSDK.prototype.getCardType = function (index) { + // Ưu tiên 1: Lấy từ data.options (G4, G1, G2 đang chạy trên grid hiện tại) + if (this.data && this.data.options && this.data.options[index]) { + return this.data.options[index].type || "text"; + } + + // Ưu tiên 2: Fallback cho G5 (Master List) + if (this.masterList && this.masterList[index]) { + return this.masterList[index].type || "text"; + } + + // Mặc định + return "text"; +}; + +// [UPDATE G4] Xử lý data đặc thù cho Memory Card: Fill blank và Xử lý thẻ lẻ (Orphan) +SenaSDK.prototype._processG4Data = function () { + let self = this; + if (!self.data.options) self.data.options = []; + + // BƯỚC 1: Xử lý thẻ lẻ (Sanitize Data) ngay tại nguồn + // Đếm số lượng xuất hiện của từng cặp tên + let counts = {}; + self.data.options.forEach((item) => { + if (item.type !== "blank" && item.name) { + counts[item.name] = (counts[item.name] || 0) + 1; + } + }); + + // Duyệt lại và biến những thẻ có số lượng < 2 thành blank + self.data.options.forEach((item) => { + if (item.type !== "blank" && item.name) { + if (counts[item.name] < 2) { + console.log("🎮 Sena SDK: Orphan card detected & removed:", item.name); + item.type = "blank"; + item.name = "blank"; // Xóa tên để tránh logic game bắt nhầm + item.image = ""; // Xóa ảnh + item.id = "blank_sanitized"; + } + } + }); + + // BƯỚC 2: Fill thêm thẻ blank cho đủ 9 ô (Logic cũ) + while (self.data.options.length < 9) { + self.data.options.push({ + id: "blank_" + self.data.options.length, + type: "blank", + name: "blank", + value: -1, + image: "", + }); + } + + // BƯỚC 3: Shuffle (Trộn bài) + if (self.shuffle) { + self.shuffleArray(self.data.options); + } +}; + +// [UPDATE G4] Hàm lấy ID +SenaSDK.prototype.getCardID = function (index) { + if (this.data && this.data.options && this.data.options[index]) { + return this.data.options[index].id || ""; + } + return ""; +}; + +// [UPDATE G4] Hàm Check Pair (Logic tạm thời ở Client cho Mock) +SenaSDK.prototype.checkPair = function (idx1, idx2, callback) { + let self = this; + + // Validate index + let card1 = self.data.options[idx1]; + let card2 = self.data.options[idx2]; + + if (!card1 || !card2) { + if (callback) callback(false); + return; + } + + // Logic so sánh: Name giống nhau VÀ ID khác nhau (tránh click 2 lần 1 thẻ) VÀ không phải blank + let isMatch = false; + + if (card1.type !== "blank" && card2.type !== "blank") { + if (card1.id !== card2.id) { + // Check ko phải chính nó + // So sánh name (ví dụ: "dog" == "dog") + if ( + card1.name && + card2.name && + card1.name.toLowerCase() === card2.name.toLowerCase() + ) { + isMatch = true; + } + } + } + + console.log( + `🎮 Sena SDK: Check Pair [${idx1}] vs [${idx2}] -> ${isMatch ? "MATCH" : "WRONG"}`, + ); + + // [TODO] Sau này sẽ thay đoạn này bằng postMessage lên Server verify + if (callback) callback(isMatch); +}; + +/** + * [NEW v2.2] Gửi Custom Data lên Parent Window + * @param {Object} data - Object chứa 5 trường data1 -> data5 + */ +SenaSDK.prototype.sendMessageToParent = function (data) { + let self = this; + + // Tự động tạo UUID cho session nếu chưa có + if (!self.uuid) { + self.uuid = + "session-" + Date.now() + "-" + Math.floor(Math.random() * 10000); + } + + // Đóng gói payload đúng chuẩn tài liệu v2.2 + let payload = { + type: "SEQUENCE_SYNC", + uuid: self.uuid, + data: data, + timestamp: Date.now(), + }; + + console.log("📤 Sena SDK: Sending SEQUENCE_SYNC to parent:", payload); + + // Gửi lên Parent Window (Backend/Iframe parent) + window.parent.postMessage(payload, "*"); +}; + if (typeof module !== "undefined" && module.exports) { module.exports = SenaSDK; } else if (typeof define === "function" && define.amd) { diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..bbfddcb --- /dev/null +++ b/readme.md @@ -0,0 +1,4 @@ +PairOrNotPair +Mô tả của trò chơi +PairOrNotPair + diff --git a/source/GamePairorNotPair.capx b/source/GamePairorNotPair.capx index 20b2a82..626c96b 100644 Binary files a/source/GamePairorNotPair.capx and b/source/GamePairorNotPair.capx differ