Files
front-hokm/lib/feature/game/presentation/bloc/game_event.dart
T
2026-06-25 01:11:34 +03:30

64 lines
1.8 KiB
Dart

import '../../../../core/network/ws_client.dart';
abstract class GameEvent {}
/// شروع اتصال با اقدامِ ورود (join_queue / create_table / join_table).
class ConnectGameEvent extends GameEvent {
final Map<String, dynamic> joinAction;
ConnectGameEvent(this.joinAction);
}
/// پیام دریافتی از سرور (داخلی).
class GameMessageReceived extends GameEvent {
final Map<String, dynamic> 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; // تعداد دستِ انتخابی (۳/۵/۷)
StartTableEvent(this.hands);
}
class RotateTableEvent extends GameEvent {
final int dir; // +۱/−۱ جهتِ چرخشِ جایگاه‌ها
RotateTableEvent(this.dir);
}
class LeaveTableEvent extends GameEvent {}
class ClearNoticeEvent extends GameEvent {}