ok, I'm on it.
Next time I'll read guidelines *before* posting ;)

BBT

2009/10/20 jeremy rosen <[email protected]>

> hello
>
> yes, i've noticed that bug in 1.6 and I agree it's a bit annoying...
>
> however we don't plan to have anymore 1.6 releases, so here is what
> you should do
>
> 1) check that the issue is still there in trunk (probably is)
> 2) port your patch to trunk (should be simple)
> 3) read the patch posting guidline in the forum
> 4) post your patch on patches.wesnoth.org
>
> this patch is quite simple and shouldn't lead to any problems, but by
> going through patches.wesnoth.org there is much less risk that it gets
> forgotten (i'll probably handle it myself once it's there...)
>
>
> Cheers
> Boucman
>
> On Tue, Oct 20, 2009 at 12:45 AM, babataz <[email protected]> wrote:
> > Hi all,
> >
> > first I'm new to this mailing list but I'm enjoying BfW for quite a time
> > now.
> > Thanks for the work.
> >
> > So, there was a little something bothering me in the game :
> > on beginning of turn, when lots of units are healed,
> > the order in which the healing is displayed appear (for the player) quite
> > random.
> > In worst cases, the screen juste goes forth and back
> > although for examples some units are packed around a healer.
> >
> > I propose this little patch,
> > the idea is to sort healed unit according to their position on the map
> > to minimize map movement.
> > Of course, there is room for improvement here,
> > but I wanted to give the idea with concrete material.
> >
> > Code is based on wesnoth-1.6.5 and compiles just fine on my debian box.
> > Here's the patch :
> >
> > diff --git a/actions.cpp b/actions.cpp
> > index 944fc1b..49d7bfc 100644
> > --- a/actions.cpp
> > +++ b/actions.cpp
> > @@ -36,6 +36,7 @@
> >
> >
> >  #include <boost/scoped_ptr.hpp>
> > +#include <list>
> >
> >  #define DBG_NG LOG_STREAM(debug, engine)
> >  #define LOG_NG LOG_STREAM(info, engine)
> > @@ -1672,11 +1673,26 @@ void reset_resting(unit_map& units, unsigned int
> > side)
> >      }
> >  }
> >
> > +struct unit_healing_struct {
> > +  unit *healed;
> > +  map_location *healed_loc;
> > +  std::vector<unit_map::iterator> *healers;
> > +  int healing;
> > +
> > +  static
> > +  bool uhs_compare(struct unit_healing_struct &a,
> > +                   struct unit_healing_struct &b) {
> > +    return *a.healed_loc < *b.healed_loc;
> > +  }
> > +
> > +};
> > +
> >  void calculate_healing(game_display& disp, const gamemap& map,
> >          unit_map& units, unsigned int side,
> >          const std::vector<team>& teams, bool update_display)
> >  {
> >      DBG_NG << "beginning of healing calculations\n";
> > +        std::list<struct unit_healing_struct> l;
> >
> >      // We look for all allied units, then we see if our healer is near
> > them.
> >      for (unit_map::iterator i = units.begin(); i != units.end(); ++i) {
> > @@ -1833,7 +1849,13 @@ void calculate_healing(game_display& disp, const
> > gamemap& map,
> >                  && update_display
> >                  && !(i->second.invisible(i->first,units,teams) &&
> >                      teams[disp.viewing_team()].is_enemy(side))) {
> > -
> unit_display::unit_healing(i->second,i->first,healers,healing);
> > +                  struct unit_healing_struct uhs = {
> > +                    &i->second,
> > +                    &i->first,
> > +                    &healers,
> > +                    healing
> > +                  };
> > +                  l.push_front(uhs);
> >          }
> >          if (healing > 0)
> >              i->second.heal(healing);
> > @@ -1841,6 +1863,15 @@ void calculate_healing(game_display& disp, const
> > gamemap& map,
> >              i->second.take_hit(-healing);
> >          disp.invalidate_unit();
> >      }
> > +
> > +        // display healing
> > +        l.sort(unit_healing_struct::uhs_compare);
> > +        for (std::list<struct unit_healing_struct>::iterator i =
> l.begin();
> > +             i != l.end();
> > +             i++) {
> > +          unit_display::unit_healing(*i->healed, *i->healed_loc,
> > *i->healers,
> > +                                     i->healing);
> > +        }
> >      DBG_NG << "end of healing calculations\n";
> >  }
> >
> > Have a nice day,
> > BBT
> >
> >
> > _______________________________________________
> > Wesnoth-dev mailing list
> > [email protected]
> > https://mail.gna.org/listinfo/wesnoth-dev
> >
> >
>
> _______________________________________________
> Wesnoth-dev mailing list
> [email protected]
> https://mail.gna.org/listinfo/wesnoth-dev
>
_______________________________________________
Wesnoth-dev mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-dev

Reply via email to