UX·FX v1.5 — 햅틱 단계 · 라이브 띠 · HERO 전광판 · Push 우선순위 · Shield · 이클립스 성공·실패 연출

This commit is contained in:
Sn-Kinos
2026-10-06 20:12:44 +09:00
parent a04626b003
commit 62b9637db9
30 changed files with 851 additions and 118 deletions
@@ -1,6 +1,5 @@
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:sensors_plus/sensors_plus.dart';
import '../../core/data/planet_visual_state.dart';
import '../../core/data/backend.dart';
@@ -8,6 +7,7 @@ import '../../core/ui/live_stream.dart';
import 'planet_data.dart';
import '../../core/i18n/app_locale.dart';
import '../quest/quest_evidence.dart' show ShakeDetector;
import '../../core/ui/fx_intensity.dart';
/// 수량·상한·중복 여부는 서버가 결정한다. 단말은 참여 의사와 결과만 전달한다.
class HeroParticipationSheet extends StatefulWidget {
@@ -99,7 +99,7 @@ class _HeroParticipationSheetState extends State<HeroParticipationSheet>
_received[id] = receipt;
_pendingId = null;
});
if (_foreground) HapticFeedback.lightImpact();
if (_foreground) fxHaptic(FxIntensity.small);
} catch (error) {
if (!mounted) return;
final code = error is BackendException ? error.code : null;