PHP Classes

File: js/miner.js

Recommend this page to a friend!
  Classes of Rodrigo Faustino   Tamagoshi PHP Cryptocurrency Miner Virtual Pet   js/miner.js   Download  
File: js/miner.js
Role: Auxiliary data
Content type: text/plain
Description: Auxiliary data
Class: Tamagoshi PHP Cryptocurrency Miner Virtual Pet
Game to manage a cryptocurrency miner pet
Author: By
Last change:
Date: 8 months ago
Size: 5,068 bytes
 

Contents

Class file image Download
const minerTemplate = ` <div> <button class="button" v-if="showSyncButton" @click="syncData">Salvar no servidor</button> <div>Tempo para restaurar CPU: {{ formatarTempoRestauracao() }}</div> <div class="column"> <div class="cardb"> <div class="circular-progress"> <svg viewBox="0 0 36 36" class="circular-chart"> <path class="circle-bg" d="M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831" /> <path class="circle" stroke-dasharray="0, 100" :stroke-dasharray="(capacidadeMineracao / 100) * 100 + ', 100'" d="M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831" /> <text x="18" y="13" class="label">CPU</text> <text x="18" y="20.35" class="percentage"> {{ capacidadeMineracao }}% </text> </svg> </div> </div> </div> </div> `; import eventBus from './event-bus.js'; const miner = new Vue({ el: '#miner', template: minerTemplate, data: { nome: 'Minerador', capacidadeMineracao: 100, energia: 100, equipamentos: [], tempoRestauracao: 12 * 60 * 1000, // 24 horas em milissegundos showSyncButton: false, }, methods: { formatarTempoRestauracao() { const horas = Math.floor(this.tempoRestauracao / (60 * 60 * 1000)); const minutos = Math.floor((this.tempoRestauracao % (60 * 60 * 1000)) / (60 * 1000)); const segundos = Math.floor((this.tempoRestauracao % (60 * 1000)) / 1000); return `${horas}h ${minutos}m ${segundos}s`; }, atualizarTempoRestauracao() { this.tempoRestauracao -= 1000; if (this.tempoRestauracao <= 0) { this.tempoRestauracao = 12 * 60 * 1000; this.restaurarCapacidadeMineracao() } }, restaurarCapacidadeMineracao() { this.capacidadeMineracao = 100; }, minerar(objeto) { //console.log('Saldo:', objeto.saldo, 'Dormindo:', objeto.dormindo); if (!objeto.dormindo) { let incrementoSaldo = (this.capacidadeMineracao / 100); let decrementoCapacidade = Math.max(0, this.capacidadeMineracao / 100); objeto.saldo = (Math.round(objeto.saldo * 1000) + Math.round(incrementoSaldo * 1000)) / 1000; this.capacidadeMineracao = (Math.round(this.capacidadeMineracao * 1000) - Math.round(decrementoCapacidade * 1000)) / 1000; eventBus.emit('atualizar-saldo', objeto.saldo); } this.atualizarTempoRestauracao(); this.salvarEstado(); }, salvarEstado() { const dataToSave = { pessoa: this.pessoa, miner: this.miner, tempoRestauracao: this.tempoRestauracao, diasTristes: this.diasTristes, humor: this.humor, dormindo: this.dormindo, conquistas: this.conquistas, capacidadeMineracao:this.capacidadeMineracao }; localStorage.setItem('appState', JSON.stringify(dataToSave)); }, restaurarEstado() { const savedState = localStorage.getItem('appState'); if (savedState) { Object.assign(this.$data, JSON.parse(savedState)); eventBus.emit('pessoa-restaurar-dados', JSON.parse(savedState)); } }, minerBarColor(saldo) { if (saldo <= 25) { return "red"; } else if (saldo <= 50) { return "orange"; } else if (saldo <= 75) { return "yellow"; } else { return "green"; } }, salvarDadosPessoa(dadosPessoa) { this.pessoa = dadosPessoa; this.salvarEstado(); }, async syncData() { const email = localStorage.getItem('email'); const appState = localStorage.getItem('appState'); const dataToSync = { email: email, appState: appState, }; try { const response = await fetch('backend/api.php', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(dataToSync) // Modifique esta linha }); if (response.ok) { alert("Dados compartilhados com sucesso!"); } else { alert("Erro ao compartilhar dados com o servidor."); } } catch (error) { alert("Erro ao compartilhar dados com o servidor."); } }, }, created() { // Registre os ouvintes de eventos do EventBus eventBus.on("minerar", this.minerar); eventBus.on("pessoa-emitir-dados", this.salvarDadosPessoa); }, mounted() { this.restaurarEstado(); const savedEmail = localStorage.getItem("email"); if (savedEmail) { this.showSyncButton = true; } setInterval(() => { this.restaurarCapacidadeMineracao(); }, 12 * 60 * 1000); // 24 horas em milissegundos 24 * 60 * 60 * 1000); }, });