added targets made APK

This commit is contained in:
2025-12-24 12:31:37 +01:00
parent f3dc1e7654
commit 2ea44fab64
28 changed files with 103 additions and 74 deletions
Binary file not shown.

Before

Width:  |  Height:  |  Size: 347 KiB

After

Width:  |  Height:  |  Size: 353 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 384 KiB

After

Width:  |  Height:  |  Size: 384 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 337 KiB

After

Width:  |  Height:  |  Size: 337 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 336 KiB

After

Width:  |  Height:  |  Size: 336 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 387 KiB

After

Width:  |  Height:  |  Size: 387 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 491 KiB

After

Width:  |  Height:  |  Size: 492 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 345 KiB

After

Width:  |  Height:  |  Size: 345 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 458 KiB

After

Width:  |  Height:  |  Size: 458 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 457 KiB

After

Width:  |  Height:  |  Size: 312 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 260 KiB

After

Width:  |  Height:  |  Size: 261 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 437 KiB

After

Width:  |  Height:  |  Size: 437 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 577 KiB

After

Width:  |  Height:  |  Size: 574 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 284 KiB

After

Width:  |  Height:  |  Size: 285 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 222 KiB

After

Width:  |  Height:  |  Size: 222 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 491 KiB

After

Width:  |  Height:  |  Size: 493 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 337 KiB

After

Width:  |  Height:  |  Size: 338 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 342 KiB

After

Width:  |  Height:  |  Size: 341 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 315 KiB

After

Width:  |  Height:  |  Size: 315 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 425 KiB

After

Width:  |  Height:  |  Size: 425 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 347 KiB

After

Width:  |  Height:  |  Size: 348 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 374 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 381 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 449 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 452 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 264 KiB

