/**
*
* @authors Eric Hsiao
*
*/
var popAniRoot;
main = function () {
//private menbers
var introAniRoot;
var gameAniRoot;
var isDrawing = false;
var isStore = false;
var drawCount;
var myScore = 0;
var currentScore = 0;
var currentCheckinGp = 0;
var scoreList = [66, 1, 3, 6, 8, 0, 9, 0];
var dailyList = [1, 1, 1, 2, 2, 2, 3];
var currentDaily = 0;
var checkins = [];
var userInfo;
var LINEID;
var name;
var liffInitComplete = false;
var testLINEID = 'Ud2534d6e1eed9cee2c919a993443352b';
var testName = 'noh';
var isComplete = false;
var isLogin = false;
var isCheck = false;
var isCoupon = false;
var errorMsg = '';
var isAllSoldout = false;
var popoutClickHandle = function () { };
//private methods
function init() {
if (getParameterByName('test') == 1) {
var vConsole = new VConsole();
}
console.log('main is loaded. v1005');
initLiff();
TweenMax.to('.page__overlayer', 0.3, { delay: 1.2, autoAlpha: 0 })
var _myAnimate = new createAnimate();
_myAnimate.load($('.intro__content'), 'intro',
function (_exportRoot) {
introAniRoot = _exportRoot;
setTimeout(function () {
introAniRoot.play();
}, 500);
});
var image = new Image();
image.onload = function () {
// ... 在圖片載入後要進行的操作 ...
console.log('gameAni image onload.');
_myAnimate.load($('.main__game'), 'gameAni',
function (_exportRoot) {
gameAniRoot = _exportRoot;
setTimeout(function () {
introAniRoot.isComplete = true;
}, 500);
gameAniRoot.stop();
initGame();
});
}
image.src = 'images/gameAni/gameAni_atlas_1.png';
$('.main__pop').hide();
_myAnimate.load($('.main__pop'), 'popAni',
function (_exportRoot) {
popAniRoot = _exportRoot;
popAniRoot.stop();
//修正字體
popAniRoot.get_btn.score_txt.textBaseline = "alphabetic";
popAniRoot.get_btn.score_txt.y = 77;
popAniRoot.content_mc.a_icon.content_txt.textBaseline = "alphabetic";
popAniRoot.content_mc.b_icon.content_txt.textBaseline = "alphabetic";
popAniRoot.content_mc.a_icon.content_txt.y = 80;
popAniRoot.content_mc.b_icon.content_txt.y = 80;
});
$('.game__popout__close').click(function (e) {
e.preventDefault();
TweenMax.to('.game__popout', 0.3, { autoAlpha: 0 });
});
$('.game__popout__submit').click(function (e) {
e.preventDefault();
popoutClickHandle();
});
onResize();
$(window).resize(function () {
onResize();
});
}
function initLiff() {
console.log('liff.init');
liff.init({
liffId: URL__LIFF__ID //test
})
.then(() => {
if (!liff.isLoggedIn()) {// 如果沒有登入LINE,就登入
liff.login();
}
})
.catch((err) => {
// Error happens during initialization
console.log(err.code, err.message);
showError('LINE系統連線錯誤:
' + err.message);
});
}
function onResize() {
var _h = $(window).height();
var _d = $(window).height() / 1138;
if (_d > 1) _d = 1;
TweenMax.set('.game__fixed', { scale: _d });
}
function gameInto() {
// initLiff();
// console.log('initLiff');
liff.getProfile().then(function (e) {
LINEID = e.userId;
name = e.displayName;
// if (getParameterByName('test') == 1) {
// LINEID = testLINEID;
// name = testName;
// }
console.log("LINEID : " + LINEID + ' , name : ' + name);
updateUserData();
});
}
function initGame() {
gameAniRoot.luckydraw_mc.mainCTA_mc.addEventListener("click", handleCTAClick);
function handleCTAClick(event) {
if (isAllSoldout) {
showError('本次活動已結束
敬請期待下次遊戲。');
} else if (isComplete) {
// showError('今天已經轉過,歡迎明天再來!');
// showError('今天已經轉過,
歡迎明天再來!
別忘了振興五倍券,
綁台灣Pay超優惠~');
showError('活動已結束,
獎品兌換期限至12/6。
敬請期待下次活動!');
} else {
if (!isDrawing) {
isDrawing = true;
//set drawCount
//按下按鈕即開始轉動
// gameAniRoot.luckydraw_mc.mainSpin_mc.gotoAndPlay('rolling');
gameAniRoot.luckydraw_mc.mainCTA_mc.gotoAndPlay('rolling');
gameAniRoot.luckydraw_mc.mainARR_mc.gotoAndPlay('rolling');
gameAniRoot.luckydraw_mc.mainEffect_mc.flag_mc.gotoAndPlay('rolling');
//讀取結果
getGameGp(function (_res) {
//顯示結果
luckydrawStart();
});
}
}
}
popAniRoot.addEventListener("click", handleGetClick);
function handleGetClick(event) {
$('.main__pop').hide();
$('.main__pop__overlayer').hide();
popAniRoot.gotoAndStop(0);
// gameAniRoot.luckydraw_mc.mainCTA_mc.gotoAndPlay('stand');
//更新分數
// addScore(currentScore);
updateScore();
//取得Server data
updateUserData();
gameAniRoot.luckydraw_mc.store_mc.gotoAndPlay('complete');
//更新打卡
for (let index = 0; index < checkins.length; index++) {
gameAniRoot.luckydraw_mc.dalylogin_mc['checkin_mc_' + index].alpha = 1;
}
// gameAniRoot.luckydraw_mc.dalylogin_mc['checkin_mc_' + (currentDaily - 1)].alpha = 1;
}
gameAniRoot.luckydraw_mc.store_mc.addEventListener("click", handleStoreClick);
function handleStoreClick(event) {
if (!isDrawing && !isStore) {
isStore = true;
gameAniRoot.luckydraw_mc.gotoAndPlay('storeInto');
//每次進商店前就更新
updateUserData();
}
}
gameAniRoot.luckydraw_mc.storeClose_btn.addEventListener("click", handleStoreCloseClick);
function handleStoreCloseClick(event) {
gameAniRoot.luckydraw_mc.gotoAndPlay('storeClose');
$('.game__store').hide();
}
}
function updateGameContent() {
//更新打卡
console.log('========== updateGameContent ========');
for (let index = 0; index < checkins.length; index++) {
console.log('index = ' + index);
gameAniRoot.luckydraw_mc.dalylogin_mc['checkin_mc_' + index].alpha = 1;
//更新轉盤狀態
if (userInfo.roundinfo.today == checkins[index].date) {
isCheck = true;
console.log('今日已簽到');
}
}
//更新商店按鈕
if (myScore > 0) {
gameAniRoot.luckydraw_mc.store_mc.gotoAndPlay('complete');
}
//皆無庫存
var selloutCount = 0;
for (let index = 0; index < userInfo.goodinfo.length; index++) {
if (userInfo.goodinfo[index].issoldout) {
selloutCount++;
console.log('selloutCount = ' + selloutCount);
if (selloutCount >= userInfo.goodinfo.length) {
showError('本次活動已結束
敬請期待下次遊戲。');
isAllSoldout = true;
}
}
}
/*if (selloutCount >= userInfo.goodinfo.length) {
$('.game__popout__content .content').hide();
$('.game__popout__submit').hide();
$('.game__popout__content .content__result').show();
$('.game__popout__content .content__result__text').html('
活動已結束
感謝您的參與!
');
showPopout();
}*/
//更新Coupon
updateCoupon();
}
function updateLogin() {
if (isLogin) {
setTimeout(function () {
gameAniRoot.play();
introAniRoot.gotoAndPlay('intoGame');
}, 1000);
//初始化分數
setTimeout(function () {
updateScore();
updateGameContent();
}, 2500);
setTimeout(function () {
// showError('轉盤內優惠公告訊息,
為台灣Pay振興五倍券專屬優惠,
詳情洽台灣Pay官方網站。');
showError('活動已結束,
獎品兌換期限至12/6。
敬請期待下次活動!');
}, 2800);
} else {
if (errorMsg == '請先加入 LINE 好友') {
setTimeout(function () {
alert('請先完成註冊,再重新進入遊戲');
liff.openWindow({
url: URL__REGISTER,
external: false
});
}, 300);
} else {
showError('系統訊息:
' + errorMsg);
$('.game__popout__close').click(function (e) {
liff.closeWindow();
});
}
}
}
function updateUserData() {
console.log('================== updateUserData ===================');
$.ajax({
type: "GET",
url: API__DOMAIN + "api2021/info/" + LINEID,
data: {
// LINEID: LINEID
},
dataType: "json",
success: function (response) {
if (response.succ) {
userInfo = response.info;
checkins = userInfo.roundinfo.checkins;
myScore = userInfo.playerinfo.gp;
////////////////////////////////////////////////////////////////////
//渲染coupon前
//調整顯示邏輯 只允許 LP = 1、2、3、5
var _blankGoodinfo = [
{ "id": 0, "lp": 1, "gp": 10, "issoldout": true, "isredeemed": false, "isnomoney": false, "canuse": false, "fromAPI": false },
{ "id": 0, "lp": 2, "gp": 20, "issoldout": true, "isredeemed": false, "isnomoney": false, "canuse": false, "fromAPI": false },
{ "id": 0, "lp": 3, "gp": 30, "issoldout": true, "isredeemed": false, "isnomoney": false, "canuse": false, "fromAPI": false },
{ "id": 0, "lp": 5, "gp": 50, "issoldout": true, "isredeemed": false, "isnomoney": false, "canuse": false, "fromAPI": false }
];
for (let index = 0; index < userInfo.goodinfo.length; index++) {
var _goodinfoData = userInfo.goodinfo[index];
//檢查是否有coupon被API隱藏
for (let blankIndex = 0; blankIndex < _blankGoodinfo.length; blankIndex++) {
if (_goodinfoData.lp == _blankGoodinfo[blankIndex].lp) {
//將blankGoodinfo替換為符合條件的userInfo.goodinfo
//加入fromAPI屬性
_goodinfoData.fromAPI = true;
_blankGoodinfo[blankIndex] = _goodinfoData;
}
}
}
//覆寫 userInfo.goodinfo
userInfo.goodinfo = _blankGoodinfo;
console.log('========= Set userInfo.goodinfo ===========');
console.log(userInfo.goodinfo);
/////////////////////////////////////////////////////////////////////
if (!isLogin) {
isLogin = true;
updateLogin();
} else {
// if (!isCoupon) initCoupon();
updateGameContent();
}
if (!isCoupon) initCoupon();
console.log(userInfo);
} else {
/*if (response.err == '請先加入 LINE 好友') {
isLogin = false;
} else {
showError(response.err);
}*/
isLogin = false;
errorMsg = response.err;
updateLogin();
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
console.log("Status: " + textStatus + ", Error: " + errorThrown);
showError('使用者資料連線錯誤:
' + "Status: " + textStatus + ", Error: " + errorThrown);
TweenMax.to('.loading', 0.3, { autoAlpha: 0 });
}
});
}
function getGameGp(_callback) {
// drawCount = Math.floor(Math.random() * 8);
// _callback();
$.ajax({
type: "POST",
url: API__DOMAIN + "api2021/game/" + LINEID,
data: {
name: name
},
dataType: "json",
success: function (response) {
console.log('================== response ===================');
console.log(response);
if (response.succ) {
currentScore = response.currentGameGp;
currentCheckinGp = response.currentCheckinGp;
myScore = response.gpAll;
console.log('本次轉盤點數為 : ' + response.currentGameGp);
console.log('本次簽到點數為 : ' + response.currentCheckinGp);
if (response.currentGameGp == -1) isComplete = false;
switch (currentScore) {
case 66:
drawCount = 0;
break;
case 1:
drawCount = 1;
break;
case 3:
drawCount = 2;
break;
case 6:
drawCount = 3;
break;
case 8:
drawCount = 4;
break;
case 0:
drawCount = 5;
break;
case 9:
drawCount = 6;
break;
case -1:
drawCount = 7;
break;
}
_callback();
} else {
// showError('今天已經轉過,
歡迎明天再來!
別忘了振興五倍券,
綁台灣Pay超優惠~');
showError('活動已結束,
獎品兌換期限至12/6。
敬請期待下次活動!');
isDrawing = false;
gameAniRoot.luckydraw_mc.mainSpin_mc.gotoAndPlay('stand');
// gameAniRoot.luckydraw_mc.mainCTA_mc.gotoAndPlay('stand');
gameAniRoot.luckydraw_mc.mainARR_mc.gotoAndPlay('stand');
gameAniRoot.luckydraw_mc.mainEffect_mc.flag_mc.gotoAndPlay('stand');
isComplete = true;
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
console.log("Status: " + textStatus + ", Error: " + errorThrown);
// alert('很抱歉,資料讀取錯誤 請稍後再試。');
showError('資料庫連線錯誤:
' + "Status: " + textStatus + ", Error: " + errorThrown);
TweenMax.to('.loading', 0.3, { autoAlpha: 0 });
}
});
}
function luckydrawStart() {
console.log('drawCount = ' + drawCount);
isDrawing = true;
// gameAniRoot.luckydraw_mc.mainSpin_mc.gotoAndPlay('rolling');
// gameAniRoot.luckydraw_mc.mainCTA_mc.gotoAndPlay('rolling');
// gameAniRoot.luckydraw_mc.mainARR_mc.gotoAndPlay('rolling');
// gameAniRoot.luckydraw_mc.mainEffect_mc.flag_mc.gotoAndPlay('rolling');
gameAniRoot.luckydraw_mc.mainSpin_mc.gotoAndPlay('rolling');
gameAniRoot.luckydraw_mc.mainSpin_mc.wheel_mc.isComplete = false;
setTimeout(function () {
gameAniRoot.luckydraw_mc.mainSpin_mc.wheel_mc.setComplete(drawCount);
}, 500);
// gameAniRoot.luckydraw_mc.mainSpin_mc.wheel_mc.setComplete(drawCount);
}
function luckydrawComplete() {
// isComplete = true;
gameAniRoot.luckydraw_mc.mainTitle_mc.gotoAndPlay('complete');
gameAniRoot.luckydraw_mc.mainSpin_mc.gotoAndPlay('complete');
gameAniRoot.luckydraw_mc.mainARR_mc.gotoAndPlay('complete');
gameAniRoot.luckydraw_mc.mainEffect_mc.flag_mc.gotoAndPlay('complete');
gameAniRoot.luckydraw_mc.mainCTA_mc.gotoAndPlay('complete');
if (drawCount == 7) {
//再轉一次
setTimeout(function () {
// luckydrawStart();
setTimeout(function () {
isComplete = false;
isDrawing = false;
gameAniRoot.luckydraw_mc.mainCTA_mc.gotoAndPlay('stand');
}, 1000);
if (currentCheckinGp !== 0) {
$('.main__pop').show();
$('.main__pop__overlayer').show();
popAniRoot.gotoAndPlay('into');
console.log('再轉一次');
popAniRoot.content_mc.a_icon.content_txt.text = 0;
popAniRoot.content_mc.b_icon.content_txt.text = currentCheckinGp;
// currentDaily++;
if (!isCheck) {
isCheck = true;
gameAniRoot.luckydraw_mc.dalylogin_mc['checkin_mc_' + checkins.length].alpha = 1;
}
popAniRoot.get_btn.score_txt.text = currentCheckinGp;
}
}, 300);
} else {
isDrawing = false;
$('.main__pop').show();
$('.main__pop__overlayer').show();
popAniRoot.gotoAndPlay('into');
popAniRoot.content_mc.a_icon.content_txt.text = currentScore;
popAniRoot.content_mc.b_icon.content_txt.text = currentCheckinGp;
currentScore += currentCheckinGp;
// currentDaily++;
if (!isCheck) {
isCheck = true;
gameAniRoot.luckydraw_mc.dalylogin_mc['checkin_mc_' + checkins.length].alpha = 1;
}
popAniRoot.get_btn.score_txt.text = currentScore;
isComplete = true;
}
}
function addScore(_number) {
myScore += _number;
updateScore();
}
function updateScore() {
$('.game__myScore').text(myScore);
}
function storeIntoComplete() {
// $('.game__store').show();
$('.game__store').show();
//init loadStore
TweenMax.set('.game__store', { autoAlpha: 0 });
TweenMax.to('.game__store', 0.3, { autoAlpha: 1 });
}
function initCoupon() {
isCoupon = true;
$('.video__close').click(function (e) {
e.preventDefault();
TweenMax.to('.video__popout', 0.3, { autoAlpha: 0 });
// $('.video__content').html('');
player.stopVideo();
});
//updateCoupon
updateCoupon();
}
function updateCoupon() {
console.log('============== updateCoupon ==============');
// console.log(userInfo.goodinfo);
$('.game__store__coupon').html('');
if (userInfo.goodinfo == '') {
console.log('goodinfo 初始狀態');
}
var _soldout = 0;
//////////////////////////////////////////////////////////////////////
//渲染coupon
for (let index = 0; index < userInfo.goodinfo.length; index++) {
var _coupon;
if (userInfo.goodinfo[index].lp < 5) {
_coupon = new couponItem(index, userInfo.goodinfo[index]);
} else {
var _isLock;
if ($.cookie('luckydraw.isVideoUnlock')) {
_isLock = false;
} else {
_isLock = true;
}
console.log('luckydraw.isVideoUnlock = ' + $.cookie('luckydraw.isVideoUnlock'));
//YOUTUBE LINK
_coupon = new couponItem(index, $.extend(userInfo.goodinfo[index], { lock: _isLock, video: 'mDD48KKCqYw' }));
}
}
}
function showPopout() {
$('.game__popout').show();
TweenMax.set('.game__popout', { autoAlpha: 0 });
TweenMax.to('.game__popout', 0.5, { autoAlpha: 1 });
}
/* function useCoupon(_number, _callback) {
var _tempScore = myScore;
if (_tempScore + _number < 0) {
alert('很抱歉,吉點不足。');
} else {
addScore(_number);
TweenMax.to('.game__popout', 0.3, { autoAlpha: 0 });
//call 打點API
//讀取Coupon新Data
setTimeout(function () {
//顯示成功與否
$('.game__popout__content .content').hide();
$('.game__popout__submit').hide();
$('.game__popout__content .content__result').show();
$('.game__popout__content .content__result__text').html('兌換完成
請至LINE錢包
查看點數
');
TweenMax.to('.game__popout', 0.5, { autoAlpha: 1 });
//Coupon更新自己狀態
_callback();
}, 500);
}
}*/
function useCoupon(_id, _number, _callback) {
addScore(_number);
TweenMax.to('.game__popout', 0.3, { autoAlpha: 0 });
$.ajax({
type: "POST",
url: API__DOMAIN + "api2021/redeem/" + LINEID + '/' + _id,
data: {
name: name
},
dataType: "json",
success: function (response) {
console.log('================== response ===================');
console.log(response);
if (response.succ) {
//顯示成功與否
$('.game__popout__content .content').hide();
$('.game__popout__submit').hide();
$('.game__popout__content .content__result').show();
$('.game__popout__content .content__result__text').html('兌換完成
請至LINE錢包
查看點數
');
showPopout();
//Coupon更新自己狀態
_callback();
updateUserData();
} else {
showError("兌換錯誤:
" + response.err);
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
console.log("Status: " + textStatus + ", Error: " + errorThrown);
// alert('很抱歉,資料讀取錯誤 請稍後再試。');
showError("連線錯誤:
" + "Status: " + textStatus + ", Error: " + errorThrown);
TweenMax.to('.loading', 0.3, { autoAlpha: 0 });
}
});
}
function showLoading() {
}
function showError(_msg) {
if (isAllSoldout) {
_msg = '本次活動已結束
敬請期待下次遊戲。';
}
//顯示成功與否
$('.game__popout__content .content').hide();
$('.game__popout__submit').hide();
$('.game__popout__content .content__result').show();
$('.game__popout__content .content__result__text').html('系統忙碌中
請稍後再試
');
showPopout();
if (_msg != undefined) {
$('.game__popout__content .content__result__text').html('' + _msg + '
');
}
}
//constructor
{
$(document).ready(function () {
init();
});
}
//public
return {
gameInto: function () {
console.log('gameInto');
gameInto();
},
luckydrawComplete: function () {
luckydrawComplete();
},
storeIntoComplete: function () {
storeIntoComplete();
},
storeCloseComplete: function () {
isStore = false;
},
showPopout: function (_clickHandle) {
showPopout();
popoutClickHandle = _clickHandle;
},
useCoupon: function (_id, _number, _callback) {
useCoupon(_id, _number, _callback);
},
}
};
var main = new main();