끝난 이클립스 합류 문구 · HOME 헤더 POP · 다국어 HOME 레이아웃 · 캠페인 표시 수정

This commit is contained in:
Sn-Kinos
2026-10-08 19:00:24 +09:00
parent a74edaef6b
commit 40b2c0e6f6
40 changed files with 1649 additions and 845 deletions
+8 -2
View File
@@ -509,6 +509,7 @@ class _Map extends StatelessWidget {
child: _LiveFlash(
repository: eclipseRepository,
fandomId: eclipse?.fandomId ?? data.mine?.id,
eclipse: eclipse,
fallback: data.event,
),
),
@@ -1050,12 +1051,16 @@ class _LiveFlash extends StatelessWidget {
const _LiveFlash({
required this.repository,
required this.fandomId,
required this.eclipse,
required this.fallback,
});
final EclipseRepository repository;
final String? fandomId;
/// 진행 중인 회차. 끝난 회차의 방어 합류는 흘리지 않는다([liveEventsFor]).
final EclipseState? eclipse;
/// 라이브 이벤트가 없을 때 그릴 기존 `galaxyEvents` 한 건.
final GalaxyEvent? fallback;
@@ -1073,8 +1078,9 @@ class _LiveFlash extends StatelessWidget {
return LiveStreamBuilder<List<LiveEvent>>(
key: ValueKey('flash-$fandomId'),
create: () => repository.liveEvents(fandomId: fandomId, limit: 5),
builder: (context, events) {
if (events == null || events.isEmpty) {
builder: (context, all) {
final events = liveEventsFor(all ?? const [], eclipse, DateTime.now());
if (events.isEmpty) {
return fallback == null
? const SizedBox.shrink()
: _EventTicker(
@@ -20,8 +20,13 @@ class ZapFeedback extends StatefulWidget {
required this.radius,
this.fandomName,
this.quest = false,
this.messageAboveTarget = false,
});
/// 안내 띠를 [target] 행성 상자 위쪽에 둔다(HOME). 기본 자리(아래 128)는 HOME 에서 행성 이름 ·
/// 성장 카드 말풍선을 덮는다(10/8 r11). 행성 상자 반 변 = [radius] / 0.4(HOME 이 넘기는 값).
final bool messageAboveTarget;
/// 퀘스트 보상 확정의 행성 반응인가 — 결과 문구를 퀘스트 반영으로 바꾼다.
final bool quest;
@@ -101,7 +106,12 @@ class _ZapFeedbackState extends State<ZapFeedback>
Positioned(
left: 16,
right: 16,
bottom: 128,
top: widget.messageAboveTarget && widget.target != Offset.zero
? math.max(0, widget.target.dy - widget.radius / 0.4 / 2)
: null,
bottom: widget.messageAboveTarget && widget.target != Offset.zero
? null
: 128,
child: Center(
child: Semantics(
liveRegion: true,