+16 -1
View File
@@ -301,7 +301,7 @@ class _PreviewScreenState extends State<PreviewScreen> {
return const Color(0xFF050608); // Very dark gray return const Color(0xFF050608); // Very dark gray
case 'assets/targets/Target19.jpg': case 'assets/targets/Target19.jpg':
return const Color(0xFF09080D); // Dark red return const Color(0xFFF68527); // Warm orange
case 'assets/targets/Target20.jpg': case 'assets/targets/Target20.jpg':
return const Color(0xFFA9D9EF); // Light blue return const Color(0xFFA9D9EF); // Light blue
@@ -336,6 +336,21 @@ class _PreviewScreenState extends State<PreviewScreen> {
case 'assets/targets/Target30.jpg': case 'assets/targets/Target30.jpg':
return const Color(0xFFFDFDFB); // Off-white return const Color(0xFFFDFDFB); // Off-white
case 'assets/targets/Target31.jpg':
return const Color(0xFFC52736); // Red
case 'assets/targets/Target32.jpg':
return const Color(0xFFFCF3EE); // Light cream
case 'assets/targets/Target33.jpg':
return const Color(0xFFFCFCF3); // Very light off-white
case 'assets/targets/Target34.jpg':
return const Color(0xFFFFFFFD); // Almost white
case 'assets/targets/Target35.jpg':
return const Color(0xFFFFC5C4); // Light salmon
default: default:
return Colors.grey[900]!; // Fallback to dark gray return Colors.grey[900]!; // Fallback to dark gray
} }
+81 -72
View File
@@ -82,6 +82,11 @@ class _SettingsScreenState extends State<SettingsScreen> {
'assets/targets/Target28.jpg', 'assets/targets/Target28.jpg',
'assets/targets/Target29.jpg', 'assets/targets/Target29.jpg',
'assets/targets/Target30.jpg', 'assets/targets/Target30.jpg',
'assets/targets/Target31.jpg',
'assets/targets/Target32.jpg',
'assets/targets/Target33.jpg',
'assets/targets/Target34.jpg',
'assets/targets/Target35.jpg',
]; ];
@override @override
@@ -533,20 +538,23 @@ String _getTargetDisplayName(String targetPath) {
child: Row( child: Row(
children: [ children: [
// Preview box with target // Preview box with target
Container( ClipRRect(
width: 70, borderRadius: BorderRadius.circular(8),
height: 70, child: Container(
decoration: BoxDecoration( width: 70,
border: Border.all(color: Colors.black12), height: 70,
borderRadius: BorderRadius.circular(8), decoration: BoxDecoration(
color: TargetColors.getBackgroundColor(_selectedTarget), border: Border.all(color: Colors.black12),
), borderRadius: BorderRadius.circular(8),
child: Image.asset( color: TargetColors.getBackgroundColor(_selectedTarget),
_selectedTarget, ),
fit: BoxFit.contain, child: Image.asset(
errorBuilder: (context, error, stackTrace) { _selectedTarget,
return Icon(Icons.image_not_supported, color: Colors.grey[400]); fit: BoxFit.contain,
}, errorBuilder: (context, error, stackTrace) {
return Icon(Icons.image_not_supported, color: Colors.grey[400]);
},
),
), ),
), ),
const SizedBox(width: 16), const SizedBox(width: 16),
@@ -738,65 +746,66 @@ void _showLanguagePopup() {
const SizedBox(height: 20), const SizedBox(height: 20),
// Preview with multiple bullets on target - ALWAYS ON TOP // Preview with multiple bullets on target - ALWAYS ON TOP
ClipRRect( Container(
borderRadius: BorderRadius.circular(12), width: double.infinity,
child: Container( height: 280,
width: double.infinity, decoration: BoxDecoration(
height: 280, color: TargetColors.getBackgroundColor(previewTarget),
decoration: BoxDecoration( borderRadius: BorderRadius.circular(12),
border: Border.all(color: Colors.white24),
color: TargetColors.getBackgroundColor(previewTarget),
),
child: Stack(
alignment: Alignment.center,
children: [
Center(
child: Image.asset(
previewTarget,
fit: BoxFit.contain,
errorBuilder: (context, error, stackTrace) {
return Container(
color: Colors.grey[800],
child: const Center(
child: Icon(Icons.image_not_supported, color: Colors.white54),
),
);
},
),
),
// Multiple preview bullets scattered around
Positioned(
left: 30,
top: 40,
child: _buildPreviewBullet(previewBulletColor),
),
Positioned(
right: 25,
top: 50,
child: _buildPreviewBullet(previewBulletColor),
),
Positioned(
left: 40,
bottom: 30,
child: _buildPreviewBullet(previewBulletColor),
),
Positioned(
right: 35,
bottom: 40,
child: _buildPreviewBullet(previewBulletColor),
),
Positioned(
left: 50,
top: 100,
child: _buildPreviewBullet(previewBulletColor),
),
Positioned(
right: 50,
bottom: 80,
child: _buildPreviewBullet(previewBulletColor),
),
],
), ),
child: ClipRRect(
borderRadius: BorderRadius.circular(12),
child: Stack(
alignment: Alignment.center,
clipBehavior: Clip.hardEdge,
children: [
Center(
child: Image.asset(
previewTarget,
fit: BoxFit.contain,
errorBuilder: (context, error, stackTrace) {
return Container(
color: Colors.grey[800],
child: const Center(
child: Icon(Icons.image_not_supported, color: Colors.white54),
),
);
},
),
),
// Multiple preview bullets scattered around
Positioned(
left: 90,
top: 100,
child: _buildPreviewBullet(previewBulletColor),
),
Positioned(
right: 90,
top: 110,
child: _buildPreviewBullet(previewBulletColor),
),
Positioned(
left: 100,
bottom: 90,
child: _buildPreviewBullet(previewBulletColor),
),
Positioned(
right: 95,
bottom: 100,
child: _buildPreviewBullet(previewBulletColor),
),
Positioned(
left: 110,
top: 140,
child: _buildPreviewBullet(previewBulletColor),
),
Positioned(
right: 110,
bottom: 140,
child: _buildPreviewBullet(previewBulletColor),
),
],
),
), ),
), ),
const SizedBox(height: 24), const SizedBox(height: 24),
+6 -1
View File
@@ -21,7 +21,7 @@ class TargetColors {
'assets/targets/Target16.jpg': Color(0xFF000000), // Black 'assets/targets/Target16.jpg': Color(0xFF000000), // Black
'assets/targets/Target17.jpg': Color(0xFF21304D), // Dark blue 'assets/targets/Target17.jpg': Color(0xFF21304D), // Dark blue
'assets/targets/Target18.jpg': Color(0xFF050608), // Very dark gray 'assets/targets/Target18.jpg': Color(0xFF050608), // Very dark gray
'assets/targets/Target19.jpg': Color(0xFF09080D), // Dark 'assets/targets/Target19.jpg': Color(0xFFF68527), // Warm orange
'assets/targets/Target20.jpg': Color(0xFFA9D9EF), // Light blue 'assets/targets/Target20.jpg': Color(0xFFA9D9EF), // Light blue
'assets/targets/Target21.jpg': Color(0xFFDA6868), // Muted red 'assets/targets/Target21.jpg': Color(0xFFDA6868), // Muted red
'assets/targets/Target22.jpg': Color(0xFFFBFAF6), // Off-white 'assets/targets/Target22.jpg': Color(0xFFFBFAF6), // Off-white
@@ -33,6 +33,11 @@ class TargetColors {
'assets/targets/Target28.jpg': Color(0xFFFFFFFF), // White 'assets/targets/Target28.jpg': Color(0xFFFFFFFF), // White
'assets/targets/Target29.jpg': Color(0xFF180E27), // Dark purple 'assets/targets/Target29.jpg': Color(0xFF180E27), // Dark purple
'assets/targets/Target30.jpg': Color(0xFFFDFDFB), // Off-white 'assets/targets/Target30.jpg': Color(0xFFFDFDFB), // Off-white
'assets/targets/Target31.jpg': Color(0xFFC52736), // Red
'assets/targets/Target32.jpg': Color(0xFFFCF3EE), // Light cream
'assets/targets/Target33.jpg': Color(0xFFFCFCF3), // Very light off-white
'assets/targets/Target34.jpg': Color(0xFFFFFFFD), // Almost white
'assets/targets/Target35.jpg': Color(0xFFFFC5C4), // Light salmon
}; };
static Color getBackgroundColor(String targetPath) { static Color getBackgroundColor(String targetPath) {