Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var AppCampaign = function () {
- var reset_cost = parseInt($('#buy-credits-button').attr('data-id'), 10);
- var user_credits = parseInt($('#user_credits').text(), 10);
- var waiting_fight = false;
- var try_count = 0;
- var timerId;
- var currentCampaign = $('.p-campaign').data('campaign'); // campaign name - кампания
- var currentScenario = $('.scenario').data('scenario'); // n - сценарий
- var currentPart = -1; // n - часть сценария
- var currentPostBattle = $('.p-campaign').data('postbattle'); // определяет postbattle
- // уменьшаем currentScenario на 1, так как нужно показать завершение прошлого сценария
- if(currentPostBattle) {
- currentScenario--;
- }
- var partTemplate = $('.scenario .part');
- var characterTemplate = $('.scenario .character');
- // В этом прекрасном массиве хранятся персонажи - кто где стоит и кто говорит [слева, справа, говорит]
- // Все картинки геров по умолчанию должны быть прилеплены к левой части экрана, зеркальное отражение автоматически.
- var characters = {};
- var BattleBackground = {}; // фон боя
- BattleBackground['campaign_01'] = [
- aune.image('p/campaign/campaign_01/globus.png'),
- aune.image('p/campaign/campaign_01/red.png'),
- aune.image('p/campaign/campaign_01/bar.png'),
- aune.image('p/campaign/campaign_01/fox.png'),
- aune.image('p/campaign/campaign_01/tubes.png'),
- aune.image('p/campaign/campaign_01/hole.png'),
- aune.image('p/campaign/campaign_01/brain.png'),
- ];
- characters['campaign_01'] = [
- // scenario 0
- [
- [
- [['sled'], ['tyrrano'], 'right'],
- [['sled'], ['tyrrano'], 'left'],
- [['sled'], ['jeff'], 'right'],
- [['sled-jeff'], ['tinsel'], 'left'],
- [['sled-jeff'], ['tinsel'], 'right']
- ],
- [
- [['sled'], ['tinsel'], 'left'],
- [['sled'], ['tinsel'], 'right'],
- [['jeff'], ['tinsel'], 'left'],
- [['jeff'], ['tinsel'], 'right'],
- [['sled'], ['tinsel'], 'left']
- ]
- ],
- // scenario 1
- [
- [
- [['sled'], [''], 'left'],
- [['sled'], ['simur'], 'right'],
- [['sled'], ['simur'], 'left']
- ],
- [
- [['sled-jeff'], ['tinsel'], 'left'],
- [['sled-jeff'], ['tinsel'], 'right'],
- [['sled-jeff'], ['tinsel'], 'left']
- ]
- ],
- // scenario 2
- [
- [
- [['tinsel'], ['paddy'], 'left'],
- [['tinsel'], ['paddy'], 'right'],
- [['jeff'], ['paddy'], 'left']
- ],
- [
- [['sled'], ['roxy'], 'right'],
- [['sled'], ['roxy'], 'left']
- ]
- ],
- // scenario 3
- [
- [
- [['sled-jeff'], ['arlen'], 'right'],
- [['sled-jeff'], ['arlen'], 'left']
- ],
- [
- [['sled-jeff'], ['arlen'], 'right'],
- [['sled-jeff'], ['arlen'], 'left'],
- [['sled-jeff'], ['arlen'], 'right']
- ]
- ],
- // scenario 4
- [
- [
- [['sled'], ['gladis'], 'right'],
- [['sled'], ['gladis'], 'left'],
- [['sled'], ['gladis'], 'right']
- ],
- [
- [['sled', 'tinsel'], ['gladis'], 'right'],
- [['sled', 'tinsel'], ['gladis'], 'left'],
- [['sled', 'tinsel'], ['gladis'], 'right'],
- [['tinsel'], ['gladis'], 'right'],
- [['tinsel'], ['gladis'], 'left'],
- [['tinsel'], ['gladis'], 'right'],
- [['sled'], [''], 'left']
- ]
- ],
- // scenario 5
- [
- [
- [['sled-jeff'], ['tinsel'], 'left'],
- [['sled-jeff'], ['tinsel'], 'right']
- ],
- [
- [['sled'], ['murphy'], 'right'],
- [['sled'], ['murphy'], 'left'],
- [['sled'], ['murphy'], 'right']
- ]
- ],
- // scenario 6
- [
- [
- [[''], ['frank'], 'right'],
- [['sled-jeff'], ['frank'], 'left'],
- [['sled-jeff'], ['frank'], 'right']
- ],
- [
- [['sled'], ['frank'], 'right'],
- [['sled'], ['roy'], 'right'],
- [['sled'], ['roy'], 'left'],
- [['sled'], ['roy'], 'right'],
- [['sled'], ['jeff-tinsel'], 'left'],
- [['sled'], ['jeff-tinsel'], 'right'],
- [['sled'], ['jeff-tinsel'], 'right'],
- [['sled'], ['jeff-tinsel'], 'left']
- ]
- ]
- ];
- var initUI = function() {
- console.log('AppCampaign init... current scenario: ' + currentScenario);
- loadBattleScripts();
- $('#play-campaign').click( function() {
- initScenario();
- });
- $('.button-next').click( function() {
- nextPart();
- });
- $(document).on('click', '#fight-button', function(event) {
- waitingBattle();
- });
- if(currentPostBattle) {
- initScenario();
- }
- // для тестов до/после боя
- $('.test-container .before').on('click', function () {
- showTest(0);
- });
- $('.test-container .after').on('click', function () {
- showTest(1);
- });
- // Покупка жизней за кредиты
- $("#buy-credits-button").click( function() {
- var buy = confirm("Вы действительно хотите заплатить " + reset_cost + " кредитов за досрочное восстановление жизней?");
- console.log('Покупаем...');
- if (buy) {
- buyLife();
- }
- });
- // Покупка за реальные деньги
- $("#campaign_reset_cooldown").click( function() {
- buyLifeXsolla($(this).attr('id'));
- });
- // Призы
- $("#show-prize-button").click( function() {
- App.openModal($("#show-prize"));
- });
- };
- var waitForCampaignBattleScripts = function (){
- console.log('Loading battle scripts...');
- if(typeof window.frames[0].frameElement.contentWindow.start_campaign != "function"){
- setTimeout(waitForCampaignBattleScripts, 300);
- } else {
- return true;
- }
- };
- // Показать слайды для тестовых просмотров
- var showTest = function (before_after) {
- currentScenario = $('.test-container option:selected').val();
- currentPart = -1;
- currentPostBattle = before_after;
- initScenario();
- };
- // Определяем текущий сценарий, показываем его первую часть
- var initScenario = function () {
- $('.p-campaign').hide();
- $('.scenario').css('display', 'flex');
- nextPart();
- };
- // Возвращаемся назад в главное окно из сценария
- var backFromScenario = function () {
- $('.p-campaign').show();
- $('.scenario').css('display', 'none');
- $('#play-campaign').hide();
- $('#fight-button').show();
- };
- // Скрываем прочитанную часть, заполняем следующую, показываем следующую
- var nextPart = function () {
- partTemplate.hide();
- cleanPart();
- currentPart++;
- // Существует ли текущий currentPart
- if(currentPart <= characters[currentCampaign][currentScenario][currentPostBattle].length-1) {
- fillPart(currentPart,currentPostBattle);
- partTemplate.show();
- } else {
- backFromScenario();
- // Если это был currentPostBattle, то обнуляем все
- if(currentPostBattle) {
- window.location.replace("/"+currentCampaign);
- }
- }
- };
- // Очищаем часть (классы картинок, текст)
- var cleanPart = function () {
- partTemplate.find('.character.left').remove();
- partTemplate.find('.character.right').remove();
- partTemplate.find('.speech-bubble').removeClass().addClass('speech-bubble');
- partTemplate.find('.speech-bubble .part-text').html('');
- };
- // Заполняем часть - выставляем правильные картинки и текст
- var fillPart = function (part, before_after) {
- console.log('currentCampaign:'+currentCampaign);
- console.log('currentScenario:'+currentScenario);
- console.log('part:'+part);
- // flipCharacter(currentPart);
- // Особенности для некоторых частей кампании
- if(currentCampaign == 'campaign_01' && currentScenario == 0 && before_after == 0 && part == 0 ) {
- partTemplate.addClass('part-start');
- }
- if(currentCampaign == 'campaign_01' && currentScenario == 0 && before_after == 0 && part == 3 ) {
- partTemplate.removeClass('part-start');
- }
- if(currentCampaign == 'campaign_01' && currentScenario == 6 && before_after == 1 && part == 4 ) {
- partTemplate.addClass('part-end');
- }
- $.each( characters[currentCampaign][currentScenario][before_after][part][0], function( key, value ) {
- characterTemplate.clone().addClass('left').addClass('left'+key).addClass(value).appendTo(partTemplate);
- });
- $.each( characters[currentCampaign][currentScenario][before_after][part][1], function( key, value ) {
- characterTemplate.clone().addClass('right').addClass(value).appendTo(partTemplate);
- });
- partTemplate.find('.speech-bubble').addClass(characters[currentCampaign][currentScenario][before_after][part][2]);
- // Вставляем текст из transl
- var scenario = transl['campaign'][currentCampaign]['scenario_' + currentScenario];
- if(scenario && scenario[before_after][part]) {
- partTemplate.find('.speech-bubble .part-text').html(scenario[before_after][part]);
- }
- };
- var waitingBattle = function() {
- $.ajax({
- url: '/'+currentCampaign+'/',
- data: {'waiting_battle': 'yes'},
- type: 'post',
- beforeSend: function() {
- $('.p-campaign #fight-button').addClass('animated pulse');
- setTimeout(function () {
- $('.p-campaign #fight-button').css('opacity', 0);
- }, 150);
- },
- success: function(data) {
- var data = JSON.parse(data);
- if(data.error == 1) {
- // можно еще раз попытаться встать в очередь
- waiting_fight = false;
- // вывести ошибку
- console.log(data);
- } else {
- console.log('Ищем бота...');
- try_count = 0;
- timerId = setInterval(checkFight, 1000);
- }
- }
- });
- };
- var checkFight = function() {
- $.ajax({
- url: '/'+currentCampaign+'/',
- data: {'search_battle': 'yes'},
- type: 'post',
- beforeSend: function() {
- console.log('tic tac');
- },
- success: function(data) {
- var data = JSON.parse( data );
- if( data.error == 1 ) {
- ++try_count;
- if( try_count >= 3600 ) {
- $("#fight-button").show();
- clearInterval(timerId);
- try_count = 0;
- }
- } else {
- // console.log(data);
- console.log('KlanzJS');
- clearInterval(timerId);
- $('#battle-container').fadeIn();
- if(waitForCampaignBattleScripts()) {
- window.frames[0].frameElement.contentWindow.start_campaign(data.post_combat_url, BattleBackground[currentCampaign][currentScenario]);
- }
- }
- }
- });
- };
- // Покупка жизней за кредиты
- var buyLife = function() {
- if(user_credits < reset_cost) {
- alert('У вас недостаточно кредитов для покупки жизней!');
- } else {
- $.ajax({
- url: '/'+currentCampaign+'/',
- data: {'buy_life': 'yes'},
- type: 'post',
- success: function(json_data) {
- console.log("Campaign hearts bought: " + json_data);
- alert('Жизни куплены. Узнайте чем закончится история кампании!');
- document.location = '/' + currentCampaign + '/';
- }
- });
- }
- };
- var buyLifeXsolla = function (sku) {
- $.ajax({
- url: '/xsolla_item_selector/',
- data: {'sku': sku },
- type: 'post',
- beforeSend: function() {
- },
- error: function (jqXHR, exception) {
- var msg = '';
- if (jqXHR.status === 0) {
- msg = 'Not connect.\n Verify Network.';
- } else if (jqXHR.status == 404) {
- msg = 'Requested page not found. [404]';
- } else if (jqXHR.status == 500) {
- msg = 'Internal Server Error [500].';
- } else if (exception === 'parsererror') {
- msg = 'Requested JSON parse failed.';
- } else if (exception === 'timeout') {
- msg = 'Time out error.';
- } else if (exception === 'abort') {
- msg = 'Ajax request aborted.';
- } else {
- msg = 'Uncaught Error.\n' + jqXHR.responseText;
- }
- console.log(msg);
- },
- success: function(data) {
- try {
- var token = JSON.parse( data );
- } catch(e) {
- console.log(data);
- return;
- }
- var options = {
- access_token: token,
- host: 'secure.xsolla.com'
- //sandbox: true
- };
- var s = document.createElement('script');
- s.type = "text/javascript";
- s.async = true;
- s.src = "//static.xsolla.com/embed/paystation/1.0.7/widget.min.js";
- s.addEventListener('load', function (e) {
- console.log('Инициализируем XPay виджет...');
- XPayStationWidget.init(options);
- console.log('Открываем XPay виджет...');
- XPayStationWidget.open();
- }, false);
- var head = document.getElementsByTagName('head')[0];
- head.appendChild(s);
- }
- });
- };
- return {
- init: function () {
- initUI();
- }
- };
- }();
- if ($('.p-campaign').length){
- AppCampaign.init();
- }
Add Comment
Please, Sign In to add comment