Änderung: Hinzufügen von TaxiHighscore-Logik und Verbesserung der API-Integration
Änderungen: - Implementierung des neuen Routers für TaxiHighscore zur Verwaltung von Highscore-Daten. - Anpassung der Datenbankmodelle zur Unterstützung von TaxiHighscore-Associations. - Erweiterung der Vue-Komponenten zur Anzeige und Speicherung von Highscores im Taxi-Spiel. - Verbesserung der Statusanzeige im AppHeader zur besseren Benutzerinteraktion. Diese Anpassungen erweitern die Spielmechanik und Benutzererfahrung, indem sie die Verwaltung von Highscores integrieren und die Benutzeroberfläche optimieren.
This commit is contained in:
@@ -9,6 +9,7 @@ const store = createStore({
|
||||
state: {
|
||||
isLoggedIn: localStorage.getItem('isLoggedIn') === 'true',
|
||||
connectionStatus: 'disconnected', // 'connected', 'connecting', 'disconnected', 'error'
|
||||
daemonConnectionStatus: 'disconnected', // 'connected', 'connecting', 'disconnected', 'error'
|
||||
user: JSON.parse(localStorage.getItem('user')) || null,
|
||||
language: (() => {
|
||||
// Verwende die gleiche Logik wie in main.js
|
||||
@@ -103,6 +104,9 @@ const store = createStore({
|
||||
setConnectionStatus(state, status) {
|
||||
state.connectionStatus = status;
|
||||
},
|
||||
setDaemonConnectionStatus(state, status) {
|
||||
state.daemonConnectionStatus = status;
|
||||
},
|
||||
clearSocket(state) {
|
||||
if (state.socket) {
|
||||
state.socket.disconnect();
|
||||
@@ -117,6 +121,7 @@ const store = createStore({
|
||||
state.daemonSocket.close();
|
||||
}
|
||||
state.daemonSocket = null;
|
||||
state.daemonConnectionStatus = 'disconnected';
|
||||
},
|
||||
},
|
||||
actions: {
|
||||
@@ -180,11 +185,18 @@ const store = createStore({
|
||||
let retryCount = 0;
|
||||
const maxRetries = 10;
|
||||
const retryConnection = (reconnectFn) => {
|
||||
console.log(`Reconnect-Versuch ${retryCount + 1}/${maxRetries}`);
|
||||
if (retryCount >= maxRetries) {
|
||||
// Nach maxRetries alle 5 Sekunden weiter versuchen
|
||||
console.log('Max Retries erreicht, versuche weiter alle 5 Sekunden...');
|
||||
setTimeout(() => {
|
||||
reconnectFn();
|
||||
}, 5000);
|
||||
return;
|
||||
}
|
||||
retryCount++;
|
||||
const delay = Math.min(1000 * Math.pow(1.5, retryCount - 1), 30000); // Exponential backoff, max 30s
|
||||
const delay = 5000; // Alle 5 Sekunden versuchen
|
||||
console.log(`Warte ${delay}ms bis zum nächsten Reconnect-Versuch...`);
|
||||
setTimeout(() => {
|
||||
reconnectFn();
|
||||
}, delay);
|
||||
@@ -220,6 +232,7 @@ const store = createStore({
|
||||
const tryConnectWithProtocol = () => {
|
||||
const currentProtocol = protocols[attemptIndex];
|
||||
try {
|
||||
commit('setDaemonConnectionStatus', 'connecting');
|
||||
const daemonSocket = currentProtocol
|
||||
? new WebSocket(daemonUrl, currentProtocol)
|
||||
: new WebSocket(daemonUrl);
|
||||
@@ -229,8 +242,8 @@ const store = createStore({
|
||||
daemonSocket.onopen = () => {
|
||||
opened = true;
|
||||
retryCount = 0; // Reset retry counter on successful connection
|
||||
commit('setDaemonConnectionStatus', 'connected');
|
||||
const payload = JSON.stringify({
|
||||
user_id: state.user.id,
|
||||
event: 'setUserId',
|
||||
data: { userId: state.user.id }
|
||||
});
|
||||
@@ -238,6 +251,7 @@ const store = createStore({
|
||||
};
|
||||
|
||||
daemonSocket.onclose = (event) => {
|
||||
commit('setDaemonConnectionStatus', 'disconnected');
|
||||
// Falls Verbindungsaufbau nicht offen war und es noch einen Fallback gibt → nächsten Versuch ohne Subprotokoll
|
||||
if (!opened && attemptIndex < protocols.length - 1) {
|
||||
attemptIndex += 1;
|
||||
@@ -248,6 +262,7 @@ const store = createStore({
|
||||
};
|
||||
|
||||
daemonSocket.onerror = (error) => {
|
||||
commit('setDaemonConnectionStatus', 'error');
|
||||
// Bei Fehler vor Open: Fallback versuchen
|
||||
if (!opened && attemptIndex < protocols.length - 1) {
|
||||
attemptIndex += 1;
|
||||
@@ -289,16 +304,18 @@ const store = createStore({
|
||||
let retryCount = 0;
|
||||
const maxRetries = 15; // Increased max retries
|
||||
const retryConnection = (reconnectFn) => {
|
||||
console.log(`Daemon-Reconnect-Versuch ${retryCount + 1}/${maxRetries}`);
|
||||
if (retryCount >= maxRetries) {
|
||||
// Reset counter after a longer delay to allow for network recovery
|
||||
// Nach maxRetries alle 5 Sekunden weiter versuchen
|
||||
console.log('Daemon: Max Retries erreicht, versuche weiter alle 5 Sekunden...');
|
||||
setTimeout(() => {
|
||||
retryCount = 0;
|
||||
reconnectFn();
|
||||
}, 60000); // Wait 1 minute before resetting
|
||||
}, 5000);
|
||||
return;
|
||||
}
|
||||
retryCount++;
|
||||
const delay = Math.min(1000 * Math.pow(1.5, retryCount - 1), 30000); // Exponential backoff, max 30s
|
||||
const delay = 5000; // Alle 5 Sekunden versuchen
|
||||
console.log(`Daemon: Warte ${delay}ms bis zum nächsten Reconnect-Versuch...`);
|
||||
setTimeout(() => {
|
||||
reconnectFn();
|
||||
}, delay);
|
||||
@@ -326,6 +343,7 @@ const store = createStore({
|
||||
daemonSocket: state => state.daemonSocket,
|
||||
menuNeedsUpdate: state => state.menuNeedsUpdate,
|
||||
connectionStatus: state => state.connectionStatus,
|
||||
daemonConnectionStatus: state => state.daemonConnectionStatus,
|
||||
},
|
||||
modules: {
|
||||
dialogs,
|
||||
|
||||
Reference in New Issue
Block a user