mirror of
https://github.com/wesnoth/wesnoth
synced 2025-05-18 16:46:04 +00:00
Shift some end_turn/hold_position logic into the unit class.
This commit is contained in:
parent
592e1fff6e
commit
8d409c16cd
@ -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());
|
||||
|
@ -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()
|
||||
{
|
||||
|
@ -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();
|
||||
|
Loading…
x
Reference in New Issue
Block a user