Complete.Org: Mailing Lists: Archives: freeciv-dev: February 2002:
[Freeciv-Dev] Re: [RFC] square_dxy_iterate
Home

[Freeciv-Dev] Re: [RFC] square_dxy_iterate

[Top] [All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
To: rf13@xxxxxxxxxxxxxxxxxxxxxx
Cc: Gregory Berkolaiko <gberkolaiko@xxxxxxxxxxx>, jdorje@xxxxxxxxxxxxxxxxxxxxx, freeciv-dev@xxxxxxxxxxx
Subject: [Freeciv-Dev] Re: [RFC] square_dxy_iterate
From: Petr Baudis <pasky@xxxxxxxxxxx>
Date: Sat, 23 Feb 2002 22:31:29 +0100

Dear diary, on Sat, Feb 23, 2002 at 10:24:49PM CET, I got a letter,
where Raimar Falke <hawk@xxxxxxxxxxxxxxxxxxxxxxx> told me, that...
> Index: ai/aiunit.c
> ===================================================================
> RCS file: /home/freeciv/CVS/freeciv/ai/aiunit.c,v
> retrieving revision 1.177
> diff -u -r1.177 aiunit.c
> --- ai/aiunit.c       2002/02/23 16:38:10     1.177
> +++ ai/aiunit.c       2002/02/23 21:21:42
> @@ -601,17 +601,37 @@
>    return(val);
>  }
>  
> -static void invasion_funct(struct unit *punit, bool dest, int n, int which)
> -{ 
> +/*************************************************************************
> +  Mark an invasion threat of punit in the surrounding cities. The
> +  given radius limites the area which is searched for cities. The
> +  center of the area is either the unit itself (dest == FALSE) or the
> +  destiniation of the current goto (dest == TRUE). The invasion threat
> +  is marked in pcity->ai.invasion via ORing the "which" argument (to
> +  tell attack from sea apart from ground unit attacks). Note that
> +  "which" should only have one bit set.
<nitpick>why is the description indentet by 2 spaces? ;))</nitpick>
> +**************************************************************************/
> +static void invasion_funct(struct unit *punit, bool dest, int radius,
> +                        int which)
> +{
>    int x, y;
> -  if (dest) { x = punit->goto_dest_x; y = punit->goto_dest_y; }
> -  else { x = punit->x; y = punit->y; }
> +  bool want_attack = (dest || punit->activity != ACTIVITY_GOTO);
>  
> -  square_iterate(x, y, n, i, j) {
> -    struct city *pcity = map_get_city(i, j);
> -    if (pcity && pcity->owner != punit->owner)
> -      if (dest || punit->activity != ACTIVITY_GOTO || !has_defense(pcity))
> -     pcity->ai.invasion |= which;
> +  if (dest) {
> +    x = punit->goto_dest_x;
> +    y = punit->goto_dest_y;
> +  } else {
> +    x = punit->x;
> +    y = punit->y;
> +  }
> +
> +  square_iterate(x, y, radius, x1, y1) {
> +    struct city *pcity = map_get_city(x1, y1);
> +
> +    if (pcity && pcity->owner != punit->owner
> +     && (pcity->ai.invasion & which) != which
> +     && (want_attack || !has_defense(pcity))) {
> +      pcity->ai.invasion |= which;
> +    }
>    } square_iterate_end;
>  }
>  

No other objections, the patch is ok for me now.

-- 

                                Petr "Pasky" Baudis

* elinks maintainer                * IPv6 guy (XS26 co-coordinator)
* IRCnet operator                  * FreeCiv AI hacker
.
No one can feel as helpless as the owner of a sick goldfish.
.
Public PGP key && geekcode && homepage: http://pasky.ji.cz/~pasky/


[Prev in Thread] Current Thread [Next in Thread]