성운 성장률 표시 · 내 행성 칸 그림 수정
This commit is contained in:
@@ -29,9 +29,11 @@ class GalaxyHomeScreen extends StatefulWidget {
|
|||||||
/// 카드 그림 — HOME · 맵과 같이 팬덤 `stage` 로 고른다. Stage0 성운만 성운 그림이고
|
/// 카드 그림 — HOME · 맵과 같이 팬덤 `stage` 로 고른다. Stage0 성운만 성운 그림이고
|
||||||
/// 정식 행성은 시안 행성 그림(`image 8` · 파란 행성 벡터)을 칸마다 번갈아 쓴다.
|
/// 정식 행성은 시안 행성 그림(`image 8` · 파란 행성 벡터)을 칸마다 번갈아 쓴다.
|
||||||
/// 예전엔 칸 순서로 골라 둘째 칸이 행성이어도 성운 그림이 됐다.
|
/// 예전엔 칸 순서로 골라 둘째 칸이 행성이어도 성운 그림이 됐다.
|
||||||
static String cardImageOf(PlanetNode p, int i) => p.stage == 0
|
// ponytail: 행성마다 고정된 두 그림 중 하나(id 기준) — 칸 순서가 바뀌어도 같은 그림.
|
||||||
|
// 탄생 때 고른 모양 · 색 에셋은 최신 Figma 행성 에셋 교체(10/8)에서 연결한다.
|
||||||
|
static String cardImageOf(PlanetNode p, [int _ = 0]) => p.stage == 0
|
||||||
? 'assets/figma/nebula-card.png'
|
? 'assets/figma/nebula-card.png'
|
||||||
: (i.isEven
|
: (p.id.codeUnits.fold<int>(0, (a, c) => a + c).isEven
|
||||||
? 'assets/figma/planet-detail-hero.png'
|
? 'assets/figma/planet-detail-hero.png'
|
||||||
: 'assets/figma/planet-earth.png');
|
: 'assets/figma/planet-earth.png');
|
||||||
|
|
||||||
|
|||||||
@@ -248,8 +248,12 @@ class PlanetDetail {
|
|||||||
this.ownerPhoto,
|
this.ownerPhoto,
|
||||||
this.fpiUpdatedAt,
|
this.fpiUpdatedAt,
|
||||||
this.joined = true,
|
this.joined = true,
|
||||||
|
this.growthPop = 0,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/// 성운 누적 POP(`fandoms.growthPop`) — 성운 FPI 탭 「성운 성장률」의 분자.
|
||||||
|
final int growthPop;
|
||||||
|
|
||||||
/// 내가 이 행성/성운의 멤버인가(`fandoms/{id}/members/{uid}` 존재). 히어로의
|
/// 내가 이 행성/성운의 멤버인가(`fandoms/{id}/members/{uid}` 존재). 히어로의
|
||||||
/// 「가입중 / 가입하기」 알약이 이 값을 그린다(명세 §2.72 「가입 버튼 - 소속 상태」).
|
/// 「가입중 / 가입하기」 알약이 이 값을 그린다(명세 §2.72 「가입 버튼 - 소속 상태」).
|
||||||
final bool joined;
|
final bool joined;
|
||||||
|
|||||||
@@ -408,7 +408,7 @@ class _FpiTab extends StatelessWidget {
|
|||||||
padding: const EdgeInsets.all(16),
|
padding: const EdgeInsets.all(16),
|
||||||
sliver: SliverList.list(
|
sliver: SliverList.list(
|
||||||
children: [
|
children: [
|
||||||
const _NebulaFpi(),
|
_NebulaFpi(pop: detail.growthPop),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@@ -499,10 +499,12 @@ class _FpiTab extends StatelessWidget {
|
|||||||
///
|
///
|
||||||
/// 「기여 현황」 카드(#1a1a1c r12 · 안쪽 12/16) — 성운 성장률 · 진행 막대 · 0 ~ 목표,
|
/// 「기여 현황」 카드(#1a1a1c r12 · 안쪽 12/16) — 성운 성장률 · 진행 막대 · 0 ~ 목표,
|
||||||
/// 「실시간 기여 랭킹」 — 1위 왕관 · 빈 원 80 · 「아직 기여자가 없어요」.
|
/// 「실시간 기여 랭킹」 — 1위 왕관 · 빈 원 80 · 「아직 기여자가 없어요」.
|
||||||
/// 목표는 원장 B-10 의 1,000 POP(사본 500,000 은 과거 수치). 성운 누적 POP 과 기여자
|
/// 목표는 원장 B-10 의 1,000 POP(사본 500,000 은 과거 수치). 분자는 서버 `growthPop`.
|
||||||
/// 목록은 상세 데이터에 아직 없어 0 · 빈 상태로 둔다.
|
/// 기여자 목록은 상세 데이터에 아직 없어 빈 상태로 둔다.
|
||||||
class _NebulaFpi extends StatelessWidget {
|
class _NebulaFpi extends StatelessWidget {
|
||||||
const _NebulaFpi();
|
const _NebulaFpi({required this.pop});
|
||||||
|
|
||||||
|
final int pop;
|
||||||
|
|
||||||
static TextStyle _b(double size, Color color, {double? height}) => TextStyle(
|
static TextStyle _b(double size, Color color, {double? height}) => TextStyle(
|
||||||
fontFamily: AppFonts.body,
|
fontFamily: AppFonts.body,
|
||||||
@@ -524,7 +526,6 @@ class _NebulaFpi extends StatelessWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
const pop = 0;
|
|
||||||
final target = defaultNebulaTargets.pop;
|
final target = defaultNebulaTargets.pop;
|
||||||
final rate = pop * 100 ~/ target;
|
final rate = pop * 100 ~/ target;
|
||||||
return Column(
|
return Column(
|
||||||
|
|||||||
@@ -169,6 +169,7 @@ class FirestorePlanetRepository implements PlanetRepository {
|
|||||||
},
|
},
|
||||||
isNebula: stage == null ? nebula : stage == 0,
|
isNebula: stage == null ? nebula : stage == 0,
|
||||||
members: fandom.intOr('memberCount'),
|
members: fandom.intOr('memberCount'),
|
||||||
|
growthPop: fandom.intOr('growthPop'),
|
||||||
scores: [
|
scores: [
|
||||||
for (final metric in FpiMetric.values)
|
for (final metric in FpiMetric.values)
|
||||||
FpiScore(
|
FpiScore(
|
||||||
|
|||||||
Reference in New Issue
Block a user