퀘스트 완료 햅틱 · HOME 행성 반응 · Push·라이브 띠 중복 제어 · 알림함 위계 · Push 탭 화면 이동
This commit is contained in:
@@ -22,6 +22,7 @@ import 'quest_create_screen.dart' show QuestLinkCard;
|
||||
import 'quest_data.dart';
|
||||
import 'quest_evidence.dart';
|
||||
import 'qr_scan_screen.dart';
|
||||
import '../../core/ui/fx_intensity.dart';
|
||||
import 'quest_reward_screen.dart';
|
||||
import 'widgets/quest_card_tile.dart';
|
||||
import 'widgets/time_attack_countdown.dart';
|
||||
@@ -1059,6 +1060,8 @@ class _QuestDetailScreenState extends State<QuestDetailScreen> {
|
||||
_busy = false;
|
||||
_stage = QuestStage.rewarded;
|
||||
});
|
||||
// 서버가 확정한 새 완료에만 성공 햅틱(v1.5 4장 Quest 완료 UX 첫 단계 · C-79 서버 확정 뒤).
|
||||
if (!reward.duplicate) fxHaptic(questSuccessFx(detail.card.type));
|
||||
// 시청 · 스트리밍은 무보상 참여다(C-04) — 보상 · 광고 화면 없이 참여만 알리고 링크를 연다.
|
||||
if (detail.card.type == QuestType.streaming && detail.card.endsAt == null) {
|
||||
_toast(context.l10n.questStreamJoined);
|
||||
|
||||
@@ -5,12 +5,23 @@ import 'package:flutter/rendering.dart';
|
||||
import 'package:share_plus/share_plus.dart';
|
||||
|
||||
import '../../core/theme/tokens.dart';
|
||||
import '../../core/ui/fx_intensity.dart';
|
||||
import '../campaign/campaign_share.dart' show shareHashtags;
|
||||
import '../home/home_screen.dart' show formatPop;
|
||||
import 'music_shake_play_screen.dart' show ShakeTally;
|
||||
import 'quest_data.dart';
|
||||
import '../../core/i18n/app_locale.dart';
|
||||
|
||||
/// 퀘스트 완료 성공 햅틱 강도 — UX·FX v1.5 §1 「Small: 일반 Quest」 · 「Medium: Music/Location Quest 완료」.
|
||||
FxIntensity questSuccessFx(QuestType type) => switch (type) {
|
||||
QuestType.musicShake || QuestType.place => FxIntensity.medium,
|
||||
_ => FxIntensity.small,
|
||||
};
|
||||
|
||||
/// 퀘스트 보상 확정 → HOME 행성 반응(v1.5 4장 · 진척현황 B-3 4-2 · 4-3). 보상 화면 「확인」이 올리고,
|
||||
/// HOME 이 받아 에너지 이동 · 행성 흡수와 「퀘스트 완료가 {팬덤} 성장에 반영」을 띄운다.
|
||||
final questPlanetReaction = ValueNotifier<int>(0);
|
||||
|
||||
/// 보상 완료 — 화면 대조 원장 F4 · Figma `251:113651`(퀘스트 완료) · `482:15084`(광고 시청 후).
|
||||
///
|
||||
/// 명세 `518:88630` — *보상 완료 아이콘 · 보상 POP 텍스트 · 중앙 정렬*
|
||||
@@ -209,8 +220,10 @@ class _QuestRewardScreenState extends State<QuestRewardScreen> {
|
||||
child: FilledButton(
|
||||
// 설명 프레임 `518:88326` 「확인 버튼 - 클릭 시, 홈 화면 이동」 — 퀘스트 상세 · 목록까지
|
||||
// 닫고 첫 화면(탭 셸)으로 돌아간다. 퀘스트는 HOME 에서만 열린다.
|
||||
onPressed: () =>
|
||||
Navigator.of(context).popUntil((route) => route.isFirst),
|
||||
onPressed: () {
|
||||
questPlanetReaction.value++;
|
||||
Navigator.of(context).popUntil((route) => route.isFirst);
|
||||
},
|
||||
style: FilledButton.styleFrom(
|
||||
minimumSize: const Size.fromHeight(56),
|
||||
shape: RoundedRectangleBorder(
|
||||
|
||||
Reference in New Issue
Block a user