diff --git a/SQ_Word_Hint-Audio/c2runtime.js b/SQ_Word_Hint-Audio/c2runtime.js index d43cacc..76ec9c8 100644 --- a/SQ_Word_Hint-Audio/c2runtime.js +++ b/SQ_Word_Hint-Audio/c2runtime.js @@ -26022,8 +26022,8 @@ cr.getObjectRefTable = function () { return [ cr.plugins_.Function, cr.plugins_.SenaPlugin, cr.plugins_.Sprite, - cr.plugins_.Text, cr.plugins_.Touch, + cr.plugins_.Text, cr.behaviors.Rex_MoveTo, cr.behaviors.Fade, cr.behaviors.DragnDrop, diff --git a/SQ_Word_Hint-Audio/data.js b/SQ_Word_Hint-Audio/data.js index f198853..1ef9363 100644 --- a/SQ_Word_Hint-Audio/data.js +++ b/SQ_Word_Hint-Audio/data.js @@ -1 +1 @@ -{"project": [null,"Game",[[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,[864916470115508,671424700857603,742273295511675,915051182566084,438595278712365,792103718967953,177547705418577],5,0,null,[["Default",0,false,1,0,false,766361138730018,[["images/answers-sheet0.png",12383,0,0,199,85,1,0.5025125741958618,0.5058823823928833,[],[-0.3266335725784302,-0.2823523879051209,0.3216074109077454,-0.3058823943138123,0.3316584229469299,0.2235296368598938,-0.326632559299469,0.2235296368598938],0]]]],[["MoveTo",7,604855247345446],["Fade",8,172183085978858],["DragDrop",9,421888048208530],["EaseTween",10,428975865074928],["EaseTween2",10,153601376400345]],false,false,521274050538780,[],null],["t1",6,false,[],0,0,null,null,[],false,false,786570836240034,[],null,[1]],["t2",2,false,[],0,0,null,null,[],false,false,293329078829759,[],null,[]],["t3",1,false,[],0,0,null,null,[],false,false,309246988327533,[],null,[]],["t4",4,false,[808559794937329,997079567163161,567648729382427,954939568499611,936471805758704],1,0,null,[["Default",0,false,1,0,false,163248314795401,[["images/answers-sheet0.png",12383,0,0,199,85,1,0.5025125741958618,0.5058823823928833,[],[-0.3065325617790222,-0.2588233947753906,0.3316584229469299,-0.2705883979797363,0.3467334508895874,0.176469624042511,-0.3115585744380951,0.1764706373214722],0],["images/slot-sheet0.png",11183,0,0,199,82,1,0.5025125741958618,0.5,[],[-0.3517585694789887,-0.2317070066928864,0.3467334508895874,-0.2317070066928864,0.3567834496498108,0.3048779964447022,-0.346733570098877,0.2926830053329468],0]]]],[["Fade",8,900753873870093]],false,false,519636697009154,[],null],["t5",4,false,[],3,0,null,[["Default",0,false,1,0,false,157803278794484,[["images/submit-sheet0.png",146996,0,0,489,325,1,0.5010225176811218,0.5015384554862976,[],[],0]]]],[["Flash",11,745974027953346],["Sine",12,122174234324725],["Fade",8,470725043295066]],false,false,588453873694452,[],null],["t6",0,false,[],0,0,null,null,[],false,false,975221106550751,[],null,[0,0,0,1,1,600,600,10000,1]],["t7",4,false,[],0,0,null,[["Default",5,false,1,0,false,430849449557794,[["images/sprite-sheet0.png",168,0,0,250,250,1,0.5,0.5,[],[],0]]]],[],false,false,787263586433186,[],null],["t8",5,false,[],2,0,null,null,[["Pin",13,668111541658451],["Fade",8,143982287745535]],false,false,865512087815474,[],null],["t9",5,false,[],2,0,null,null,[["Pin",13,983629863781910],["Fade",8,863647630809957]],false,false,452023984157524,[],null],["t10",4,false,[],2,0,null,[["Default",5,false,1,0,false,325577231432987,[["images/wrong-sheet0.png",27271,0,0,140,140,1,0.5,0.5,[],[-0.08866998553276062,0.05115598440170288,0,-0.05821299552917481,0.08374398946762085,0.05821299552917481,0.07635402679443359,-0.001763999462127686,0.1009849905967712,-0.03351700305938721,0,0.1005499958992004,-0.105910986661911,-0.02645999193191528,-0.08374398946762085,-0.001763999462127686],0]]]],[["Fade",8,938090566638553],["Pin",13,922984705911085]],false,false,786659809200098,[],null],["t11",4,false,[],2,0,null,[["Default",5,false,1,0,false,199500828138837,[["images/correct-sheet0.png",31182,0,0,140,140,1,0.5,0.5071428418159485,[],[-0.03694498538970947,-0.01037183403968811,0,-0.05661284923553467,0.4187189936637878,-0.4319769442081451,0.08374398946762085,-0.004931867122650147,0,0.133790135383606,-0.280788004398346,0.2725121378898621,-0.03940901160240173,-0.004931867122650147],0]]]],[["Fade",8,351180598525433],["Pin",13,692899677986212]],false,false,185378619927884,[],null],["t12",4,false,[808308867875603],3,0,null,[["Default",5,false,1,0,false,761372550491219,[["images/setting-sheet0.png",48936,0,0,240,186,1,0.5166666507720947,0.4892473220825195,[],[-0.3041666448116303,-0.2150533199310303,-0.01666665077209473,-0.4838709831237793,0.3166663646697998,-0.2741933166980743,0.4666663408279419,0.01075267791748047,0.3666663765907288,0.3602146506309509,-0.01666665077209473,0.4193546772003174,-0.3624996542930603,0.3118276596069336,-0.4416666626930237,0.01075267791748047],0]]]],[["Anchor",14,827810656785535],["Fade",8,373179721574636],["Sine",12,657466709679600]],false,false,852469545845224,[],null],["t13",4,false,[],1,0,null,[["Default",5,false,1,0,false,200801003478463,[["images/khung_timer-sheet0.png",100737,0,0,589,178,1,0.5008488893508911,0.5,[],[-0.4601019024848938,-0.3651689887046814,-0.001697897911071777,-0.4943820238113403,0.4244481325149536,-0.2528089880943298,0.4940581321716309,0,0.4567061066627502,0.3595510125160217,-0.001697897911071777,0.4269660115242004,-0.4533106982707977,0.342697024345398,-0.4787775874137878,0],0]]]],[["Anchor",14,394428299090024]],false,false,684620172079747,[],null],["t14",5,false,[],2,0,null,null,[["Pin",13,456906837996025],["Fade",8,218728013988059]],false,false,438300487857361,[],null],["t15",4,false,[726951437591404],3,0,null,[["Default",0,false,1,0,false,954324372044250,[["images/pause-sheet0.png",32506,0,0,161,157,1,0.5031055808067322,0.5031847357749939,[],[-0.397515594959259,-0.3949047327041626,-0.006211578845977783,-0.4777070283889771,0.3913044333457947,-0.3949047327041626,0.4720494151115418,-0.006369739770889282,0.3913044333457947,0.3885352611541748,-0.006211578845977783,0.4649682641029358,-0.4037266969680786,0.3949042558670044,-0.47826087474823,-0.006369739770889282],0],["images/pause-sheet1.png",33467,0,0,161,157,1,0.5031055808067322,0.5031847357749939,[],[],0]]]],[["Fade",8,785646788309555],["Flash",11,834009854852752],["Anchor",14,236404692541993]],false,false,319934659610612,[],null],["t16",4,false,[],2,0,null,[["Default",5,false,1,0,false,157939326111053,[["images/boardsetting-sheet0.png",26164,0,0,252,779,1,0.5,0.5006418228149414,[],[-0.3055559992790222,-0.4377406239509583,0,-0.4813863337039948,0.2857139706611633,-0.4313222169876099,0.4523810148239136,-0.001283824443817139,0.3769840002059937,0.4595631957054138,0,0.4903721809387207,-0.3849210143089294,0.4621312022209168,-0.4722222089767456,-0.001283824443817139],0]]]],[["Fade",8,530783555522929],["Anchor",14,554124059792985]],false,false,991386743308625,[],null],["t17",4,false,[434240310643651],3,0,null,[["Default",0,false,1,0,false,502912810850035,[["images/bgm-sheet0.png",35024,0,0,161,157,1,0.5031055808067322,0.5031847357749939,[],[-0.397515594959259,-0.3949047327041626,-0.006211578845977783,-0.4777070283889771,0.3913044333457947,-0.3949047327041626,0.4720494151115418,-0.006369739770889282,0.3913044333457947,0.3885352611541748,-0.006211578845977783,0.4649682641029358,-0.397515594959259,0.3885352611541748,-0.4720496833324432,-0.006369739770889282],0],["images/bgm-sheet1.png",34782,0,0,161,157,1,0.5031055808067322,0.5031847357749939,[],[],0]]]],[["Flash",11,437429795024815],["Fade",8,914766587437933],["Anchor",14,735854623212753]],false,false,655092202092160,[],null],["t18",4,false,[],0,0,null,[["Default",5,false,1,0,false,178868238875737,[["images/pauseicon-sheet0.png",98983,0,0,1200,1200,1,0.5,0.5,[],[-0.3108330070972443,-0.3108330070972443,0,-0.4399999976158142,0.3108329772949219,-0.3108330070972443,0.4399999976158142,0,0.3108329772949219,0.3108329772949219,0,0.4399999976158142,-0.3108330070972443,0.3108329772949219,-0.4399999976158142,0],0]]]],[],false,false,826283508189587,[],null],["t19",4,false,[147049293532184],0,0,null,[["Default",5,false,1,0,false,805374628770208,[["images/black-sheet0.png",75440,0,0,1200,1200,1,0.5,0.5,[],[],1]]]],[],false,false,142600631683249,[],null],["t20",3,false,[],0,0,null,null,[],false,false,222049282078427,[],null,["G2420S1T30"]],["t21",4,false,[571664197802793,504955010668769],2,0,null,[["Default",5,false,1,0,false,550719766144405,[["images/sound_question-sheet0.png",48496,0,0,430,155,1,0.5,0.5032258033752441,[],[-0.4418604969978333,-0.3419358134269714,0,-0.5032258033752441,0.4418600201606751,-0.3419358134269714,0.490697979927063,-0.006451815366744995,0.432558000087738,0.3096771836280823,0,0.4451612234115601,-0.434883713722229,0.316129207611084,-0.4930232465267181,-0.006451815366744995],0]]]],[["Sine",12,953382422895868],["Fade",8,320668710781584]],false,false,805565004792668,[],null],["t22",4,false,[],2,0,null,[["Default",5,false,1,0,false,194107302524015,[["images/newwords-sheet0.png",10914,0,0,136,76,1,0.5,0.5,[],[-0.3404409885406494,-0.2174479961395264,0,-0.4433594048023224,0.1834560036659241,0.06054699420928955,0.1808819770812988,0,0.3154410123825073,0.1731770038604736,0,0.3815100193023682,-0.3683820068836212,0.2669270038604736,-0.25,0],0]]]],[["Anchor",14,131622581039889],["Fade",8,718058140080219]],false,false,773533559106825,[],null]],[],[["Game",1200,1200,false,"Game",288730111597454,[["Layer 0",0,763235347287340,true,[255,255,255],true,0,0,1,false,false,0,0,0,[[[580,532,0,2858.676025390625,2678.729248046875,0,0,0.1000000014901161,0.5,0.5,0,0,[]],19,25,[[0]],[],[0,"Default",0,1]],[[1119.002563476563,1027.569946289063,0,105,242,0,0,1,0.5,0.5006418228149414,0,0,[]],16,19,[],[[1,0.5,0,0,1],[1,1,1,1,1]],[1,"Default",0,1]],[[-2822,611,0,241.2059936523438,132.6829986572266,0,0,1,0.5025125741958618,0.5058823823928833,0,0,[]],0,3,[[0],[0],[-1],[""],[0],[0],[0]],[[1,3000,1500,1500],[1,1,0,0,0],[0,1],[0,7,17,"current","100, 100",0.3,"0,0",0,0,0,0,""],[0,7,5,"current","100, 100",0.3,"0,0",0,0,0,0,""]],[0,"Default",0,1]],[[-3213,680,0,241.2059936523438,132.6829986572266,0,0,1,0.5025125741958618,0.5,0,0,[]],4,9,[[-1],[0],[""],[0],[0]],[[1,1,0,0,0]],[0,"Default",1,1]],[[-3356,1133,0,260.8450012207031,114.8960037231445,0,0,1,0.5,0.5,0,0,[]],8,18,[],[[],[1,1,0,0,0]],["Answer",0,"bold 36pt Segoe UI","rgb(255,255,255)",1,1,4,0,0]],[[1122.528442382813,1143.801879882813,0,147.1492614746094,114.0406723022461,0,0,1,0.5166666507720947,0.4892473220825195,0,0,[]],12,2,[[0]],[[1,1,1,1,1],[1,1,0,0,0],[0,2,0,0.5,0,0,0,10,0]],[0,"Default",0,1]],[[1058.62646484375,49.94869232177734,0,259.5465087890625,78.43680572509766,0,0,1,0.5008488893508911,0.5,0,0,[]],13,12,[],[[1,0,1,0,1]],[0,"Default",0,1]],[[1070.251831054688,47.12616729736328,0,141,43.34921264648438,0,0,1,0.5,0.5,0,0,[]],9,8,[],[[],[1,1,0,0,0]],["Text",0,"bold 23pt Comic Sans MS","rgb(255,255,255)",1,1,4,0,0]],[[-3089,1143,0,260.8450012207031,114.8960037231445,0,0,1,0.5,0.5,0,0,[]],14,1,[],[[],[1,1,0,0,0]],["Slot",0,"bold 36pt Segoe UI","rgb(255,255,255)",1,1,4,0,0]],[[1120,1052.932983398438,0,70,70,0,0,1,0.5031055808067322,0.5031847357749939,0,0,[]],15,11,[[0]],[[1,0.5,0,0,0],[],[1,1,1,1,1]],[1,"Default",0,1]],[[620,1098,0,212.5639190673828,141.2751617431641,0,0,1,0.5010225176811218,0.5015384554862976,0,0,[]],5,17,[],[[],[1,2,0,3,0,0,0,15,0],[1,1,0,0,0]],[1,"Default",0,1]],[[-3211,245,0,157.4040069580078,165.6880035400391,0,0,1,0.5,0.5,0,0,[]],10,23,[],[[1,0.5,0.5,0.5,1],[]],[0,"Default",0,1]],[[-2882,230,0,157.4039306640625,165.6883544921875,0,0,1,0.5,0.5071428418159485,0,0,[]],11,39,[],[[1,0.5,0.5,0.5,1],[]],[0,"Default",0,1]],[[1120,980.676025390625,0,70,70,0,0,1,0.5031055808067322,0.5031847357749939,0,0,[]],17,6,[[0]],[[],[1,0.5,0,0,1],[1,1,1,1,1]],[1,"Default",0,1]],[[600,298,0,912.5858154296875,328.9553527832031,0,0,1,0.5,0.5032258033752441,0,0,[]],21,21,[[0],[0]],[[0,2,0,1,0,0,0,20,0],[1,1,0,0,1]],[0,"Default",0,1]],[[133.4931335449219,76.05494689941406,0,13.1903133392334,7.371057987213135,0,0,1,0.5,0.5,0,0,[]],22,20,[],[[0,0,0,0,1],[1,1,0,0,0]],[0,"Default",0,1]]],[]],["Layer 1",1,441325000409946,true,[255,255,255],true,1,1,1,false,false,1,0,0,[],[]],["Layer 2",2,317623978877020,false,[255,255,255],true,0,0,1,false,false,1,0,0,[[[628,605,0,2858.676025390625,2678.729248046875,0,0,0.699999988079071,0.5,0.5,0,0,[]],19,32,[[2]],[],[0,"Default",0,1]],[[642,568,0,640.9500732421875,640.9500732421875,0,0,1,0.5,0.5,0,0,[]],18,22,[],[],[0,"Default",0,1]]],[]]],[],[]]],[["Game",[[1,"gameState",1,"loading",false,false,262585271939275,false],[1,"OptionIndex",0,0,false,false,701702298089281,false],[1,"CurrentTime",0,10,false,false,706573264547386,false],[1,"FinalAnswer",1,"",false,false,342353772129151,false],[1,"FilledCount",0,0,false,false,377137633613480,false],[1,"tempScale",0,1,false,false,529411214032395,false],[0,null,false,null,549205817072564,[[-1,15,null,1,false,false,false,597870668036321,false]],[[6,16,null,287858449598328,false,[[2,["edugamery-music-13",false]],[3,1],[0,[0,-15]],[1,[2,"bgm"]]]],[3,17,null,651184105779849,false,[[1,[2,"var script = document.createElement('script'); \nscript.src = 'tdv_sdk.js'; \nscript.onload = function() { tdv_sdk.load(); }; \ndocument.head.appendChild(script);"]]]],[9,18,null,151341647124838,false,[[0,[4,[20,9,19,false,null],[0,5]]]]],[9,20,"Pin",728791452299543,false,[[4,13],[3,0]]],[-1,21,null,996810449091943,false,[[0,[1,0.2]]]],[20,22,null,202557125263620,false],[-1,21,null,952196818529068,false,[[0,[0,1]]]],[0,23,"DragDrop",702939057496858,false,[[3,1]]],[20,24,null,721163723989054,false],[21,25,null,809494142200282,false,[[10,0],[7,[20,21,26,false,null]]]],[21,25,null,989296159518223,false,[[10,1],[7,[20,21,27,false,null]]]]]],[0,null,false,null,768327268818740,[[20,28,null,1,false,false,false,157854561629165,false]],[[3,29,null,422861079647713,false,[[3,0],[7,[2,"Load dữ liệu xong"]]]],[3,29,null,445625785202613,false,[[3,0],[7,[20,20,30,true,null]]]]],[[0,null,false,null,939160499379423,[],[[20,31,null,112633710369332,false],[2,32,null,215312930941469,false,[[1,[2,"SetupUI"]],[13]]],[-1,33,null,166222957937315,false,[[11,"gameState"],[7,[2,"playing"]]]],[3,29,null,810649571245244,false,[[3,0],[7,[10,[2,"SenaAI Loaded & Started! Options count: "],[20,20,34,false,null]]]]]]]]],[0,null,false,null,872840276933538,[[2,35,null,2,false,false,false,211731735023732,false,[[1,[2,"SetupUI"]]]]],[[-1,33,null,582365297077980,false,[[11,"tempScale"],[7,[19,36,[[1,0.6],[5,[1,0.85],[6,[5,[20,20,37,false,null],[0,5]],[1,0.02]]]]]]]],[-1,33,null,408189424039866,false,[[11,"OptionIndex"],[7,[0,0]]]],[8,38,null,672039935926176,false],[14,38,null,651511267579808,false],[4,39,null,943492333478192,false],[0,39,null,278362439833573,false],[20,40,null,178633078143438,false,[[0,[20,20,37,false,null]],[0,[6,[0,170],[23,"tempScale"]]],[0,[6,[0,80],[23,"tempScale"]]],[0,[19,41]],[0,[0,5]],[0,[0,110]],[1,[2,""]],[0,[0,0]]]],[-1,21,null,240310113353086,false,[[0,[1,0.1]]]]],[[0,null,false,null,168437184610774,[[-1,42,null,0,true,false,false,478289350054007,false,[[0,[20,20,37,false,null]]]]],[],[[0,null,false,null,972671736967774,[[-1,43,null,0,false,false,false,964612973683120,false,[[7,[20,20,44,false,null,[[19,45]]]],[8,0],[7,[2,"_"]]]]],[[-1,46,null,737486281698915,false,[[4,4],[5,[0,0]],[0,[0,0]],[0,[0,0]]]],[4,47,null,715570678014369,false,[[0,[20,20,48,false,null,[[19,45]]]]]],[4,49,null,881983151365675,false,[[0,[4,[0,600],[20,20,50,false,null,[[19,45]]]]]]],[4,51,null,889097728032385,false,[[0,[0,1]]]],[4,25,null,208795384731907,false,[[10,4],[7,[0,0]]]],[4,25,null,435050503004243,false,[[10,0],[7,[19,45]]]],[4,52,null,194179362864262,false,[[0,[6,[0,240],[23,"tempScale"]]]]],[4,53,null,566407051446342,false,[[0,[6,[0,128],[23,"tempScale"]]]]],[-1,46,null,869550289716327,false,[[4,14],[5,[0,0]],[0,[20,4,54,false,null]],[0,[20,4,55,false,null]]]],[14,56,null,478595910190091,false,[[7,[21,4,true,null,2]]]],[14,57,null,626534280279395,false,[[0,[6,[0,60],[23,"tempScale"]]]]],[14,20,"Pin",533503056822994,false,[[4,4],[3,0]]],[-1,46,null,397330001990706,false,[[4,0],[5,[0,0]],[0,[0,0]],[0,[0,0]]]],[0,49,null,921109628971378,false,[[0,[4,[0,900],[20,20,50,false,null,[[19,45]]]]]]],[0,47,null,176235835805575,false,[[0,[20,20,48,false,null,[[19,45]]]]]],[0,52,null,814650919052312,false,[[0,[6,[0,240],[23,"tempScale"]]]]],[0,53,null,922072888026931,false,[[0,[6,[0,128],[23,"tempScale"]]]]],[0,25,null,549337712011002,false,[[10,0],[7,[20,0,54,false,null]]]],[0,25,null,975404728639104,false,[[10,1],[7,[20,0,55,false,null]]]],[0,25,null,464060056367974,false,[[10,5],[7,[20,0,27,false,null]]]],[0,25,null,844606159775592,false,[[10,4],[7,[20,0,26,false,null]]]],[0,25,null,510843793429260,false,[[10,3],[7,[20,20,58,true,null,[[23,"OptionIndex"]]]]]],[0,25,null,900069668482333,false,[[10,6],[7,[23,"OptionIndex"]]]],[-1,46,null,928384222975524,false,[[4,8],[5,[0,0]],[0,[20,0,54,false,null]],[0,[20,0,55,false,null]]]],[8,56,null,288679252821645,false,[[7,[21,0,true,null,3]]]],[8,57,null,686320210212969,false,[[0,[6,[0,60],[23,"tempScale"]]]]],[8,20,"Pin",839000064994570,false,[[4,0],[3,0]]],[-1,59,null,887485095430025,false,[[11,"OptionIndex"],[7,[0,1]]]]]],[0,null,false,null,995388432512491,[[-1,60,null,0,false,false,false,699222405183637,false]],[[-1,46,null,521295901596441,false,[[4,4],[5,[0,0]],[0,[0,0]],[0,[0,0]]]],[4,47,null,836887367264126,false,[[0,[20,20,48,false,null,[[19,45]]]]]],[4,49,null,748467605738945,false,[[0,[4,[0,600],[20,20,50,false,null,[[19,45]]]]]]],[4,51,null,652967652097908,false,[[0,[0,0]]]],[4,25,null,577861886666263,false,[[10,4],[7,[0,1]]]],[4,25,null,533646652509635,false,[[10,0],[7,[19,45]]]],[4,52,null,247908449189411,false,[[0,[6,[0,240],[23,"tempScale"]]]]],[4,53,null,631672802872287,false,[[0,[6,[0,128],[23,"tempScale"]]]]],[-1,46,null,163233448048076,false,[[4,14],[5,[0,0]],[0,[20,4,54,false,null]],[0,[20,4,55,false,null]]]],[14,61,null,552953018631591,false],[14,56,null,992772636420777,false,[[7,[20,20,44,false,null,[[19,45]]]]]],[14,57,null,381623228194289,false,[[0,[6,[0,60],[23,"tempScale"]]]]],[14,20,"Pin",750547798336697,false,[[4,4],[3,0]]]]]]]]],[0,null,false,null,885232395664091,[[0,62,"DragDrop",1,false,false,false,462077248880784,false],[0,63,"DragDrop",0,false,false,false,881833931574563,false]],[[6,16,null,765474901635440,false,[[2,["card_drag",false]],[3,0],[0,[0,0]],[1,[2,""]]]],[0,64,null,397403794429243,false],[0,65,"EaseTween",798607807460393,false,[[1,[10,[10,[6,[21,0,false,null,5],[1,1.25]],[2,","]],[6,[21,0,false,null,4],[1,1.25]]]]]],[0,66,"EaseTween",333043575480598,false]],[[0,null,false,null,715788682150145,[[-1,67,null,0,false,false,false,283348359728798,false,[[4,4],[7,[21,4,false,null,0]],[8,0],[7,[21,0,false,null,2]]]],[0,68,null,0,false,false,false,975555513158536,false,[[10,2],[8,1],[7,[0,-1]]]]],[[4,25,null,745135912100760,false,[[10,4],[7,[0,0]]]],[0,25,null,363961653226411,false,[[10,2],[7,[0,-1]]]],[2,32,null,741791155071768,false,[[1,[2,"CheckSubmitState"]],[13]]]]],[0,null,false,null,193892616913206,[[0,69,null,0,false,false,false,297897281213159,false,[[4,8]]]],[[8,61,null,812019026325329,false]]]]],[0,null,false,null,876456068332522,[[0,70,"DragDrop",1,false,false,false,792974910922911,false]],[[0,65,"EaseTween2",312326656063231,false,[[1,[10,[10,[21,0,false,null,5],[2,","]],[21,0,false,null,4]]]]],[0,66,"EaseTween2",997643361117365,false]],[[0,null,false,null,962248118287846,[[0,69,null,0,false,false,false,124677826324657,false,[[4,4]]],[4,68,null,0,false,false,false,852890087723952,false,[[10,4],[8,0],[7,[0,0]]]],[4,71,null,0,false,false,true,156843461614875,false,[[3,0],[0,[20,0,54,false,null]],[0,[20,0,55,false,null]]]]],[[6,16,null,400234397175915,false,[[2,["pop-reverb-423718",false]],[3,0],[0,[0,-5]],[1,[2,""]]]],[4,25,null,413746821094201,false,[[10,4],[7,[0,1]]]],[0,25,null,290353637263798,false,[[10,2],[7,[21,4,false,null,0]]]],[0,72,null,464777312492432,false,[[0,[20,4,54,false,null]],[0,[20,4,55,false,null]]]],[0,52,null,262746395317933,false,[[0,[20,4,27,false,null]]]],[4,53,null,930580622453040,false,[[0,[20,4,26,false,null]]]],[2,32,null,648297693202608,false,[[1,[2,"CheckSubmitState"]],[13]]]]],[0,null,false,null,237085795779233,[[-1,60,null,0,false,false,false,461468372881317,false]],[[6,16,null,961784671294368,false,[[2,["card_swipe",false]],[3,0],[0,[0,0]],[1,[2,""]]]],[0,72,null,211990151810903,false,[[0,[21,0,false,null,0]],[0,[21,0,false,null,1]]]],[2,32,null,785187084030838,false,[[1,[2,"CheckSubmitState"]],[13]]]]]]],[0,null,false,null,903256601857551,[[2,35,null,2,false,false,false,553171385010499,false,[[1,[2,"CheckSubmitState"]]]]],[[-1,33,null,151584341392847,false,[[11,"FilledCount"],[7,[0,0]]]]],[[0,null,false,null,326454811928491,[[-1,73,null,0,true,false,false,900563057628926,false,[[4,0]]]],[],[[0,null,false,null,512468327333204,[[0,68,null,0,false,false,false,273625493381606,false,[[10,2],[8,1],[7,[0,-1]]]]],[[-1,59,null,427897992150255,false,[[11,"FilledCount"],[7,[0,1]]]]]]]],[0,null,false,null,197957600391126,[[-1,74,null,0,false,false,false,676094959731453,false,[[11,"FilledCount"],[8,0],[7,[20,0,75,false,null]]]]],[[5,76,null,871171250612987,false,[[3,1]]]]],[0,null,false,null,830039838453468,[[-1,60,null,0,false,false,false,540974332855602,false]],[[5,76,null,801779902196330,false,[[3,0]]]]]]],[0,null,false,null,956282998966849,[[1,77,null,1,false,false,false,460379891558451,false,[[4,5]]],[5,78,null,0,false,false,false,271469166922398,false]],[[20,79,null,658653282719226,false],[-1,33,null,529456506010094,false,[[11,"FinalAnswer"],[7,[2,""]]]],[6,16,null,813632462410441,false,[[2,["button-124476",false]],[3,0],[0,[0,0]],[1,[2,""]]]],[5,80,"Flash",388147726390308,false,[[0,[1,0.1]],[0,[1,0.1]],[0,[1,0.4]]]],[-1,21,null,725241333542329,false,[[0,[1,0.5]]]]],[[0,null,false,null,667347878010134,[[-1,42,null,0,true,false,false,389186915205398,false,[[0,[20,20,37,false,null]]]]],[],[[0,null,false,null,631589558920999,[[-1,43,null,0,false,false,false,253358370212568,false,[[7,[20,20,44,false,null,[[19,45]]]],[8,0],[7,[2,"_"]]]]],[],[[0,null,false,null,403636493907996,[[0,68,null,0,false,false,false,526836686186341,false,[[10,2],[8,0],[7,[19,45]]]]],[[-1,33,null,245728951174934,false,[[11,"FinalAnswer"],[7,[10,[10,[23,"FinalAnswer"],[21,0,true,null,3]],[2,"|"]]]]]]]]],[0,null,false,null,998053537243308,[[-1,60,null,0,false,false,false,403067100774907,false]],[[-1,33,null,357495810182952,false,[[11,"FinalAnswer"],[7,[10,[10,[23,"FinalAnswer"],[20,20,44,false,null,[[19,45]]]],[2,"|"]]]]]]]]],[0,null,false,null,903901720494647,[[-1,74,null,0,false,false,false,745073279826626,false,[[11,"FinalAnswer"],[8,1],[7,[2,""]]]]],[[-1,33,null,814546508270084,false,[[11,"FinalAnswer"],[7,[19,81,[[23,"FinalAnswer"],[5,[19,82,[[23,"FinalAnswer"]]],[0,1]]]]]]],[20,83,null,171040983658447,false,[[7,[23,"FinalAnswer"]]]],[5,76,null,498358887136483,false,[[3,0]]]]]]],[0,null,false,null,961823775126713,[[20,84,null,1,false,false,false,119018979468992,false]],[[0,23,"DragDrop",205409471313749,false,[[3,0]]],[-1,33,null,847894060130636,false,[[11,"gameState"],[7,[2,"End"]]]],[6,16,null,634975830871135,false,[[2,["alert-234711",false]],[3,0],[0,[0,0]],[1,[2,""]]]],[5,76,null,486294929517038,false,[[3,0]]],[-1,21,null,166118146748558,false,[[0,[1,0.1]]]],[-1,46,null,786114696442570,false,[[4,11],[5,[0,0]],[0,[20,5,54,false,null]],[0,[20,5,55,false,null]]]],[-1,21,null,609402064923823,false,[[0,[0,2]]]],[20,79,null,518261006133178,false],[6,85,null,174396971635178,false,[[1,[2,"bgm"]],[3,0]]]]],[0,null,false,null,433043078641250,[[20,86,null,1,false,false,false,889460128806113,false]],[[0,23,"DragDrop",146493902040842,false,[[3,0]]],[-1,33,null,988835730301625,false,[[11,"gameState"],[7,[2,"End"]]]],[6,16,null,221256152272583,false,[[2,["error-010-206498",false]],[3,0],[0,[0,0]],[1,[2,""]]]],[5,76,null,523842542618557,false,[[3,0]]],[-1,21,null,773344591454861,false,[[0,[1,0.1]]]],[-1,46,null,165468245100549,false,[[4,10],[5,[0,0]],[0,[20,5,54,false,null]],[0,[20,5,55,false,null]]]],[-1,21,null,585683943374630,false,[[0,[0,2]]]],[20,79,null,192197113002945,false],[6,85,null,825831442872977,false,[[1,[2,"bgm"]],[3,0]]]]],[0,null,false,null,677561674894761,[[-1,87,null,0,false,false,false,391825816788941,false],[-1,74,null,0,false,false,false,368014433448941,false,[[11,"gameState"],[8,0],[7,[2,"playing"]]]]],[[-1,33,null,987573740694087,false,[[11,"CurrentTime"],[7,[19,36,[[0,0],[5,[20,20,88,false,null],[20,20,89,false,null]]]]]]],[9,56,null,492147563848000,false,[[7,[19,90,[[23,"CurrentTime"]]]]]]],[[0,null,false,null,832762743583791,[[-1,74,null,0,false,false,false,981758326364740,false,[[11,"CurrentTime"],[8,0],[7,[0,0]]]],[-1,74,null,0,false,false,false,308544565881634,false,[[11,"gameState"],[8,0],[7,[2,"playing"]]]]],[],[[0,null,false,null,311487585935540,[[-1,91,null,0,false,false,false,737530322799077,false]],[[-1,33,null,451887772045988,false,[[11,"FinalAnswer"],[7,[2,""]]]],[20,79,null,815932058909240,false],[0,23,"DragDrop",391152127402634,false,[[3,0]]],[20,83,null,543252439847789,false,[[7,[23,"FinalAnswer"]]]]]]]]]],[0,null,false,null,312687717900328,[[1,77,null,1,false,false,false,444391347231568,false,[[4,17]]],[17,68,null,0,false,false,false,165882449365670,false,[[10,0],[8,0],[7,[0,0]]]],[17,78,null,0,false,false,false,218006519748153,false],[-1,74,null,0,false,false,false,357948453038272,false,[[11,"gameState"],[8,1],[7,[2,"End"]]]]],[[17,51,null,744920239729365,false,[[0,[0,1]]]],[6,16,null,814990443653107,false,[[2,["bubble-pop-389501",false]],[3,0],[0,[0,10]],[1,[2,""]]]],[17,80,"Flash",288546904750114,false,[[0,[1,0.1]],[0,[1,0.1]],[0,[1,0.4]]]],[-1,21,null,225438922954531,false,[[0,[1,0.5]]]],[6,92,null,554558762518759,false,[[1,[2,"bgm"]],[3,0]]],[17,25,null,117506203877028,false,[[10,0],[7,[0,1]]]]]],[0,null,false,null,983825517389982,[[1,77,null,1,false,false,false,177138363351836,false,[[4,17]]],[17,68,null,0,false,false,false,772247454962354,false,[[10,0],[8,0],[7,[0,1]]]],[17,78,null,0,false,false,false,420178685359629,false],[-1,74,null,0,false,false,false,293246541340415,false,[[11,"gameState"],[8,1],[7,[2,"End"]]]]],[[17,51,null,552019651456125,false,[[0,[0,0]]]],[6,16,null,197222371360236,false,[[2,["bubble-pop-389501",false]],[3,0],[0,[0,10]],[1,[2,""]]]],[17,80,"Flash",270092195858284,false,[[0,[1,0.1]],[0,[1,0.1]],[0,[1,0.4]]]],[-1,21,null,326299332281639,false,[[0,[1,0.5]]]],[6,92,null,964958154773645,false,[[1,[2,"bgm"]],[3,1]]],[17,25,null,506698549832256,false,[[10,0],[7,[0,0]]]]]],[0,null,false,null,294769773047529,[[1,77,null,1,false,false,false,352106017539969,false,[[4,15]]],[15,68,null,0,false,false,false,358413375274332,false,[[10,0],[8,0],[7,[0,0]]]],[15,78,null,0,false,false,false,721902056257835,false],[-1,74,null,0,false,false,false,947093505629807,false,[[11,"gameState"],[8,1],[7,[2,"End"]]]]],[[20,79,null,431466008645395,false],[15,51,null,981623485925509,false,[[0,[0,1]]]],[6,16,null,547261484638917,false,[[2,["bubble-pop-389501",false]],[3,0],[0,[0,10]],[1,[2,""]]]],[15,80,"Flash",221991481168028,false,[[0,[1,0.1]],[0,[1,0.1]],[0,[1,0.4]]]],[-1,21,null,851078194326314,false,[[0,[1,0.5]]]],[-1,93,null,402526527434402,false,[[5,[0,2]],[3,1]]],[0,76,null,855238512615337,false,[[3,0]]],[4,76,null,207839358302464,false,[[3,0]]],[8,94,null,222466351625496,false,[[3,0]]],[14,94,null,251839098840947,false,[[3,0]]],[0,23,"DragDrop",759856544888894,false,[[3,0]]],[6,92,null,706457060725101,false,[[1,[2,"bgm"]],[3,0]]],[15,25,null,399990244603092,false,[[10,0],[7,[0,1]]]]]],[0,null,false,null,532748443231555,[[1,77,null,1,false,false,false,419213596136778,false,[[4,15]]],[15,68,null,0,false,false,false,926326957937606,false,[[10,0],[8,0],[7,[0,1]]]],[15,78,null,0,false,false,false,804823921411396,false],[-1,74,null,0,false,false,false,952064663952204,false,[[11,"gameState"],[8,1],[7,[2,"End"]]]]],[[20,24,null,977450185168128,false],[15,51,null,670063708965675,false,[[0,[0,0]]]],[6,16,null,372275331971085,false,[[2,["bubble-pop-389501",false]],[3,0],[0,[0,10]],[1,[2,""]]]],[15,80,"Flash",113742305896573,false,[[0,[1,0.1]],[0,[1,0.1]],[0,[1,0.4]]]],[-1,21,null,900385124097116,false,[[0,[1,0.5]]]],[-1,93,null,245330032785852,false,[[5,[0,2]],[3,0]]],[0,76,null,338279072626337,false,[[3,1]]],[4,76,null,371330338747864,false,[[3,1]]],[8,94,null,358503142678550,false,[[3,1]]],[14,94,null,192887026023526,false,[[3,1]]],[0,23,"DragDrop",886574462493362,false,[[3,1]]],[6,92,null,693317578489009,false,[[1,[2,"bgm"]],[3,1]]],[15,25,null,468211770946126,false,[[10,0],[7,[0,0]]]]]],[0,null,false,null,297063884609973,[[1,77,null,1,false,false,false,386622849542303,false,[[4,18]]],[-1,95,null,0,false,false,false,363257598466262,false,[[5,[0,2]]]],[-1,74,null,0,false,false,false,151863864256963,false,[[11,"gameState"],[8,1],[7,[2,"End"]]]]],[[20,24,null,815752088305315,false],[15,51,null,209418858141601,false,[[0,[0,0]]]],[6,16,null,892125720911145,false,[[2,["bubble-pop-389501",false]],[3,0],[0,[0,10]],[1,[2,""]]]],[15,80,"Flash",926038900680013,false,[[0,[1,0.1]],[0,[1,0.1]],[0,[1,0.4]]]],[-1,21,null,821647409423555,false,[[0,[1,0.5]]]],[-1,93,null,480813966183110,false,[[5,[0,2]],[3,0]]],[0,76,null,876609529855384,false,[[3,1]]],[4,76,null,136625999145606,false,[[3,1]]],[8,94,null,927964586528148,false,[[3,1]]],[14,94,null,155360850450853,false,[[3,1]]],[0,23,"DragDrop",695861965483617,false,[[3,1]]],[6,92,null,652969105932762,false,[[1,[2,"bgm"]],[3,1]]],[15,25,null,943722776633160,false,[[10,0],[7,[0,0]]]]]],[0,null,false,null,792955897157891,[[2,35,null,2,false,false,false,979301415560581,false,[[1,[2,"Fade"]]]]],[[16,96,"Fade",820129408251933,false],[15,96,"Fade",948221853487772,false],[17,96,"Fade",225126965271644,false]]],[0,null,false,null,955859035444991,[[1,77,null,1,false,false,false,518910668901033,false,[[4,12]]],[12,68,null,0,false,false,false,290396959315441,false,[[10,0],[8,0],[7,[0,0]]]],[-1,74,null,0,false,false,false,167050138940432,false,[[11,"gameState"],[8,1],[7,[2,"End"]]]]],[[2,32,null,925309444477441,false,[[1,[2,"SettingOnTop"]],[13]]],[6,16,null,444001414569356,false,[[2,["button-124476",false]],[3,0],[0,[0,0]],[1,[2,""]]]],[12,97,"Sine",818098073409429,false,[[3,1]]],[-1,21,null,441096782479652,false,[[0,[1,0.5]]]],[16,76,null,794558327843409,false,[[3,1]]],[15,76,null,679301757369962,false,[[3,1]]],[17,76,null,767519360841597,false,[[3,1]]],[2,32,null,793350220956891,false,[[1,[2,"Fade"]],[13]]],[12,25,null,261563617571114,false,[[10,0],[7,[0,1]]]],[12,97,"Sine",245771226696928,false,[[3,0]]]]],[0,null,false,null,467571648016628,[[1,77,null,1,false,false,false,432350690749805,false,[[4,12]]],[12,68,null,0,false,false,false,815726735468093,false,[[10,0],[8,0],[7,[0,1]]]],[-1,74,null,0,false,false,false,365328355764187,false,[[11,"gameState"],[8,1],[7,[2,"End"]]]]],[[2,32,null,356880855256469,false,[[1,[2,"SettingOnTop"]],[13]]],[6,16,null,747877391706105,false,[[2,["button-124476",false]],[3,0],[0,[0,0]],[1,[2,""]]]],[12,97,"Sine",128949433029818,false,[[3,1]]],[-1,21,null,827176291493130,false,[[0,[1,0.5]]]],[16,76,null,591127776141805,false,[[3,0]]],[15,76,null,854152891397620,false,[[3,0]]],[17,76,null,646200193534642,false,[[3,0]]],[-1,21,null,891033434354753,false,[[0,[1,0.1]]]],[12,25,null,461824223198453,false,[[10,0],[7,[0,0]]]],[12,97,"Sine",784451994863195,false,[[3,0]]]]],[0,null,false,null,710506800687011,[[1,77,null,1,false,false,false,251187822971843,false,[[4,21]]],[-1,74,null,0,false,false,false,585500221148009,false,[[11,"CurrentTime"],[8,1],[7,[0,0]]]],[-1,95,null,0,false,true,false,866367281151246,false,[[5,[0,2]]]],[-1,74,null,0,false,false,false,244774256700479,false,[[11,"gameState"],[8,1],[7,[2,"End"]]]]],[[6,16,null,331623853469441,false,[[2,["button-124476",false]],[3,0],[0,[0,0]],[1,[2,""]]]],[6,85,null,159156879567719,false,[[1,[2,"bgm"]],[3,0]]],[21,97,"Sine",816187014713162,false,[[3,1]]],[3,17,null,394211291036965,false,[[1,[10,[10,[2,"var audio = new Audio('"],[20,20,98,true,null]],[2,"'); audio.play();"]]]]],[-1,21,null,889484535202560,false,[[0,[0,2]]]],[21,97,"Sine",759168163743084,false,[[3,0]]],[21,53,null,320246019425197,false,[[0,[21,21,false,null,0]]]],[21,52,null,896375027645563,false,[[0,[21,21,false,null,1]]]],[-1,21,null,890463653358513,false,[[0,[1,0.5]]]],[6,85,null,726724055015429,false,[[1,[2,"bgm"]],[3,1]]]]],[0,null,false,null,531601032626161,[[2,35,null,2,false,false,false,680697609423536,false,[[1,[2,"SettingOnTop"]]]]],[[16,64,null,963464341486833,false],[15,64,null,958255553488164,false],[17,64,null,413896544371372,false],[12,64,null,341014646835341,false]]]]],["Game2",[]]],[["alert-234711.ogg",23907],["bubble-pop-389501.ogg",18257],["button-124476.ogg",13157],["collect-5930.ogg",10731],["edugamery-music-13.ogg",1468346],["error-010-206498.ogg",11425],["error-08-206492.ogg",15621],["pop-reverb-423718.ogg",23653],["card_drag.ogg",7213],["card_flips.ogg",8015],["card_swipe.ogg",9018]],"media/",false,1200,1200,3,true,true,true,"1.0.0.0",true,false,3,0,40,false,true,1,true,"SQ_Word_Hint-Audio",0,[]]} \ No newline at end of file +{"project": [null,"Game",[[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,true,false,false,false,false,false,false,false,false],[6,false,true,true,true,true,true,true,true,false]],[["t0",4,false,[864916470115508,671424700857603,742273295511675,915051182566084,438595278712365,792103718967953,177547705418577],5,0,null,[["Default",0,false,1,0,false,766361138730018,[["images/answers-sheet0.png",12383,0,0,199,85,1,0.5025125741958618,0.5058823823928833,[],[-0.3266335725784302,-0.2823523879051209,0.3216074109077454,-0.3058823943138123,0.3316584229469299,0.2235296368598938,-0.326632559299469,0.2235296368598938],0]]]],[["MoveTo",7,604855247345446],["Fade",8,172183085978858],["DragDrop",9,421888048208530],["EaseTween",10,428975865074928],["EaseTween2",10,153601376400345]],false,false,521274050538780,[],null],["t1",5,false,[],0,0,null,null,[],false,false,786570836240034,[],null,[1]],["t2",2,false,[],0,0,null,null,[],false,false,293329078829759,[],null,[]],["t3",1,false,[],0,0,null,null,[],false,false,309246988327533,[],null,[]],["t4",4,false,[808559794937329,997079567163161,567648729382427,954939568499611,936471805758704],1,0,null,[["Default",0,false,1,0,false,163248314795401,[["images/answers-sheet0.png",12383,0,0,199,85,1,0.5025125741958618,0.5058823823928833,[],[-0.3065325617790222,-0.2588233947753906,0.3316584229469299,-0.2705883979797363,0.3467334508895874,0.176469624042511,-0.3115585744380951,0.1764706373214722],0],["images/slot-sheet0.png",11183,0,0,199,82,1,0.5025125741958618,0.5,[],[-0.3517585694789887,-0.2317070066928864,0.3467334508895874,-0.2317070066928864,0.3567834496498108,0.3048779964447022,-0.346733570098877,0.2926830053329468],0]]]],[["Fade",8,900753873870093]],false,false,519636697009154,[],null],["t5",4,false,[],3,0,null,[["Default",0,false,1,0,false,157803278794484,[["images/submit-sheet0.png",146996,0,0,489,325,1,0.5010225176811218,0.5015384554862976,[],[],0]]]],[["Flash",11,745974027953346],["Sine",12,122174234324725],["Fade",8,470725043295066]],false,false,588453873694452,[],null],["t6",0,false,[],0,0,null,null,[],false,false,975221106550751,[],null,[0,0,0,1,1,600,600,10000,1]],["t7",4,false,[],0,0,null,[["Default",5,false,1,0,false,430849449557794,[["images/sprite-sheet0.png",168,0,0,250,250,1,0.5,0.5,[],[],0]]]],[],false,false,787263586433186,[],null],["t8",6,false,[],2,0,null,null,[["Pin",13,668111541658451],["Fade",8,143982287745535]],false,false,865512087815474,[],null],["t9",6,false,[],2,0,null,null,[["Pin",13,983629863781910],["Fade",8,863647630809957]],false,false,452023984157524,[],null],["t10",4,false,[],2,0,null,[["Default",5,false,1,0,false,325577231432987,[["images/wrong-sheet0.png",27271,0,0,140,140,1,0.5,0.5,[],[-0.08866998553276062,0.05115598440170288,0,-0.05821299552917481,0.08374398946762085,0.05821299552917481,0.07635402679443359,-0.001763999462127686,0.1009849905967712,-0.03351700305938721,0,0.1005499958992004,-0.105910986661911,-0.02645999193191528,-0.08374398946762085,-0.001763999462127686],0]]]],[["Fade",8,938090566638553],["Pin",13,922984705911085]],false,false,786659809200098,[],null],["t11",4,false,[],2,0,null,[["Default",5,false,1,0,false,199500828138837,[["images/correct-sheet0.png",31182,0,0,140,140,1,0.5,0.5071428418159485,[],[-0.03694498538970947,-0.01037183403968811,0,-0.05661284923553467,0.4187189936637878,-0.4319769442081451,0.08374398946762085,-0.004931867122650147,0,0.133790135383606,-0.280788004398346,0.2725121378898621,-0.03940901160240173,-0.004931867122650147],0]]]],[["Fade",8,351180598525433],["Pin",13,692899677986212]],false,false,185378619927884,[],null],["t12",4,false,[808308867875603],3,0,null,[["Default",5,false,1,0,false,761372550491219,[["images/setting-sheet0.png",48936,0,0,240,186,1,0.5166666507720947,0.4892473220825195,[],[-0.3041666448116303,-0.2150533199310303,-0.01666665077209473,-0.4838709831237793,0.3166663646697998,-0.2741933166980743,0.4666663408279419,0.01075267791748047,0.3666663765907288,0.3602146506309509,-0.01666665077209473,0.4193546772003174,-0.3624996542930603,0.3118276596069336,-0.4416666626930237,0.01075267791748047],0]]]],[["Anchor",14,827810656785535],["Fade",8,373179721574636],["Sine",12,657466709679600]],false,false,852469545845224,[],null],["t13",4,false,[],1,0,null,[["Default",5,false,1,0,false,200801003478463,[["images/khung_timer-sheet0.png",100737,0,0,589,178,1,0.5008488893508911,0.5,[],[-0.4601019024848938,-0.3651689887046814,-0.001697897911071777,-0.4943820238113403,0.4244481325149536,-0.2528089880943298,0.4940581321716309,0,0.4567061066627502,0.3595510125160217,-0.001697897911071777,0.4269660115242004,-0.4533106982707977,0.342697024345398,-0.4787775874137878,0],0]]]],[["Anchor",14,394428299090024]],false,false,684620172079747,[],null],["t14",6,false,[],2,0,null,null,[["Pin",13,456906837996025],["Fade",8,218728013988059]],false,false,438300487857361,[],null],["t15",4,false,[726951437591404],3,0,null,[["Default",0,false,1,0,false,954324372044250,[["images/pause-sheet0.png",32506,0,0,161,157,1,0.5031055808067322,0.5031847357749939,[],[-0.397515594959259,-0.3949047327041626,-0.006211578845977783,-0.4777070283889771,0.3913044333457947,-0.3949047327041626,0.4720494151115418,-0.006369739770889282,0.3913044333457947,0.3885352611541748,-0.006211578845977783,0.4649682641029358,-0.4037266969680786,0.3949042558670044,-0.47826087474823,-0.006369739770889282],0],["images/pause-sheet1.png",33467,0,0,161,157,1,0.5031055808067322,0.5031847357749939,[],[],0]]]],[["Fade",8,785646788309555],["Flash",11,834009854852752],["Anchor",14,236404692541993]],false,false,319934659610612,[],null],["t16",4,false,[],2,0,null,[["Default",5,false,1,0,false,157939326111053,[["images/boardsetting-sheet0.png",26164,0,0,252,779,1,0.5,0.5006418228149414,[],[-0.3055559992790222,-0.4377406239509583,0,-0.4813863337039948,0.2857139706611633,-0.4313222169876099,0.4523810148239136,-0.001283824443817139,0.3769840002059937,0.4595631957054138,0,0.4903721809387207,-0.3849210143089294,0.4621312022209168,-0.4722222089767456,-0.001283824443817139],0]]]],[["Fade",8,530783555522929],["Anchor",14,554124059792985]],false,false,991386743308625,[],null],["t17",4,false,[434240310643651],3,0,null,[["Default",0,false,1,0,false,502912810850035,[["images/bgm-sheet0.png",35024,0,0,161,157,1,0.5031055808067322,0.5031847357749939,[],[-0.397515594959259,-0.3949047327041626,-0.006211578845977783,-0.4777070283889771,0.3913044333457947,-0.3949047327041626,0.4720494151115418,-0.006369739770889282,0.3913044333457947,0.3885352611541748,-0.006211578845977783,0.4649682641029358,-0.397515594959259,0.3885352611541748,-0.4720496833324432,-0.006369739770889282],0],["images/bgm-sheet1.png",34782,0,0,161,157,1,0.5031055808067322,0.5031847357749939,[],[],0]]]],[["Flash",11,437429795024815],["Fade",8,914766587437933],["Anchor",14,735854623212753]],false,false,655092202092160,[],null],["t18",4,false,[],0,0,null,[["Default",5,false,1,0,false,178868238875737,[["images/pauseicon-sheet0.png",98983,0,0,1200,1200,1,0.5,0.5,[],[-0.3108330070972443,-0.3108330070972443,0,-0.4399999976158142,0.3108329772949219,-0.3108330070972443,0.4399999976158142,0,0.3108329772949219,0.3108329772949219,0,0.4399999976158142,-0.3108330070972443,0.3108329772949219,-0.4399999976158142,0],0]]]],[],false,false,826283508189587,[],null],["t19",4,false,[147049293532184],0,0,null,[["Default",5,false,1,0,false,805374628770208,[["images/black-sheet0.png",75440,0,0,1200,1200,1,0.5,0.5,[],[],1]]]],[],false,false,142600631683249,[],null],["t20",3,false,[],0,0,null,null,[],false,false,222049282078427,[],null,["G2420S1T30"]],["t21",4,false,[571664197802793,504955010668769],2,0,null,[["Default",5,false,1,0,false,550719766144405,[["images/sound_question-sheet0.png",48496,0,0,430,155,1,0.5,0.5032258033752441,[],[-0.4418604969978333,-0.3419358134269714,0,-0.5032258033752441,0.4418600201606751,-0.3419358134269714,0.490697979927063,-0.006451815366744995,0.432558000087738,0.3096771836280823,0,0.4451612234115601,-0.434883713722229,0.316129207611084,-0.4930232465267181,-0.006451815366744995],0]]]],[["Sine",12,953382422895868],["Fade",8,320668710781584]],false,false,805565004792668,[],null]],[],[["Game",1200,1200,false,"Game",288730111597454,[["Layer 0",0,763235347287340,true,[255,255,255],true,0,0,1,false,false,0,0,0,[[[580,532,0,2858.676025390625,2678.729248046875,0,0,0.1000000014901161,0.5,0.5,0,0,[]],19,25,[[0]],[],[0,"Default",0,1]],[[1119.002563476563,1027.569946289063,0,105,242,0,0,1,0.5,0.5006418228149414,0,0,[]],16,19,[],[[1,0.5,0,0,1],[1,1,1,1,1]],[1,"Default",0,1]],[[-2822,611,0,241.2059936523438,132.6829986572266,0,0,1,0.5025125741958618,0.5058823823928833,0,0,[]],0,3,[[0],[0],[-1],[""],[0],[0],[0]],[[1,3000,1500,1500],[1,1,0,0,0],[0,1],[0,7,17,"current","100, 100",0.3,"0,0",0,0,0,0,""],[0,7,5,"current","100, 100",0.3,"0,0",0,0,0,0,""]],[0,"Default",0,1]],[[-3213,680,0,241.2059936523438,132.6829986572266,0,0,1,0.5025125741958618,0.5,0,0,[]],4,9,[[-1],[0],[""],[0],[0]],[[1,1,0,0,0]],[0,"Default",1,1]],[[-3356,1133,0,260.8450012207031,114.8960037231445,0,0,1,0.5,0.5,0,0,[]],8,18,[],[[],[1,1,0,0,0]],["Answer",0,"bold 36pt Segoe UI","rgb(255,255,255)",1,1,4,0,0]],[[1122.528442382813,1143.801879882813,0,147.1492614746094,114.0406723022461,0,0,1,0.5166666507720947,0.4892473220825195,0,0,[]],12,2,[[0]],[[1,1,1,1,1],[1,1,0,0,0],[0,2,0,0.5,0,0,0,10,0]],[0,"Default",0,1]],[[1058.62646484375,49.94869232177734,0,259.5465087890625,78.43680572509766,0,0,1,0.5008488893508911,0.5,0,0,[]],13,12,[],[[1,0,1,0,1]],[0,"Default",0,1]],[[1070.251831054688,47.12616729736328,0,141,43.34921264648438,0,0,1,0.5,0.5,0,0,[]],9,8,[],[[],[1,1,0,0,0]],["",0,"bold 23pt Comic Sans MS","rgb(255,255,255)",1,1,4,0,0]],[[-3089,1143,0,260.8450012207031,114.8960037231445,0,0,1,0.5,0.5,0,0,[]],14,1,[],[[],[1,1,0,0,0]],["Slot",0,"bold 36pt Segoe UI","rgb(255,255,255)",1,1,4,0,0]],[[1120,1052.932983398438,0,70,70,0,0,1,0.5031055808067322,0.5031847357749939,0,0,[]],15,11,[[0]],[[1,0.5,0,0,0],[],[1,1,1,1,1]],[1,"Default",0,1]],[[620,1098,0,212.5639190673828,141.2751617431641,0,0,1,0.5010225176811218,0.5015384554862976,0,0,[]],5,17,[],[[],[1,2,0,3,0,0,0,15,0],[1,1,0,0,0]],[1,"Default",0,1]],[[-3211,245,0,157.4040069580078,165.6880035400391,0,0,1,0.5,0.5,0,0,[]],10,23,[],[[1,0.5,0.5,0.5,1],[]],[0,"Default",0,1]],[[-2882,230,0,157.4039306640625,165.6883544921875,0,0,1,0.5,0.5071428418159485,0,0,[]],11,39,[],[[1,0.5,0.5,0.5,1],[]],[0,"Default",0,1]],[[1120,980.676025390625,0,70,70,0,0,1,0.5031055808067322,0.5031847357749939,0,0,[]],17,6,[[0]],[[],[1,0.5,0,0,1],[1,1,1,1,1]],[1,"Default",0,1]],[[600,298,0,912.5858154296875,328.9553527832031,0,0,1,0.5,0.5032258033752441,0,0,[]],21,21,[[0],[0]],[[0,2,0,1,0,0,0,20,0],[1,1,0,0,1]],[0,"Default",0,1]]],[]],["Layer 1",1,441325000409946,true,[255,255,255],true,1,1,1,false,false,1,0,0,[],[]],["Layer 2",2,317623978877020,false,[255,255,255],true,0,0,1,false,false,1,0,0,[[[628,605,0,2858.676025390625,2678.729248046875,0,0,0.699999988079071,0.5,0.5,0,0,[]],19,32,[[2]],[],[0,"Default",0,1]],[[642,568,0,640.9500732421875,640.9500732421875,0,0,1,0.5,0.5,0,0,[]],18,22,[],[],[0,"Default",0,1]]],[]]],[],[]]],[["Game",[[1,"gameState",1,"loading",false,false,262585271939275,false],[1,"OptionIndex",0,0,false,false,701702298089281,false],[1,"CurrentTime",0,10,false,false,706573264547386,false],[1,"FinalAnswer",1,"",false,false,342353772129151,false],[1,"FilledCount",0,0,false,false,377137633613480,false],[1,"tempScale",0,1,false,false,529411214032395,false],[0,null,false,null,549205817072564,[[-1,15,null,1,false,false,false,597870668036321,false]],[[6,16,null,287858449598328,false,[[2,["edugamery-music-13",false]],[3,1],[0,[0,-15]],[1,[2,"bgm"]]]],[3,17,null,651184105779849,false,[[1,[2,"var script = document.createElement('script'); \nscript.src = 'tdv_sdk.js'; \nscript.onload = function() { tdv_sdk.load(); }; \ndocument.head.appendChild(script);"]]]],[9,18,null,151341647124838,false,[[0,[4,[20,9,19,false,null],[0,5]]]]],[9,20,"Pin",728791452299543,false,[[4,13],[3,0]]],[-1,21,null,996810449091943,false,[[0,[1,0.2]]]],[20,22,null,202557125263620,false],[-1,21,null,952196818529068,false,[[0,[0,1]]]],[0,23,"DragDrop",702939057496858,false,[[3,1]]],[20,24,null,721163723989054,false],[21,25,null,809494142200282,false,[[10,0],[7,[20,21,26,false,null]]]],[21,25,null,989296159518223,false,[[10,1],[7,[20,21,27,false,null]]]]]],[0,null,false,null,768327268818740,[[20,28,null,1,false,false,false,157854561629165,false]],[[3,29,null,422861079647713,false,[[3,0],[7,[2,"Load dữ liệu xong"]]]],[3,29,null,445625785202613,false,[[3,0],[7,[20,20,30,true,null]]]]],[[0,null,false,null,939160499379423,[],[[20,31,null,112633710369332,false],[2,32,null,215312930941469,false,[[1,[2,"SetupUI"]],[13]]],[-1,33,null,166222957937315,false,[[11,"gameState"],[7,[2,"playing"]]]],[3,29,null,810649571245244,false,[[3,0],[7,[10,[2,"SenaAI Loaded & Started! Options count: "],[20,20,34,false,null]]]]]]]]],[0,null,false,null,872840276933538,[[2,35,null,2,false,false,false,211731735023732,false,[[1,[2,"SetupUI"]]]]],[[-1,33,null,582365297077980,false,[[11,"tempScale"],[7,[19,36,[[1,0.6],[5,[1,0.85],[6,[5,[20,20,37,false,null],[0,5]],[1,0.02]]]]]]]],[-1,33,null,408189424039866,false,[[11,"OptionIndex"],[7,[0,0]]]],[8,38,null,672039935926176,false],[14,38,null,651511267579808,false],[4,39,null,943492333478192,false],[0,39,null,278362439833573,false],[20,40,null,178633078143438,false,[[0,[20,20,37,false,null]],[0,[6,[0,170],[23,"tempScale"]]],[0,[6,[0,80],[23,"tempScale"]]],[0,[19,41]],[0,[0,5]],[0,[0,110]],[1,[2,""]],[0,[0,0]]]],[-1,21,null,240310113353086,false,[[0,[1,0.1]]]]],[[0,null,false,null,168437184610774,[[-1,42,null,0,true,false,false,478289350054007,false,[[0,[20,20,37,false,null]]]]],[],[[0,null,false,null,972671736967774,[[-1,43,null,0,false,false,false,964612973683120,false,[[7,[20,20,44,false,null,[[19,45]]]],[8,0],[7,[2,"_"]]]]],[[-1,46,null,737486281698915,false,[[4,4],[5,[0,0]],[0,[0,0]],[0,[0,0]]]],[4,47,null,715570678014369,false,[[0,[20,20,48,false,null,[[19,45]]]]]],[4,49,null,881983151365675,false,[[0,[4,[0,600],[20,20,50,false,null,[[19,45]]]]]]],[4,51,null,889097728032385,false,[[0,[0,1]]]],[4,25,null,208795384731907,false,[[10,4],[7,[0,0]]]],[4,25,null,435050503004243,false,[[10,0],[7,[19,45]]]],[4,52,null,194179362864262,false,[[0,[6,[0,240],[23,"tempScale"]]]]],[4,53,null,566407051446342,false,[[0,[6,[0,128],[23,"tempScale"]]]]],[-1,46,null,869550289716327,false,[[4,14],[5,[0,0]],[0,[20,4,54,false,null]],[0,[20,4,55,false,null]]]],[14,56,null,478595910190091,false,[[7,[21,4,true,null,2]]]],[14,57,null,626534280279395,false,[[0,[6,[0,60],[23,"tempScale"]]]]],[14,20,"Pin",533503056822994,false,[[4,4],[3,0]]],[-1,46,null,397330001990706,false,[[4,0],[5,[0,0]],[0,[0,0]],[0,[0,0]]]],[0,49,null,921109628971378,false,[[0,[4,[0,900],[20,20,50,false,null,[[19,45]]]]]]],[0,47,null,176235835805575,false,[[0,[20,20,48,false,null,[[19,45]]]]]],[0,52,null,814650919052312,false,[[0,[6,[0,240],[23,"tempScale"]]]]],[0,53,null,922072888026931,false,[[0,[6,[0,128],[23,"tempScale"]]]]],[0,25,null,549337712011002,false,[[10,0],[7,[20,0,54,false,null]]]],[0,25,null,975404728639104,false,[[10,1],[7,[20,0,55,false,null]]]],[0,25,null,464060056367974,false,[[10,5],[7,[20,0,27,false,null]]]],[0,25,null,844606159775592,false,[[10,4],[7,[20,0,26,false,null]]]],[0,25,null,510843793429260,false,[[10,3],[7,[20,20,58,true,null,[[23,"OptionIndex"]]]]]],[0,25,null,900069668482333,false,[[10,6],[7,[23,"OptionIndex"]]]],[-1,46,null,928384222975524,false,[[4,8],[5,[0,0]],[0,[20,0,54,false,null]],[0,[20,0,55,false,null]]]],[8,56,null,288679252821645,false,[[7,[21,0,true,null,3]]]],[8,57,null,686320210212969,false,[[0,[6,[0,60],[23,"tempScale"]]]]],[8,20,"Pin",839000064994570,false,[[4,0],[3,0]]],[-1,59,null,887485095430025,false,[[11,"OptionIndex"],[7,[0,1]]]]]],[0,null,false,null,995388432512491,[[-1,60,null,0,false,false,false,699222405183637,false]],[[-1,46,null,521295901596441,false,[[4,4],[5,[0,0]],[0,[0,0]],[0,[0,0]]]],[4,47,null,836887367264126,false,[[0,[20,20,48,false,null,[[19,45]]]]]],[4,49,null,748467605738945,false,[[0,[4,[0,600],[20,20,50,false,null,[[19,45]]]]]]],[4,51,null,652967652097908,false,[[0,[0,0]]]],[4,25,null,577861886666263,false,[[10,4],[7,[0,1]]]],[4,25,null,533646652509635,false,[[10,0],[7,[19,45]]]],[4,52,null,247908449189411,false,[[0,[6,[0,240],[23,"tempScale"]]]]],[4,53,null,631672802872287,false,[[0,[6,[0,128],[23,"tempScale"]]]]],[-1,46,null,163233448048076,false,[[4,14],[5,[0,0]],[0,[20,4,54,false,null]],[0,[20,4,55,false,null]]]],[14,61,null,552953018631591,false],[14,56,null,992772636420777,false,[[7,[20,20,44,false,null,[[19,45]]]]]],[14,57,null,381623228194289,false,[[0,[6,[0,60],[23,"tempScale"]]]]],[14,20,"Pin",750547798336697,false,[[4,4],[3,0]]]]]]]]],[0,null,false,null,885232395664091,[[0,62,"DragDrop",1,false,false,false,462077248880784,false],[0,63,"DragDrop",0,false,false,false,881833931574563,false]],[[6,16,null,765474901635440,false,[[2,["card_drag",false]],[3,0],[0,[0,0]],[1,[2,""]]]],[0,64,null,397403794429243,false],[0,65,"EaseTween",798607807460393,false,[[1,[10,[10,[6,[21,0,false,null,5],[1,1.25]],[2,","]],[6,[21,0,false,null,4],[1,1.25]]]]]],[0,66,"EaseTween",333043575480598,false]],[[0,null,false,null,715788682150145,[[-1,67,null,0,false,false,false,283348359728798,false,[[4,4],[7,[21,4,false,null,0]],[8,0],[7,[21,0,false,null,2]]]],[0,68,null,0,false,false,false,975555513158536,false,[[10,2],[8,1],[7,[0,-1]]]]],[[4,25,null,745135912100760,false,[[10,4],[7,[0,0]]]],[0,25,null,363961653226411,false,[[10,2],[7,[0,-1]]]],[2,32,null,741791155071768,false,[[1,[2,"CheckSubmitState"]],[13]]]]],[0,null,false,null,193892616913206,[[0,69,null,0,false,false,false,297897281213159,false,[[4,8]]]],[[8,61,null,812019026325329,false]]]]],[0,null,false,null,876456068332522,[[0,70,"DragDrop",1,false,false,false,792974910922911,false]],[[0,65,"EaseTween2",312326656063231,false,[[1,[10,[10,[21,0,false,null,5],[2,","]],[21,0,false,null,4]]]]],[0,66,"EaseTween2",997643361117365,false]],[[0,null,false,null,962248118287846,[[0,69,null,0,false,false,false,124677826324657,false,[[4,4]]],[4,68,null,0,false,false,false,852890087723952,false,[[10,4],[8,0],[7,[0,0]]]],[4,71,null,0,false,false,true,156843461614875,false,[[3,0],[0,[20,0,54,false,null]],[0,[20,0,55,false,null]]]]],[[6,16,null,400234397175915,false,[[2,["pop-reverb-423718",false]],[3,0],[0,[0,-5]],[1,[2,""]]]],[4,25,null,413746821094201,false,[[10,4],[7,[0,1]]]],[0,25,null,290353637263798,false,[[10,2],[7,[21,4,false,null,0]]]],[0,72,null,464777312492432,false,[[0,[20,4,54,false,null]],[0,[20,4,55,false,null]]]],[0,52,null,262746395317933,false,[[0,[20,4,27,false,null]]]],[4,53,null,930580622453040,false,[[0,[20,4,26,false,null]]]],[2,32,null,648297693202608,false,[[1,[2,"CheckSubmitState"]],[13]]]]],[0,null,false,null,237085795779233,[[-1,60,null,0,false,false,false,461468372881317,false]],[[6,16,null,961784671294368,false,[[2,["card_swipe",false]],[3,0],[0,[0,0]],[1,[2,""]]]],[0,72,null,211990151810903,false,[[0,[21,0,false,null,0]],[0,[21,0,false,null,1]]]],[2,32,null,785187084030838,false,[[1,[2,"CheckSubmitState"]],[13]]]]]]],[0,null,false,null,903256601857551,[[2,35,null,2,false,false,false,553171385010499,false,[[1,[2,"CheckSubmitState"]]]]],[[-1,33,null,151584341392847,false,[[11,"FilledCount"],[7,[0,0]]]]],[[0,null,false,null,326454811928491,[[-1,73,null,0,true,false,false,900563057628926,false,[[4,0]]]],[],[[0,null,false,null,512468327333204,[[0,68,null,0,false,false,false,273625493381606,false,[[10,2],[8,1],[7,[0,-1]]]]],[[-1,59,null,427897992150255,false,[[11,"FilledCount"],[7,[0,1]]]]]]]],[0,null,false,null,197957600391126,[[-1,74,null,0,false,false,false,676094959731453,false,[[11,"FilledCount"],[8,0],[7,[20,0,75,false,null]]]]],[[5,76,null,871171250612987,false,[[3,1]]]]],[0,null,false,null,830039838453468,[[-1,60,null,0,false,false,false,540974332855602,false]],[[5,76,null,801779902196330,false,[[3,0]]]]]]],[0,null,false,null,956282998966849,[[1,77,null,1,false,false,false,460379891558451,false,[[4,5]]],[5,78,null,0,false,false,false,271469166922398,false]],[[20,79,null,658653282719226,false],[-1,33,null,529456506010094,false,[[11,"FinalAnswer"],[7,[2,""]]]],[6,16,null,813632462410441,false,[[2,["button-124476",false]],[3,0],[0,[0,0]],[1,[2,""]]]],[5,80,"Flash",388147726390308,false,[[0,[1,0.1]],[0,[1,0.1]],[0,[1,0.4]]]],[-1,21,null,725241333542329,false,[[0,[1,0.5]]]]],[[0,null,false,null,667347878010134,[[-1,42,null,0,true,false,false,389186915205398,false,[[0,[20,20,37,false,null]]]]],[],[[0,null,false,null,631589558920999,[[-1,43,null,0,false,false,false,253358370212568,false,[[7,[20,20,44,false,null,[[19,45]]]],[8,0],[7,[2,"_"]]]]],[],[[0,null,false,null,403636493907996,[[0,68,null,0,false,false,false,526836686186341,false,[[10,2],[8,0],[7,[19,45]]]]],[[-1,33,null,245728951174934,false,[[11,"FinalAnswer"],[7,[10,[10,[23,"FinalAnswer"],[21,0,true,null,3]],[2,"|"]]]]]]]]],[0,null,false,null,998053537243308,[[-1,60,null,0,false,false,false,403067100774907,false]],[[-1,33,null,357495810182952,false,[[11,"FinalAnswer"],[7,[10,[10,[23,"FinalAnswer"],[20,20,44,false,null,[[19,45]]]],[2,"|"]]]]]]]]],[0,null,false,null,903901720494647,[[-1,74,null,0,false,false,false,745073279826626,false,[[11,"FinalAnswer"],[8,1],[7,[2,""]]]]],[[-1,33,null,814546508270084,false,[[11,"FinalAnswer"],[7,[19,81,[[23,"FinalAnswer"],[5,[19,82,[[23,"FinalAnswer"]]],[0,1]]]]]]],[20,83,null,171040983658447,false,[[7,[23,"FinalAnswer"]]]],[5,76,null,498358887136483,false,[[3,0]]]]]]],[0,null,false,null,961823775126713,[[20,84,null,1,false,false,false,119018979468992,false]],[[0,23,"DragDrop",205409471313749,false,[[3,0]]],[-1,33,null,847894060130636,false,[[11,"gameState"],[7,[2,"End"]]]],[6,16,null,634975830871135,false,[[2,["alert-234711",false]],[3,0],[0,[0,0]],[1,[2,""]]]],[5,76,null,486294929517038,false,[[3,0]]],[-1,21,null,166118146748558,false,[[0,[1,0.1]]]],[-1,46,null,786114696442570,false,[[4,11],[5,[0,0]],[0,[20,5,54,false,null]],[0,[20,5,55,false,null]]]],[-1,21,null,609402064923823,false,[[0,[0,2]]]],[20,79,null,518261006133178,false],[6,85,null,174396971635178,false,[[1,[2,"bgm"]],[3,0]]]]],[0,null,false,null,433043078641250,[[20,86,null,1,false,false,false,889460128806113,false]],[[0,23,"DragDrop",146493902040842,false,[[3,0]]],[-1,33,null,988835730301625,false,[[11,"gameState"],[7,[2,"End"]]]],[6,16,null,221256152272583,false,[[2,["error-010-206498",false]],[3,0],[0,[0,0]],[1,[2,""]]]],[5,76,null,523842542618557,false,[[3,0]]],[-1,21,null,773344591454861,false,[[0,[1,0.1]]]],[-1,46,null,165468245100549,false,[[4,10],[5,[0,0]],[0,[20,5,54,false,null]],[0,[20,5,55,false,null]]]],[-1,21,null,585683943374630,false,[[0,[0,2]]]],[20,79,null,192197113002945,false],[6,85,null,825831442872977,false,[[1,[2,"bgm"]],[3,0]]]]],[0,null,false,null,677561674894761,[[-1,87,null,0,false,false,false,391825816788941,false],[-1,74,null,0,false,false,false,368014433448941,false,[[11,"gameState"],[8,0],[7,[2,"playing"]]]]],[[-1,33,null,987573740694087,false,[[11,"CurrentTime"],[7,[19,36,[[0,0],[5,[20,20,88,false,null],[20,20,89,false,null]]]]]]],[9,56,null,492147563848000,false,[[7,[19,90,[[23,"CurrentTime"]]]]]]],[[0,null,false,null,832762743583791,[[-1,74,null,0,false,false,false,981758326364740,false,[[11,"CurrentTime"],[8,0],[7,[0,0]]]],[-1,74,null,0,false,false,false,308544565881634,false,[[11,"gameState"],[8,0],[7,[2,"playing"]]]]],[],[[0,null,false,null,311487585935540,[[-1,91,null,0,false,false,false,737530322799077,false]],[[-1,33,null,451887772045988,false,[[11,"FinalAnswer"],[7,[2,""]]]],[20,79,null,815932058909240,false],[0,23,"DragDrop",391152127402634,false,[[3,0]]],[20,83,null,543252439847789,false,[[7,[23,"FinalAnswer"]]]]]]]]]],[0,null,false,null,312687717900328,[[1,77,null,1,false,false,false,444391347231568,false,[[4,17]]],[17,68,null,0,false,false,false,165882449365670,false,[[10,0],[8,0],[7,[0,0]]]],[17,78,null,0,false,false,false,218006519748153,false],[-1,74,null,0,false,false,false,357948453038272,false,[[11,"gameState"],[8,1],[7,[2,"End"]]]]],[[17,51,null,744920239729365,false,[[0,[0,1]]]],[6,16,null,814990443653107,false,[[2,["bubble-pop-389501",false]],[3,0],[0,[0,10]],[1,[2,""]]]],[17,80,"Flash",288546904750114,false,[[0,[1,0.1]],[0,[1,0.1]],[0,[1,0.4]]]],[-1,21,null,225438922954531,false,[[0,[1,0.5]]]],[6,92,null,554558762518759,false,[[1,[2,"bgm"]],[3,0]]],[17,25,null,117506203877028,false,[[10,0],[7,[0,1]]]]]],[0,null,false,null,983825517389982,[[1,77,null,1,false,false,false,177138363351836,false,[[4,17]]],[17,68,null,0,false,false,false,772247454962354,false,[[10,0],[8,0],[7,[0,1]]]],[17,78,null,0,false,false,false,420178685359629,false],[-1,74,null,0,false,false,false,293246541340415,false,[[11,"gameState"],[8,1],[7,[2,"End"]]]]],[[17,51,null,552019651456125,false,[[0,[0,0]]]],[6,16,null,197222371360236,false,[[2,["bubble-pop-389501",false]],[3,0],[0,[0,10]],[1,[2,""]]]],[17,80,"Flash",270092195858284,false,[[0,[1,0.1]],[0,[1,0.1]],[0,[1,0.4]]]],[-1,21,null,326299332281639,false,[[0,[1,0.5]]]],[6,92,null,964958154773645,false,[[1,[2,"bgm"]],[3,1]]],[17,25,null,506698549832256,false,[[10,0],[7,[0,0]]]]]],[0,null,false,null,294769773047529,[[1,77,null,1,false,false,false,352106017539969,false,[[4,15]]],[15,68,null,0,false,false,false,358413375274332,false,[[10,0],[8,0],[7,[0,0]]]],[15,78,null,0,false,false,false,721902056257835,false],[-1,74,null,0,false,false,false,947093505629807,false,[[11,"gameState"],[8,1],[7,[2,"End"]]]]],[[20,79,null,431466008645395,false],[15,51,null,981623485925509,false,[[0,[0,1]]]],[6,16,null,547261484638917,false,[[2,["bubble-pop-389501",false]],[3,0],[0,[0,10]],[1,[2,""]]]],[15,80,"Flash",221991481168028,false,[[0,[1,0.1]],[0,[1,0.1]],[0,[1,0.4]]]],[-1,21,null,851078194326314,false,[[0,[1,0.5]]]],[-1,93,null,402526527434402,false,[[5,[0,2]],[3,1]]],[0,76,null,855238512615337,false,[[3,0]]],[4,76,null,207839358302464,false,[[3,0]]],[8,94,null,222466351625496,false,[[3,0]]],[14,94,null,251839098840947,false,[[3,0]]],[0,23,"DragDrop",759856544888894,false,[[3,0]]],[6,92,null,706457060725101,false,[[1,[2,"bgm"]],[3,0]]],[15,25,null,399990244603092,false,[[10,0],[7,[0,1]]]]]],[0,null,false,null,532748443231555,[[1,77,null,1,false,false,false,419213596136778,false,[[4,15]]],[15,68,null,0,false,false,false,926326957937606,false,[[10,0],[8,0],[7,[0,1]]]],[15,78,null,0,false,false,false,804823921411396,false],[-1,74,null,0,false,false,false,952064663952204,false,[[11,"gameState"],[8,1],[7,[2,"End"]]]]],[[20,24,null,977450185168128,false],[15,51,null,670063708965675,false,[[0,[0,0]]]],[6,16,null,372275331971085,false,[[2,["bubble-pop-389501",false]],[3,0],[0,[0,10]],[1,[2,""]]]],[15,80,"Flash",113742305896573,false,[[0,[1,0.1]],[0,[1,0.1]],[0,[1,0.4]]]],[-1,21,null,900385124097116,false,[[0,[1,0.5]]]],[-1,93,null,245330032785852,false,[[5,[0,2]],[3,0]]],[0,76,null,338279072626337,false,[[3,1]]],[4,76,null,371330338747864,false,[[3,1]]],[8,94,null,358503142678550,false,[[3,1]]],[14,94,null,192887026023526,false,[[3,1]]],[0,23,"DragDrop",886574462493362,false,[[3,1]]],[6,92,null,693317578489009,false,[[1,[2,"bgm"]],[3,1]]],[15,25,null,468211770946126,false,[[10,0],[7,[0,0]]]]]],[0,null,false,null,297063884609973,[[1,77,null,1,false,false,false,386622849542303,false,[[4,18]]],[-1,95,null,0,false,false,false,363257598466262,false,[[5,[0,2]]]],[-1,74,null,0,false,false,false,151863864256963,false,[[11,"gameState"],[8,1],[7,[2,"End"]]]]],[[20,24,null,815752088305315,false],[15,51,null,209418858141601,false,[[0,[0,0]]]],[6,16,null,892125720911145,false,[[2,["bubble-pop-389501",false]],[3,0],[0,[0,10]],[1,[2,""]]]],[15,80,"Flash",926038900680013,false,[[0,[1,0.1]],[0,[1,0.1]],[0,[1,0.4]]]],[-1,21,null,821647409423555,false,[[0,[1,0.5]]]],[-1,93,null,480813966183110,false,[[5,[0,2]],[3,0]]],[0,76,null,876609529855384,false,[[3,1]]],[4,76,null,136625999145606,false,[[3,1]]],[8,94,null,927964586528148,false,[[3,1]]],[14,94,null,155360850450853,false,[[3,1]]],[0,23,"DragDrop",695861965483617,false,[[3,1]]],[6,92,null,652969105932762,false,[[1,[2,"bgm"]],[3,1]]],[15,25,null,943722776633160,false,[[10,0],[7,[0,0]]]]]],[0,null,false,null,792955897157891,[[2,35,null,2,false,false,false,979301415560581,false,[[1,[2,"Fade"]]]]],[[16,96,"Fade",820129408251933,false],[15,96,"Fade",948221853487772,false],[17,96,"Fade",225126965271644,false]]],[0,null,false,null,955859035444991,[[1,77,null,1,false,false,false,518910668901033,false,[[4,12]]],[12,68,null,0,false,false,false,290396959315441,false,[[10,0],[8,0],[7,[0,0]]]],[-1,74,null,0,false,false,false,167050138940432,false,[[11,"gameState"],[8,1],[7,[2,"End"]]]]],[[2,32,null,925309444477441,false,[[1,[2,"SettingOnTop"]],[13]]],[6,16,null,444001414569356,false,[[2,["button-124476",false]],[3,0],[0,[0,0]],[1,[2,""]]]],[12,97,"Sine",818098073409429,false,[[3,1]]],[-1,21,null,441096782479652,false,[[0,[1,0.5]]]],[16,76,null,794558327843409,false,[[3,1]]],[15,76,null,679301757369962,false,[[3,1]]],[17,76,null,767519360841597,false,[[3,1]]],[2,32,null,793350220956891,false,[[1,[2,"Fade"]],[13]]],[12,25,null,261563617571114,false,[[10,0],[7,[0,1]]]],[12,97,"Sine",245771226696928,false,[[3,0]]]]],[0,null,false,null,467571648016628,[[1,77,null,1,false,false,false,432350690749805,false,[[4,12]]],[12,68,null,0,false,false,false,815726735468093,false,[[10,0],[8,0],[7,[0,1]]]],[-1,74,null,0,false,false,false,365328355764187,false,[[11,"gameState"],[8,1],[7,[2,"End"]]]]],[[2,32,null,356880855256469,false,[[1,[2,"SettingOnTop"]],[13]]],[6,16,null,747877391706105,false,[[2,["button-124476",false]],[3,0],[0,[0,0]],[1,[2,""]]]],[12,97,"Sine",128949433029818,false,[[3,1]]],[-1,21,null,827176291493130,false,[[0,[1,0.5]]]],[16,76,null,591127776141805,false,[[3,0]]],[15,76,null,854152891397620,false,[[3,0]]],[17,76,null,646200193534642,false,[[3,0]]],[-1,21,null,891033434354753,false,[[0,[1,0.1]]]],[12,25,null,461824223198453,false,[[10,0],[7,[0,0]]]],[12,97,"Sine",784451994863195,false,[[3,0]]]]],[0,null,false,null,710506800687011,[[1,77,null,1,false,false,false,251187822971843,false,[[4,21]]],[-1,74,null,0,false,false,false,585500221148009,false,[[11,"CurrentTime"],[8,1],[7,[0,0]]]],[-1,95,null,0,false,true,false,866367281151246,false,[[5,[0,2]]]],[-1,74,null,0,false,false,false,244774256700479,false,[[11,"gameState"],[8,1],[7,[2,"End"]]]]],[[6,16,null,331623853469441,false,[[2,["button-124476",false]],[3,0],[0,[0,0]],[1,[2,""]]]],[6,85,null,159156879567719,false,[[1,[2,"bgm"]],[3,0]]],[21,97,"Sine",816187014713162,false,[[3,1]]],[3,17,null,394211291036965,false,[[1,[10,[10,[2,"var audio = new Audio('"],[20,20,98,true,null]],[2,"'); audio.play();"]]]]],[-1,21,null,889484535202560,false,[[0,[0,2]]]],[21,97,"Sine",759168163743084,false,[[3,0]]],[21,53,null,320246019425197,false,[[0,[21,21,false,null,0]]]],[21,52,null,896375027645563,false,[[0,[21,21,false,null,1]]]],[-1,21,null,890463653358513,false,[[0,[1,0.5]]]],[6,85,null,726724055015429,false,[[1,[2,"bgm"]],[3,1]]]]],[0,null,false,null,531601032626161,[[2,35,null,2,false,false,false,680697609423536,false,[[1,[2,"SettingOnTop"]]]]],[[16,64,null,963464341486833,false],[15,64,null,958255553488164,false],[17,64,null,413896544371372,false],[12,64,null,341014646835341,false]]]]],["Game2",[]]],[["alert-234711.ogg",23907],["bubble-pop-389501.ogg",18257],["button-124476.ogg",13157],["collect-5930.ogg",10731],["edugamery-music-13.ogg",1468346],["error-010-206498.ogg",11425],["error-08-206492.ogg",15621],["pop-reverb-423718.ogg",23653],["card_drag.ogg",7213],["card_flips.ogg",8015],["card_swipe.ogg",9018]],"media/",false,1200,1200,3,true,true,true,"1.0.0.0",true,false,3,0,40,false,true,1,true,"SQ_Word_Hint-Audio",0,[]]} \ No newline at end of file diff --git a/SQ_Word_Hint-Audio/images/board-sheet0.png b/SQ_Word_Hint-Audio/images/board-sheet0.png deleted file mode 100644 index c346783..0000000 Binary files a/SQ_Word_Hint-Audio/images/board-sheet0.png and /dev/null differ diff --git a/SQ_Word_Hint-Audio/images/help-sheet0.png b/SQ_Word_Hint-Audio/images/help-sheet0.png deleted file mode 100644 index 69c9660..0000000 Binary files a/SQ_Word_Hint-Audio/images/help-sheet0.png and /dev/null differ diff --git a/SQ_Word_Hint-Audio/images/hint-sheet0.png b/SQ_Word_Hint-Audio/images/hint-sheet0.png deleted file mode 100644 index ef98ba7..0000000 Binary files a/SQ_Word_Hint-Audio/images/hint-sheet0.png and /dev/null differ diff --git a/SQ_Word_Hint-Audio/images/imageframe-sheet0.png b/SQ_Word_Hint-Audio/images/imageframe-sheet0.png deleted file mode 100644 index f0576fa..0000000 Binary files a/SQ_Word_Hint-Audio/images/imageframe-sheet0.png and /dev/null differ diff --git a/SQ_Word_Hint-Audio/images/khung_score-sheet0.png b/SQ_Word_Hint-Audio/images/khung_score-sheet0.png deleted file mode 100644 index c418ed2..0000000 Binary files a/SQ_Word_Hint-Audio/images/khung_score-sheet0.png and /dev/null differ diff --git a/SQ_Word_Hint-Audio/images/newwords-sheet0.png b/SQ_Word_Hint-Audio/images/newwords-sheet0.png deleted file mode 100644 index e9f83ac..0000000 Binary files a/SQ_Word_Hint-Audio/images/newwords-sheet0.png and /dev/null differ diff --git a/SQ_Word_Hint-Audio/images/sena_ui_frame_intro-sheet0.png b/SQ_Word_Hint-Audio/images/sena_ui_frame_intro-sheet0.png deleted file mode 100644 index d2c74de..0000000 Binary files a/SQ_Word_Hint-Audio/images/sena_ui_frame_intro-sheet0.png and /dev/null differ diff --git a/SQ_Word_Hint-Audio/media/bg.m4a b/SQ_Word_Hint-Audio/media/bg.m4a deleted file mode 100644 index 5f816a1..0000000 Binary files a/SQ_Word_Hint-Audio/media/bg.m4a and /dev/null differ diff --git a/SQ_Word_Hint-Audio/media/bg.ogg b/SQ_Word_Hint-Audio/media/bg.ogg deleted file mode 100644 index ff861a0..0000000 Binary files a/SQ_Word_Hint-Audio/media/bg.ogg and /dev/null differ diff --git a/SQ_Word_Hint-Audio/media/click-234708.ogg b/SQ_Word_Hint-Audio/media/click-234708.ogg deleted file mode 100644 index 59e494c..0000000 Binary files a/SQ_Word_Hint-Audio/media/click-234708.ogg and /dev/null differ diff --git a/SQ_Word_Hint-Audio/media/click.m4a b/SQ_Word_Hint-Audio/media/click.m4a deleted file mode 100644 index 8874ebe..0000000 Binary files a/SQ_Word_Hint-Audio/media/click.m4a and /dev/null differ diff --git a/SQ_Word_Hint-Audio/media/click.ogg b/SQ_Word_Hint-Audio/media/click.ogg deleted file mode 100644 index 715aabf..0000000 Binary files a/SQ_Word_Hint-Audio/media/click.ogg and /dev/null differ diff --git a/SQ_Word_Hint-Audio/media/correct.m4a b/SQ_Word_Hint-Audio/media/correct.m4a deleted file mode 100644 index e796026..0000000 Binary files a/SQ_Word_Hint-Audio/media/correct.m4a and /dev/null differ diff --git a/SQ_Word_Hint-Audio/media/correct.ogg b/SQ_Word_Hint-Audio/media/correct.ogg deleted file mode 100644 index 0d86e4f..0000000 Binary files a/SQ_Word_Hint-Audio/media/correct.ogg and /dev/null differ diff --git a/SQ_Word_Hint-Audio/media/edugamery-music-18.ogg b/SQ_Word_Hint-Audio/media/edugamery-music-18.ogg deleted file mode 100644 index a444d69..0000000 Binary files a/SQ_Word_Hint-Audio/media/edugamery-music-18.ogg and /dev/null differ diff --git a/SQ_Word_Hint-Audio/media/edugamery-music-20.ogg b/SQ_Word_Hint-Audio/media/edugamery-music-20.ogg deleted file mode 100644 index 3dd01e3..0000000 Binary files a/SQ_Word_Hint-Audio/media/edugamery-music-20.ogg and /dev/null differ diff --git a/SQ_Word_Hint-Audio/media/edugamery-music-5.ogg b/SQ_Word_Hint-Audio/media/edugamery-music-5.ogg deleted file mode 100644 index bdfa38c..0000000 Binary files a/SQ_Word_Hint-Audio/media/edugamery-music-5.ogg and /dev/null differ diff --git a/SQ_Word_Hint-Audio/media/edugamery-music-6.ogg b/SQ_Word_Hint-Audio/media/edugamery-music-6.ogg deleted file mode 100644 index 6d05d0f..0000000 Binary files a/SQ_Word_Hint-Audio/media/edugamery-music-6.ogg and /dev/null differ diff --git a/SQ_Word_Hint-Audio/media/fail-234710.ogg b/SQ_Word_Hint-Audio/media/fail-234710.ogg deleted file mode 100644 index a257744..0000000 Binary files a/SQ_Word_Hint-Audio/media/fail-234710.ogg and /dev/null differ diff --git a/SQ_Word_Hint-Audio/media/fail.m4a b/SQ_Word_Hint-Audio/media/fail.m4a deleted file mode 100644 index eb8f31f..0000000 Binary files a/SQ_Word_Hint-Audio/media/fail.m4a and /dev/null differ diff --git a/SQ_Word_Hint-Audio/media/fail.ogg b/SQ_Word_Hint-Audio/media/fail.ogg deleted file mode 100644 index 2a4f445..0000000 Binary files a/SQ_Word_Hint-Audio/media/fail.ogg and /dev/null differ diff --git a/SQ_Word_Hint-Audio/media/fm-freemusic-give-me-a-smile(chosic.com).ogg b/SQ_Word_Hint-Audio/media/fm-freemusic-give-me-a-smile(chosic.com).ogg deleted file mode 100644 index b4b2de2..0000000 Binary files a/SQ_Word_Hint-Audio/media/fm-freemusic-give-me-a-smile(chosic.com).ogg and /dev/null differ diff --git a/SQ_Word_Hint-Audio/media/interface-2-126517.ogg b/SQ_Word_Hint-Audio/media/interface-2-126517.ogg deleted file mode 100644 index 095287b..0000000 Binary files a/SQ_Word_Hint-Audio/media/interface-2-126517.ogg and /dev/null differ diff --git a/SQ_Word_Hint-Audio/media/material-buy-success-394517.ogg b/SQ_Word_Hint-Audio/media/material-buy-success-394517.ogg deleted file mode 100644 index b671932..0000000 Binary files a/SQ_Word_Hint-Audio/media/material-buy-success-394517.ogg and /dev/null differ diff --git a/SQ_Word_Hint-Audio/media/pick-92276.ogg b/SQ_Word_Hint-Audio/media/pick-92276.ogg deleted file mode 100644 index 915dc03..0000000 Binary files a/SQ_Word_Hint-Audio/media/pick-92276.ogg and /dev/null differ diff --git a/SQ_Word_Hint-Audio/media/retro-explode-1-236678.ogg b/SQ_Word_Hint-Audio/media/retro-explode-1-236678.ogg deleted file mode 100644 index 7ed7439..0000000 Binary files a/SQ_Word_Hint-Audio/media/retro-explode-1-236678.ogg and /dev/null differ diff --git a/SQ_Word_Hint-Audio/media/sample_input_typing01_kofi_by_miraclei-363634.ogg b/SQ_Word_Hint-Audio/media/sample_input_typing01_kofi_by_miraclei-363634.ogg deleted file mode 100644 index b7f6ab8..0000000 Binary files a/SQ_Word_Hint-Audio/media/sample_input_typing01_kofi_by_miraclei-363634.ogg and /dev/null differ diff --git a/SQ_Word_Hint-Audio/offline.js b/SQ_Word_Hint-Audio/offline.js index b78d42c..b777451 100644 --- a/SQ_Word_Hint-Audio/offline.js +++ b/SQ_Word_Hint-Audio/offline.js @@ -1,5 +1,5 @@ { - "version": 1772435392, + "version": 1772438322, "fileList": [ "data.js", "c2runtime.js", @@ -21,7 +21,6 @@ "images/pauseicon-sheet0.png", "images/black-sheet0.png", "images/sound_question-sheet0.png", - "images/newwords-sheet0.png", "media/alert-234711.ogg", "media/bubble-pop-389501.ogg", "media/button-124476.ogg", diff --git a/SQ_Word_Hint-Audio/sena_sdk.js b/SQ_Word_Hint-Audio/sena_sdk.js index e0bf0bf..c5cfee7 100644 --- a/SQ_Word_Hint-Audio/sena_sdk.js +++ b/SQ_Word_Hint-Audio/sena_sdk.js @@ -1087,7 +1087,7 @@ SenaSDK.prototype.canReloadData = function () { /** * End the game and check answer - * [UPDATE] Support Unordered Answers & Auto-cleanup empty strings + * [UPDATE] Support Unordered Answers, Auto-cleanup empty strings & Post GAME_RESULT to FE */ SenaSDK.prototype.end = function (answer, callback) { let self = this; @@ -1217,11 +1217,25 @@ SenaSDK.prototype.end = function (answer, callback) { }; // ----------------------------------------------------------- - // [BƯỚC 3] Log và Return + // [BƯỚC 3] Log và Return (KÈM BẮN POST MESSAGE CHO FE) // ----------------------------------------------------------- console.log(`Time spent: ${duration}s`); console.log(`Result: ${isCorrect ? "CORRECT" : "INCORRECT"}`); + // THÊM MỚI: Bắn tín hiệu GAME_RESULT lên cho hệ thống FE tính điểm + window.parent.postMessage( + { + type: "GAME_RESULT", + payload: { + game_id: self.gameID || self.gameCode, + result: isCorrect ? "CORRECT" : "INCORRECT", + time_spent: duration, + }, + }, + "*", + ); + console.log("📤 Sena SDK: GAME_RESULT sent successfully for Quiz/Sort/Fill"); + if (callback) callback(result.isCorrect); return result; // Return full object for debug }; diff --git a/SQ_Word_Hint-Audio/tdv_core.js b/SQ_Word_Hint-Audio/tdv_core.js deleted file mode 100644 index 88771b3..0000000 --- a/SQ_Word_Hint-Audio/tdv_core.js +++ /dev/null @@ -1,378 +0,0 @@ -/** - * TDV_CORE.js - Game Logic Layer (Exam Mode) - * Nhiệm vụ: Quản lý State, Sanitize Data (G110), Timer, Logic Loop - */ - -var TDV_Core = { - // Data Storage - list: [], - currentQuestion: null, - questionTemplate: [], - missingChars: [], - blankIndexes: [], - solutionKey: [], // Lưu đáp án gốc để chấm điểm - - // Game State - level: 0, - userResults: [], - gameStartTime: null, - submitTimeout: null, - score: 0, - - // Timer Variables - timeLimit: 180, // Mặc định 180s - timeRemaining: 180, - timerInterval: null, - - // Tracking người chơi - placedChars: [], - canSubmit: 0, - - // ==================== 1. DATA LOADING & SETUP ==================== - - loadCleanData: function (payload) { - if (!payload || !payload.items) return; - this.setupGame(payload.items); - }, - - loadRawData: function (rawItems) { - if (!rawItems) return; - const cleanItems = this.sanitizeData(rawItems); - this.setupGame(cleanItems); - }, - - setupGame: function (items) { - this.list = items; - this.level = 0; - this.userResults = []; - this.score = 0; - this.gameStartTime = new Date(); - - // 1. Setup Timer (Lấy từ config câu đầu tiên hoặc mặc định 180s) - // Đây là Timer tổng cho cả bài thi - if (items.length > 0 && items[0].time_limit) { - this.timeLimit = items[0].time_limit; - } else { - this.timeLimit = 180; - } - this.startTimer(); // <--- BẮT ĐẦU ĐẾM NGAY - - console.log( - `🧠 [CORE] Game Setup. Loaded ${this.list.length} questions. Timer: ${this.timeLimit}s`, - ); - - this.loadCurrentLevel(); - - // 2. Báo hiệu cho C2 - window.TDV_READY = 1; - console.log("🚩 [CORE] Ready Flag set to 1"); - - if (typeof c2_callFunction !== "undefined") { - c2_callFunction("CMD_LoadGame"); - } - }, - - loadCurrentLevel: function () { - this.currentQuestion = this.list[this.level]; - if (!this.currentQuestion) return; - - this.questionTemplate = [...(this.currentQuestion.question || [])]; - this.missingChars = [...(this.currentQuestion.options || [])]; - this.solutionKey = this.currentQuestion.solution || []; - - // Tính toán ô trống - this.blankIndexes = []; - for (let i = 0; i < this.questionTemplate.length; i++) { - if (this.questionTemplate[i] === "") this.blankIndexes.push(i); - } - - // Reset tracking - this.placedChars = new Array(this.questionTemplate.length).fill(""); - this.canSubmit = 0; - - // Gọi View tính lại layout - if (window.TDV_View) { - TDV_View.calculateLayout(this.questionTemplate.length); - } - }, - - // ==================== 2. TIMER LOGIC (SIMPLE) ==================== - - startTimer: function () { - this.stopTimer(); // Reset nếu đang chạy - this.timeRemaining = this.timeLimit; - - console.log(`⏱️ Timer Started: ${this.timeRemaining}`); - - this.timerInterval = setInterval(() => { - if (this.timeRemaining > 0) { - this.timeRemaining--; - } else { - // HẾT GIỜ - this.stopTimer(); - console.log("⏰ Time Out!"); - if (typeof c2_callFunction !== "undefined") { - c2_callFunction("CMD_TimeOut"); - } - } - }, 1000); - }, - - stopTimer: function () { - if (this.timerInterval) { - clearInterval(this.timerInterval); - this.timerInterval = null; - } - }, - - getTimeRaw: function () { - return this.timeRemaining; // Trả về số nguyên (VD: 179) - }, - - // ==================== 3. SANITIZE LOGIC ==================== - sanitizeData: function (rawItems) { - return rawItems.map((item) => { - if (item.question && Array.isArray(item.question)) return item; - - // Xóa dấu cách - let cleanWord = item.word || ""; - cleanWord = cleanWord.replace(/\s+/g, ""); - - const parts = item.parts || cleanWord.split(""); - const missingCount = item.missing_letter_count || 1; - - // Random đục lỗ - let indices = Array.from({ length: parts.length }, (_, i) => i); - for (let i = indices.length - 1; i > 0; i--) { - const j = Math.floor(Math.random() * (i + 1)); - [indices[i], indices[j]] = [indices[j], indices[i]]; - } - const blanks = indices.slice(0, missingCount); - - const questionArr = [...parts]; - const optionsArr = []; - - blanks.forEach((idx) => { - optionsArr.push(parts[idx]); - questionArr[idx] = ""; - }); - - // Shuffle options - for (let i = optionsArr.length - 1; i > 0; i--) { - const j = Math.floor(Math.random() * (i + 1)); - [optionsArr[i], optionsArr[j]] = [optionsArr[j], optionsArr[i]]; - } - - return { - id: item.id, - question: questionArr, - options: optionsArr, - solution: parts, // Lưu đáp án gốc để chấm điểm - audio_url: item.audio_url, - time_limit: item.time_limit, // Giữ lại config time nếu có - }; - }); - }, - - // ==================== 4. GAMEPLAY ACTIONS ==================== - - play: function () { - if (!this.canSubmit) return; - if (!this.currentQuestion) return; - - const finalAnswer = this.getPlacedArray(); - - // DEV MODE: Giả lập chấm điểm - if (TDV_Net.mode !== "live") { - this.simulateLocalCheck(finalAnswer); - } - - // Gửi kết quả - const timeSpent = new Date() - this.gameStartTime; - TDV_Net.sendAnswer(this.currentQuestion.id, finalAnswer, timeSpent); - }, - - onServerResult: function (data) { - // Lưu kết quả - this.userResults.push({ - id: data.question_id, - result: data.correct ? 1 : 0, - }); - - if (data.correct) { - this.score += 10; - } - - // Gọi về C2 - if (typeof c2_callFunction !== "undefined") { - c2_callFunction("CMD_ShowResult", [data.correct ? 1 : 0]); - } - }, - - nextQuestion: function () { - if (this.level < this.list.length - 1) { - this.level++; - this.loadCurrentLevel(); - return 1; // Còn câu hỏi - } - - // HẾT GAME -> DỪNG ĐỒNG HỒ - this.stopTimer(); - console.log("🏁 End Game."); - return 0; - }, - - // ==================== 5. HELPER LOGIC ==================== - - setCharAtSlot: function (char, slotIndex) { - if (slotIndex < 0 || slotIndex >= this.placedChars.length) return 0; - - // Kiểm tra ghế có người ngồi chưa (Quan trọng để không đè chữ) - if (this.placedChars[slotIndex] !== "") { - console.log(`⛔ Slot ${slotIndex} occupied.`); - return 0; - } - - this.placedChars[slotIndex] = char; - this.updateSubmitState(); - return 1; - }, - - clearCharAtSlot: function (slotIndex) { - if (slotIndex >= 0 && slotIndex < this.placedChars.length) { - this.placedChars[slotIndex] = ""; - this.updateSubmitState(); - } - }, - - updateSubmitState: function () { - var required = this.blankIndexes.length; - var current = this.placedChars.filter((c) => c !== "").length; - this.canSubmit = current === required ? 1 : 0; - }, - - getPlacedArray: function () { - var result = []; - for (var i = 0; i < this.questionTemplate.length; i++) { - if (this.isBlankIndex(i)) { - result.push(this.placedChars[i] || ""); - } else { - result.push(this.questionTemplate[i]); - } - } - return result; - }, - - // Chấm điểm giả lập (So sánh với Solution Key) - simulateLocalCheck: function (ansArr) { - console.log("📝 Check vs Key:", this.solutionKey); - let isCorrect = true; - for (let i = 0; i < this.solutionKey.length; i++) { - if (ansArr[i] !== this.solutionKey[i]) { - isCorrect = false; - break; - } - } - setTimeout(() => { - this.onServerResult({ - question_id: this.currentQuestion.id, - correct: isCorrect, - }); - }, 500); - }, - - // Getters - isBlankIndex: function (i) { - return this.blankIndexes.indexOf(i) !== -1 ? 1 : 0; - }, - getCharByIndex: function (i) { - return this.missingChars[i] || ""; - }, - getCharsCount: function () { - return this.questionTemplate.length; - }, - getMissingCharsCount: function () { - return this.missingChars.length; - }, - canSubmitAnswer: function () { - return this.canSubmit; - }, -}; - -// ============================================================ -// BRIDGE CHO C2 (MAPPING) - ĐÃ DỌN DẸP GỌN GÀNG -// ============================================================ -window.tdv_sdk = { - // 1. Gameplay Interaction - setWordAtSlot: function (char, idx) { - return TDV_Core.setCharAtSlot(char, idx); - }, - clearLetterAtSlot: function (idx) { - TDV_Core.clearCharAtSlot(idx); - }, - canSubmitAnswer: function () { - return TDV_Core.canSubmitAnswer(); - }, - submitAnswer: function () { - TDV_Core.play(); - return 1; - }, - nextQuestion: function () { - return TDV_Core.nextQuestion(); - }, - - // 2. Data & UI Getters - getScore: function () { - return TDV_Core.score; - }, - getTime: function () { - return TDV_Core.getTimeRaw(); - }, // Trả về số nguyên đơn giản - - getCharsCount: function () { - return TDV_Core.getCharsCount(); - }, - getMissingCharsCount: function () { - return TDV_Core.getMissingCharsCount(); - }, - - isPresetSlot: function (i) { - return !TDV_Core.isBlankIndex(i) ? 1 : 0; - }, - getDisplayText: function (i) { - return TDV_View.getDisplayText(i); - }, - getAnswerText: function (i) { - return TDV_View.getAnswerText(i); - }, - - // 3. View Getters - getSlotX: function (i) { - return TDV_View.getSlotX(i); - }, - getSlotY: function (i) { - return TDV_View.getSlotY(i); - }, - getAnswerX: function (i) { - return TDV_View.getAnswerX(i); - }, - getAnswerY: function (i) { - return TDV_View.getAnswerY(i); - }, - getAnswerAngle: function (i) { - return TDV_View.getAnswerAngle(i); - }, - getScale: function () { - return TDV_View.getScale(); - }, - getFontSize: function () { - return TDV_View.getFontSize(); - }, - getAnswerFontSize: function () { - return TDV_View.getAnswerFontSize(); - }, -}; - -// Public Core ra window -window.TDV_Core = TDV_Core; -console.log("✅ TDV_CORE V2 (Fixed Timer & Cleaned) Loaded!"); diff --git a/SQ_Word_Hint-Audio/tdv_net.js b/SQ_Word_Hint-Audio/tdv_net.js deleted file mode 100644 index cdb3d5d..0000000 --- a/SQ_Word_Hint-Audio/tdv_net.js +++ /dev/null @@ -1,118 +0,0 @@ -/** - * TDV_NET.js - Network Layer (Final Version) - * Trách nhiệm: Xử lý giao tiếp postMessage và quản lý lỗi hệ thống. - * Tuân thủ: SDK Message Protocol & Game Channels Guide - */ - -var TDV_Net = { - mode: "live", - gameCode: "G110", - - // 1. KHỞI TẠO SDK - init: function (gameCode, defaultData) { - this.gameCode = gameCode || "G110"; - const urlParams = new URLSearchParams(window.location.search); - const paramsObj = Object.fromEntries(urlParams.entries()); - this.mode = paramsObj.mode || "dev"; - - console.log( - `📡 [NET] Init | Mode: ${this.mode} | GameCode: ${this.gameCode}`, - ); - - // Payload chuẩn Protocol cho chế độ LIVE - let initPayload = { - mode: this.mode, - game_code: this.gameCode, - assignment_id: paramsObj.assignment_id || "", // Bắt buộc cho LIVE - student_id: paramsObj.student_id || "", // Bắt buộc cho LIVE - api_base_url: paramsObj.api_base_url || "", // Bắt buộc cho LIVE - auth_token: paramsObj.auth_token || "", // Token xác thực - }; - - // Gộp các params khác từ URL (như bg, game_id...) - initPayload = Object.assign({}, paramsObj, initPayload); - - if (window.parent !== window) { - window.parent.postMessage( - { - type: "SDK_INIT", - payload: initPayload, - }, - "*", - ); - } - - // Điều phối Mode - if (this.mode === "dev") { - setTimeout(() => { - if (window.TDV_Core) TDV_Core.loadRawData(defaultData); - }, 1000); - } else if (this.mode === "preview") { - console.log("👁️ [NET] Preview Mode: Waiting for SDK_PUSH_DATA..."); - } - }, - - // 2. GỬI ĐÁP ÁN (Check Answer) - sendAnswer: function (qId, choiceArray, timeSpentMs) { - window.parent.postMessage( - { - type: "SDK_CHECK_ANSWER", - payload: { - question_id: qId, - choice: choiceArray, // Array cho Sequence Game - time_spent: timeSpentMs, - }, - }, - "*", - ); - }, - - // 3. GỬI KẾT QUẢ CUỐI (Final Result) - sendFinalResult: function (score, timeSpent, details) { - window.parent.postMessage( - { - type: "SDK_FINAL_RESULT", - payload: { score, time_spent: timeSpent, details }, - }, - "*", - ); - }, -}; - -// --- LISTENER: XỬ LÝ CÁC SỰ KIỆN TỪ SERVER --- -window.addEventListener("message", function (event) { - if (!event.data) return; - const { type, payload } = event.data; - - if (!window.TDV_Core) return; - - switch (type) { - case "SDK_DATA_READY": - TDV_Core.loadCleanData(payload); // - break; - - case "SDK_PUSH_DATA": - console.log("📥 [NET] Received Push Data (Preview)"); - TDV_Core.loadRawData(payload.items); // - break; - - case "SDK_ANSWER_RESULT": - TDV_Core.onServerResult(payload); // - break; - - // --- LẮNG NGHE LỖI HỆ THỐNG --- - case "SDK_ERROR": - const { code, message, details } = payload; - console.error(`❌ [SDK_ERROR] Code: ${code} | Message: ${message}`); - if (details) console.error("Details:", details); - if (window["TDVTriger"]) { - } - break; - - case "SDK_READY": //Log trạng thái sẵn sàng kết nối. - console.log("✅ [NET] SDK Ready:", payload); - break; - } -}); - -window.TDV_Net = TDV_Net; diff --git a/SQ_Word_Hint-Audio/tdv_sdk.js b/SQ_Word_Hint-Audio/tdv_sdk.js deleted file mode 100644 index 0d1821c..0000000 --- a/SQ_Word_Hint-Audio/tdv_sdk.js +++ /dev/null @@ -1,733 +0,0 @@ -/** - * TDV SDK v8.2 - SENA PLUGIN SYNC VERSION - * - Sync dữ liệu từ SenaAI Construct 2 Plugin (window.SenaTrigger.sdk) - * - Hoặc tự load từ: https://senaai.tech/sample/{GameCode}.json - * - Hỗ trợ Quiz dạng: Câu hỏi Text, Đáp án Text/Image - **/ - -var tdv_sdk = { - game_code: 'G1400S1T30', - activeSdk: null, - serverDataLoaded: false, - gameStartTime: null, - currentQuestionIndex: 0, - totalScore: 0, - timeLimit: 0, - _timerStarted: false, - _lastLogTime: -1, - _isPaused: false, - _pausedElapsed: 0, - - // ==================== SYNC FROM SENA PLUGIN ==================== - - /** - * Sync data từ SenaAI Plugin - * Gọi hàm này sau khi SenaAI.Load hoàn tất (On LOAD Complete) - */ - syncFromPlugin: function () { - var self = this; - - // Lấy SDK instance từ SenaAI Plugin - if (window.SenaTrigger && window.SenaTrigger.sdk) { - var pluginSdk = window.SenaTrigger.sdk; - - // Nếu plugin chưa có data, trả về false để SDK tự load - if (!pluginSdk.data) { - console.warn('⚠️ TDV SDK: Plugin has no data yet, will fallback to self-load'); - return false; - } - - self.activeSdk = { - data: pluginSdk.data, - correctAnswer: pluginSdk.correctAnswer, - shuffle: pluginSdk.shuffle, - gameCode: pluginSdk.gameCode, - startTime: pluginSdk.startTime, - timeLimit: pluginSdk.timeLimit - }; - - self.game_code = pluginSdk.gameCode || self.game_code; - self.timeLimit = pluginSdk.timeLimit || 0; - self._parseGameCode(); // Fallback parse if plugin doesn't have it - - // SyncStartTime: Chỉ đồng bộ nếu tdv_sdk chưa bắt đầu đếm ngược - if (pluginSdk.startTime > 0 && !this._timerStarted) { - this.gameStartTime = pluginSdk.startTime; - this._timerStarted = true; - console.log('🔗 Timer synced from plugin:', this.gameStartTime); - } - - self.serverDataLoaded = true; - console.log('✅ TDV SDK: Synced from SenaAI Plugin (StartTime:', self.gameStartTime, ')'); - return true; - } - - console.warn('⚠️ TDV SDK: SenaAI Plugin not found'); - return false; - }, - - /** - * Initialize - tự động sync từ plugin nếu có - */ - init: function (config) { - var self = this; - - if (config && config.gameCode) { - self.game_code = config.gameCode; - } - - // Override từ URL param LID - var urlParams = new URLSearchParams(window.location.search); - var LID = urlParams.get('LID'); - if (LID) { - self.game_code = LID; - } - - console.log('🎮 TDV SDK v8.2 - SenaAI Plugin Sync'); - console.log('📦 Game Code:', self.game_code); - - // Tự động sync nếu plugin đã load - self.syncFromPlugin(); - self._parseGameCode(); - }, - - /** - * Helper: Parse game code để lấy cấu hình timeLimit, shuffle - */ - _parseGameCode: function () { - var self = this; - var regex = /^G([1-5])([2-9])([0-2])([0-2])(?:S([0-1]))?(?:T(\d+))?$/; - var match = String(self.game_code).match(regex); - if (match) { - var timeStr = match[6] !== undefined ? match[6] : '0'; - self.timeLimit = parseInt(timeStr, 10); - } - }, - - /** - * Load data - ưu tiên sync từ plugin, nếu không thì tự load - */ - load: function (callback) { - var self = this; - - // Thử sync từ plugin trước - if (self.syncFromPlugin()) { - if (callback) callback(true); - return; - } - - // Nếu không có plugin, tự load từ server - var url = 'https://senaai.tech/sample/' + self.game_code + '.json'; - console.log('📡 TDV SDK: Self-loading from:', url); - - fetch(url) - .then(function (response) { - if (!response.ok) throw new Error('HTTP ' + response.status); - return response.json(); - }) - .then(function (json) { - console.log('✅ TDV SDK: Data loaded:', json); - - self.activeSdk = { - data: json.data, - correctAnswer: json.answer, - shuffle: false - }; - - self.serverDataLoaded = true; - // self.gameStartTime = Date.now(); // REMOVED: Chỉ bắt đầu khi Start - if (callback) callback(true); - }) - .catch(function (error) { - console.error('❌ TDV SDK: Load Error:', error); - self.serverDataLoaded = false; - if (callback) callback(false); - }); - }, - - /** - * Start game - */ - start: function () { - // Sync lại từ plugin mỗi khi start (đảm bảo data mới nhất) - this.syncFromPlugin(); - this._parseGameCode(); - this.gameStartTime = Date.now(); - this._timerStarted = true; - this._isPaused = false; - this._pausedElapsed = 0; - this.currentQuestionIndex = 0; - console.log('🎮 Game Started! Timer set to:', this.timeLimit); - }, - - // ==================== DATA GETTERS - Tự động sync nếu chưa có data ==================== - - /** - * Lấy SDK data, sync từ plugin nếu chưa có - */ - _getSdk: function () { - if (!this.activeSdk || !this.activeSdk.data) { - this.syncFromPlugin(); - } - return this.activeSdk; - }, - - /** - * Lấy instruction/request text - */ - getInstructions: function () { - var sdk = this._getSdk(); - if (!sdk || !sdk.data) return ""; - return sdk.data.request || sdk.data.question || ""; - }, - - /** - * Lấy request text - * Sử dụng: Browser.ExecJS("tdv_sdk.getRequest()") - */ - getRequest: function () { - var sdk = this._getSdk(); - if (!sdk || !sdk.data) return ""; - return sdk.data.request || ""; - }, - - /** - * Lấy question text - * Sử dụng: Browser.ExecJS("tdv_sdk.getQuestion()") - */ - getQuestion: function () { - var sdk = this._getSdk(); - if (!sdk || !sdk.data) return ""; - var q = String(sdk.data.question || "").trim(); - - // Nếu question là một URL (bắt đầu bằng http hoặc là link ảnh/âm thanh), trả về rỗng để tránh hiện text - if (q.toLowerCase().startsWith('http') || this._isAudioUrl(q) || this._isImageUrl(q)) { - return ""; - } - - return q; - }, - - /** - * Lấy loại câu hỏi: 'text', 'image', 'audio' - */ - getQuestionType: function () { - var sdk = this._getSdk(); - if (!sdk || !sdk.data) return 'text'; - - var q = String(sdk.data.question || ""); - var isUrl = q.toLowerCase().startsWith('http'); - - // Check audio trước - if (sdk.data.audio || (isUrl && this._isAudioUrl(q))) return 'audio'; - - // Check image - if (sdk.data.image || sdk.data.image_url || (isUrl && this._isImageUrl(q))) return 'image'; - - // Fallback theo game code (số thứ 3) - if (this.game_code && this.game_code.length >= 4) { - var qTypeChar = this.game_code.charAt(3); - if (qTypeChar === '1') return 'image'; - if (qTypeChar === '2') return 'audio'; - } - - return 'text'; - }, - - /** - * Helper: Kiểm tra chuỗi có phải URL âm thanh không - */ - _isAudioUrl: function (url) { - var str = String(url).toLowerCase(); - if (!str.startsWith('http')) return false; - var exts = ['.mp3', '.wav', '.ogg', '.m4a', '.aac']; - for (var i = 0; i < exts.length; i++) { - if (str.endsWith(exts[i])) return true; - } - return str.includes('/audio/') || str.includes('audio.'); - }, - - /** - * Helper: Kiểm tra chuỗi có phải URL hình ảnh không - */ - _isImageUrl: function (url) { - var str = String(url).toLowerCase(); - if (!str.startsWith('http')) return false; - var exts = ['.jpg', '.jpeg', '.png', '.gif', '.webp', '.bmp']; - for (var i = 0; i < exts.length; i++) { - if (str.endsWith(exts[i])) return true; - } - return str.includes('/img/') || str.includes('/image/') || str.includes('image.'); - }, - - /** - * Kiểm tra có hình ảnh câu hỏi không - * Sử dụng: Browser.ExecJS("tdv_sdk.hasImage()") = 1 - */ - hasImage: function () { - var sdk = this._getSdk(); - if (!sdk || !sdk.data) return 0; - var url = sdk.data.image_url || sdk.data.image || ""; - if (url && String(url).toLowerCase().startsWith('http')) return 1; - - // Nếu không có field image riêng, check question có phải là link ảnh không - var q = sdk.data.question || ""; - return this._isImageUrl(q) ? 1 : 0; - }, - - /** - * Lấy URL hình ảnh câu hỏi - */ - getImageUrl: function () { - var sdk = this._getSdk(); - if (!sdk || !sdk.data) return ""; - var url = sdk.data.image_url || sdk.data.image || ""; - - if (!url && this._isImageUrl(sdk.data.question)) { - url = sdk.data.question; - } - return this.getCorsUrl(url); - }, - - /** - * Kiểm tra có audio câu hỏi không - * Sử dụng: Browser.ExecJS("tdv_sdk.hasAudio()") = 1 - */ - hasAudio: function () { - var sdk = this._getSdk(); - if (!sdk || !sdk.data) return 0; - if (sdk.data.audio && sdk.data.audio.length > 0) return 1; - - // Check nếu question là link audio - return this._isAudioUrl(sdk.data.question) ? 1 : 0; - }, - - /** - * Lấy URL audio câu hỏi - * Sử dụng: Browser.ExecJS("tdv_sdk.getAudioUrl()") - */ - getAudioUrl: function () { - var sdk = this._getSdk(); - if (!sdk || !sdk.data) return ""; - var url = sdk.data.audio || ""; - - if (!url && this._isAudioUrl(sdk.data.question)) { - url = sdk.data.question; - } - return this.getCorsUrl(url); - }, - - // ==================== OPTIONS GETTERS ==================== - - /** - * Lấy số lượng options - * Sử dụng: Browser.ExecJS("tdv_sdk.getOptionsCount()") - */ - getOptionsCount: function () { - var sdk = this._getSdk(); - if (!sdk || !sdk.data || !sdk.data.options) return 0; - return sdk.data.options.length; - }, - - /** - * Lấy giá trị gốc của option (Object hoặc String) - */ - _getRawOptionValue: function (index) { - var sdk = this._getSdk(); - if (!sdk || !sdk.data || !sdk.data.options) return null; - return sdk.data.options[index]; - }, - - /** - * Helper: Parse JSON string if needed - */ - _parseData: function (val) { - if (typeof val === 'string' && val.trim().startsWith('{')) { - try { - var obj = JSON.parse(val); - return obj.text || val; - } catch (e) { return val; } - } - return val; - }, - - /** - * Lấy text của option theo index - * Sử dụng: Browser.ExecJS("tdv_sdk.getAnswerByIndex(0)") - */ - getAnswerByIndex: function (index) { - var opt = this._getRawOptionValue(index); - if (!opt) return ""; - - // Trường hợp là Object {text: "...", image: "..."} - if (typeof opt === 'object') { - return opt.text || ""; - } - - // Trường hợp là chuỗi (có thể là JSON hoặc URL) - var text = this._parseData(String(opt)); - - // Nếu text là một URL (bắt đầu bằng http), trả về rỗng để tránh hiện link trên nút - if (typeof text === 'string' && text.toLowerCase().startsWith('http')) { - return ""; - } - - return text; - }, - - /** - * Alias - getOptionText - */ - getOptionText: function (index) { - return this.getAnswerByIndex(index); - }, - - /** - * Kiểm tra option có hình ảnh không - * Sử dụng: Browser.ExecJS("tdv_sdk.hasOptionImage(0)") = 1 - */ - hasOptionImage: function (index) { - var opt = this._getRawOptionValue(index); - if (!opt) return 0; - - // Trường hợp là Object - if (typeof opt === 'object') { - var url = opt.image || opt.image_url || ""; - return (url && url.length > 0) ? 1 : 0; - } - - // Trường hợp là chuỗi (check link ảnh) - return this._isImageUrl(String(opt)) ? 1 : 0; - }, - - /** - * Lấy URL hình ảnh của option - * Sử dụng: Browser.ExecJS("tdv_sdk.getOptionImageUrl(0)") - */ - getOptionImageUrl: function (index) { - var opt = this._getRawOptionValue(index); - if (!opt) return ""; - - if (typeof opt === 'object') { - var url = opt.image || opt.image_url || ""; - return this.getCorsUrl(url); - } - - // Nếu là link ảnh trực tiếp - var str = String(opt); - if (this._isImageUrl(str)) { - return this.getCorsUrl(str); - } - - return ""; - }, - - /** - * Kiểm tra option có audio không - * Trả về 1 nếu là object có property audio HOẶC là chuỗi URL dẫn đến file âm thanh - */ - hasOptionAudio: function (index) { - var opt = this._getRawOptionValue(index); - if (!opt) return 0; - - // Trường hợp là Object - if (typeof opt === 'object') { - return (opt.audio && opt.audio.length > 0) ? 1 : 0; - } - - // Trường hợp là chuỗi (kiểm tra xem có phải link audio không) - var str = String(opt).toLowerCase(); - if (str.startsWith('http')) { - // Check các định dạng âm thanh phổ biến - var extensions = ['.mp3', '.wav', '.ogg', '.m4a', '.aac']; - for (var i = 0; i < extensions.length; i++) { - if (str.endsWith(extensions[i])) return 1; - } - if (str.includes('/audio/') || str.includes('audio.')) return 1; - } - - return 0; - }, - - /** - * Lấy URL audio của option - */ - getOptionAudio: function (index) { - var opt = this._getRawOptionValue(index); - if (!opt) return ""; - - if (typeof opt === 'object') { - return this.getCorsUrl(opt.audio || ""); - } - - // Nếu là chuỗi bắt đầu bằng http, coi như đó là URL audio trực tiếp - var str = String(opt); - if (str.toLowerCase().startsWith('http')) { - return this.getCorsUrl(str); - } - - return ""; - }, - - // ==================== ANSWER CHECKING (Trigger Plugin Events) ==================== - - /** - * Lấy đáp án đúng - * Sử dụng: Browser.ExecJS("tdv_sdk.getCorrectResultText()") - */ - getCorrectResultText: function () { - var sdk = this._getSdk(); - if (!sdk || !sdk.correctAnswer) return ""; - return String(sdk.correctAnswer); - }, - - /** - * Kiểm tra đáp án - QUAN TRỌNG cho SenaAI Plugin - * Sử dụng: Browser.ExecJS("tdv_sdk.checkAnswer('apple')") - * Returns: 1 (đúng) hoặc 0 (sai) - * - * Plugin sẽ trigger: - * - "On Correct Answer" nếu đúng - * - "On Wrong Answer" nếu sai - */ - checkAnswer: function (userAnswer) { - var self = this; - var isCorrect = 0; - - // Ưu tiên dùng hàm end() của Plugin SDK chính để tính toán duration/score - if (window.SenaTrigger && window.SenaTrigger.sdk) { - console.log('🏁 Calling official sena_sdk.end()...'); - window.SenaTrigger.sdk.end(userAnswer, function (result) { - isCorrect = result ? 1 : 0; - }); - } else { - // Fallback nếu không có plugin (logic cũ) - var correct = this.getCorrectResultText().toLowerCase().trim(); - var user = String(userAnswer).toLowerCase().trim(); - - if (user.includes('corsproxy.io/?')) { - try { - var decoded = decodeURIComponent(user.split('corsproxy.io/?')[1]); - if (decoded) user = decoded.toLowerCase().trim(); - } catch (e) { } - } - - isCorrect = (user === correct) ? 1 : 0; - if (!isCorrect && (user.startsWith('http') || correct.startsWith('http'))) { - var getFileName = function (url) { - var parts = url.split('/'); - return parts[parts.length - 1].split('?')[0]; - }; - if (getFileName(user) === getFileName(correct)) isCorrect = 1; - } - } - - // Đồng bộ kết quả ra Bridge cho Construct 2 - window.tdv_bridge_result = isCorrect; - if (isCorrect) this.totalScore++; - - console.log('📝 Result Bridge:', isCorrect === 1 ? '✅ CORRECT' : '❌ WRONG'); - return isCorrect; - }, - - /** - * Kiểm tra đáp án theo index của option đã chọn - * Đã cải tiến để lấy đúng giá trị (text hoặc URL) để so sánh - */ - checkAnswerByIndex: function (index) { - var opt = this._getRawOptionValue(index); - var val = ""; - if (typeof opt === 'object') { - val = opt.text || ""; - } else { - val = String(opt); - } - return this.checkAnswer(val); - }, - - /** - * Submit đáp án - alias cho checkAnswer - * Sử dụng: Browser.ExecJS("tdv_sdk.play('apple')") - */ - play: function (userAnswer) { - return this.checkAnswer(userAnswer); - }, - - // ==================== AUDIO PLAYBACK ==================== - - /** - * Phát audio câu hỏi - * Sử dụng: Browser.ExecJS("tdv_sdk.playQuestionAudio()") - */ - playQuestionAudio: function () { - var url = this.getAudioUrl(); - if (url) { - console.log('🔊 Playing question audio'); - new Audio(url).play().catch(function (e) { console.error(e); }); - } - }, - - /** - * Phát audio option - * Sử dụng: Browser.ExecJS("tdv_sdk.playOptionAudio(0)") - */ - playOptionAudio: function (index) { - var url = this.getOptionAudio(index); - if (url) { - console.log('🔊 Playing option', index, 'audio'); - new Audio(url).play().catch(function (e) { console.error(e); }); - } - }, - - /** - * Phát audio từ URL - * Sử dụng: Browser.ExecJS("tdv_sdk.playSpecificAudio('url')") - */ - playSpecificAudio: function (url) { - if (url && url !== "" && url !== "NaN") { - new Audio(url).play().catch(function (e) { console.error(e); }); - } - }, - - // ==================== SCORE & GAME STATE ==================== - - getCurrentScore: function () { return this.totalScore; }, - getScore: function () { return this.totalScore; }, - getCurrentNumber: function () { return this.currentQuestionIndex + 1; }, - getTotalQuestions: function () { return 1; }, - /** - * Tính toán font size linh hoạt dựa trên độ dài văn bản - * Sử dụng: Browser.ExecJS("tdv_sdk.getFontSizeForText('văn bản', 36, 20)") - */ - /** - * Chèn thêm Proxy để vượt rào CORS cho các link ảnh/audio từ server lạ - * Sử dụng: Browser.ExecJS("tdv_sdk.getCorsUrl('link_anh')") - */ - getCorsUrl: function (url) { - url = String(url || ""); - if (!url || !url.startsWith('http')) return url; - - // Nếu đã là link từ senaai.tech thì không cần proxy - if (url.includes('senaai.tech')) return url; - - // Sử dụng một trong các public proxy (có thể thay đổi nếu proxy này die) - return "https://corsproxy.io/?" + encodeURIComponent(url); - }, - - getFontSizeForText: function (text, defaultSize, minSize) { - text = String(text || ""); - defaultSize = Number(defaultSize) || 36; - minSize = Number(minSize) || 20; - - var len = text.length; - if (len <= 12) return defaultSize; - if (len >= 40) return minSize; - - // Giảm dần font size tuyến tính dựa trên độ dài - var ratio = (len - 12) / (40 - 12); - var size = defaultSize - (ratio * (defaultSize - minSize)); - return Math.floor(size); - }, - - getFontSizeForOption: function (index, defaultSize, minSize) { - var text = this.getAnswerByIndex(index); - return this.getFontSizeForText(text, defaultSize, minSize); - }, - getRemainingTime: function () { - // Ưu tiên dùng trực tiếp từ Core SDK nếu có - if (window.SenaTrigger && window.SenaTrigger.sdk && typeof window.SenaTrigger.sdk.getRemainingTime === 'function') { - return window.SenaTrigger.sdk.getRemainingTime(); - } - - // Fallback cho tdv_sdk tự đếm (nếu plugin chưa load xong hoặc plugin cũ) - var limit = this.timeLimit > 0 ? this.timeLimit : 30; - - // Chỉ sync từ plugin nếu chưa bắt đầu - if (!this._timerStarted) { - this.syncFromPlugin(); - } - - // Nếu vẫn chưa có mốc thời gian, tự khởi tạo (chỉ làm 1 lần) - if (!this._timerStarted) { - this.gameStartTime = Date.now(); - this._timerStarted = true; - this._isPaused = false; - this._pausedElapsed = 0; - console.log('⏱️ SDK Auto-start timer:', limit, 'seconds'); - } - - var elapsed = 0; - if (this._isPaused) { - elapsed = this._pausedElapsed; - } else { - elapsed = (Date.now() - this.gameStartTime) / 1000; - } - - var remaining = limit - elapsed; - var finalTime = Math.max(0, Math.floor(remaining)); - - // Log trạng thái để debug - if (finalTime % 5 === 0 && finalTime !== this._lastLogTime) { - console.log('⏳ Time Left:', finalTime, (this._isPaused ? '[PAUSED]' : ''), '(Elapsed:', Math.floor(elapsed), ')'); - this._lastLogTime = finalTime; - } - - return finalTime; - }, - isDataLoaded: function () { return this.serverDataLoaded; }, - - // ==================== LEGACY COMPATIBILITY ==================== - - getAttr: function (attr) { - var sdk = this._getSdk(); - return (sdk && sdk.data) ? (sdk.data[attr] || "") : ""; - }, - - recordResult: function (res) { window.tdv_bridge_result = res ? 1 : 0; }, - finish: function () { console.log('🏁 Game Finished!'); }, - resumeTime: function () { - if (!this._isPaused) return; - - // Cập nhật lại gameStartTime để bù đắp cho khoảng thời gian đã trôi qua - this.gameStartTime = Date.now() - (this._pausedElapsed * 1000); - this._isPaused = false; - - // Đồng bộ với Core SDK mới nhất - if (window.SenaTrigger && window.SenaTrigger.sdk && typeof window.SenaTrigger.sdk.resume === 'function') { - window.SenaTrigger.sdk.resume(); - } else if (window.SenaTrigger && window.SenaTrigger.sdk) { - window.SenaTrigger.sdk.startTime = this.gameStartTime; - } - - console.log('▶️ Timer Resumed via tdv_sdk'); - }, - pauseTime: function () { - if (this._isPaused || !this._timerStarted) return; - - this._pausedElapsed = (Date.now() - this.gameStartTime) / 1000; - this._isPaused = true; - - // Đồng bộ với Core SDK mới nhất - if (window.SenaTrigger && window.SenaTrigger.sdk && typeof window.SenaTrigger.sdk.pause === 'function') { - window.SenaTrigger.sdk.pause(); - } - - console.log('⏸️ Timer Paused at:', Math.floor(this._pausedElapsed), 's via tdv_sdk'); - }, - stopTime: function () { this.pauseTime(); }, - submitAllResults: function () { console.log('📤 Submitting results...'); }, - forceFinishGame: function () { - console.log('🚫 Force Finish Game (Time Up)'); - // Khi hết giờ, nộp một đáp án rỗng "" để tính là SAI và kết thúc game - this.checkAnswer(""); - this.finish(); - }, - nextQuestion: function () { this.currentQuestionIndex++; }, - leaderboard: function () { }, - result: function () { } -}; - -// Auto-init -window.tdv_sdk = tdv_sdk; -tdv_sdk.init(); -console.log('✅ TDV SDK v8.2 Ready - Use with SenaAI Plugin'); \ No newline at end of file diff --git a/SQ_Word_Hint-Audio/tdv_view.js b/SQ_Word_Hint-Audio/tdv_view.js deleted file mode 100644 index d90cd33..0000000 --- a/SQ_Word_Hint-Audio/tdv_view.js +++ /dev/null @@ -1,188 +0,0 @@ -/** - * TDV_VIEW.js - V2: Layout Refinement - * Nhiệm vụ: Tinh chỉnh khoảng cách, font size và vị trí spawn theo feedback. - */ - -var TDV_View = { - config: { - canvasW: 1200, - - // --- CẤU HÌNH SLOT (Ô CHỮ) --- - slotBaseY: 700, // Đẩy thấp xuống thêm chút nữa cho thoáng mây - slotSize: 130, // Kích thước logic - - // 🔥 THAY ĐỔI QUAN TRỌNG TẠI ĐÂY: - slotSpacingX: 100, // Tăng gấp đôi (cũ 30) để tách các viên thuốc - slotSpacingY: 25, // Tăng nhẹ khoảng cách dòng (cũ 15) - - maxCol: 5, // 5 ô/hàng - slotFontSize: 50, // Font slot giữ nguyên - - // --- CẤU HÌNH ANSWER (MỚI: FLEX LAYOUT) --- - cloudCenterY: 450, // Tâm Y của đám mây - cloudWidth: 800, // Chiều rộng vùng khả dụng trong mây - - answerItemW: 200, // Chiều rộng ước lượng của 1 viên thuốc answer - answerItemH: 85, // Chiều cao ước lượng - answerGapX: 20, // Khoảng cách ngang giữa các answer - answerGapY: 20, // Khoảng cách dọc giữa các dòng answer - answerFontSize: 36, - }, - - // Lưu trữ vị trí đã tính toán - slotPositions: [], - answerPositions: [], - currentScale: 1, - - /** - * TÍNH TOÁN LAYOUT - */ - calculateLayout: function (itemCount) { - if (!itemCount) return; - this.slotPositions = []; - this.answerPositions = []; - const cfg = this.config; - - // ================= 1. TÍNH SLOT (GRID) ================= - // Tính scale nếu quá nhiều từ - var rowsNeeded = Math.ceil(itemCount / cfg.maxCol); - this.currentScale = 1; - if (rowsNeeded > 2) this.currentScale = 0.9; - - var size = cfg.slotSize * this.currentScale; - var spaceX = cfg.slotSpacingX * this.currentScale; - var spaceY = cfg.slotSpacingY * this.currentScale; - - for (var i = 0; i < itemCount; i++) { - var row = Math.floor(i / cfg.maxCol); - - // Tính số item trong dòng hiện tại để căn giữa - var itemsInThisRow = cfg.maxCol; - if (row === rowsNeeded - 1) { - itemsInThisRow = itemCount % cfg.maxCol || cfg.maxCol; - } - - var colIndex = i % cfg.maxCol; - - // Tính Width của cả dòng để căn giữa màn hình - var rowWidth = itemsInThisRow * size + (itemsInThisRow - 1) * spaceX; - var rowStartX = (cfg.canvasW - rowWidth) / 2 + size / 2; - - var posX = rowStartX + colIndex * (size + spaceX); - // posY tính toán riêng biệt cho từng dòng - var posY = cfg.slotBaseY + row * (size + spaceY); - - this.slotPositions.push({ x: posX, y: posY }); - } - - // ================= 2. TÍNH ANSWER (FLEX LAYOUT) ================= - // Logic: Xếp hàng ngang, tự xuống dòng, căn giữa từng dòng. - - var answerCount = 0; - if (window.TDV_Core) answerCount = TDV_Core.getMissingCharsCount(); - if (answerCount === 0) answerCount = itemCount; // Fallback - - // Tính số lượng tối đa trên 1 hàng dựa vào chiều rộng mây - var itemTotalW = cfg.answerItemW * this.currentScale; - var itemTotalH = cfg.answerItemH * this.currentScale; - var gapX = cfg.answerGapX; - var gapY = cfg.answerGapY; - - // Tính xem 1 hàng nhét được bao nhiêu viên - var maxPerLine = Math.floor(cfg.cloudWidth / (itemTotalW + gapX)); - if (maxPerLine < 1) maxPerLine = 1; - - // Tính tổng số dòng cần thiết - var totalLines = Math.ceil(answerCount / maxPerLine); - - // Tính chiều cao tổng của khối answer để căn giữa theo chiều dọc (Center Y) - var totalBlockHeight = totalLines * itemTotalH + (totalLines - 1) * gapY; - var startBlockY = cfg.cloudCenterY - totalBlockHeight / 2 + itemTotalH / 2; - - for (var i = 0; i < answerCount; i++) { - var lineIndex = Math.floor(i / maxPerLine); // Đang ở dòng mấy - - // Tính số item trong dòng hiện tại (để căn giữa dòng đó) - var itemsInCurrentLine = maxPerLine; - // Nếu là dòng cuối cùng - if (lineIndex === totalLines - 1) { - itemsInCurrentLine = answerCount % maxPerLine || maxPerLine; - } - - // Index trong dòng (0, 1, 2...) - var indexInLine = i % maxPerLine; - - // Tính chiều rộng dòng hiện tại - var currentLineWidth = - itemsInCurrentLine * itemTotalW + (itemsInCurrentLine - 1) * gapX; - var startLineX = (cfg.canvasW - currentLineWidth) / 2 + itemTotalW / 2; - - var ansX = startLineX + indexInLine * (itemTotalW + gapX); - var ansY = startBlockY + lineIndex * (itemTotalH + gapY); - - this.answerPositions.push({ - x: ansX, - y: ansY, - angle: 0, - }); - } - - console.log(`📏 VIEW V4: Flex Layout Applied. Answers: ${answerCount}`); - }, - - // --- GETTERS (Giữ nguyên logic gọi) --- - - getSlotX: function (i) { - return this.slotPositions[i] ? this.slotPositions[i].x : 0; - }, - getSlotY: function (i) { - return this.slotPositions[i] ? this.slotPositions[i].y : 0; - }, - - getAnswerX: function (i) { - return this.answerPositions[i] ? this.answerPositions[i].x : 0; - }, - getAnswerY: function (i) { - return this.answerPositions[i] ? this.answerPositions[i].y : 0; - }, - getAnswerAngle: function (i) { - return 0; - }, // Luôn trả về 0 độ - - getScale: function () { - return this.currentScale; - }, - - // Font size riêng biệt - getFontSize: function () { - return Math.floor(this.config.slotFontSize * this.currentScale); - }, - getAnswerFontSize: function () { - return Math.floor(this.config.answerFontSize * this.currentScale); - }, - - // Text Content Helpers - getDisplayText: function (i) { - if (window.TDV_Core && TDV_Core.questionTemplate) { - if (!TDV_Core.isBlankIndex(i)) return TDV_Core.questionTemplate[i]; - return TDV_Core.placedChars[i] || ""; - } - return ""; - }, - - getAnswerText: function (i) { - if (window.TDV_Core && TDV_Core.missingChars) { - return TDV_Core.missingChars[i] || ""; - } - return ""; - }, - - shuffleArray: function (array) { - for (let i = array.length - 1; i > 0; i--) { - const j = Math.floor(Math.random() * (i + 1)); - [array[i], array[j]] = [array[j], array[i]]; - } - }, -}; - -window.TDV_View = TDV_View; diff --git a/source/SQ_Word_Hint-Audio.capx b/source/SQ_Word_Hint-Audio.capx index 32519cc..e9264c0 100644 Binary files a/source/SQ_Word_Hint-Audio.capx and b/source/SQ_Word_Hint-Audio.capx differ diff --git a/source/SQ_Word_Hint-Audio.capx.backup1 b/source/SQ_Word_Hint-Audio.capx.backup1 new file mode 100644 index 0000000..32519cc Binary files /dev/null and b/source/SQ_Word_Hint-Audio.capx.backup1 differ