let timeOfTempRun = 0,
minimizeRun = 1,
winResult = null;
// gọi chạy khi click
run(function () {
runSlowToStop(winResult);
});
// Hàm chạy đệ quy khi nào có result sẽ dừng
function run(callback) {
runWheel360(function () {
timeOfTempRun++;
if (winResult != null && timeOfTempRun >= minimizeRun) callback();
else run(callback);
});
}
// chạy theo 1 vòng 360
function runWheel360(callback) {
angle += 3600;
g.animate(
{
transform: "r" + angle + "," + cx + "," + cy,
},
(3600 * 1000) / 360,
mina.linear,
function () {
if (angle % 360 == 0) {
console.log(`Vòng thứ ${timeOfTempRun + 1}`);
callback();
} else {
runWheel360(callback);
}
}
);
}
// Quay tới kết quả của vòng
function runSlowToStop(winResult) {
const productId = _.get(winResult, "id");
// log spin data
$.ajax({
url: `${baseURL}/api/services/app/externals/spinData`,
type: "POST",
data: JSON.stringify(products),
contentType: "application/json-patch+json",
dataType: "json",
headers: defaultHeader,
async: true,
success: function (sp) {},
error: function (httpRequest, textStatus, errorThrown) {},
});
var winProductIndex = _.findIndex(products, (item) => {
return item.id == productId;
});
if (winProductIndex < 0) {
showMessage(
"Kết quả quay thưởng không phù hợp!",
"success",
"result-prize"
);
pauseAudio();
return;
}
var angleOfWinProduct =
winProductIndex * actual_angle + 270 + actual_angle / 2;
var newAngle = angleOfWinProduct + angle;
g.animate(
{
transform: "r" + newAngle + "," + cx + "," + cy,
},
2000,
mina.linear,
function () {
let textStop = _.get(winResult, "contentName");
let thumbnailRewardUrl = _.get(
winResult,
"thumbnailRewardUrl",
"opened.png"
);
let isGoodLuck = _.get(winResult, "isGoodLuck", true);
$("#messageModal .modal-body").css({
background: `url("${thumbnailRewardUrl}") center center no-repeat`,
backgroundSize: "cover",
});
$("#customerName").text(dataFromApp["customerName"]);
$("#customerPhone").text(dataFromApp["customerPhone"]);
const prizeName =
isGoodLuck == true
? `Chúc mừng bạn đã trúng ${textStop}`
: `Chúc mừng bạn đã trúng sản phẩm ${textStop}`;
showMessage(prizeName, "success", "result-prize win");
g.stop();
pauseAudio();
}
);
}