Shift some end_turn/hold_position logic into the unit class.

This commit is contained in:
J. Tyne 2012-08-21 23:32:54 +00:00
parent 592e1fff6e
commit 8d409c16cd
3 changed files with 5 additions and 13 deletions

View File

@ -1826,14 +1826,13 @@ void menu_handler::unit_hold_position(mouse_handler &mousehandler, int side_num)
const unit_map::iterator un = units_.find(mousehandler.get_selected_hex());
if (un != units_.end() && un->side() == side_num && un->movement_left() >= 0)
{
un->set_hold_position(!un->hold_position());
un->toggle_hold_position();
gui_->invalidate(mousehandler.get_selected_hex());
mousehandler.set_current_paths(pathfind::paths());
gui_->draw();
if (un->hold_position()) {
un->set_user_end_turn(true);
mousehandler.cycle_units(false);
}
}
@ -1844,10 +1843,7 @@ void menu_handler::end_unit_turn(mouse_handler &mousehandler, int side_num)
const unit_map::iterator un = units_.find(mousehandler.get_selected_hex());
if (un != units_.end() && un->side() == side_num && un->movement_left() >= 0)
{
un->set_user_end_turn(!un->user_end_turn());
if (un->hold_position() && !un->user_end_turn()) {
un->set_hold_position(false);
}
un->toggle_user_end_turn();
gui_->invalidate(mousehandler.get_selected_hex());
mousehandler.set_current_paths(pathfind::paths());

View File

@ -1097,7 +1097,7 @@ void unit::set_movement(int moves)
void unit::new_turn()
{
end_turn_ = false;
end_turn_ = hold_position_;
movement_ = total_movement();
attacks_left_ = max_attacks_;
set_state(STATE_UNCOVERED, false);
@ -1125,10 +1125,6 @@ void unit::new_turn()
if(hit_points_ > old_hp)
hit_points_ = old_hp;
}
if (hold_position_) {
end_turn_ = true;
}
}
void unit::end_turn()
{

View File

@ -147,15 +147,15 @@ public:
int movement_left() const { return (movement_ == 0 || incapacitated()) ? 0 : movement_; }
int vision() const { return vision_ < 0 ? max_movement_ : vision_; }
int jamming() const { return jamming_; }
void set_hold_position(bool value) { hold_position_ = value; }
void toggle_hold_position() { hold_position_ = !hold_position_; if ( hold_position_ ) end_turn_ = true; }
bool hold_position() const { return hold_position_; }
void set_user_end_turn(bool value=true) { end_turn_ = value; }
void toggle_user_end_turn() { end_turn_ = !end_turn_; if ( !end_turn_ ) hold_position_ = false; }
bool user_end_turn() const { return end_turn_; }
int attacks_left() const { return (attacks_left_ == 0 || incapacitated()) ? 0 : attacks_left_; }
int max_attacks() const { return max_attacks_; }
void set_movement(int moves);
void set_attacks(int left) { attacks_left_ = std::max<int>(0, left); }
void unit_hold_position() { hold_position_ = end_turn_ = true; }
void new_turn();
void end_turn();
void new_scenario();