퀘스트 완료 햅틱 · HOME 행성 반응 · Push·라이브 띠 중복 제어 · 알림함 위계 · Push 탭 화면 이동
This commit is contained in:
@@ -20,8 +20,30 @@ class ZapController extends ChangeNotifier {
|
||||
({String fandomId, int count, String key})? _batch;
|
||||
bool get needsRetry => _batch != null && !sending;
|
||||
|
||||
/// 지금 결과가 ZAP 이 아니라 퀘스트 보상 확정의 행성 반응인가([react]).
|
||||
bool questReaction = false;
|
||||
|
||||
/// 퀘스트 보상 확정 뒤 행성 반응 — v1.5 4장 「성공 햅틱 → 보상/기여 에너지 이동 → Planet 반응 →
|
||||
/// 실제 지급/성장 결과」의 에너지 이동 · 반응 두 단계. ZAP 과 같은 이동 · 흡수 연출을 쓰고 잔액은
|
||||
/// 건드리지 않는다. 서버가 보상을 확정한 뒤에만 부른다(C-79).
|
||||
Future<void> react() async {
|
||||
if (_disposed || sending || pending > 0) return;
|
||||
questReaction = true;
|
||||
touchSerial++;
|
||||
notifyListeners();
|
||||
// 에너지가 행성에 닿은 뒤 흡수 — ZapFeedback 이동 시간(380ms)과 같다.
|
||||
await Future<void>.delayed(const Duration(milliseconds: 380));
|
||||
if (_disposed || !questReaction) return;
|
||||
result = ZapResult(
|
||||
txId: 'quest-${DateTime.now().microsecondsSinceEpoch}',
|
||||
balanceAfter: -1,
|
||||
);
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
void tap(String fandomId) {
|
||||
if (_disposed || sending || _batch != null || fandomId.isEmpty) return;
|
||||
questReaction = false;
|
||||
if (pending == 0) fxHaptic(FxIntensity.small);
|
||||
pending++;
|
||||
touchSerial++;
|
||||
|
||||
Reference in New Issue
Block a user