mirror of
				https://github.com/flame-engine/flame.git
				synced 2025-11-04 04:47:13 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			55 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
import 'package:flame/components.dart';
 | 
						|
 | 
						|
import '../ember_quest.dart';
 | 
						|
 | 
						|
enum HeartState {
 | 
						|
  available,
 | 
						|
  unavailable,
 | 
						|
}
 | 
						|
 | 
						|
class HeartHealthComponent extends SpriteGroupComponent<HeartState>
 | 
						|
    with HasGameReference<EmberQuestGame> {
 | 
						|
  final int heartNumber;
 | 
						|
 | 
						|
  HeartHealthComponent({
 | 
						|
    required this.heartNumber,
 | 
						|
    required super.position,
 | 
						|
    required super.size,
 | 
						|
    super.scale,
 | 
						|
    super.angle,
 | 
						|
    super.anchor,
 | 
						|
    super.priority,
 | 
						|
  });
 | 
						|
 | 
						|
  @override
 | 
						|
  Future<void> onLoad() async {
 | 
						|
    await super.onLoad();
 | 
						|
    final availableSprite = await game.loadSprite(
 | 
						|
      'heart.png',
 | 
						|
      srcSize: Vector2.all(32),
 | 
						|
    );
 | 
						|
 | 
						|
    final unavailableSprite = await game.loadSprite(
 | 
						|
      'heart_half.png',
 | 
						|
      srcSize: Vector2.all(32),
 | 
						|
    );
 | 
						|
 | 
						|
    sprites = {
 | 
						|
      HeartState.available: availableSprite,
 | 
						|
      HeartState.unavailable: unavailableSprite,
 | 
						|
    };
 | 
						|
 | 
						|
    current = HeartState.available;
 | 
						|
  }
 | 
						|
 | 
						|
  @override
 | 
						|
  void update(double dt) {
 | 
						|
    if (game.health < heartNumber) {
 | 
						|
      current = HeartState.unavailable;
 | 
						|
    } else {
 | 
						|
      current = HeartState.available;
 | 
						|
    }
 | 
						|
    super.update(dt);
 | 
						|
  }
 | 
						|
}
 |