From 76d6bdc8599a00701a920b3708f590ab031ccf59 Mon Sep 17 00:00:00 2001 From: JiWoong Sul Date: Fri, 26 Dec 2025 01:49:43 +0900 Subject: [PATCH] =?UTF-8?q?feat(canvas):=20=EB=B0=B0=EA=B2=BD=20=ED=88=AC?= =?UTF-8?q?=EB=AA=85=EB=8F=84=20=EC=A1=B0=EC=A0=88=20=EB=B0=8F=20=EC=8B=9C?= =?UTF-8?q?=EB=84=A4=EB=A7=88=ED=8B=B1=20=EB=B2=88=EC=97=AD=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - AsciiCanvasPainter/Widget에 backgroundOpacity 파라미터 추가 - 기본값 0.5 (50% 투명도)로 배경 렌더링 - CinematicView 텍스트에 l10n 번역 적용 --- lib/src/core/animation/canvas/ascii_canvas_painter.dart | 8 ++++++-- lib/src/core/animation/canvas/ascii_canvas_widget.dart | 5 +++++ lib/src/features/game/widgets/cinematic_view.dart | 4 ++-- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/lib/src/core/animation/canvas/ascii_canvas_painter.dart b/lib/src/core/animation/canvas/ascii_canvas_painter.dart index 53167e0..37dd4a5 100644 --- a/lib/src/core/animation/canvas/ascii_canvas_painter.dart +++ b/lib/src/core/animation/canvas/ascii_canvas_painter.dart @@ -43,6 +43,7 @@ class AsciiCanvasPainter extends CustomPainter { this.gridWidth = 60, this.gridHeight = 8, this.backgroundColor = AsciiColors.background, + this.backgroundOpacity = 0.5, this.layerVersion = 0, }); @@ -58,6 +59,9 @@ class AsciiCanvasPainter extends CustomPainter { /// 배경색 final Color backgroundColor; + /// 배경 투명도 (0.0 ~ 1.0, 기본값 0.5 = 50%) + final double backgroundOpacity; + /// 레이어 버전 (변경 감지용) final int layerVersion; @@ -83,10 +87,10 @@ class AsciiCanvasPainter extends CustomPainter { _lastFontSize = fontSize; } - // 2. 배경 채우기 + // 2. 배경 채우기 (투명도 적용) canvas.drawRect( Rect.fromLTWH(0, 0, size.width, size.height), - Paint()..color = backgroundColor, + Paint()..color = backgroundColor.withValues(alpha: backgroundOpacity), ); // 3. 레이어별 렌더링 (z-order 순) diff --git a/lib/src/core/animation/canvas/ascii_canvas_widget.dart b/lib/src/core/animation/canvas/ascii_canvas_widget.dart index 8c78e06..ce6ea06 100644 --- a/lib/src/core/animation/canvas/ascii_canvas_widget.dart +++ b/lib/src/core/animation/canvas/ascii_canvas_widget.dart @@ -13,6 +13,7 @@ class AsciiCanvasWidget extends StatelessWidget { required this.layers, this.gridWidth = 60, this.gridHeight = 8, + this.backgroundOpacity = 0.5, this.isAnimating = true, this.layerVersion = 0, }); @@ -26,6 +27,9 @@ class AsciiCanvasWidget extends StatelessWidget { /// 그리드 높이 (행 수) final int gridHeight; + /// 배경 투명도 (0.0 ~ 1.0, 기본값 0.5 = 50%) + final double backgroundOpacity; + /// 애니메이션 활성 상태 (willChange 최적화용) final bool isAnimating; @@ -40,6 +44,7 @@ class AsciiCanvasWidget extends StatelessWidget { layers: layers, gridWidth: gridWidth, gridHeight: gridHeight, + backgroundOpacity: backgroundOpacity, layerVersion: layerVersion, ), size: Size.infinite, diff --git a/lib/src/features/game/widgets/cinematic_view.dart b/lib/src/features/game/widgets/cinematic_view.dart index 662720f..a46763d 100644 --- a/lib/src/features/game/widgets/cinematic_view.dart +++ b/lib/src/features/game/widgets/cinematic_view.dart @@ -128,9 +128,9 @@ class _CinematicViewState extends State _AsciiArtDisplay(asciiArt: step.asciiArt!), const SizedBox(height: 24), ], - // 텍스트 + // 텍스트 (l10n 적용) Text( - step.text, + l10n.translateCinematic(step.text), style: const TextStyle( color: Colors.white, fontSize: 18,