generate method

  1. @override
Npc generate()
override

Generates an item of type T

Implementation

@override
Npc generate() {
  final genderGenerator = ListItemGenerator(Gender.values);
  genderGenerator.seed(_seed);
  final gender = genderGenerator.generate();

  final companionsNumberGenerator = WeightedGenerator({0: 15, 1: 5, 2: 1});
  companionsNumberGenerator.seed((_seed + 1) % SeedGenerator.maxSeed);
  final companionsNumber = companionsNumberGenerator.generate();

  final companionArgsGenerator = RepeatedGenerator(
    BatchGenerator({
      "type": ListItemGenerator(CompanionManager().activeTypes),
      "gender": ListItemGenerator(Gender.values),
    }),
    companionsNumber,
  );
  companionArgsGenerator.seed((_seed + 2) % SeedGenerator.maxSeed);
  final companionArgs = companionArgsGenerator.generate();

  final companionsGenerator = ListBatchGenerator(
    companionArgs
        .map((e) => CompanionGenerator(e["type"], e["gender"]))
        .toList(),
  );
  companionsGenerator.seed((_seed + 3) % SeedGenerator.maxSeed);
  final companions = companionsGenerator.generate();

  final generator = BatchGenerator(_getBatch(_race, gender, companions));
  generator.seed((_seed + 4) % SeedGenerator.maxSeed);
  final result = generator.generate();
  return Npc.fromShallowMap(result);
}