import '../../../../core/network/ws_client.dart'; abstract class GameEvent {} /// شروع اتصال با اقدامِ ورود (join_queue / create_table / join_table). class ConnectGameEvent extends GameEvent { final Map joinAction; ConnectGameEvent(this.joinAction); } /// پیام دریافتی از سرور (داخلی). class GameMessageReceived extends GameEvent { final Map message; GameMessageReceived(this.message); } /// تغییر وضعیت اتصال (داخلی). class GameStatusChanged extends GameEvent { final WsStatus status; GameStatusChanged(this.status); } class ChooseTrumpEvent extends GameEvent { final String suit; ChooseTrumpEvent(this.suit); } class PlayCardEvent extends GameEvent { final String card; PlayCardEvent(this.card); } class ReshuffleEvent extends GameEvent {} // بُرِ مجدد با مصرفِ یک بلیت /// ارسالِ پیام/شکلک (یکی از text یا emoji پر است). class SendChatEvent extends GameEvent { final String? text; final String? emoji; SendChatEvent({this.text, this.emoji}); } /// پاک‌کردنِ حبابِ پیامِ یک جایگاه پس از انقضا (id برای جلوگیری از پاکِ حبابِ جدیدتر). class ExpireChatEvent extends GameEvent { final int seat; final int id; ExpireChatEvent(this.seat, this.id); } class LeaveGameEvent extends GameEvent {} class StartTableEvent extends GameEvent { final int hands; // تعداد دستِ انتخابی (۳/۵/۷) final int stake; // شرطِ سکه‌ایِ هر بازیکن StartTableEvent(this.hands, {this.stake = 0}); } class SetStakeEvent extends GameEvent { final int stake; // شرطِ سکه‌ایِ میز (تنظیمِ زنده‌ی میزبان) SetStakeEvent(this.stake); } class RotateTableEvent extends GameEvent { final int dir; // +۱/−۱ جهتِ چرخشِ جایگاه‌ها RotateTableEvent(this.dir); } class LeaveTableEvent extends GameEvent {} class ClearNoticeEvent extends GameEvent {}