Review: Needs Information

I am unsure about this change now. Most UI elements are owned by their parents. 
Why did we need the delete before in the first place? More comments inlined.

Diff comments:

> 
> === modified file 'src/wui/attack_box.cc'
> --- src/wui/attack_box.cc     2015-03-30 08:45:09 +0000
> +++ src/wui/attack_box.cc     2015-07-27 10:01:25 +0000
> @@ -119,31 +113,43 @@
>       return *button;
>  }
>  
> +/*
> + * Update available soldiers
> + */
> +void AttackBox::think() {
> +     int32_t gametime = player_->egbase().get_gametime();

can still be const

> +     if ((gametime - lastupdate_) > kUpdateTimeInGametimeMs) {
> +             update_attack();
> +             lastupdate_ = gametime;
> +     }
> +}
> +
>  void AttackBox::update_attack() {
> -     assert(m_slider_soldiers);
> -     assert(m_text_soldiers);
> -     assert(m_less_soldiers);
> -     assert(m_add_soldiers);
> +     assert(soldiers_slider_.get());
> +     assert(soldiers_text_.get());
> +     assert(less_soldiers_.get());
> +     assert(more_soldiers_.get());
>  
>       int32_t max_attackers = get_max_attackers();
>  
> -     if (m_slider_soldiers->get_max_value() != max_attackers)
> -             m_slider_soldiers->set_max_value(max_attackers);
> +     if (soldiers_slider_->get_max_value() != max_attackers) {
> +             soldiers_slider_->set_max_value(max_attackers);
> +     }
>  
> -     m_slider_soldiers->set_enabled(max_attackers > 0);
> -     m_add_soldiers->set_enabled(max_attackers > 
> m_slider_soldiers->get_value());
> -     m_less_soldiers  ->set_enabled(m_slider_soldiers->get_value() > 0);
> +     soldiers_slider_->set_enabled(max_attackers > 0);
> +     more_soldiers_->set_enabled(max_attackers > 
> soldiers_slider_->get_value());
> +     less_soldiers_  ->set_enabled(soldiers_slider_->get_value() > 0);
>  
>       /** TRANSLATORS: %1% of %2% soldiers. Used in Attack box. */
> -     m_text_soldiers->set_text((boost::format(_("%1% / %2%"))
> -                                                                       % 
> m_slider_soldiers->get_value()
> +     soldiers_text_->set_text((boost::format(_("%1% / %2%"))
> +                                                                       % 
> soldiers_slider_->get_value()
>                                                                         % 
> max_attackers).str());
>  
> -     m_add_soldiers->set_title(std::to_string(max_attackers));
> +     more_soldiers_->set_title(std::to_string(max_attackers));
>  }
>  
>  void AttackBox::init() {
> -     assert(m_node);
> +     assert(node_coordinates_);
>  
>       uint32_t max_attackers = get_max_attackers();
>  
> @@ -166,42 +172,42 @@
>       const std::string attack_string =
>                       (boost::format(_("%1% / %2%")) % (max_attackers > 0 ? 1 
> : 0) % max_attackers).str();
>  
> -     m_text_soldiers =
> +     soldiers_text_.reset(

on second look that looks weird.... Can you doublecheck that add_text really 
passes ownership? Maybe the delete's were wrong before? 

If it passes ownership, it should directly return a unique_ptr<>. If that is a 
bigger change, add a TODO so that it is at least documented. Right now it seems 
to pass a reference - that is very wrong for passing ownership.

>               &add_text(columnbox, attack_string, UI::Box::AlignCenter,
>                                        UI::g_fh1->fontset().serif(),
> -                                      UI_FONT_SIZE_ULTRASMALL);
> +                                      UI_FONT_SIZE_ULTRASMALL));
>  
> -     m_slider_soldiers =
> +     soldiers_slider_.reset(
>               &add_slider
>                       (columnbox,
>                        100, 10,
>                        0, max_attackers, max_attackers > 0 ? 1 : 0,
>                        "pics/but2.png",
> -                      _("Number of soldiers"));
> +                      _("Number of soldiers")));
>  
> -     
> m_slider_soldiers->changed.connect(boost::bind(&AttackBox::update_attack, 
> this));
> -     m_add_soldiers =
> +     
> soldiers_slider_->changed.connect(boost::bind(&AttackBox::update_attack, 
> this));
> +     more_soldiers_.reset(
>               &add_button
>                       (linebox,
>                        std::to_string(max_attackers),
>                        &AttackBox::send_more_soldiers,
> -                      _("Send more soldiers"));
> +                      _("Send more soldiers")));
>  
> -     m_slider_soldiers->set_enabled(max_attackers > 0);
> -     m_add_soldiers   ->set_enabled(max_attackers > 0);
> -     m_less_soldiers  ->set_enabled(max_attackers > 0);
> +     soldiers_slider_->set_enabled(max_attackers > 0);
> +     more_soldiers_   ->set_enabled(max_attackers > 0);
> +     less_soldiers_  ->set_enabled(max_attackers > 0);
>  }
>  
>  void AttackBox::send_less_soldiers() {
> -     assert(m_slider_soldiers);
> -     m_slider_soldiers->set_value(m_slider_soldiers->get_value() - 1);
> +     assert(soldiers_slider_.get());
> +     soldiers_slider_->set_value(soldiers_slider_->get_value() - 1);
>  }
>  
>  void AttackBox::send_more_soldiers() {
> -     m_slider_soldiers->set_value(m_slider_soldiers->get_value() + 1);
> +     soldiers_slider_->set_value(soldiers_slider_->get_value() + 1);
>  }
>  
>  uint32_t AttackBox::soldiers() const {
> -     assert(m_slider_soldiers);
> -     return m_slider_soldiers->get_value();
> +     assert(soldiers_slider_.get());
> +     return soldiers_slider_->get_value();
>  }


-- 
https://code.launchpad.net/~widelands-dev/widelands/bug-653308/+merge/265931
Your team Widelands Developers is subscribed to branch 
lp:~widelands-dev/widelands/bug-653308.

_______________________________________________
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