1var freeGameEnd = "motteo03"; 2 3//current reward interval 4var rewardInterval = 15; 5 6//individual reward intervals 7var reward1 = 15; 8var reward2 = 20;//35 total 9var reward3 = 25;//60 total 10var reward4 = 30;//90 total 11var reward5 = 35;//125 total 12var reward6 = 40;//165 total 13var reward7 = 45;//210 total 14var reward8 = 65;//275 total 15var reward9 = 100;//not used 16 17//setup listeners specific to Free game 18function setupSpecificListeners() { 19 20} 21 22//get user's data from cookies if exists or create new data set 23function getUserData() { 24 25 gameSource = "freeGame"; 26 myUser.competitor = 0; 27 myUser.playerID = -1; 28 myUser.playerName = null; 29 myUser.playerAvatar = null; 30 myUser.savedQuizState = null; 31 myUser.savedQuizUpdated = null; 32 33 //does user data exit? 34 let isGuestPlayerData = getCookie("isGuestPlayerData") == 'true'; 35 let isGuestPlayerDataAchievementsCompatible = getCookie("isGuestPlayerDataAchievementsCompatible") == 'true'; 36 37 if (isGuestPlayerData == true && isGuestPlayerDataAchievementsCompatible == true) { 38 processGuestPlayerData(); 39 }else{ 40 createGuestPlayerData(); 41 } 42 43 initAchievements(); 44 45} 46 47//guess data doesn't exist. create and set up new player. 48function createGuestPlayerData() { 49 50 setCookie("isGuestPlayerData", true, 365); 51 52 const firstLevel = 'int01'; 53 54 myUser.newUser = 1; 55 myUser.currentLevel = 0; 56 myUser.maxLevel = 0; 57 myUser.currentProgress = firstLevel; 58 myUser.maxProgress = firstLevel; 59 myUser.rewardsEarned = 0; 60 myUser.totalStars = 0; 61 myUser.starsCurrentPeriod = 0; 62 myUser.unrewardedStars = 0; 63 myUser.stepHistory = '{}'; 64 myUser.quizzesHistory = '{}'; 65 myUser.quizzesCurrentPeriod = '{}'; 66 myUser.totalCorrect = 0; 67 myUser.totalQuestions = 0; 68 myUser.totalPercentCorrect = 0; 69 myUser.correctCurrentPeriod = 0; 70 myUser.questionsCurrentPeriod = 0; 71 myUser.percentCorrectCurrentPeriod = 0; 72 myUser.userCouponCode = null; 73 myUser.dpQuestionsAnswered = []; 74 myUser.sptpQuestionsAnswered = []; 75 myUser.questionsCorrectlyAnswered = []; 76 myUser.numConsecutiveQuestionsCorrect = 0; 77 myUser.roadsignsViewed = []; 78 myUser.theoryRead = []; 79 myUser.achievementLevelAmber = 0; 80 myUser.achievementLevelAmethyst = 0; 81 myUser.achievementLevelEmerald = 0; 82 myUser.achievementLevelSapphire = 0; 83 myUser.achievementLevelRuby = 0; 84 myUser.achievementLevelDiamond = 0; 85 86 saveUserData(); 87 88 getGameData(); 89 90} 91 92//save guest player data to cookies 93function saveUserData() { 94 95 setCookie("guestNewUser", myUser.newUser, 365); 96 setCookie("guestCurrentLevel", myUser.currentLevel, 365); 97 setCookie("guestMaxLevel", myUser.maxLevel, 365); 98 setCookie("guestCurrentProgress", myUser.currentProgress, 365); 99 setCookie("guestMaxProgress", myUser.maxProgress, 365); 100 setCookie("guestRewardsEarned", myUser.rewardsEarned, 365); 101 setCookie("guestTotalStars", myUser.totalStars, 365); 102 setCookie("guestStarsCurrentPeriod", myUser.starsCurrentPeriod, 365); 103 setCookie("guestUnrewardedStars", myUser.unrewardedStars, 365); 104 setCookie("guestTotalCorrect", myUser.totalCorrect, 365); 105 setCookie("guestTotalQuestions", myUser.totalQuestions, 365); 106 setCookie("guestTotalPercentCorrect", myUser.totalPercentCorrect, 365); 107 setCookie("guestCorrectCurrentPeriod", myUser.correctCurrentPeriod, 365); 108 setCookie("guestQuestionsCurrentPeriod", myUser.questionsCurrentPeriod, 365); 109 setCookie("guestPercentCorrectCurrentPeriod", myUser.percentCorrectCurrentPeriod, 365); 110 setCookie("guestStepHistory", JSON.stringify(myUserStepHistory), 365); 111 setCookie("guestQuizzesHistory", JSON.stringify(myUserQuizzesHistory), 365); 112 setCookie("guestQuizzesCurrentPeriod", JSON.stringify(myUserQuizzesCurrentPeriod), 365); 113 setCookie("guestUserCouponCode", myUser.userCouponCode, 365); 114 115 setCookie("guest_dpQuestionsAnswered", JSON.stringify(myUser.dpQuestionsAnswered), 365); 116 setCookie("guest_sptpQuestionsAnswered", JSON.stringify(myUser.sptpQuestionsAnswered), 365); 117 setCookie("guest_questionsCorrectlyAnswered", JSON.stringify(myUser.questionsCorrectlyAnswered), 365); 118 setCookie("guest_numConsecutiveQuestionsCorrect", myUser.numConsecutiveQuestionsCorrect, 365); 119 setCookie("guest_roadsignsViewed", JSON.stringify(myUser.roadsignsViewed), 365); 120 setCookie("guest_theoryRead", JSON.stringify(myUser.theoryRead), 365); 121 setCookie("guest_achievementLevelAmber", myUser.achievementLevelAmber, 365); 122 setCookie("guest_achievementLevelAmethyst", myUser.achievementLevelAmethyst, 365); 123 setCookie("guest_achievementLevelEmerald", myUser.achievementLevelEmerald, 365); 124 setCookie("guest_achievementLevelSapphire", myUser.achievementLevelSapphire, 365); 125 setCookie("guest_achievementLevelRuby", myUser.achievementLevelRuby, 365); 126 setCookie("guest_achievementLevelDiamond", myUser.achievementLevelDiamond, 365); 127 setCookie("isGuestPlayerDataAchievementsCompatible", true, 365); 128} 129 130//get and handle existing guest player data 131function processGuestPlayerData() { 132 133 const firstLevel = 'int01'; 134 135 //TEMP 136 //resetUserData(); 137 //return; 138 139 myUser.newUser = parseInt(getCookie("guestNewUser")); 140 if (isNaN(myUser.newUser)) myUser.newUser = 0; 141 142 myUser.currentLevel = parseInt(getCookie("guestCurrentLevel")); 143 if (isNaN(myUser.currentLevel)) myUser.currentLevel = 0; 144 145 myUser.maxLevel = parseInt(getCookie("guestMaxLevel")); 146 if (isNaN(myUser.maxLevel)) myUser.maxLevel = 0; 147 148 myUser.currentProgress = getCookie("guestCurrentProgress"); 149 if (typeof myUser.currentProgress == 'undefined') myUser.currentProgress = firstLevel; 150 151 myUser.maxProgress = getCookie("guestMaxProgress"); 152 if (typeof myUser.maxProgress == 'undefined') myUser.maxProgress = firstLevel; 153 154 myUser.rewardsEarned = parseInt(getCookie("guestRewardsEarned")); 155 if (isNaN(myUser.rewardsEarned)) myUser.rewardsEarned = 0; 156 157 myUser.totalStars = parseInt(getCookie("guestTotalStars")); 158 if (isNaN(myUser.totalStars)) myUser.totalStars = 0; 159 160 myUser.starsCurrentPeriod = parseInt(getCookie("guestStarsCurrentPeriod")); 161 if (isNaN(myUser.starsCurrentPeriod)) myUser.starsCurrentPeriod = 0; 162 163 myUser.unrewardedStars = parseInt(getCookie("guestUnrewardedStars")); 164 if (isNaN(myUser.unrewardedStars)) myUser.unrewardedStars = 0; 165 166 myUser.totalCorrect = parseInt(getCookie("guestTotalCorrect"));
167 if (isNaN(myUser.totalCorrect)) myUser.totalCorrect = 0; 168 169 myUser.totalQuestions = parseInt(getCookie("guestTotalQuestions")); 170 if (isNaN(myUser.totalQuestions)) myUser.totalQuestions = 0; 171 172 myUser.totalPercentCorrect = parseInt(getCookie("guestTotalPercentCorrect")); 173 if (isNaN(myUser.totalPercentCorrect)) myUser.totalPercentCorrect = 0; 174 175 myUser.correctCurrentPeriod = parseInt(getCookie("guestCorrectCurrentPeriod")); 176 if (isNaN(myUser.correctCurrentPeriod)) myUser.correctCurrentPeriod = 0; 177 178 myUser.questionsCurrentPeriod = parseInt(getCookie("guestQuestionsCurrentPeriod")); 179 if (isNaN(myUser.questionsCurrentPeriod)) myUser.questionsCurrentPeriod = 0; 180 181 myUser.percentCorrectCurrentPeriod = parseInt(getCookie("guestPercentCorrectCurrentPeriod")); 182 if (isNaN(myUser.percentCorrectCurrentPeriod)) myUser.percentCorrectCurrentPeriod = 0; 183 184 myUserStepHistory = JSON.parse(getCookie("guestStepHistory"), true); 185 if (typeof myUserStepHistory == 'undefined' || myUserStepHistory.length < 3) myUserStepHistory = {}; 186 187 myUserQuizzesHistory = JSON.parse(getCookie("guestQuizzesHistory"), true); 188 if (typeof myUserQuizzesHistory == 'undefined' || myUserQuizzesHistory.length < 3) myUserQuizzesHistory = {}; 189 190 myUserQuizzesCurrentPeriod = JSON.parse(getCookie("guestQuizzesCurrentPeriod"), true); 191 if (typeof myUserQuizzesCurrentPeriod == 'undefined' || myUserQuizzesCurrentPeriod.length < 3) myUserQuizzesCurrentPeriod = {}; 192 193 myUser.userCouponCode = getCookie("guestUserCouponCode"); 194 if (typeof myUser.userCouponCode == 'undefined') myUser.userCouponCode = null; 195 196 myUser.dpQuestionsAnswered = JSON.parse(getCookie('guest_dpQuestionsAnswered'), true); 197 if (typeof myUser.dpQuestionsAnswered == 'undefined') myUser.dpQuestionsAnswered = []; 198 199 myUser.sptpQuestionsAnswered = JSON.parse(getCookie('guest_sptpQuestionsAnswered'), true); 200 if (typeof myUser.sptpQuestionsAnswered == 'undefined') myUser.sptpQuestionsAnswered = []; 201 202 myUser.questionsCorrectlyAnswered = JSON.parse(getCookie('guest_questionsCorrectlyAnswered'), true); 203 if (typeof myUser.questionsCorrectlyAnswered == 'undefined') myUser.questionsCorrectlyAnswered = []; 204 205 myUser.numConsecutiveQuestionsCorrect = parseInt(getCookie("guest_numConsecutiveQuestionsCorrect")); 206 if (isNaN(myUser.numConsecutiveQuestionsCorrect)) myUser.numConsecutiveQuestionsCorrect = 0; 207 208 myUser.roadsignsViewed = JSON.parse(getCookie('guest_roadsignsViewed'), true); 209 if (typeof myUser.roadsignsViewed == 'undefined') myUser.roadsignsViewed = []; 210 211 myUser.theoryRead = JSON.parse(getCookie('guest_theoryRead'), true); 212 if (typeof myUser.theoryRead == 'undefined') myUser.theoryRead = []; 213 214 myUser.achievementLevelAmber = parseInt(getCookie("guest_achievementLevelAmber")); 215 if (isNaN(myUser.achievementLevelAmber)) myUser.achievementLevelAmber = 0; 216 217 myUser.achievementLevelAmethyst = parseInt(getCookie("guest_achievementLevelAmethyst")); 218 if (isNaN(myUser.achievementLevelAmethyst)) myUser.achievementLevelAmethyst = 0; 219 220 myUser.achievementLevelEmerald = parseInt(getCookie("guest_achievementLevelEmerald")); 221 if (isNaN(myUser.achievementLevelEmerald)) myUser.achievementLevelEmerald = 0; 222 223 myUser.achievementLevelSapphire = parseInt(getCookie("guest_achievementLevelSapphire")); 224 if (isNaN(myUser.achievementLevelSapphire)) myUser.achievementLevelSapphire = 0; 225 226 myUser.achievementLevelRuby = parseInt(getCookie("guest_achievementLevelRuby")); 227 if (isNaN(myUser.achievementLevelRuby)) myUser.achievementLevelRuby = 0; 228 229 myUser.achievementLevelDiamond = parseInt(getCookie("guest_achievementLevelDiamond")); 230 if (isNaN(myUser.achievementLevelDiamond)) myUser.achievementLevelDiamond = 0; 231 232 getGameData(); 233 234} 235 236//destroy guest player cookie data 237function resetUserData() { 238 239 //console.log("TIme to destroy data"); 240 241 setCookie("isGuestPlayerData", false, 365); 242 243 window.location.reload(); 244 245} 246 247function getGameData() { 248 249 $.get("/php/game/get_free_game_data.php", {level: myUser.currentLevel}, function(data){ 250 251 processUserData(); 252 253 updateRewards(); 254 255 var data = JSON.parse(data); 256 257 myUser.gameTotalSteps = data.gameTotalSteps; 258 myUser.gameTotalStars = data.gameTotalStars; 259 myUser.gameTotalQuestions = data.gameTotalQuestions; 260 myUser.gameTotalStepsTheory = data.gameTotalStepsTheory; 261 myUser.gameTotalStepsRoadsigns = data.gameTotalStepsRoadsigns; 262 myUser.gameTotalStepsVideo = data.gameTotalStepsVideo; 263 myUser.gameTotalStepsDelprov = data.gameTotalStepsDelprov; 264 myUser.gameTotalStepsSlutprov = data.gameTotalStepsSlutprov; 265 myUser.gameTotalStepsTeoriprov = data.gameTotalStepsTeoriprov; 266 267 gameData = JSON.parse(data.gameData); 268 269 processGameData(); 270 271 getLevelData(); 272 273 //end loading, show start button 274 if (isLoading) { 275 setTimeout(function(){ 276 initGame(); 277 }, 100); 278 279 } 280 281 playTheme(true); 282 283 } 284 ); 285 286} 287 288 289function processReward(rewardNumber) { 290 291 myUser.userCouponCode = "E56X41KA"; 292 293 saveUserData(); 294 updateRewards(); 295 296 var rewardTitle = ""; 297 var rewardMessage = ""; 298 299 rewardTitle = "Du har fått din första belöning!"; 300 rewardMessage = "<p>Du har fått en rabattkod som ger dig upp till <strong>25 % rabatt</strong>
300 när du skapar ett nytt konto.</p>" + 301 "<p><strong><a href='#' onclick='handleUserCoupon(event);'>Klicka här</a></strong> för att utnyttja rabatten nu eller använd koden <strong>" + myUser.userCouponCode + "</strong> innan du väljer medlemskap.</p>"; 302 303 setTimeout(function(){ 304 305 showRewardStar(rewardTitle, rewardMessage); 306 307 }, REWARD_ANIMATION); 308 309} 310 311 312function showPlayerDialog(action) { 313 314 playFX("dialogOpen"); 315 316 var message = "<p>Som medlem kan du välja spelarnamn och profilbild och tävla mot alla andra som spelar MC-Resan. Varje mÃ¥nad har alla som tävlar chans att vinna ett pris!</p>"; 317 if (action == "compete") { 318 message = "<p>Som medlem kan du tävla mot alla andra som spelar MC-Resan. Varje mÃ¥nad har alla som tävlar chans att vinna ett pris!</p>"; 319 } 320 321 message += "<p><img id='playerNewAvatar' src='graphics/avatars/256/avatar001.png'></p>" 322 323 324 $.confirm ({ 325 'title' : 'Bli medlem och tävla!', 326 'message' : message, 327 'buttons' : { 328 'Bli medlem' : { 329 'class' : 'blue', 330 'action': function(){ 331 playFX("dialogClose"); 332 window.location.href = "signup.php"; 333 } 334 }, 335 'Stäng' : { 336 'class' : 'gray', 337 'action': function(){ 338 //do nothing 339 playFX("dialogClose"); 340 } 341 } 342 } 343 }); 344 345} 346 347//guest has been shown a discount promo dialog 348function updateDiscountPromoStats(isShown, isConverted) { 349 $.post('/php/promo/update_free_game_discount_promo_stats.php', { 350 isShown : isShown, 351 isConverted : isConverted 352 }, function(data){ 353 //console.log(data); 354 }); 355} 356 357//show discount offer 358function showSignupDiscountDialog() { 359 360 // only show this promo if pop up promo dialog button has already been shown 361 const isShownSignupPromoDialogToday = getCookie('isShownSignupPromoDialogToday'); 362 if (isShownSignupPromoDialogToday != 'true') { 363 return; 364 } 365 366 var isShown = true; 367 var isConverted = false; 368 369 myUser.userCouponCode = "IKÃRKORTMC15"; 370 371 //adjust title and text for an in-progress or completed game 372 var title = "Bli medlem och fÃ¥ 15 % rabatt"; 373 var message = "<p>Skapa ett konto idag och fÃ¥ <strong>15 %</strong> rabatt pÃ¥ ditt medlemskap. Som medlem fÃ¥r du tillgÃ¥ng till allt du behöver för att klara teoriprovet pÃ¥ första försöket!</p><p><span style='color:#00EE00;'>✔</span> Hela MC-Resan<br><span style='color:#00EE00;'>✔</span> Hela Vägmärkesspelet<br><span style='color:#00EE00;'>✔</span> Alla 1 300 körkortsfrÃ¥gor för MC<br><span style='color:#00EE00;'>✔</span> Obegränsat antal prov</p>"; 374 375 playFX("dialogOpen"); 376 377 $.confirm({ 378 'title' : title, 379 'message' : message, 380 'buttons' : { 381 'Bli medlem och spara 15 %' : { 382 'class' : 'blue', 383 'action': function(){ 384 playFX("dialogClose"); 385 isConverted = true; 386 updateDiscountPromoStats(isShown, isConverted); 387 handleUserCoupon(event); 388 } 389 }, 390 'Stäng' : { 391 'class' : 'gray', 392 'action': function(){ 393 //do nothing 394 updateDiscountPromoStats(isShown, isConverted); 395 playFX("dialogClose"); 396 } 397 } 398 } 399 }); 400}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.