From 45a8582aa45272e5a8fb6b30a62dd1da7a8daa8e Mon Sep 17 00:00:00 2001 From: legonzaur Date: Fri, 5 May 2023 16:23:04 +0200 Subject: [PATCH] add websockets --- src/main.ts | 83 ++++++++++++++++++++++++++++++++++------------------- 1 file changed, 54 insertions(+), 29 deletions(-) diff --git a/src/main.ts b/src/main.ts index 1f85e39..31eaf7a 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,3 +1,4 @@ +/* eslint-disable camelcase */ import { createApp, ref, unref } from 'vue' import App from './App.vue' import router from './router' @@ -8,9 +9,9 @@ const pinia = createPinia() createApp(App).use(pinia).use(router).mount('#app') -const websocketData = { - attacker_id: '1010035351172', - attacker_name: 'Iverral', +const dummyData = { + attacker_id: '1008704914497', + attacker_name: 'DarkwinV1', cause_of_death: 'mp_weapon_car', victim_id: '1008553404453', victim_name: 'GURENTITANIUM', @@ -23,67 +24,91 @@ const websocketData = { host: 1 } +// setInterval(() => registerWebSocketKill(dummyData), 100) + +type websocketData = { + attacker_id: string, + attacker_name: string, + cause_of_death: string, + victim_id: string, + victim_name: string, + attacker_current_weapon: string, + victim_current_weapon: string, + distance: number, + game_mode: string, + servername: string, + map: string, + host: number +} + // dev stuff const store = useKillStore() -function registerWebSocketKill () { +const socket = new WebSocket('wss://tone.sleepycat.date/v2/client/websocket') +socket.onmessage = function (e) { + if (e.data === 'ping') return socket.send('pong') + const data = JSON.parse(e.data) + registerWebSocketKill(data) +} + +function registerWebSocketKill (data : websocketData) { const allPlayerArrays = store.$state.players.filter((e) => { return ( (!e.value.filter.server || - e.value.filter.server === websocketData.servername) && + e.value.filter.server === data.servername) && (!e.value.filter.weapon || - e.value.filter.weapon === websocketData.cause_of_death) + e.value.filter.weapon === data.cause_of_death) // Handle other types of filters once those are implemented ) }) allPlayerArrays.forEach(e => { - if (!e.value.data[websocketData.attacker_id]) { - e.value.data[websocketData.attacker_id] = ref({ + if (!e.value.data[data.attacker_id]) { + e.value.data[data.attacker_id] = ref({ deaths: 0, kills: 500, max_distance: 0, total_distance: 0, - username: websocketData.attacker_name + username: data.attacker_name }) } - if (!e.value.data[websocketData.victim_id]) { - e.value.data[websocketData.victim_id] = ref({ + if (!e.value.data[data.victim_id]) { + e.value.data[data.victim_id] = ref({ deaths: 0, kills: 0, max_distance: 0, total_distance: 0, - username: websocketData.victim_name + username: data.victim_name }) } // handle deaths with equipped, eventually /* if(e.value.filter.weapon){ - !e.value.data[websocketData.victim_id] = e.value.data[websocketData.victim_id] = { + !e.value.data[data.victim_id] = e.value.data[data.victim_id] = { deaths: 0, kills: 0, max_distance: 0, total_distance: 0, - username: websocketData.victim_name, + username: data.victim_name, } } */ - unref(e.value.data[websocketData.victim_id]).deaths++ - unref(e.value.data[websocketData.victim_id]).username = websocketData.victim_name - unref(e.value.data[websocketData.attacker_id]).username = websocketData.attacker_name - unref(e.value.data[websocketData.attacker_id]).kills++ - unref(e.value.data[websocketData.attacker_id]).total_distance += websocketData.distance - unref(e.value.data[websocketData.attacker_id]).max_distance = Math.max(websocketData.distance, unref(e.value.data[websocketData.attacker_id]).max_distance) + unref(e.value.data[data.victim_id]).deaths++ + unref(e.value.data[data.victim_id]).username = data.victim_name + unref(e.value.data[data.attacker_id]).username = data.attacker_name + unref(e.value.data[data.attacker_id]).kills++ + unref(e.value.data[data.attacker_id]).total_distance += data.distance + unref(e.value.data[data.attacker_id]).max_distance = Math.max(data.distance, unref(e.value.data[data.attacker_id]).max_distance) }) const allWeaponsArrays = store.$state.weapons.filter((e) => { return ( - (!e.value.filter.player || e.value.filter.player === websocketData.attacker_id) + (!e.value.filter.player || e.value.filter.player === data.attacker_id) // Handle other types of filters once those are implemented ) }) allWeaponsArrays.forEach(e => { - if (!e.value.data[websocketData.cause_of_death]) { - e.value.data[websocketData.cause_of_death] = ref({ + if (!e.value.data[data.cause_of_death]) { + e.value.data[data.cause_of_death] = ref({ deaths: 0, kills: 500, max_distance: 0, @@ -94,18 +119,18 @@ function registerWebSocketKill () { // handle deaths with equipped, eventually /* if(e.value.filter.weapon){ - !e.value.data[websocketData.victim_id] = e.value.data[websocketData.victim_id] = { + !e.value.data[data.victim_id] = e.value.data[data.victim_id] = { deaths: 0, kills: 0, max_distance: 0, total_distance: 0, - username: websocketData.victim_name, + username: data.victim_name, } } */ - // unref(e.value.data[websocketData.cause_of_death]).deaths++ - unref(e.value.data[websocketData.cause_of_death]).total_distance += websocketData.distance - unref(e.value.data[websocketData.cause_of_death]).kills++ - unref(e.value.data[websocketData.cause_of_death]).max_distance = Math.max(websocketData.distance, unref(e.value.data[websocketData.cause_of_death]).max_distance) + // unref(e.value.data[data.cause_of_death]).deaths++ + unref(e.value.data[data.cause_of_death]).total_distance += data.distance + unref(e.value.data[data.cause_of_death]).kills++ + unref(e.value.data[data.cause_of_death]).max_distance = Math.max(data.distance, unref(e.value.data[data.cause_of_death]).max_distance) }) }