示例#1
0
 def _on_precipitations(self):
     dialog = OperationDialog(
         self, self.world,
         SimulationOp("Simulating precipitations",
                      PrecipitationSimulation()))
     ok = dialog.exec_()
     if ok:
         # just to refresh things to enable
         self.set_world(self.world)
示例#2
0
def generate_world(w, step):
    if isinstance(step, str):
        step = Step.get_by_name(step)
    seed = w.seed

    if not step.include_precipitations:
        return w

    # Precipitation with thresholds
    PrecipitationSimulation().execute(w, seed)

    if not step.include_erosion:
        return w
    ErosionSimulation().execute(w, seed)
    if get_verbose():
        print("...erosion calculated")

    WatermapSimulation().execute(w, seed)

    # FIXME: create setters
    IrrigationSimulation().execute(w, seed)
    HumiditySimulation().execute(w, seed)

    TemperatureSimulation().execute(w, seed)
    PermeabilitySimulation().execute(w, seed)

    cm, biome_cm = BiomeSimulation().execute(w, seed)
    for cl in cm.keys():
        count = cm[cl]
        if get_verbose():
            print("%s = %i" % (str(cl), count))

    if get_verbose():
        print('')  # empty line
        print('Biome obtained:')

    for cl in biome_cm.keys():
        count = biome_cm[cl]
        if get_verbose():
            print(" %30s = %7i" % (str(cl), count))

    return w
示例#3
0
def generate_world(w, step):
    if isinstance(step, str):
        step = Step.get_by_name(step)

    if not step.include_precipitations:
        return w

    # Prepare sufficient seeds for the different steps of the generation
    rng = numpy.random.RandomState(
        w.seed
    )  # create a fresh RNG in case the global RNG is compromised (i.e. has been queried an indefinite amount of times before generate_world() was called)
    sub_seeds = rng.randint(
        0, numpy.iinfo(numpy.int32).max, size=100
    )  # choose lowest common denominator (32 bit Windows numpy cannot handle a larger value)
    seed_dict = {
        'PrecipitationSimulation': sub_seeds[
            0],  # after 0.19.0 do not ever switch out the seeds here to maximize seed-compatibility
        'ErosionSimulation': sub_seeds[1],
        'WatermapSimulation': sub_seeds[2],
        'IrrigationSimulation': sub_seeds[3],
        'TemperatureSimulation': sub_seeds[4],
        'HumiditySimulation': sub_seeds[5],
        'PermeabilitySimulation': sub_seeds[6],
        'BiomeSimulation': sub_seeds[7],
        'IcecapSimulation': sub_seeds[8],
        '': sub_seeds[99]
    }

    TemperatureSimulation().execute(w, seed_dict['TemperatureSimulation'])
    # Precipitation with thresholds
    PrecipitationSimulation().execute(w, seed_dict['PrecipitationSimulation'])

    if not step.include_erosion:
        return w
    ErosionSimulation().execute(
        w, seed_dict['ErosionSimulation'])  # seed not currently used
    if get_verbose():
        print("...erosion calculated")

    WatermapSimulation().execute(
        w, seed_dict['WatermapSimulation'])  # seed not currently used

    # FIXME: create setters
    IrrigationSimulation().execute(
        w, seed_dict['IrrigationSimulation'])  # seed not currently used
    HumiditySimulation().execute(
        w, seed_dict['HumiditySimulation'])  # seed not currently used

    PermeabilitySimulation().execute(w, seed_dict['PermeabilitySimulation'])

    cm, biome_cm = BiomeSimulation().execute(
        w, seed_dict['BiomeSimulation'])  # seed not currently used
    for cl in cm.keys():
        count = cm[cl]
        if get_verbose():
            print("%s = %i" % (str(cl), count))

    if get_verbose():
        print('')  # empty line
        print('Biome obtained:')

    for cl in biome_cm.keys():
        count = biome_cm[cl]
        if get_verbose():
            print(" %30s = %7i" % (str(cl), count))

    IcecapSimulation().execute(
        w, seed_dict['IcecapSimulation'])  # makes use of temperature-map

    return w