v1 #1
@@ -482,6 +482,9 @@ void addLocalTime(String uid, String name, unsigned long timeMs) {
|
|||||||
|
|
||||||
localTimes.push_back(newTime);
|
localTimes.push_back(newTime);
|
||||||
|
|
||||||
|
// Speichere das Leaderboard automatisch
|
||||||
|
saveBestTimes();
|
||||||
|
|
||||||
Serial.printf("Lokale Zeit hinzugefügt: %s (%s) - %.2fs\n", name.c_str(),
|
Serial.printf("Lokale Zeit hinzugefügt: %s (%s) - %.2fs\n", name.c_str(),
|
||||||
uid.c_str(), timeMs / 1000.0);
|
uid.c_str(), timeMs / 1000.0);
|
||||||
}
|
}
|
||||||
@@ -489,5 +492,6 @@ void addLocalTime(String uid, String name, unsigned long timeMs) {
|
|||||||
// Leert das lokale Leaderboard
|
// Leert das lokale Leaderboard
|
||||||
void clearLocalLeaderboard() {
|
void clearLocalLeaderboard() {
|
||||||
localTimes.clear();
|
localTimes.clear();
|
||||||
|
saveBestTimes(); // Speichere das geleerte Leaderboard
|
||||||
Serial.println("Lokales Leaderboard geleert");
|
Serial.println("Lokales Leaderboard geleert");
|
||||||
}
|
}
|
||||||
@@ -21,19 +21,60 @@ void loadButtonConfig() {
|
|||||||
preferences.end();
|
preferences.end();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Persist and load best times
|
// Persist and load local leaderboard
|
||||||
void saveBestTimes() {
|
void saveBestTimes() {
|
||||||
preferences.begin("times", false);
|
preferences.begin("leaderboard", false);
|
||||||
preferences.putULong("best1", timerData1.bestTime);
|
|
||||||
preferences.putULong("best2", timerData2.bestTime);
|
// Speichere Anzahl der Einträge
|
||||||
|
preferences.putUInt("count", localTimes.size());
|
||||||
|
|
||||||
|
// Speichere jeden Eintrag (kurze Schlüssel für NVS)
|
||||||
|
for (size_t i = 0; i < localTimes.size(); i++) {
|
||||||
|
String key = "e" + String(i); // e0, e1, e2, etc.
|
||||||
|
preferences.putString((key + "u").c_str(),
|
||||||
|
localTimes[i].uid); // e0u, e1u, etc.
|
||||||
|
preferences.putString((key + "n").c_str(),
|
||||||
|
localTimes[i].name); // e0n, e1n, etc.
|
||||||
|
preferences.putULong((key + "t").c_str(),
|
||||||
|
localTimes[i].timeMs); // e0t, e1t, etc.
|
||||||
|
preferences.putULong((key + "s").c_str(),
|
||||||
|
localTimes[i].timestamp); // e0s, e1s, etc.
|
||||||
|
}
|
||||||
|
|
||||||
preferences.end();
|
preferences.end();
|
||||||
|
Serial.println("Lokales Leaderboard gespeichert: " +
|
||||||
|
String(localTimes.size()) + " Einträge");
|
||||||
}
|
}
|
||||||
|
|
||||||
void loadBestTimes() {
|
void loadBestTimes() {
|
||||||
preferences.begin("times", true);
|
preferences.begin("leaderboard", true);
|
||||||
timerData1.bestTime = preferences.getULong("best1", 0);
|
|
||||||
timerData2.bestTime = preferences.getULong("best2", 0);
|
// Leere das aktuelle Leaderboard
|
||||||
|
localTimes.clear();
|
||||||
|
|
||||||
|
// Lade Anzahl der Einträge
|
||||||
|
uint32_t count = preferences.getUInt("count", 0);
|
||||||
|
|
||||||
|
// Lade jeden Eintrag (kurze Schlüssel für NVS)
|
||||||
|
for (uint32_t i = 0; i < count; i++) {
|
||||||
|
LocalTime entry;
|
||||||
|
String key = "e" + String(i); // e0, e1, e2, etc.
|
||||||
|
|
||||||
|
entry.uid =
|
||||||
|
preferences.getString((key + "u").c_str(), ""); // e0u, e1u, etc.
|
||||||
|
entry.name =
|
||||||
|
preferences.getString((key + "n").c_str(), ""); // e0n, e1n, etc.
|
||||||
|
entry.timeMs =
|
||||||
|
preferences.getULong((key + "t").c_str(), 0); // e0t, e1t, etc.
|
||||||
|
entry.timestamp =
|
||||||
|
preferences.getULong((key + "s").c_str(), 0); // e0s, e1s, etc.
|
||||||
|
|
||||||
|
localTimes.push_back(entry);
|
||||||
|
}
|
||||||
|
|
||||||
preferences.end();
|
preferences.end();
|
||||||
|
Serial.println("Lokales Leaderboard geladen: " + String(localTimes.size()) +
|
||||||
|
" Einträge");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Persist and load general settings
|
// Persist and load general settings
|
||||||
|
|||||||
Reference in New Issue
Block a user