Site/Game for Harvest Hackathon Haunted House.
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

cleans up the secrets

+53 -50
+53 -50
src/routes/game/+page.svelte
··· 5 5 6 6 import { getDatabase, ref, update, get, onValue } from 'firebase/database'; 7 7 8 - // TODO: Replace the following with your app's Firebase project configuration 9 8 // See: https://firebase.google.com/docs/web/learn-more#config-object 10 9 const firebaseConfig = { 11 - databaseURL: 'https://harvest-hackathon-default-rtdb.firebaseio.com/', 12 - 10 + databaseURL: process.env.FIREBASE_DATABASE_URL!, 13 11 type: 'service_account', 14 - project_id: 'harvest-hackathon', 15 - private_key_id: 'cdab07eaa2cbfaed410aafbd27cf2e83b619d370', 16 - private_key: 17 - '-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCWscVmPwBcUzCh\nYbpMos1AZgoyBgQiAB6rM3nOCvCuZM70tfZUtvRAQgBhwtNq3l1qHsDVt1akV64c\nQCzw/hLiNu9Qb3PyyQAdeity8hNUb9iQB2yWg4dTlHm5vOLvlGcNT0wYysC1PMc9\nmuPBissV4RhoWUmyI9LRT5m002K0gmYOxqkvVvdL9Gfun6wUEIQYH/XsOgYPRMmn\nhTNKC3b56MGjKNGbwOJYlwWviFDvCJpRrVeiBwi0VMX425ktzFdRtNQown1CVBZ9\nchzCgmcxL+Pv0mPIbymPbGcCKI6q8qXkTnk8/4acKgYJk1J1yAtx1QQoaFUMN9KR\nBlu34q8jAgMBAAECggEAHwnFkU43qkx+Lzc8Uo2TvghmYDBKCKDCsFt9YplxQlJE\nKDYUYxV90IBnqLsipZfgYLut1zcYcugWVf5H42lJhWtwNj6GgMKysd+YdGf04Ebb\nMas9y/CSXn4t5jpH+bW01hJ3p4GXWJ0IoqE0+Qe31a1TxCZj3fuv7+m3zH1fjrMd\n/pyTTHmUCap4QD5OpCwbLk49WalEuTxe0QyDwH1U6DrWj/ECBiKodeB/VW7YJmc7\n263Bfc+/C7feSJozbqXmFbWTYVO30qlnJCXLtuhknID9ILdgpkuVQCBlsRXoCAAn\ntV0FzC9bqxBKRcZSR8ek8JpIbVUpoB/lgFcYOyZfIQKBgQDPj2KOxPQCwACohcV6\n0j257Mi0TBKdaZ2pLqFmSKanIX4LSByJY95po/GQwpaaZGlc2Hj/jUNJZ1wnWZ55\nhG2og8Jg0t4LWFHxNwO5FOVqxq6w9A5ZS7gi7jOAIamPW5R5n1Bq0bKSWrTQ7zT1\n5C4ckRjStVFPf9PUF3tz1vVaoQKBgQC53PaemeV4/n3VfYhZ0HboIFVH8V6eR7xs\ncqTg4+bKfJB5yRAh9ol8Tu/8R9S2wUDMcXvIQhsJZdrfdGWfeFbAQoDbiA2YqXm2\n8eLY1L7gT884DX9+h/nNERqZYGKauJeOqPGEcb7rAv9GuGcae6j/J5p2laSAe+jX\ni2MMoNeXQwKBgEPJtIqkUH1Fb/GaHvEKERbT+ojH/5xhjhhfHl9lgug6zAurNYa5\nkz41SQPaSY2LFc449Ouhm0Qx+arwXg2Z7qaGwckVlWdnJPv+17xu0q6YzR0F2FnZ\nnP3rhe5nEBW99zPxkDYS3ptl/H/wX/+e0mCKEu1eQnwQZ4JxWORwZBmBAoGAYsT8\nvd3Up06+ehRiwC/a8JI2H6wx9vTyOcNWwTf7LoGxmTZy/0lvWILuX2egr5nVII/y\nEsKmcYESJgtJ8cvWdgchSQhtCUKOrtyuC0JLSRLAcO4jYY9K/WHoe7dPzx7nU2WO\nKy7zIRqPo/pcuCMc9LMMD5aIO8sdOmYVNeHHj9cCgYEAtHWPZ8rofC/Cs0v6s/cX\nW6qXx+Je+1iH5sFvaohxgneQ0C4chtBI2fSntvJ0A4LB2pbq9WOYNZ53RBbwewSo\nwk2rCpyuPAjBtbWzIGfgOoQRDfQK4jrbMcuxjjIH9JSqnyGth2xzJEfVGEDo2Gqw\n36XAbeHQ+6c4wsbCGZgU6ig=\n-----END PRIVATE KEY-----\n', 18 - client_email: 'firebase-adminsdk-786st@harvest-hackathon.iam.gserviceaccount.com', 19 - client_id: '111876862146970250925', 12 + project_id: process.env.FIREBASE_PROJECT_ID!, 13 + private_key_id: process.env.FIREBASE_PRIVATE_KEY_ID!, 14 + private_key: process.env.FIREBASE_PRIVATE_KEY!.replace(/\\n/g, '\n'), 15 + client_email: process.env.FIREBASE_CLIENT_EMAIL!, 16 + client_id: process.env.FIREBASE_CLIENT_ID!, 20 17 auth_uri: 'https://accounts.google.com/o/oauth2/auth', 21 18 token_uri: 'https://oauth2.googleapis.com/token', 22 19 auth_provider_x509_cert_url: 'https://www.googleapis.com/oauth2/v1/certs', 23 - client_x509_cert_url: 24 - 'https://www.googleapis.com/robot/v1/metadata/x509/firebase-adminsdk-786st%40harvest-hackathon.iam.gserviceaccount.com', 20 + client_x509_cert_url: process.env.FIREBASE_CLIENT_CERT_URL!, 25 21 universe_domain: 'googleapis.com' 26 22 }; 27 23 ··· 31 27 // Initialize Realtime Database and get a reference to the service 32 28 const db = getDatabase(app); 33 29 34 - let currentHand = "" 35 - let otherHand = "" 30 + let currentHand = ''; 31 + let otherHand = ''; 36 32 37 - let gameTimer = 0 33 + let gameTimer = 0; 38 34 39 35 onMount(async () => { 40 - let gameState = (await get(ref(db, '/'))).val() 36 + let gameState = (await get(ref(db, '/'))).val(); 41 37 42 - console.log("lastactive", gameState.leftHand.sessionLastActive) 43 - console.log( new Date(Date.now() - 5000)) 44 - currentHand = (new Date(gameState.leftHand.sessionLastActive) > new Date(Date.now() - 5000)) ? "rightHand" : "leftHand" 45 - otherHand = (currentHand == "leftHand") ? "rightHand" : "leftHand" 38 + console.log('lastactive', gameState.leftHand.sessionLastActive); 39 + console.log(new Date(Date.now() - 5000)); 40 + currentHand = 41 + new Date(gameState.leftHand.sessionLastActive) > new Date(Date.now() - 5000) 42 + ? 'rightHand' 43 + : 'leftHand'; 44 + otherHand = currentHand == 'leftHand' ? 'rightHand' : 'leftHand'; 46 45 47 46 window.addEventListener('mousemove', (e) => { 48 47 const x = e.clientX; ··· 72 71 hand!.style.top = data.y - 50 + 'px'; 73 72 }); 74 73 74 + setInterval(() => { 75 + update(ref(db, currentHand), { 76 + sessionLastActive: new Date() 77 + }); 78 + }, 500); 75 79 76 - setInterval(() => { 77 - update(ref(db, currentHand), { 78 - sessionLastActive: new Date() 79 - }) 80 - }, 500) 80 + setInterval(() => { 81 + // check if hands are touching 82 + let leftHand = document.getElementById('leftHand'); 83 + let rightHand = document.getElementById('rightHand'); 81 84 82 - setInterval(() => { 85 + let leftHandX = parseInt(leftHand!.style.left.replace('px', '')); 86 + let leftHandY = parseInt(leftHand!.style.top.replace('px', '')); 83 87 84 - // check if hands are touching 85 - let leftHand = document.getElementById("leftHand"); 86 - let rightHand = document.getElementById("rightHand"); 88 + let rightHandX = parseInt(rightHand!.style.left.replace('px', '')); 89 + let rightHandY = parseInt(rightHand!.style.top.replace('px', '')); 87 90 88 - let leftHandX = parseInt(leftHand!.style.left.replace("px", "")) 89 - let leftHandY = parseInt(leftHand!.style.top.replace("px", "")) 91 + let distance = Math.sqrt( 92 + Math.pow(leftHandX - rightHandX, 2) + Math.pow(leftHandY - rightHandY, 2) 93 + ); 90 94 91 - let rightHandX = parseInt(rightHand!.style.left.replace("px", "")) 92 - let rightHandY = parseInt(rightHand!.style.top.replace("px", "")) 93 - 94 - let distance = Math.sqrt(Math.pow(leftHandX - rightHandX, 2) + Math.pow(leftHandY - rightHandY, 2)) 95 - 96 - if (leftHandX + 25 > rightHandX - 25 && leftHandX - 25 < rightHandX + 25 && leftHandY + 25 > rightHandY - 25 && leftHandY - 25 < rightHandY + 25) { 97 - gameTimer += 1 98 - update(ref(db, '/'), { 99 - timer: gameTimer 100 - }) 101 - } else { gameTimer = 0 } 102 - 103 - }, 500) 95 + if ( 96 + leftHandX + 25 > rightHandX - 25 && 97 + leftHandX - 25 < rightHandX + 25 && 98 + leftHandY + 25 > rightHandY - 25 && 99 + leftHandY - 25 < rightHandY + 25 100 + ) { 101 + gameTimer += 1; 102 + update(ref(db, '/'), { 103 + timer: gameTimer 104 + }); 105 + } else { 106 + gameTimer = 0; 107 + } 108 + }, 500); 104 109 }); 105 110 </script> 106 111 107 112 <div class="box"> 108 - 109 - <h1>Hello world</h1> 110 - 111 - <p>Timer {gameTimer}</p> 113 + <h1>Hello world</h1> 112 114 115 + <p>Timer {gameTimer}</p> 113 116 </div> 114 117 115 118 <!-- LEFT --> ··· 130 133 left: 0px; 131 134 } 132 135 133 - #rightHand { 134 - position: absolute; 135 - } 136 + #rightHand { 137 + position: absolute; 138 + } 136 139 137 140 :global(body) { 138 141 background-image: url('/backround.svg');