widelands-dev team mailing list archive
-
widelands-dev team
-
Mailing list archive
-
Message #13012
Re: [Merge] lp:~widelands-dev/widelands/ai_fisher_fix into lp:widelands
Review: Approve
LGTM - just 1 nit for a comment. Please merge once it's fixed :)
Diff comments:
>
> === modified file 'src/ai/defaultai.cc'
> --- src/ai/defaultai.cc 2018-04-02 08:44:26 +0000
> +++ src/ai/defaultai.cc 2018-04-06 10:10:52 +0000
> @@ -1471,10 +1471,23 @@
> }
> }
>
> - // counting fields with fish
> - if (field.water_nearby > 0 && (field.fish_nearby == kUncalculated || resource_count_now)) {
> - field.fish_nearby = map.find_fields(Area<FCoords>(field.coords, kProductionArea), nullptr,
> - FindNodeResource(world.get_resource("fish")));
> + // counting fields with fish, doing it roughly every 10-th minute is enough
> + if (field.water_nearby > 0 && (field.fish_nearby == kUncalculated || (resource_count_now && gametime % 10 == 0))) {
> + CheckStepWalkOn fisher_cstep(MOVECAPS_WALK, true);
> + static std::vector<Coords> fish_fields_list; // pity this contains duplicities
duplicities -> duplicates
> + fish_fields_list.clear();
> + map.find_reachable_fields(Area<FCoords>(field.coords, kProductionArea),
> + &fish_fields_list, fisher_cstep, FindNodeResource(world.get_resource("fish")));
> +
> + // This is "list" of unique fields in fish_fields_list we got above
> + static std::set<Coords> counted_fields;
> + counted_fields.clear();
> + field.fish_nearby = 0;
> + for (auto fish_coords : fish_fields_list) {
> + if (counted_fields.insert(fish_coords).second) {
> + field.fish_nearby += map.get_fcoords(fish_coords).field->get_resources_amount();
> + }
> + }
> }
>
> // Counting resources that do not change fast
--
https://code.launchpad.net/~widelands-dev/widelands/ai_fisher_fix/+merge/342427
Your team Widelands Developers is subscribed to branch lp:~widelands-dev/widelands/ai_fisher_fix.
References