Skip to content

Commit bc6c353

Browse files
authored
Merge pull request #171 from TaloDev/preserve-leaderboard-positions
Preserve leaderboard positions in entry cache
2 parents 4f36236 + 8ae2334 commit bc6c353

File tree

2 files changed

+10
-7
lines changed

2 files changed

+10
-7
lines changed

addons/talo/apis/leaderboards_api.gd

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,8 +84,8 @@ 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)
88-
_entries_manager.upsert_entry(internal_name, entry)
87+
var entry := TaloLeaderboardEntry.new(res.body.entry)
88+
_entries_manager.upsert_entry(internal_name, entry, true)
8989

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

addons/talo/utils/leaderboard_entries_manager.gd

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,16 +31,19 @@ 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, entry: TaloLeaderboardEntry, bump_positions: bool = false) -> void:
3535
var named_entries: Array[TaloLeaderboardEntry] = []
3636
named_entries = _current_entries.get_or_add(internal_name, named_entries).filter(
3737
func (e: TaloLeaderboardEntry) -> bool: return e.id != entry.id
3838
)
3939

40-
var insert_pos = _find_insert_position(named_entries, entry)
40+
var insert_pos: int = _find_insert_position(named_entries, entry)
4141
named_entries.insert(insert_pos, entry)
42-
43-
for idx in range(named_entries.size()):
44-
named_entries[idx].position = idx
42+
43+
# bump positions when this is called via add_entry()
44+
if bump_positions:
45+
for e in named_entries:
46+
if e.id != entry.id and e.position >= entry.position:
47+
e.position += 1
4548

4649
_current_entries[internal_name] = named_entries

0 commit comments

Comments
 (0)