← Back to team overview

widelands-dev team mailing list archive

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