fix: trump trick
This commit is contained in:
@@ -45,7 +45,7 @@ class HokmGame extends FlameGame {
|
||||
double _shake = 0;
|
||||
double _t = 0;
|
||||
List<String> _prevTrick = const [];
|
||||
bool _cutThisTrick = false; // افکتِ بریدن فقط یکبار در هر دست
|
||||
int _bestTrumpRank = 0; // بالاترین رتبهی حکمِ بازیشده در دستِ جاری (برای افکتِ بریدن)
|
||||
int _prevHandSize = 0; // برای تشخیصِ پخشِ کارت (دستِ جدید) جهت صدای بُر زدن
|
||||
bool _silent = false; // هنگام خروج از میز، دیگر صدایی پخش نشود
|
||||
bool _introActive = true; // تا پایانِ نمایشِ «جستجوی حریف»
|
||||
@@ -135,17 +135,19 @@ class HokmGame extends FlameGame {
|
||||
}
|
||||
final addedOne =
|
||||
now.length == _prevTrick.length + 1 && _isPrefix(_prevTrick, now);
|
||||
if (now.length <= 1) _cutThisTrick = false; // دستِ جدید ⇒ ریستِ افکتِ بریدن
|
||||
if (now.length <= 1) _bestTrumpRank = 0; // دستِ جدید ⇒ ریستِ بالاترین حکم
|
||||
if (addedOne) {
|
||||
final card = s.trick.last;
|
||||
final isCut =
|
||||
s.trump != null &&
|
||||
// بریدن: خالِ راهبر حکم نیست و کارتِ بازیشده حکم است.
|
||||
final isTrump = s.trump != null &&
|
||||
s.leadSuit != null &&
|
||||
s.leadSuit != s.trump &&
|
||||
suitName(card.card) == s.trump;
|
||||
// افکتِ بریدن فقط برای اولین بریدنِ هر دست (بریدنهای بعدی فقط صدای گذاشتن).
|
||||
if (isCut && !_cutThisTrick) {
|
||||
_cutThisTrick = true;
|
||||
final rank = isTrump ? rankValue(card.card) : 0;
|
||||
// افکتِ بریدن فقط وقتی حکمِ بازیشده «دست را میبرد» (بالاترین حکم تا کنون):
|
||||
// یعنی اولین بریدن یا روبریدنِ بالاتر. حکمِ پایینتر (بازنده) فقط صدای گذاشتن.
|
||||
if (isTrump && rank > _bestTrumpRank) {
|
||||
_bestTrumpRank = rank;
|
||||
_shake = 1.0;
|
||||
add(Lightning());
|
||||
AppSounds.cut(); // بریدن با حکم (شمشیر)
|
||||
@@ -273,6 +275,8 @@ class HokmGame extends FlameGame {
|
||||
_turnElapsed = 0;
|
||||
_beatPlayed = false;
|
||||
_hbAccum = 0;
|
||||
// صدای «نوبتِ شما» فقط هنگامِ بازیِ کارت (نه پخش/انتخابِ حکم).
|
||||
if (s.phase == 'playing' && !_dealing) AppSounds.turn();
|
||||
}
|
||||
_turnElapsed += dt;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user