import 'package:flame/extensions.dart'; import 'package:flame_oxygen/flame_oxygen.dart'; import 'package:flame_oxygen_example/component/timer_component.dart'; import 'package:flame_oxygen_example/component/velocity_component.dart'; import 'package:flame_oxygen_example/main.dart'; import 'package:flutter/material.dart'; class MoveSystem extends System with UpdateSystem, GameRef { Query? _query; @override void init() { _query = createQuery([ Has(), Has(), ]); } @override void dispose() { _query = null; super.dispose(); } @override void update(double delta) { for (final entity in _query?.entities ?? []) { final velocity = entity.get()!.velocity; final size = entity.get()!.size; final position = entity.get()!.position ..add(velocity * delta); final screenSize = Vector2.zero() & game!.size; if (!screenSize.containsPoint(position) || !screenSize.containsPoint(position + size)) { velocity.setFrom(-velocity); game!.createEntity( name: '${entity.name} says', position: position + size / 2, size: Vector2.zero(), anchor: Anchor.topCenter, ) ..add( TextInit( 'Kawabunga', style: const TextStyle(color: Colors.blue, fontSize: 12), ), ) ..add(3); } } } }