diff --git a/assets/data/icon/icon_accessory_legacy.png b/assets/data/icon/icon_accessory_legacy.png new file mode 100644 index 0000000..d90e14d Binary files /dev/null and b/assets/data/icon/icon_accessory_legacy.png differ diff --git a/assets/data/icon/icon_armor_legacy.png b/assets/data/icon/icon_armor_legacy.png new file mode 100644 index 0000000..c490bc1 Binary files /dev/null and b/assets/data/icon/icon_armor_legacy.png differ diff --git a/assets/data/icon/icon_potion.png b/assets/data/icon/icon_potion.png new file mode 100644 index 0000000..712dcd8 Binary files /dev/null and b/assets/data/icon/icon_potion.png differ diff --git a/assets/data/icon/icon_shield_legacy.png b/assets/data/icon/icon_shield_legacy.png new file mode 100644 index 0000000..34c1eb1 Binary files /dev/null and b/assets/data/icon/icon_shield_legacy.png differ diff --git a/assets/data/icon/icon_weapon_legacy.png b/assets/data/icon/icon_weapon_legacy.png new file mode 100644 index 0000000..56b8cf9 Binary files /dev/null and b/assets/data/icon/icon_weapon_legacy.png differ diff --git a/assets/images/icons/borders/border_000.png b/assets/images/icons/borders/border_000.png new file mode 100644 index 0000000..016a3e7 Binary files /dev/null and b/assets/images/icons/borders/border_000.png differ diff --git a/assets/images/icons/borders/border_001.png b/assets/images/icons/borders/border_001.png new file mode 100644 index 0000000..18eca4b Binary files /dev/null and b/assets/images/icons/borders/border_001.png differ diff --git a/assets/images/icons/borders/border_004.png b/assets/images/icons/borders/border_004.png new file mode 100644 index 0000000..0597046 Binary files /dev/null and b/assets/images/icons/borders/border_004.png differ diff --git a/assets/images/icons/borders/border_005.png b/assets/images/icons/borders/border_005.png new file mode 100644 index 0000000..557bec9 Binary files /dev/null and b/assets/images/icons/borders/border_005.png differ diff --git a/assets/images/icons/borders/border_014.png b/assets/images/icons/borders/border_014.png new file mode 100644 index 0000000..deb72ae Binary files /dev/null and b/assets/images/icons/borders/border_014.png differ diff --git a/assets/images/icons/borders/border_030.png b/assets/images/icons/borders/border_030.png new file mode 100644 index 0000000..75c0a11 Binary files /dev/null and b/assets/images/icons/borders/border_030.png differ diff --git a/lib/widgets/common/custom_icon.dart b/lib/widgets/common/custom_icon.dart new file mode 100644 index 0000000..d44fd02 --- /dev/null +++ b/lib/widgets/common/custom_icon.dart @@ -0,0 +1,51 @@ +import 'package:flutter/material.dart'; + +class CustomIcon extends StatelessWidget { + final String iconPath; + final double? size; + final Color? iconColor; + final double opacity; + + const CustomIcon({ + super.key, + required this.iconPath, + this.size = 64, + this.iconColor, + this.opacity = 1.0, + }); + + @override + Widget build(BuildContext context) { + return Opacity( + opacity: opacity, + child: SizedBox( + width: size ?? 64, + height: size ?? 64, + child: Stack( + alignment: Alignment.center, + children: [ + // Background Border (Always 000 for Battle/Default) + SizedBox.expand( + child: Image.asset( + 'assets/images/icons/borders/border_000.png', + fit: BoxFit.contain, + filterQuality: FilterQuality.high, + ), + ), + // Inner Icon + FractionallySizedBox( + widthFactor: 0.6, + heightFactor: 0.6, + child: Image.asset( + iconPath, + fit: BoxFit.contain, + filterQuality: FilterQuality.high, + color: iconColor, + ), + ), + ], + ), + ), + ); + } +} diff --git a/lib/widgets/common/custom_icon_button.dart b/lib/widgets/common/custom_icon_button.dart new file mode 100644 index 0000000..b4bf832 --- /dev/null +++ b/lib/widgets/common/custom_icon_button.dart @@ -0,0 +1,34 @@ +import 'package:flutter/material.dart'; + +import 'custom_icon.dart'; // Import CustomIcon + +class CustomIconButton extends StatelessWidget { + final String iconPath; + final VoidCallback? onTap; + final double? size; + final bool isEnabled; + final Color? iconColor; + + const CustomIconButton({ + super.key, + required this.iconPath, + this.onTap, + this.size = 64.0, + this.isEnabled = true, + this.iconColor, + }); + + @override + Widget build(BuildContext context) { + return GestureDetector( + onTap: isEnabled ? onTap : null, + behavior: HitTestBehavior.opaque, + child: CustomIcon( + iconPath: iconPath, + size: size, + iconColor: iconColor, + opacity: isEnabled ? 1.0 : 0.5, + ), + ); + } +}