Diff comments:

> 
> === modified file 'src/logic/map.cc'
> --- src/logic/map.cc  2015-02-24 13:51:38 +0000
> +++ src/logic/map.cc  2015-06-30 00:48:12 +0000
> @@ -1992,6 +1996,61 @@
>  }
>  
>  
> +/*
> +===========
> +Map::check_check_seafaring()
> +
> +This function checks if there are two ports that are reachable
> +for each other - then the map is seafaring.
> +=============
> +*/
> +bool Map::check_seafaring() {
> +     Map::PortSpacesSet port_spaces = get_port_spaces();
> +     std::vector<Coords> portdocks;
> +     std::set<Coords, Coords::OrderingFunctor> swim_coords;
> +
> +     for (const Coords& c : port_spaces) {
> +             std::queue<Coords> q_positions;
> +             std::set<Coords, Coords::OrderingFunctor> visited_positions;
> +             FCoords fc = get_fcoords(c);
> +             portdocks = find_portdock(fc);
> +
> +             /* remove the port space if it is not longer valid port space */

OK, let's go with this then. Since I can't write to this branch, could you 
please fix the formatting in my other comments, so I can merge this branch?

> +             if ((fc.field->get_caps() & BUILDCAPS_SIZEMASK) != 
> BUILDCAPS_BIG || portdocks.empty()){
> +                     set_port_space(c, false);
> +                     continue;
> +             }
> +
> +             for (const Coords& portdock: portdocks){
> +                     visited_positions.insert(portdock);
> +                     q_positions.push(portdock);
> +             }
> +
> +             while (!q_positions.empty()){
> +                     const Coords& swim_coord = q_positions.front();
> +                     q_positions.pop();
> +                     for (uint8_t i = 1; i <= 6; ++i) {
> +                             FCoords neighbour;
> +                             get_neighbour(get_fcoords(swim_coord), i, 
> &neighbour);
> +                             if ((neighbour.field->get_caps() & 
> (MOVECAPS_SWIM|MOVECAPS_WALK)) == MOVECAPS_SWIM){
> +                                     if (visited_positions.count(neighbour) 
> == 0){
> +                                             
> visited_positions.insert(neighbour);
> +                                             q_positions.push(neighbour);
> +                                     }
> +                             }
> +                     }
> +             }
> +
> +             for (const Coords& swim_coord: visited_positions)
> +                     if (swim_coords.count(swim_coord) == 0)
> +                             swim_coords.insert(swim_coord);
> +                     else
> +                             return true;
> +     }
> +     return false;
> +}
> +
> +
>  #define MAX_RADIUS 32
>  MilitaryInfluence Map::calc_influence
>       (Coords const a, Area<> const area) const


-- 
https://code.launchpad.net/~majcherlk/widelands/seafaring-check/+merge/263192
Your team Widelands Developers is requested to review the proposed merge of 
lp:~majcherlk/widelands/seafaring-check into lp:widelands.

_______________________________________________
Mailing list: https://launchpad.net/~widelands-dev
Post to     : widelands-dev@lists.launchpad.net
Unsubscribe : https://launchpad.net/~widelands-dev
More help   : https://help.launchpad.net/ListHelp

Reply via email to