-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscript.js
107 lines (99 loc) · 4.73 KB
/
script.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
// Задания квеста
const tasks = [
{ id: 1, name: 'Find the Secret Key to Enter', reward: '10 DEV tokens' },
{ id: 2, name: 'Decrypt the Code on the Blockchain Wall', reward: '15 DEV tokens' },
{ id: 3, name: 'Navigate the Crypto Tunnels', reward: '20 DEV tokens' },
{ id: 4, name: 'Solve the Riddle of the Ethereum Labyrinth', reward: '25 DEV tokens' },
{ id: 5, name: 'Master the Bitcoin Puzzle', reward: '30 DEV tokens' }
];
// Функция для отображения заданий на странице tasks.html
function displayTasks() {
const taskList = document.querySelector('#tasks ul');
tasks.forEach(task => {
const taskItem = document.createElement('li');
taskItem.textContent = `${task.name} - Reward: ${task.reward}`;
taskList.appendChild(taskItem);
});
}
// Функция для обработки пожертвований
function handleDonation(amount, currency) {
console.log(`Received ${amount} ${currency} donation.`);
checkTaskUnlock(amount);
}
// Функция для проверки разблокировки следующего задания
function checkTaskUnlock(amountDonated) {
const currentTotal = getTotalDonations(); // Получаем общую сумму пожертвований
const nextTaskCost = 50; // Стоимость разблокировки следующего задания
if (currentTotal >= nextTaskCost) {
unlockNextTask();
}
}
// Функция для разблокировки следующего задания
function unlockNextTask() {
const nextTaskIndex = tasks.length + 1;
const newTask = { id: nextTaskIndex, name: `Task ${nextTaskIndex}: New Challenge`, reward: `${nextTaskIndex * 5} DEV tokens` };
tasks.push(newTask);
displayTasks(); // Перерисовываем список заданий
}
// Функция для получения общей суммы пожертвований
function getTotalDonations() {
// Ваш код для получения общей суммы пожертвований
return 100; // Пример, замените на реальную логику
}
// Обработчик события загрузки страницы
document.addEventListener('DOMContentLoaded', function() {
// Отображаем задания при загрузке страницы tasks.html
if (document.querySelector('#tasks')) {
displayTasks();
}
// Обработчик события для кнопки "Donate via Beam Wallet" на donate.html
const beamWalletButton = document.querySelector('#beamWallet');
if (beamWalletButton) {
beamWalletButton.addEventListener('click', function(event) {
event.preventDefault();
const donationAmount = 50; // Сумма пожертвования для разблокировки задания
const currency = 'USD'; // Валюта пожертвования
handleDonation(donationAmount, currency);
});
}
});
// Функция для сохранения прогресса в файл JSON
function saveProgress(progressData) {
fetch('progress.json', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(progressData)
})
.then(response => {
if (!response.ok) {
throw new Error('Ошибка сохранения данных');
}
return response.json();
})
.then(data => {
console.log('Данные успешно сохранены:', data);
})
.catch(error => {
console.error('Ошибка сохранения данных:', error);
});
}
// Пример использования: сохранение данных о завершении задания
function handleTaskCompletion(taskId) {
// Предположим, что taskId - это id завершенного задания
let progressData = {
[`task${taskId}`]: true // Устанавливаем значение завершенного задания в true
};
saveProgress(progressData); // Вызываем функцию сохранения прогресса
}
// Загрузка данных о прогрессе из файла JSON
fetch('progress.json')
.then(response => response.json())
.then(data => {
console.log('Загруженные данные о прогрессе:', data);
// Здесь вы можете использовать данные для отображения текущего прогресса игрока
})
.catch(error => {
console.error('Ошибка загрузки данных:', error);
});