51 lines
1.2 KiB
Dart
51 lines
1.2 KiB
Dart
|
|
import 'dart:async';
|
||
|
|
import 'dart:ui';
|
||
|
|
|
||
|
|
import 'package:flame/collisions.dart';
|
||
|
|
import 'package:funny_letters/runner/bonuses/bonus.dart';
|
||
|
|
import 'package:funny_letters/runner/player.dart';
|
||
|
|
import 'package:flame/components.dart';
|
||
|
|
import 'package:funny_letters/gen/assets.gen.dart';
|
||
|
|
|
||
|
|
import '../../main.dart';
|
||
|
|
import 'letter_bonus.dart';
|
||
|
|
|
||
|
|
class HealthBonus extends PositionComponent with CollisionCallbacks, Bonus, HasGameRef {
|
||
|
|
HealthBonus(Vector2 size) {
|
||
|
|
this.size = size;
|
||
|
|
}
|
||
|
|
|
||
|
|
@override
|
||
|
|
FutureOr<void> onLoad() async {
|
||
|
|
final sprite = await gameRef.loadSprite(Assets.images.match3Heart.path);
|
||
|
|
|
||
|
|
addAll(
|
||
|
|
[
|
||
|
|
RoundedComponent(
|
||
|
|
size: size,
|
||
|
|
color: const Color(0xffE7513D),
|
||
|
|
cornerRadius: size.x / 6,
|
||
|
|
shadow: true,
|
||
|
|
),
|
||
|
|
SpriteComponent(
|
||
|
|
sprite: sprite,
|
||
|
|
anchor: Anchor.center,
|
||
|
|
position: size * 0.5,
|
||
|
|
size: size,
|
||
|
|
),
|
||
|
|
RectangleHitbox(
|
||
|
|
size: this.size * 0.9,
|
||
|
|
position: size / 2,
|
||
|
|
anchor: Anchor.center,
|
||
|
|
),
|
||
|
|
],
|
||
|
|
);
|
||
|
|
}
|
||
|
|
|
||
|
|
@override
|
||
|
|
Future<void> activate(Player player) async {
|
||
|
|
super.activate(player);
|
||
|
|
player.heal();
|
||
|
|
}
|
||
|
|
}
|