diff --git a/src/modules/butterflies/butterflies_action_helpers.c b/src/modules/butterflies/butterflies_action_helpers.c index 7b5cfa9c63fd87ef58d7a705e31f4797689377a5..e551e1a9e99f601f3a8b7605b5ae4c8a0086f159 100644 --- a/src/modules/butterflies/butterflies_action_helpers.c +++ b/src/modules/butterflies/butterflies_action_helpers.c @@ -40,6 +40,7 @@ void bf_register_actions(struct cats_configuration *conf) register_action_function(conf, bf_action_dispersal, "butterfly_action_dispersal", "egg dispersal"); register_action_function(conf, bf_action_save_grid, "bf_action_save_grid", "output"); register_action_function(conf, bf_action_save_eggs_grid, "bf_action_save_egg_grid", "egg output"); + register_action_function(conf, bf_action_save_overlay, "bf_action_save_overlay_grid", "overlay output"); register_action_function(conf, bf_action_stats_gather, "bf_action_stats_gather", "gather stats"); register_action_function(conf, bf_action_stats_reset, "bf_action_stats_reset", "reset stats"); register_action_function(conf, bf_action_stats_write, "bf_action_stats_write", "write stats"); @@ -58,8 +59,10 @@ void bf_add_actions(struct cats_configuration *conf) append_action(conf, bf_action_stats_reset, ALL_STAGES, "resetting butterfly statistics", module_name); append_action_by_name(conf, "action_load_environments", ALL_STAGES, "environment update", module_name); append_action_by_name(conf, "action_overlay_update", ALL_STAGES, "overlay update", module_name); + append_action(conf, bf_action_overlay_update, ALL_STAGES, "updating resource layer", module_name); append_action(conf, bf_action_generation_update, ALL_STAGES, "update generations", module_name); + append_action(conf, bf_action_save_overlay, ALL_STAGES, "save overlay", module_name); for (int32_t generation = data->generations_max; generation > 0; generation--) { diff --git a/src/modules/butterflies/butterflies_actions.c b/src/modules/butterflies/butterflies_actions.c index 50e91b048f924ddb17dfd5b08e5fc6068b83ccd0..a59032a33f011ef1aac863973a397a97688d3b10 100644 --- a/src/modules/butterflies/butterflies_actions.c +++ b/src/modules/butterflies/butterflies_actions.c @@ -96,6 +96,21 @@ enum action_status bf_action_save_grid(struct cats_grid *grid, struct cats_confi return ACTION_RUN; } +enum action_status bf_action_save_overlay(struct cats_grid *grid, struct cats_configuration *conf) +{ + int32_t id = grid->id; + char *filename = bf_population_filename(conf, grid); + int module_id = CATS_MODULE_ID; + + struct grid_data_butterflies *module_data = grid->grid_modules[module_id].module_data; + + struct grid_wrapper data = gridwrapper(module_data->info_layer, grid->dimension); + save_grid_to_gdal(&data, GDT_Int32, conf, filename, conf->param[id].species_name); + free(filename); + return ACTION_RUN; +} + + enum action_status bf_action_save_eggs_grid(struct cats_grid *grid, struct cats_configuration *conf) { diff --git a/src/modules/butterflies/butterflies_actions.h b/src/modules/butterflies/butterflies_actions.h index 29b87ac289463f85aee4feed8f677ce0ca2fefe3..8149f3c57adc629811f5075d8463ae58a859d861 100644 --- a/src/modules/butterflies/butterflies_actions.h +++ b/src/modules/butterflies/butterflies_actions.h @@ -24,4 +24,7 @@ enum action_status bf_action_generation_start(struct cats_grid *grid, __attribut enum action_status bf_action_generation_update(struct cats_grid *grid, struct cats_configuration *conf); enum action_status bf_action_save_eggs_grid(struct cats_grid *grid, struct cats_configuration *conf); + +enum action_status bf_action_save_overlay(struct cats_grid *grid, struct cats_configuration *conf) + #endif //CATS_BUTTERFLIES_ACTIONS_H diff --git a/src/modules/butterflies/butterflies_filenames.c b/src/modules/butterflies/butterflies_filenames.c index 3af222a0be6a33e02ca1ae13bf5acf0cd715e10a..6f71a7f15d2b9c601fe8a902a33d10a1140ad2af 100644 --- a/src/modules/butterflies/butterflies_filenames.c +++ b/src/modules/butterflies/butterflies_filenames.c @@ -63,6 +63,28 @@ char *bf_population_eggs_filename(struct cats_configuration *conf, struct cats_g return filename; } + +char *bf_population_overlay_filename(struct cats_configuration *conf, struct cats_grid *grid) +{ + assert(grid != NULL); + assert(conf != NULL); + assert(conf->grid_count == 1); + + + struct string_array *path = get_output_directory(conf, "butterfly-overlay"); // FIXME MAKE DIRECTORY + + char *extension = get_extension(conf, "overlay"); + struct string_array *name = standard_output_file_name(conf, NULL, NULL, NULL); + char *filename = assemble_filename(path, name, "_", extension); + + free_string_array(&path); + free_string_array(&name); + free(extension); + + return filename; +} + + char *bf_stats_filename(struct cats_configuration *conf, struct cats_grid *grid) { struct string_array *path = get_output_directory(conf, "stats"); diff --git a/src/modules/butterflies/butterflies_filenames.h b/src/modules/butterflies/butterflies_filenames.h index 047328143596bbe422b5083760e8086fc154f7c4..79c42e5e8a5fb0c5211ddafb76d959fcc9413309 100644 --- a/src/modules/butterflies/butterflies_filenames.h +++ b/src/modules/butterflies/butterflies_filenames.h @@ -5,4 +5,5 @@ char *bf_population_eggs_filename(struct cats_configuration *conf, struct cats_grid *grid); char *bf_population_filename(struct cats_configuration *conf, struct cats_grid *grid); char *bf_stats_filename(struct cats_configuration *conf, struct cats_grid *grid); +char *bf_population_overlay_filename(struct cats_configuration *conf, struct cats_grid *grid); #endif //CATS_BUTTERFLIES_FILENAMES_H