feat: cleaning code

This commit is contained in:
2026-06-24 22:56:32 +03:30
parent e73333344f
commit e8cde8e1f7
18 changed files with 99 additions and 88 deletions
@@ -171,7 +171,7 @@ class _GameScreenState extends State<GameScreen> {
padding: const EdgeInsets.symmetric(horizontal: 18, vertical: 8),
decoration: BoxDecoration(
gradient: const LinearGradient(
colors: [Color(0xFFE9B949), Color(0xFFB8860B)],
colors: [AppColors.gold, AppColors.goldDark],
),
borderRadius: BorderRadius.circular(20),
boxShadow: const [BoxShadow(color: Colors.black54, blurRadius: 8)],
@@ -179,7 +179,7 @@ class _GameScreenState extends State<GameScreen> {
child: const Text(
'نوبت شماست',
style: TextStyle(
color: Color(0xFF3A0A12),
color: AppColors.bg,
fontWeight: FontWeight.bold,
fontSize: 16,
),
@@ -328,7 +328,7 @@ class _GameScreenState extends State<GameScreen> {
child: Text(
'$_countdown',
style: const TextStyle(
color: Color(0xFF3A0A12),
color: AppColors.bg,
fontSize: 26,
fontWeight: FontWeight.bold,
),
@@ -398,8 +398,8 @@ class _GameScreenState extends State<GameScreen> {
Widget _trumpPicker(BuildContext context) {
const suits = [
('spades', '', 'پیک', Colors.white),
('hearts', '', 'دل', Color(0xFFD32F2F)),
('diamonds', '', 'خشت', Color(0xFFD32F2F)),
('hearts', '', 'دل', AppColors.suitRed),
('diamonds', '', 'خشت', AppColors.suitRed),
('clubs', '', 'گشنیز', Colors.white),
];
return Container(
@@ -448,7 +448,7 @@ class _GameScreenState extends State<GameScreen> {
],
),
const SizedBox(height: 16),
const Divider(color: Color(0x33E9B949), height: 1),
const Divider(color: AppColors.goldFaint, height: 1),
const SizedBox(height: 12),
// بُرِ مجدد با مصرفِ یک بلیت (۵ کارتِ تازه، سپس باز هم انتخابِ حکم).
BlocBuilder<WalletBloc, WalletBlocState>(
@@ -211,7 +211,7 @@ class _LobbyViewState extends State<_LobbyView> {
label: 'شروع بازی',
icon: Icons.play_arrow,
width: double.infinity,
colors: const [Color(0xFF3FA34D), Color(0xFF1B5E20)],
colors: const [AppColors.success, AppColors.successDark],
onTap: () => context.read<GameBloc>().startTable(_hands),
)
else
@@ -316,7 +316,7 @@ class _LobbyViewState extends State<_LobbyView> {
shape: BoxShape.circle,
gradient: selected
? const LinearGradient(
colors: [Color(0xFFE9B949), Color(0xFFB8860B)])
colors: [AppColors.gold, AppColors.goldDark])
: null,
color: selected ? null : AppColors.panel,
border: Border.all(
@@ -326,7 +326,7 @@ class _LobbyViewState extends State<_LobbyView> {
child: Text(
fa[h]!,
style: TextStyle(
color: selected ? const Color(0xFF3A0A12) : Colors.white,
color: selected ? AppColors.bg : Colors.white,
fontSize: 22,
fontWeight: FontWeight.bold,
),
@@ -89,7 +89,7 @@ class _TierCard extends StatelessWidget {
const _TierCard({required this.tier, required this.index});
static const _palettes = [
[Color(0xFF43A047), Color(0xFF1B5E20)],
[Color(0xFF43A047), AppColors.successDark],
[Color(0xFFE53935), Color(0xFF8E0E1B)],
[Color(0xFF1E88E5), Color(0xFF0D3C73)],
[Color(0xFF8E24AA), Color(0xFF4A0D5E)],
@@ -4,8 +4,10 @@ import 'package:flame/components.dart';
import 'package:flame/effects.dart';
import 'package:flutter/material.dart';
const _gold = Color(0xFFE9B949);
const _goldDark = Color(0xFF8A5A00);
import '../../../../../core/theme/app_theme.dart';
const _gold = AppColors.gold;
const _goldDark = Color(0xFF8A5A00); // طلاییِ تیره‌ترِ مخصوصِ نشان‌ها
/// ستاره‌ی طلایی روی بازیکنِ نوبت‌دار (مطابقِ تصویرِ مرجع).
class StarBadge extends PositionComponent {
@@ -4,6 +4,7 @@ import 'package:flame/events.dart';
import 'package:flutter/material.dart';
import '../../../../../core/network/card_images.dart';
import '../../../../../core/theme/app_theme.dart';
/// یک کارت روی میز؛ اگر تصویر `assets/images/cards/<code>.png` موجود باشد از آن
/// استفاده می‌کند، وگرنه نسخه‌ی برداری می‌کشد. برای پشت کارت `back.jpg`.
@@ -180,7 +181,7 @@ class CardComponent extends PositionComponent
Paint()
..style = PaintingStyle.stroke
..strokeWidth = 1.5
..color = const Color(0xFF1A1A1A),
..color = AppColors.suitDark,
);
// هایلایت طلایی: هنگام کشیدن همیشه (انتخاب)، و پررنگ‌تر روی ناحیه‌ی انداختن.
@@ -190,7 +191,7 @@ class CardComponent extends PositionComponent
Paint()
..style = PaintingStyle.stroke
..strokeWidth = size.x * (_overZone ? 0.06 : 0.035)
..color = const Color(0xFFE9B949)
..color = AppColors.gold
..maskFilter = MaskFilter.blur(BlurStyle.normal, _overZone ? 6 : 3),
);
}
@@ -204,7 +205,7 @@ class CardComponent extends PositionComponent
Paint()
..style = PaintingStyle.stroke
..strokeWidth = 2
..color = const Color(0xFFE9B949),
..color = AppColors.gold,
);
}
@@ -224,13 +225,13 @@ class CardComponent extends PositionComponent
(String, Color) _suit(String s) {
switch (s) {
case 'H':
return ('', const Color(0xFFD32F2F));
return ('', AppColors.suitRed);
case 'D':
return ('', const Color(0xFFD32F2F));
return ('', AppColors.suitRed);
case 'C':
return ('', const Color(0xFF1A1A1A));
return ('', AppColors.suitDark);
default:
return ('', const Color(0xFF1A1A1A));
return ('', AppColors.suitDark);
}
}
@@ -7,6 +7,7 @@ import 'package:flame/game.dart';
import 'package:flutter/material.dart';
import '../../../../../core/service/app_sounds.dart';
import '../../../../../core/theme/app_theme.dart';
import '../../../domain/entities/game_entities.dart';
import '../../bloc/game_bloc.dart';
import 'card_codes.dart';
@@ -222,7 +223,7 @@ class HokmGame extends FlameGame {
/// نمایشِ بزرگ و گذرای حکمِ انتخاب‌شده در مرکزِ میز (با پاپ).
void _spawnTrumpReveal(String trump) {
final (sym, col) = _trumpGlyph(trump);
final (sym, col) = suitGlyph(trump);
final reveal = TextComponent(
text: 'حکم $sym',
anchor: Anchor.center,
@@ -606,16 +607,4 @@ class HokmGame extends FlameGame {
add(c);
}
(String, Color) _trumpGlyph(String suit) {
switch (suit) {
case 'hearts':
return ('', const Color(0xFFD32F2F));
case 'diamonds':
return ('', const Color(0xFFD32F2F));
case 'clubs':
return ('', Colors.white);
default:
return ('', Colors.white);
}
}
}
@@ -3,9 +3,11 @@ import 'dart:math' as math;
import 'package:flame/components.dart';
import 'package:flutter/material.dart';
// رنگ‌های مشترکِ میز.
const _gold = Color(0xFFE9B949);
const _goldDark = Color(0xFFB8860B);
import '../../../../../core/theme/app_theme.dart';
// رنگ‌های مشترکِ میز (منبعِ واحد در AppColors).
const _gold = AppColors.gold;
const _goldDark = AppColors.goldDark;
/// میز: زمینِ سبزِ نمدی در کلِ صفحه + یک «میزِ» مرکزیِ سرمه‌ای با قابِ طلاییِ
/// دولایه (مطابقِ تصویرِ مرجع). کارت‌های زمین داخلِ ناحیه‌ی سرمه‌ای انداخته می‌شوند
@@ -3,6 +3,8 @@ import 'dart:math' as math;
import 'package:flame/components.dart';
import 'package:flutter/material.dart';
import '../../../../../core/theme/app_theme.dart';
/// حلقه‌ی شمارشِ معکوسِ نوبت: کمانی که در طولِ مهلتِ نوبت خالی می‌شود.
/// در ثانیه‌های پایانی قرمز و ضربان‌دار می‌شود. (صدای ضربانِ قلب در HokmGame
/// مدیریت می‌شود تا هنگامِ بازی‌شدنِ کارت بلافاصله قطع شود.)
@@ -50,7 +52,7 @@ class TurnTimer extends PositionComponent {
: (1 - _elapsed / durationSeconds).clamp(0.0, 1.0);
if (frac <= 0) return;
final color = frac > 0.35 ? const Color(0xFFE9B949) : const Color(0xFFE53935);
final color = frac > 0.35 ? AppColors.gold : AppColors.suitRed;
final arc = Paint()
..style = PaintingStyle.stroke
..strokeWidth = 4
@@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:random_avatar/random_avatar.dart';
import '../../../../core/network/ws_client.dart';
import '../../../../core/theme/app_theme.dart';
import '../../domain/entities/game_entities.dart';
/// اوورلیِ روی صحنه‌ی Flame: آواتارِ بازیکنان با قابِ طلایی، نام، نشانِ رتبه،
@@ -105,7 +106,7 @@ class TableHud extends StatelessWidget {
width: 1,
height: 30,
margin: const EdgeInsets.symmetric(horizontal: 12),
color: const Color(0x33E9B949),
color: AppColors.goldFaint,
),
_scoreCol('حریف', opp),
],
@@ -121,7 +122,7 @@ class TableHud extends StatelessWidget {
children: [
Text(
label,
style: const TextStyle(color: Color(0xFFE9B949), fontSize: 12),
style: const TextStyle(color: AppColors.gold, fontSize: 12),
),
Text(
'$v',
@@ -135,7 +136,7 @@ class TableHud extends StatelessWidget {
);
Widget _hokmChip() {
final (glyph, color) = _trumpGlyph(s.trump);
final (glyph, color) = suitGlyph(s.trump);
return Container(
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 5),
decoration: _panelDeco(),
@@ -145,7 +146,7 @@ class TableHud extends StatelessWidget {
const Text(
'حکم',
style: TextStyle(
color: Color(0xFFE9B949),
color: AppColors.gold,
fontSize: 13,
fontWeight: FontWeight.bold,
),
@@ -168,14 +169,14 @@ class TableHud extends StatelessWidget {
children: [
Icon(
ok ? Icons.wifi : Icons.wifi_off,
color: ok ? const Color(0xFF4CD964) : Colors.redAccent,
color: ok ? AppColors.online : Colors.redAccent,
size: 16,
),
const SizedBox(width: 5),
Text(
ok ? 'آنلاین' : 'قطع',
style: TextStyle(
color: ok ? const Color(0xFF4CD964) : Colors.redAccent,
color: ok ? AppColors.online : Colors.redAccent,
fontSize: 12,
fontWeight: FontWeight.bold,
),
@@ -186,7 +187,7 @@ class TableHud extends StatelessWidget {
const SizedBox(width: 8),
_RoundBtn(
icon: Icons.logout,
color: const Color(0xFFB81D2A),
color: AppColors.accent,
onTap: onExit,
size: 40,
),
@@ -201,24 +202,9 @@ class TableHud extends StatelessWidget {
colors: [Color(0xFF2A2018), Color(0xFF14100B)],
),
borderRadius: BorderRadius.circular(14),
border: Border.all(color: const Color(0xFFB8860B), width: 1.4),
border: Border.all(color: AppColors.goldDark, width: 1.4),
boxShadow: const [BoxShadow(color: Colors.black54, blurRadius: 6)],
);
(String, Color) _trumpGlyph(String? suit) {
switch (suit) {
case 'hearts':
return ('', const Color(0xFFE53935));
case 'diamonds':
return ('', const Color(0xFFE53935));
case 'clubs':
return ('', Colors.white);
case 'spades':
return ('', Colors.white);
default:
return ('', Colors.white54);
}
}
}
class _PlayerSeat extends StatelessWidget {
@@ -256,7 +242,7 @@ class _PlayerSeat extends StatelessWidget {
color: const Color(0xCC14100B),
borderRadius: BorderRadius.circular(10),
border: Border.all(
color: isTurn ? const Color(0xFFE9B949) : const Color(0x55B8860B),
color: isTurn ? AppColors.gold : const Color(0x55B8860B),
),
),
child: Text(
@@ -265,7 +251,7 @@ class _PlayerSeat extends StatelessWidget {
overflow: TextOverflow.ellipsis,
textAlign: TextAlign.center,
style: TextStyle(
color: isTurn ? const Color(0xFFE9B949) : Colors.white,
color: isTurn ? AppColors.gold : Colors.white,
fontSize: diameter * 0.18,
fontWeight: FontWeight.bold,
),
@@ -288,7 +274,7 @@ class _PlayerSeat extends StatelessWidget {
gradient: const LinearGradient(
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
colors: [Color(0xFFF3D27A), Color(0xFFB8860B)],
colors: [Color(0xFFF3D27A), AppColors.goldDark],
),
boxShadow: const [
BoxShadow(color: Colors.black54, blurRadius: 6),
@@ -359,7 +345,7 @@ class _PlayerSeat extends StatelessWidget {
Text(
'${player.coins}',
style: TextStyle(
color: const Color(0xFFE9B949),
color: AppColors.gold,
fontSize: diameter * 0.16,
),
),
@@ -450,7 +436,7 @@ class _RingPainter extends CustomPainter {
const start = -1.5708; // بالا
final sweep = 6.28318 * left;
final color =
left < 0.3 ? const Color(0xFFE53935) : const Color(0xFF4CD964);
left < 0.3 ? AppColors.suitRed : AppColors.online;
canvas.drawArc(
Rect.fromCircle(center: center, radius: radius),
start,
@@ -524,7 +510,7 @@ class _TricksBadgeState extends State<_TricksBadge>
decoration: BoxDecoration(
color: const Color(0xFF7B0E14),
borderRadius: BorderRadius.circular(d),
border: Border.all(color: const Color(0xFFE9B949), width: 1.4),
border: Border.all(color: AppColors.gold, width: 1.4),
boxShadow: const [BoxShadow(color: Colors.black54, blurRadius: 4)],
),
child: Row(
@@ -566,7 +552,7 @@ class _RoundBtn extends StatelessWidget {
decoration: BoxDecoration(
color: color,
shape: BoxShape.circle,
border: Border.all(color: const Color(0xFFE9B949), width: 1.6),
border: Border.all(color: AppColors.gold, width: 1.6),
boxShadow: const [BoxShadow(color: Colors.black54, blurRadius: 6)],
),
child: Icon(icon, color: Colors.white, size: size * 0.5),