mirror of
https://github.com/Walter-Sparrow/lunar-tear.git
synced 2026-07-02 05:43:41 +03:00
Initial commit
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
package store
|
||||
|
||||
import "log"
|
||||
|
||||
const StaminaRecoveryDivisor int64 = 180
|
||||
|
||||
func SettleStamina(user *UserState, maxStaminaMillis int32, nowMillis int64) {
|
||||
stored := int64(user.Status.StaminaMilliValue)
|
||||
maxMilli := int64(maxStaminaMillis)
|
||||
if stored >= maxMilli {
|
||||
return
|
||||
}
|
||||
elapsed := nowMillis - user.Status.StaminaUpdateDatetime
|
||||
if elapsed <= 0 {
|
||||
return
|
||||
}
|
||||
regen := elapsed / StaminaRecoveryDivisor
|
||||
settled := min(stored+regen, maxMilli)
|
||||
user.Status.StaminaMilliValue = int32(settled)
|
||||
user.Status.StaminaUpdateDatetime = nowMillis
|
||||
}
|
||||
|
||||
func ConsumeStamina(user *UserState, costUnits int32, maxStaminaMillis int32, nowMillis int64) {
|
||||
SettleStamina(user, maxStaminaMillis, nowMillis)
|
||||
user.Status.StaminaMilliValue = max(user.Status.StaminaMilliValue-costUnits*1000, 0)
|
||||
user.Status.StaminaUpdateDatetime = nowMillis
|
||||
log.Printf("[ConsumeStamina] cost=%d -> remaining=%d", costUnits, user.Status.StaminaMilliValue)
|
||||
}
|
||||
|
||||
func RecoverStamina(user *UserState, millis int32, maxStaminaMillis int32, nowMillis int64) {
|
||||
SettleStamina(user, maxStaminaMillis, nowMillis)
|
||||
user.Status.StaminaMilliValue += millis
|
||||
user.Status.StaminaUpdateDatetime = nowMillis
|
||||
log.Printf("[RecoverStamina] +%d -> total=%d", millis, user.Status.StaminaMilliValue)
|
||||
}
|
||||
|
||||
func ReplenishStamina(user *UserState, maxStaminaMillis int32, nowMillis int64) {
|
||||
user.Status.StaminaMilliValue = maxStaminaMillis
|
||||
user.Status.StaminaUpdateDatetime = nowMillis
|
||||
log.Printf("[ReplenishStamina] set to %d", maxStaminaMillis)
|
||||
}
|
||||
Reference in New Issue
Block a user