diff --git a/app/lib/core/ui/planet_25d.dart b/app/lib/core/ui/planet_25d.dart index c74e4fd..9015426 100644 --- a/app/lib/core/ui/planet_25d.dart +++ b/app/lib/core/ui/planet_25d.dart @@ -970,25 +970,8 @@ class _SustainedAura extends CustomPainter { final Color color; final bool lowEffects; @override - void paint(Canvas canvas, Size size) { - final c = size.center(Offset.zero); - final r = size.shortestSide * 0.82; - canvas.drawCircle( - c, - r, - Paint() - ..shader = RadialGradient( - colors: [ - Colors.transparent, - Colors.transparent, - const Color(0xFFC1B9FF).withValues(alpha: lowEffects ? 0.19 : 0.3), - color.withValues(alpha: lowEffects ? 0.1 : 0.17), - Colors.transparent, - ], - stops: const [0, 0.50, 0.62, 0.76, 1], - ).createShader(Rect.fromCircle(center: c, radius: r)), - ); - } + void paint(Canvas canvas, Size size) => + paintSurfaceAura(canvas, size, color, lowEffects: lowEffects); @override bool shouldRepaint(_SustainedAura old) => diff --git a/app/lib/core/ui/planet_evolution.dart b/app/lib/core/ui/planet_evolution.dart index 44c3acc..b5fc183 100644 --- a/app/lib/core/ui/planet_evolution.dart +++ b/app/lib/core/ui/planet_evolution.dart @@ -346,6 +346,8 @@ class _EvolutionPainter extends CustomPainter { const color = AppColors.cosmicAccent; final p = progress; if (!evolution) { + // Figma `2024:20758` 「lv up 시 : 행성에 표면 아우라 발생」 — 진화 5% 전과 같은 표면 아우라가 떴다 사라진다. + paintSurfaceAura(canvas, size, color, lowEffects: lowEffects, opacity: 1 - p); canvas.drawCircle( c, radius * (1 + p * 0.5), @@ -482,6 +484,33 @@ class _HeroPainter extends CustomPainter { /// Orbit Burst — 기울어진 궤도 고리가 바깥으로 퍼지고 입자가 흩어진다. [burst] 0 → 1. /// HERO 발동의 Ring Wave 와 이클립스 성공(v1.5 §5 「짧은 Orbit Burst」)이 같이 쓴다. +/// 구면에 붙은 표면 아우라 — Stage 6 지속 아우라 · 진화 5% 전 · Level Up 이 같이 쓴다. +void paintSurfaceAura( + Canvas canvas, + Size size, + Color color, { + required bool lowEffects, + double opacity = 1, +}) { + final c = size.center(Offset.zero); + final r = size.shortestSide * 0.82; + canvas.drawCircle( + c, + r, + Paint() + ..shader = RadialGradient( + colors: [ + Colors.transparent, + Colors.transparent, + const Color(0xFFC1B9FF).withValues(alpha: (lowEffects ? 0.19 : 0.3) * opacity), + color.withValues(alpha: (lowEffects ? 0.1 : 0.17) * opacity), + Colors.transparent, + ], + stops: const [0, 0.50, 0.62, 0.76, 1], + ).createShader(Rect.fromCircle(center: c, radius: r)), + ); +} + void paintOrbitBurst( Canvas canvas, Size size,