SpriteMap<T> constructor

SpriteMap<T>(
  1. Map<T, Sprite<int>> sprites
)

Implementation

SpriteMap(Map<T, Sprite<int>> sprites) //
  : sprites = .unmodifiable(sprites) {
  if (this.sprites.isEmpty) {
    throw ArgumentError.value(
      sprites,
      'sprites',
      'Must hold at least one.',
    );
  }

  final resolved = <SpriteEntry<T>>[];
  _keys = {};

  for (final MapEntry(:key, :value) in this.sprites.entries) {
    if (value.entries.length != 1) {
      throw ArgumentError.value(
        value.entries.length,
        '$key',
        'A name holds one entry. Take the one you mean.',
      );
    }

    final entry = value.entries[0].rename(resolved.length, key);
    _keys[key] = entry;
    resolved.add(entry);
  }

  entries = List.of(resolved, growable: false);
}