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