Initial commit

This commit is contained in:
Ilya Groshev
2026-04-14 09:28:26 +03:00
commit 02f511f40c
161 changed files with 21541 additions and 0 deletions
+41
View File
@@ -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)
}