generate method

  1. @override
Kingdom generate()
override

Generates an item of type T

Implementation

@override
Kingdom generate() {
  final leadersGenerator = _governmentType.getNumberOfLeadersGenerator();
  leadersGenerator.seed((_seed + 1) % SeedGenerator.generate());
  final numberOfLeaders = leadersGenerator.generate();

  final nameGenerator = _kingdomType.getNameGenerator(_race);
  nameGenerator.seed((_seed + 2) % SeedGenerator.maxSeed);
  final name = nameGenerator.generate();

  final numberOfGuildsGenerator =
      NumberGenerator(_minNumberOfGuilds, _maxNumberOfGuilds + 1);
  numberOfGuildsGenerator.seed((_seed + 3) % SeedGenerator.maxSeed);
  final numberOfGuilds = numberOfGuildsGenerator.generate();

  final numberOfHolidaysGenerator =
      NumberGenerator(_minNumberOfHolidays, _maxNumberOfHolidays)
        ..seed((_seed + 4) % SeedGenerator.maxSeed);
  final holidayTypesGenerator = RepeatedGenerator(
    _kingdomType.getHolidayTypeGenerator(),
    numberOfHolidaysGenerator.generate(),
  )..seed((_seed + 5) % SeedGenerator.maxSeed);
  final holidayTypes = holidayTypesGenerator.generate();

  final generator = BatchGenerator(_getBatch(
    numberOfLeaders,
    numberOfGuilds,
    _governmentType,
    name,
    holidayTypes,
  ));

  generator.seed((_seed + 6) % SeedGenerator.maxSeed);
  Kingdom kingdom = Kingdom.fromShallowMap(generator.generate());

  if (_kingdomType is Fixable<Kingdom>) {
    kingdom = (_kingdomType as Fixable).getFixed(kingdom);
  }

  return kingdom;
}