You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

40 lines
1.7 KiB

import datetime
class Scoring:
# ==================== SCORING ====================
def save_score(self):
# Save to traditional scores.txt file
with open("scores.txt", "a") as f:
player_name = getattr(self, 'profile_integration', None)
if player_name and hasattr(player_name, 'get_profile_name'):
name = player_name.get_profile_name()
device_id = player_name.get_device_id()
f.write(f"{datetime.datetime.now()} - {self.points} - {name} - {device_id}\n")
else:
f.write(f"{datetime.datetime.now()} - {self.points} - Guest\n")
def read_score(self):
table = []
try:
with open("scores.txt") as f:
rows = f.read().splitlines()
for row in rows:
parts = row.split(" - ")
if len(parts) >= 2:
# Handle both old format (date - score) and new format (date - score - name - device)
if len(parts) >= 4:
table.append([parts[0], parts[1], parts[2], parts[3]]) # date, score, name, device
elif len(parts) >= 3:
table.append([parts[0], parts[1], parts[2], "Unknown"]) # date, score, name, unknown device
else:
table.append([parts[0], parts[1], "Guest", "Unknown"]) # date, score, guest, unknown device
table.sort(key=lambda x: int(x[1]), reverse=True)
except FileNotFoundError:
pass
return table[:5] # Return top 5 scores instead of 3
def add_point(self, value):
self.points += value