feat: add reshuffle for ticket
This commit is contained in:
@@ -47,6 +47,7 @@ class HokmGame extends FlameGame {
|
||||
List<String> _prevTrick = const [];
|
||||
int _bestTrumpRank = 0; // بالاترین رتبهی حکمِ بازیشده در دستِ جاری (برای افکتِ بریدن)
|
||||
int _prevHandSize = 0; // برای تشخیصِ پخشِ کارت (دستِ جدید) جهت صدای بُر زدن
|
||||
String _prevHandSig = ''; // امضای دست؛ برای تشخیصِ بُرِ مجدد (تغییرِ ۵ کارت در فازِ حکم)
|
||||
bool _silent = false; // هنگام خروج از میز، دیگر صدایی پخش نشود
|
||||
bool _introActive = true; // تا پایانِ نمایشِ «جستجوی حریف»
|
||||
bool _pendingShuffle =
|
||||
@@ -89,6 +90,18 @@ class HokmGame extends FlameGame {
|
||||
_shuffleNow();
|
||||
}
|
||||
}
|
||||
// بُرِ مجدد: هنوز در فازِ حکم هستیم اما ۵ کارتِ حاکم عوض شده ⇒ انیمیشنِ بُر دوباره.
|
||||
final sig = (s.yourHand.toList()..sort()).join(',');
|
||||
if (!_silent &&
|
||||
!_introActive &&
|
||||
s.phase == 'choose_trump' &&
|
||||
s.trump == null &&
|
||||
_prevHandSize > 0 &&
|
||||
_prevHandSig.isNotEmpty &&
|
||||
sig != _prevHandSig) {
|
||||
_shuffleNow();
|
||||
}
|
||||
_prevHandSig = sig;
|
||||
// لحظهی انتخابِ حکم: صدا + نمایشِ بزرگِ حکم در مرکز.
|
||||
if (_prevTrump == null && s.trump != null && !_silent) {
|
||||
AppSounds.selectHokm();
|
||||
@@ -103,6 +116,7 @@ class HokmGame extends FlameGame {
|
||||
if (cubit.state.state != null) {
|
||||
_prevTrick = cubit.state.state!.trick.map((t) => t.card).toList();
|
||||
_prevHandSize = cubit.state.state!.yourHand.length;
|
||||
_prevHandSig = (cubit.state.state!.yourHand.toList()..sort()).join(',');
|
||||
_prevTrump = cubit.state.state!.trump;
|
||||
_s = cubit.state.state;
|
||||
_relayout();
|
||||
|
||||
Reference in New Issue
Block a user