This commit is contained in:
Your Name
2026-05-27 17:29:27 +08:00
parent 19af50c344
commit 36be8fedad
5 changed files with 519 additions and 325 deletions
+24 -5
View File
@@ -148,14 +148,33 @@ class DailyGamifyLogic
return $list;
}
/** 与前端 tongji/utils/treeLevels.js 保持一致 */
protected const TREE_MAX_LEVEL = 9;
protected const TREE_XP_PER_LEVEL = 50;
protected static function treeMeta(int $points): array
{
$level = min(4, (int) floor($points / 100));
$names = ['嫩芽期', '成长雏形', '枝繁叶茂', '含苞待放', '花开稳糖'];
$points = max(0, (int) $points);
$level = min(self::TREE_MAX_LEVEL, (int) floor($points / self::TREE_XP_PER_LEVEL));
$names = ['种子眠', '破土芽', '展两叶', '小树苗', '青枝繁', '拔节高', '稳糖冠', '初绽香', '漫开花', '圆满树'];
$xpIn = $level >= self::TREE_MAX_LEVEL ? self::TREE_XP_PER_LEVEL : ($points % self::TREE_XP_PER_LEVEL);
$progress = $level >= self::TREE_MAX_LEVEL
? 100
: (int) round(($xpIn / self::TREE_XP_PER_LEVEL) * 100);
$nextName = $level < self::TREE_MAX_LEVEL ? ($names[$level + 1] ?? '') : '';
$pointsToNext = $level >= self::TREE_MAX_LEVEL
? 0
: (self::TREE_XP_PER_LEVEL - $xpIn);
return [
'tree_level' => $level,
'tree_progress' => $level >= 4 ? 100 : ($points % 100),
'tree_level_name' => $names[$level] ?? '嫩芽期',
'tree_level' => $level,
'tree_progress' => $progress,
'tree_level_name' => $names[$level] ?? '种子眠',
'tree_xp_in_level' => $xpIn,
'tree_xp_need' => self::TREE_XP_PER_LEVEL,
'tree_points_next' => $pointsToNext,
'tree_next_name' => $nextName,
'tree_is_max' => $level >= self::TREE_MAX_LEVEL,
];
}