mirror of
https://github.com/jcreek/CosmicClash.git
synced 2026-09-13 07:52:28 +00:00
feat(multiplayer): wire ranked profile runtime policy
This commit is contained in:
@@ -12,6 +12,7 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/cosmic-clash/cosmic-clash/server/api"
|
||||
"github.com/cosmic-clash/cosmic-clash/server/domain"
|
||||
"github.com/cosmic-clash/cosmic-clash/server/migrations"
|
||||
"github.com/cosmic-clash/cosmic-clash/server/observability"
|
||||
"github.com/cosmic-clash/cosmic-clash/server/store"
|
||||
@@ -100,6 +101,7 @@ func newAPIService(db *sql.DB, workloadSecret string, indexes ...api.CandidateIn
|
||||
ServerRegistrar: api.ServerRegistrarFromStore(db),
|
||||
ResultSubmitter: store.PostgresResults{DB: db},
|
||||
RankedProfileProvider: store.PostgresRankedProfiles{DB: db},
|
||||
TierPolicy: domain.DefaultTierPolicy(),
|
||||
Assignment: api.AssignmentProviderFromStore(db),
|
||||
CandidateIndex: candidateIndex,
|
||||
ProbeRecorder: store.PostgresQueue{DB: db},
|
||||
|
||||
@@ -64,6 +64,7 @@ func main() {
|
||||
ServerRegistrar: api.ServerRegistrarFromStore(db),
|
||||
ResultSubmitter: store.PostgresResults{DB: db},
|
||||
RankedProfileProvider: store.PostgresRankedProfiles{DB: db},
|
||||
TierPolicy: domain.DefaultTierPolicy(),
|
||||
Assignment: api.AssignmentProviderFromStore(db),
|
||||
ProbeRecorder: store.PostgresQueue{DB: db},
|
||||
WorkloadVerify: api.WorkloadVerifierFromSignedToken([]byte(*workloadSecret), db),
|
||||
|
||||
@@ -87,6 +87,19 @@ type TierPolicy struct {
|
||||
bands []TierBand
|
||||
}
|
||||
|
||||
// DefaultTierPolicy is the backend-owned launch policy used by runnable API
|
||||
// binaries. Callers still serialize only the resulting tier; clients never
|
||||
// receive or reproduce these thresholds.
|
||||
func DefaultTierPolicy() TierPolicy {
|
||||
return TierPolicy{bands: []TierBand{
|
||||
{Tier: RankTierBronze, MinRating: 0},
|
||||
{Tier: RankTierSilver, MinRating: 1200},
|
||||
{Tier: RankTierGold, MinRating: 1500},
|
||||
{Tier: RankTierPlatinum, MinRating: 1800},
|
||||
{Tier: RankTierDiamond, MinRating: 2200},
|
||||
}}
|
||||
}
|
||||
|
||||
func NewTierPolicy(bands []TierBand) (TierPolicy, error) {
|
||||
if len(bands) == 0 || bands[0].MinRating > 0 {
|
||||
return TierPolicy{}, fmt.Errorf("tier policy must start at or below zero")
|
||||
|
||||
Reference in New Issue
Block a user