ecsly_app 0.1.0-dev.4 copy "ecsly_app: ^0.1.0-dev.4" to clipboard
ecsly_app: ^0.1.0-dev.4 copied to clipboard

Pure Dart app-layer actions, drafts, and identity projections for ecsly.

example/main.dart

import 'package:ecsly_app/ecsly_app.dart';

class CounterResource extends Resource {
  CounterResource(this.value);

  int value;
}

class IncrementAction extends EcsAction<int> {
  const IncrementAction();

  @override
  int run(final EcsActionContext context) {
    context.mutateResource<CounterResource>((final counter) {
      counter.value += 1;
    });
    return context.getResource<CounterResource>().value;
  }
}

Future<void> main() async {
  final world = World()..upsertResource(CounterResource(0));
  final runner = EcsActionRunner(world: world);
  final invalidations = <EcsInvalidationBatch>[];

  final result = await runner.run(
    const IncrementAction(),
    onChanged: ({final flush = true, final invalidation}) {
      invalidations.add(invalidation ?? const EcsInvalidationBatch.broad());
      if (flush) world.flush();
    },
  );

  final status = runner.actionStatusOf(IncrementAction);
  final lastInvalidation = invalidations.last;

  assert(result == 1, 'Action should return the updated counter value.');
  assert(
    world.getResource<CounterResource>().value == 1,
    'World resource should reflect the mutation.',
  );
  assert(status.hasSucceeded, 'Runner should record succeeded status.');
  assert(
    lastInvalidation.matchesResourceType(CounterResource),
    'Mutation helper should emit a narrow resource invalidation hint.',
  );
  assert(lastInvalidation.broad == false, 'Hint should not be broad.');
}
0
likes
150
points
33
downloads

Documentation

Documentation
API reference

Publisher

unverified uploader

Weekly Downloads

Pure Dart app-layer actions, drafts, and identity projections for ecsly.

Homepage
Repository (GitHub)
View/report issues
Contributing

Topics

#ecs #state-management #simulation

License

MIT (license)

Dependencies

ecsly, meta

More

Packages that depend on ecsly_app