Skip to content

Commit d890be7

Browse files
committed
preserve leaderboard positions in entry cache
1 parent 58ef546 commit d890be7

File tree

2 files changed

+10
-8
lines changed

2 files changed

+10
-8
lines changed

addons/talo/apis/leaderboards_api.gd

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ func add_entry(internal_name: String, score: float, props: Dictionary[String, Va
8484

8585
match res.status:
8686
200:
87-
var entry = TaloLeaderboardEntry.new(res.body.entry)
87+
var entry := TaloLeaderboardEntry.new(res.body.entry)
8888
_entries_manager.upsert_entry(internal_name, entry)
8989

9090
return AddEntryResult.new(entry, res.body.updated)

addons/talo/utils/leaderboard_entries_manager.gd

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,16 +31,18 @@ func _find_insert_position(entries: Array[TaloLeaderboardEntry], entry: TaloLead
3131

3232
return left
3333

34-
func upsert_entry(internal_name: String, entry: TaloLeaderboardEntry) -> void:
34+
func upsert_entry(internal_name: String, new_entry: TaloLeaderboardEntry) -> void:
3535
var named_entries: Array[TaloLeaderboardEntry] = []
3636
named_entries = _current_entries.get_or_add(internal_name, named_entries).filter(
37-
func (e: TaloLeaderboardEntry) -> bool: return e.id != entry.id
37+
func (e: TaloLeaderboardEntry) -> bool: return e.id != new_entry.id
3838
)
3939

40-
var insert_pos = _find_insert_position(named_entries, entry)
41-
named_entries.insert(insert_pos, entry)
42-
43-
for idx in range(named_entries.size()):
44-
named_entries[idx].position = idx
40+
var insert_pos := _find_insert_position(named_entries, new_entry)
41+
named_entries.insert(insert_pos, new_entry)
42+
43+
# bump positions for entries at or after the new entry's position
44+
for entry in named_entries:
45+
if entry.id != new_entry.id and entry.position >= new_entry.position:
46+
entry.position += 1
4547

4648
_current_entries[internal_name] = named_entries

0 commit comments

Comments
 (0)