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
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 |