Files
flame/packages/flame_oxygen/example/lib/system/kawabunga_system.dart
Luan Nico 27e4dcb65a chore: Update usages of Dart UI Color to not use deprecated fields and methods [flame_3d] (#3297)
Update usages of Dart UI Color to not use deprecated fields and methods.
On latest main of Flutter these will cause lint errors, [as can be seen
here](https://github.com/flame-engine/flame/actions/runs/10814047130/job/29999530293?pr=3282).

Note: I will update the `flame_3d`-specific violations on a followup.
2024-12-11 14:26:29 -05:00

48 lines
1.3 KiB
Dart

import 'package:flame/game.dart';
import 'package:flame_oxygen/flame_oxygen.dart';
import 'package:flame_oxygen_example/component/timer_component.dart';
import 'package:flutter/material.dart';
class KawabungaSystem extends BaseSystem with UpdateSystem {
@override
List<Filter<Component>> get filters => [
Has<TextComponent>(),
Has<TimerComponent>(),
];
@override
void renderEntity(Canvas canvas, Entity entity) {
final timer = entity.get<TimerComponent>()!;
final textComponent = entity.get<TextComponent>()!;
final textRenderer = TextPaint(
style: textComponent.style.copyWith(
color: textComponent.style.color!.withValues(
alpha: 1 - timer.percentage,
),
),
);
textRenderer.render(
canvas,
textComponent.text,
Vector2.zero(),
);
}
@override
void update(double delta) {
for (final entity in entities) {
final textComponent = entity.get<TextComponent>()!;
final size = entity.get<SizeComponent>()!.size;
final textRenderer = TextPaint(style: textComponent.style);
size.setFrom(textRenderer.getLineMetrics(textComponent.text).size);
final timer = entity.get<TimerComponent>()!;
timer.timePassed = timer.timePassed + delta;
if (timer.done) {
entity.dispose();
}
}
}
}