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> get filters => [ Has(), Has(), ]; @override void renderEntity(Canvas canvas, Entity entity) { final timer = entity.get()!; final textComponent = entity.get()!; 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()!; final size = entity.get()!.size; final textRenderer = TextPaint(style: textComponent.style); size.setFrom(textRenderer.getLineMetrics(textComponent.text).size); final timer = entity.get()!; timer.timePassed = timer.timePassed + delta; if (timer.done) { entity.dispose(); } } } }