MCPcopy Create free account
hub / github.com/DFHack/dfhack / find

Method find

plugins/embark-assistant/matcher.cpp:2820–3324  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2818//=======================================================================================
2819
2820uint16_t embark_assist::matcher::find(embark_assist::defs::match_iterators *iterator,
2821 embark_assist::defs::geo_data *geo_summary,
2822 embark_assist::defs::world_tile_data *survey_results,
2823 embark_assist::defs::match_results *match_results) {
2824
2825 color_ostream_proxy out(Core::getInstance().getConsole());
2826 df::world_data* world_data = world->world_data;
2827 auto screen = Gui::getViewscreenByType<df::viewscreen_choose_start_sitest>(0);
2828 uint16_t x_end;
2829 uint16_t y_end;
2830 bool turn = false;
2831 uint16_t count;
2832 uint16_t preliminary_matches;
2833
2834 if (!iterator->active) {
2835 embark_assist::survey::clear_results(match_results);
2836
2837 // Static check for impossible requirements
2838 //
2839 count = 0;
2840 for (uint8_t i = 0; i < 3; i++) {
2841 if (iterator->finder.evilness[i] == embark_assist::defs::evil_savagery_values::All) {
2842 count++;
2843 }
2844 }
2845
2846 if (count > 1) {
2847 out.printerr("matcher::find: Will never find any due to multiple All evilness requirements\n");
2848 return 0;
2849 }
2850
2851 count = 0;
2852 for (uint8_t i = 0; i < 3; i++) {
2853 if (iterator->finder.savagery[i] == embark_assist::defs::evil_savagery_values::All) {
2854 count++;
2855 }
2856 }
2857
2858 if (count > 1) {
2859 out.printerr("matcher::find: Will never find any due to multiple All savagery requirements\n");
2860 return 0;
2861 }
2862
2863 if (iterator->finder.max_river < iterator->finder.min_river &&
2864 iterator->finder.max_river != embark_assist::defs::river_ranges::NA) {
2865 out.printerr("matcher::find: Will never find any due to max river < min river\n");
2866 return 0;
2867 }
2868
2869 if (iterator->finder.min_waterfall > 0 &&
2870 iterator->finder.max_river == embark_assist::defs::river_ranges::None) {
2871 out.printerr("matcher::find: Will never find any waterfalls with None as max river\n");
2872 return 0;
2873 }
2874
2875 if (iterator->finder.soil_max < iterator->finder.soil_min &&
2876 iterator->finder.soil_max != embark_assist::defs::soil_ranges::NA) {
2877 out.printerr("matcher::find: Will never find any matches with max soil < min soil\n");

Callers 15

mainFunction · 0.45
setItemFromTokenFunction · 0.45
maybeExploreFunction · 0.45
df_changeitemFunction · 0.45
changeitem_executeFunction · 0.45
is_noble_zoneFunction · 0.45
scrub_id_from_entriesFunction · 0.45
clear_reservationFunction · 0.45
on_new_active_unitFunction · 0.45
get_role_assignmentFunction · 0.45

Calls 6

preliminary_world_matchFunction · 0.85
move_cursorFunction · 0.85
match_world_tileFunction · 0.85
sizeMethod · 0.45
printMethod · 0.45

Tested by

no test coverage detected