Skip to content

Commit

Permalink
Add binary search for rewards
Browse files Browse the repository at this point in the history
  • Loading branch information
yunimoo authored and arina999999997 committed Aug 25, 2024
1 parent d19b2c1 commit 1a1c81f
Showing 1 changed file with 8 additions and 7 deletions.
15 changes: 8 additions & 7 deletions gamedata/event_marathon.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,18 +61,19 @@ type EventMarathon struct {
}

func (em *EventMarathon) GetNextReward(eventPoint int32) (generic.Nullable[int32], generic.Nullable[client.Content]) {
// TODO(optimization): this can be a binary search
for _, reward := range em.TopStatus.EventMarathonPointRewardMasterRows.Slice {
if reward.RequiredPoint > eventPoint {
content := em.Gamedata.EventMarathonReward[reward.RewardGroupId][0]
return generic.NewNullable(reward.RequiredPoint), generic.NewNullableFromPointer(content)
}
slice := em.TopStatus.EventMarathonPointRewardMasterRows.Slice
idx := sort.Search(len(slice), func(i int) bool {
return slice[i].RequiredPoint > eventPoint
})

if idx < len(slice) {
content := em.Gamedata.EventMarathonReward[slice[idx].RewardGroupId][0]
return generic.NewNullable(slice[idx].RequiredPoint), generic.NewNullableFromPointer(content)
}
return generic.Nullable[int32]{}, generic.Nullable[client.Content]{}
}

func (em *EventMarathon) GetRankingReward(rank int32) int32 {
// TODO(optimization): this can be a binary search
for _, reward := range em.TopStatus.EventMarathonRankingRewardMasterRows.Slice {
if (!reward.LowerRank.HasValue) || (reward.LowerRank.Value >= rank) {
return reward.RewardGroupId
Expand Down

0 comments on commit 1a1c81f

Please sign in to comment.