From 683fe53ddd7f9c65b17dbd9f38f817f54283ecd6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=90=E1=BA=B7ng=20Minh=20Quang?= Date: Fri, 27 Feb 2026 15:32:51 +0700 Subject: [PATCH] deploy cicd --- .gitea/workflows/deploy.yml | 90 ++++++++ PairOrNotPair/c2runtime.js | 190 +++++++++++++++-- PairOrNotPair/data.js | 2 +- PairOrNotPair/index.html | 2 +- PairOrNotPair/offline.js | 2 +- PairOrNotPair/sena_sdk.js | 386 ++++++++++++++++++++++++++++------ readme.md | 4 + source/GamePairorNotPair.capx | Bin 15920204 -> 15920293 bytes 8 files changed, 590 insertions(+), 86 deletions(-) create mode 100644 .gitea/workflows/deploy.yml create mode 100644 readme.md 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 20b2a82aba2d56e89580760f347c60bc15867cec..626c96b9458afcb4deba5e4cf8c5807ec233ec5c 100644 GIT binary patch delta 16085 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 Z|9&g~8S+0P9#RR;ZWurHY}^1{{{>5fp-}(; delta 16013 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