class Features { textData = { 'newCombats.trainingModal.nextButton': 'Далее', 'newCombats.trainingModal.closeButton': 'Закрыть', 'newCombats.trainingModal.step1.title': 'Добро пожаловать в игру!', 'newCombats.trainingModal.step1.text': 'Мы поможем Вам адаптироваться в нашей браузерной онлайн игре.\nСуть игры, заключается стремлении стать непобедимым бойцом в игре среди других персонажей!\nСделать это сможет каждый игрок, путём усиления своего персонажа, предметов улучшенного качества, интеграции рун и чарок в предметы и других, интересных усилений.\nНа общем фоне слева, Вы можете наблюдать своего персонажа ( слева ), на котором показаны пустые слоты под предметы, его параметры, ваши деньги, победы/поражения, а с права, общее окно разных локаций, таких как: Магазин, Ремонтная Мастерская, Здание лото, Здание Бойцовского Клуба где проходят поединки, Почта, Переход на Страшилкину Улицу и т.д.\nДалее, мы подскажем Вам, для чего служит нижний фрейм.', 'newCombats.trainingModal.step2.title': 'Чат и смайлы', 'newCombats.trainingModal.step2.text': 'Данное окно предназначено для общения между игроками в личных сообщениях, получения информативно-системных сообщений, общением между соклановцами, либо обычного общения в общем чате, к примеру, в виде торговли предметами.\nЧтобы написать сообщения, нажмите на поле ввода, введите Ваш текст и нажмите "Enter" либо кнопку отправки сообщения.\nДополнительно, к любому вашему сообщению вы можете прикрепить до 3-х смайлов.\nМы очень ценим стремление людей в общении, поэтому пожалуйста, не оскорбляйте участников игры в чате, будьте вежливы и люди вам ответят тем же.\nНу а для ярых нарушителей правил общения в чате, приготовлены соответствующие наказания, которые ограничат на время возможность отправки сообщений в чат.', 'newCombats.trainingModal.step3.title': 'Список онлайна', 'newCombats.trainingModal.step3.text': 'Каждый человек, может отправлять персональные сообщения, на игровом слэнге - приваты.\nСделать это можно дважды кликнув по никнейму игрока из текущего списка онлайна либо из общего чата, привата, кланового чата.\nВсе люди, которые отображены, это реальные люди, которые находятся в игре.\nДополнительно, если это Вам необходимо, Вы можете отключить функцию показа "всех игроков в игре" нажав соответствующу опцию ( галочку ), в самом конце списка онлайна.', 'newCombats.trainingModal.step4.title': 'Начало игры', 'newCombats.trainingModal.step4.text': 'В игре существует 9 классов персонажей, 5 воинских и 4 магических.\n Классы определяются по предметам и параметрам персонажа, а именно:\n Силач ( Топоры ) - Сила.\n Уворот ( Кинжалы ) - Ловкость.\n Крит ( Мечи ) - Интуиция.\n Танк ( Дубина и Щит ) - Выносливость. \n Критоуворот ( Кинжалы ) - Интуиция и Ловкость.\n Маги "стихий" ( Посохи ) - Интеллект и Мудрость.\n Дополнительно, каждый предмет имеет "требования", по которым легко понять и определить на какой именно класс, этот предмет и если у Вас не хватает параметров, либо они распределены неверно, Вы сможете перераспределить параметры на 2 этаже здания "Бойцовский Клуб". \n \nКаждый Класс, Воинский или Магический, конкурирует с другим классом, он может быть сильнее или слабее, это уже определяет сам игрок и то, насколько хорошие предметы у него имеются, а так же то, какие чарки и руны в них интегрированы.\n Так же, каждый класс, вонский или магический, может использовать приёмы в бою, выбрать их можно во вкладке "Умения" > "Приёмы". ', 'newCombats.trainingModal.step5.title': 'Спасибо за ознакомление с первым этапом обучения!', 'newCombats.trainingModal.step5.text': 'Мы дарим Вам сундук с предметами, исходя из выбранного Вами класса персонажа при регистрации! Найти его можно во вкладке "Инвентарь > Прочее".\nОткрывайте, надевайте предметы, отправляйтесь в здание "Бойцовского Клуба", а далее в "Зал Воинов" и начните ваши первые сражения нажав по вкладке "поединки", создавайте хаотический тип сражений и начните свой путь, путь настоящего воина, ну или мага!\nНо будьте внимательны, срок годности предметов в сундуке составляет 10 дней, по истечению которых, предметы будут сломаны и вы не сможете их использовать!', }; memoCountSteps = 0; constructor() {} getTextForModal(key) { if (!key) { return '[Отсутствует текст].'; } return this.textData[key] || `[${key}].`; } getCountSteps() { if (this.memoCountSteps > 0) { return this.memoCountSteps; } let countSteps = 1; while (true) { if (!this.textData[`newCombats.trainingModal.step${countSteps}.title`]) { countSteps -= 1; break; } countSteps++; } this.memoCountSteps = countSteps; return countSteps; } } class TrainingCookie { static cookieName = 'registrationModal'; static isExistCookie() { let matches = document.cookie.match( new RegExp('(?:^|; )' + this.cookieName.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + '=([^;]*)') ); return matches ? decodeURIComponent(matches[1]) : undefined; } static deleteCookie() { document.cookie = `${this.cookieName}=true; max-age=0`; } } class ModalLocalStorage { stepItemName = 'trainingModalCurrentStep'; hideRegistrationModal = 'hideRegistrationModal'; develop = 'trainingModalDevelop'; constructor() {} get getStep() { return localStorage.getItem(this.stepItemName); } get getHideRegistrationModal() { return localStorage.getItem(this.hideRegistrationModal); } get isDevelop() { return localStorage.getItem(this.develop); } set changeStep(step) { localStorage.setItem(this.stepItemName, step); } addHideRegistrationModal() { localStorage.setItem(this.hideRegistrationModal, true); } removeData(name) { if (name === 'step') { localStorage.removeItem(this.stepItemName); } else if (name === 'hide') { localStorage.removeItem(this.hideRegistrationModal); } } } class ModalWindowRender { featuresService = undefined; localStorageService = undefined; externalStylesService = undefined; step = 1; $modalMain = document.createElement('div'); $step = null; $title = null; $text = null; $button = null; constructor(featuresService, localStorageService, externalStylesService) { this.featuresService = featuresService; this.localStorageService = localStorageService; this.externalStylesService = externalStylesService; } createModal() { this.$modalMain.id = 'trainingModalMain'; this.$modalMain.innerHTML = `