FPI 사용자·국가 랭킹 서버 집계 · YouTube 스밍 · Music Shake 참여
This commit is contained in:
@@ -20,7 +20,9 @@ class PlanetNode {
|
||||
this.stage,
|
||||
this.colorKey,
|
||||
bool? isCenter,
|
||||
}) : isCenter = isCenter ?? isMine;
|
||||
bool? ranked,
|
||||
}) : isCenter = isCenter ?? isMine,
|
||||
ranked = ranked ?? stage != 0;
|
||||
|
||||
/// Firestore `fandoms/{id}` 문서 ID. HUD 에서 행성 상세로 넘어갈 때
|
||||
/// **이 값으로 저장소를 만든다** — 없으면 어느 행성을 눌러도 같은 상세가 뜬다.
|
||||
@@ -38,8 +40,16 @@ class PlanetNode {
|
||||
///
|
||||
/// Stage0 성운은 랭킹 모집단이 아니다(원장 B-08 · B-17). 성운에는 순위를 매기지 않고
|
||||
/// 정식 행성 수 + 1 을 넣어 **가장 바깥 궤도 자리로만** 쓴다 — HUD 는 「-」로 그린다.
|
||||
/// 최근 7 일 유효 활동이 없는 정식 행성도 같다([ranked]).
|
||||
final int rank;
|
||||
|
||||
/// FPI 랭킹 모집단인가(B-17 — 정식 행성 중 최근 7 일 유효 활동 존재). false 면 [rank] 는
|
||||
/// 궤도 자리일 뿐이라 화면은 순위 대신 「-」를 쓴다.
|
||||
final bool ranked;
|
||||
|
||||
/// 화면에 쓰는 순위 문구 — 모집단 밖이면 「-」.
|
||||
String get rankLabel => ranked ? '$rank' : '-';
|
||||
|
||||
/// FPI 총점. 산출식은 정책 설계서 §P-03 — 초기 MVP 는 단순 합산이다.
|
||||
final int fpi;
|
||||
|
||||
@@ -104,7 +114,7 @@ class GalaxySnapshot {
|
||||
GalaxySnapshot get rankingView {
|
||||
PlanetNode? top;
|
||||
for (final p in planets) {
|
||||
if (p.stage != 0 && (top == null || p.rank < top.rank)) top = p;
|
||||
if (p.ranked && (top == null || p.rank < top.rank)) top = p;
|
||||
}
|
||||
return GalaxySnapshot(
|
||||
planets: [
|
||||
@@ -118,6 +128,8 @@ class GalaxySnapshot {
|
||||
online: p.online,
|
||||
isMine: p.isMine,
|
||||
stage: p.stage,
|
||||
colorKey: p.colorKey,
|
||||
ranked: p.ranked,
|
||||
isCenter: identical(p, top),
|
||||
),
|
||||
],
|
||||
|
||||
Reference in New Issue
Block a user