leveling

package
v0.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 5, 2026 License: Apache-2.0 Imports: 1 Imported by: 0

Documentation

Overview

Package leveling 提供经验值 / 等级曲线原语:给定当前经验加一笔增量,算出新等级、 是否升级、跨了几级、当前等级内进度。纯计算、无状态、并发安全。

覆盖:角色升级、主播等级、VIP 等级、亲密度、公会等级——凡是"累计经验 → 等级"的 系统。等级曲线(每级所需经验)由调用方定义,本包只负责根据曲线做经验↔等级换算, 不预设任何数值,业务可自由用线性/多项式/查表曲线。

曲线抽象:Curve 是"等级 → 从 1 级到该级所需累计经验"的单调不减函数。 内置三种构造器:

  • Linear:每级固定增量(等差);
  • Poly:多项式增长(base * level^exp,常见的加速升级曲线);
  • Table:查表(直接给出每级累计经验,最灵活,适合策划表)。

一次 Gain 返回完整结果(新等级/升了几级/当前等级内的经验与进度), 无内部状态——经验值由调用方持久化,本包做纯函数换算。零值不可用,用 New 构造。

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Curve

type Curve interface {
	CumulativeExp(level int) int64
	MaxLevel() int
}

Curve 是等级曲线:CumulativeExp(level) 返回"达到 level 级"所需的累计经验 (从 1 级起算,CumulativeExp(1)=0)。必须随 level 单调不减。 MaxLevel 返回曲线支持的最高等级(满级)。

func Linear

func Linear(perLevel int64, maxLevel int) Curve

Linear 每级固定 perLevel 经验(1→2 需 perLevel,2→3 需 perLevel……)。

func Poly

func Poly(base, exp float64, maxLevel int) Curve

Poly 多项式增长曲线:达到 level 级累计需 base*(level-1)^exp 经验 (exp=2 是常见的二次加速曲线)。满级 maxLevel。

func Table

func Table(cumulative []int64) Curve

Table 用"每级累计经验表"构造曲线。cumulative[0] 是 1 级(应为 0), cumulative[i] 是 (i+1) 级的累计经验,须单调不减。MaxLevel = len(cumulative)。 适合直接对接策划数值表。传入空表则退化为 1 级满级。

type Leveler

type Leveler struct {
	// contains filtered or unexported fields
}

Leveler 经验/等级换算器。零值不可用,用 New 构造。无状态,并发安全。

func New

func New(c Curve) *Leveler

New 用给定曲线创建换算器。

func (*Leveler) Curve

func (l *Leveler) Curve() Curve

Curve 返回底层曲线(便于查询 MaxLevel / 某级所需经验)。

func (*Leveler) Gain

func (l *Leveler) Gain(totalExp, delta int64) Result

Gain 在累计总经验 totalExp 基础上增加 delta(delta 可为负,总经验夹到 >=0), 返回变动后的完整结果。满级后多余经验仍累计在 TotalExp 中但等级不再上升。

func (*Leveler) LevelAt

func (l *Leveler) LevelAt(totalExp int64) int

LevelAt 返回累计总经验 totalExp 对应的等级(夹在 [1, MaxLevel])。

func (*Leveler) Stat

func (l *Leveler) Stat(totalExp int64) Result

Stat 返回某累计总经验的当前状态(不改变经验,用于展示"当前 X 级,还差 Y 经验升级")。

type Result

type Result struct {
	Level      int   // 变动后的等级
	LeveledUp  bool  // 本次是否升级(至少 +1 级)
	LevelsGain int   // 本次跨越的等级数(可能一次升多级)
	TotalExp   int64 // 变动后的累计总经验
	CurExp     int64 // 当前等级内已获得的经验(距升级)
	NextExp    int64 // 当前等级升到下一级所需经验(满级为 0)
	IsMax      bool  // 是否已满级
}

Result 一次经验变动后的结果快照。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL