This commit is contained in:
parent
8297ce980f
commit
7abb01ed5b
|
|
@ -128,6 +128,10 @@ class CharacterStatusCard extends StatelessWidget {
|
||||||
assetPath: overrideImage ?? character.image!,
|
assetPath: overrideImage ?? character.image!,
|
||||||
scale: 5.0, // Zoomed in (300x300 in 200x200 box)
|
scale: 5.0, // Zoomed in (300x300 in 200x200 box)
|
||||||
frameCount: 6,
|
frameCount: 6,
|
||||||
|
flip: !isPlayer,
|
||||||
|
fallbackAssetPath: !isPlayer
|
||||||
|
? 'assets/images/enemies/Orc.png'
|
||||||
|
: null,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
: Icon(
|
: Icon(
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,8 @@ class SpriteAnimationWidget extends StatefulWidget {
|
||||||
final double tileHeight;
|
final double tileHeight;
|
||||||
final int frameCount;
|
final int frameCount;
|
||||||
final double scale;
|
final double scale;
|
||||||
|
final bool flip;
|
||||||
|
final String? fallbackAssetPath;
|
||||||
|
|
||||||
const SpriteAnimationWidget({
|
const SpriteAnimationWidget({
|
||||||
super.key,
|
super.key,
|
||||||
|
|
@ -18,6 +20,8 @@ class SpriteAnimationWidget extends StatefulWidget {
|
||||||
this.frameCount =
|
this.frameCount =
|
||||||
6, // Default guess, will adjust logic to use actual image width if possible
|
6, // Default guess, will adjust logic to use actual image width if possible
|
||||||
this.scale = 1.0,
|
this.scale = 1.0,
|
||||||
|
this.flip = false,
|
||||||
|
this.fallbackAssetPath,
|
||||||
});
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|
@ -43,7 +47,24 @@ class _SpriteAnimationWidgetState extends State<SpriteAnimationWidget>
|
||||||
|
|
||||||
Future<void> _loadImage() async {
|
Future<void> _loadImage() async {
|
||||||
try {
|
try {
|
||||||
final ByteData data = await rootBundle.load(widget.assetPath);
|
await _loadAsset(widget.assetPath);
|
||||||
|
} catch (e) {
|
||||||
|
debugPrint('Failed to load sprite image: $e');
|
||||||
|
if (widget.fallbackAssetPath != null) {
|
||||||
|
debugPrint(
|
||||||
|
'Attempting to load fallback image: ${widget.fallbackAssetPath}',
|
||||||
|
);
|
||||||
|
try {
|
||||||
|
await _loadAsset(widget.fallbackAssetPath!);
|
||||||
|
} catch (e2) {
|
||||||
|
debugPrint('Failed to load fallback image: $e2');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> _loadAsset(String path) async {
|
||||||
|
final ByteData data = await rootBundle.load(path);
|
||||||
final List<int> bytes = data.buffer.asUint8List();
|
final List<int> bytes = data.buffer.asUint8List();
|
||||||
final Completer<ui.Image> completer = Completer();
|
final Completer<ui.Image> completer = Completer();
|
||||||
ui.decodeImageFromList(Uint8List.fromList(bytes), (ui.Image img) {
|
ui.decodeImageFromList(Uint8List.fromList(bytes), (ui.Image img) {
|
||||||
|
|
@ -68,9 +89,6 @@ class _SpriteAnimationWidgetState extends State<SpriteAnimationWidget>
|
||||||
_controller.repeat();
|
_controller.repeat();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
} catch (e) {
|
|
||||||
debugPrint('Failed to load sprite image: $e');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|
@ -92,7 +110,10 @@ class _SpriteAnimationWidgetState extends State<SpriteAnimationWidget>
|
||||||
return AnimatedBuilder(
|
return AnimatedBuilder(
|
||||||
animation: _controller,
|
animation: _controller,
|
||||||
builder: (context, child) {
|
builder: (context, child) {
|
||||||
return CustomPaint(
|
return Transform.scale(
|
||||||
|
scaleX: widget.flip ? -1.0 : 1.0,
|
||||||
|
alignment: Alignment.center,
|
||||||
|
child: CustomPaint(
|
||||||
size: Size(
|
size: Size(
|
||||||
widget.tileWidth * widget.scale,
|
widget.tileWidth * widget.scale,
|
||||||
widget.tileHeight * widget.scale,
|
widget.tileHeight * widget.scale,
|
||||||
|
|
@ -106,6 +127,7 @@ class _SpriteAnimationWidgetState extends State<SpriteAnimationWidget>
|
||||||
tileHeight: widget.tileHeight,
|
tileHeight: widget.tileHeight,
|
||||||
scale: widget.scale,
|
scale: widget.scale,
|
||||||
),
|
),
|
||||||
|
),
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue