mirror of
https://github.com/wesnoth/wesnoth
synced 2025-05-10 18:19:08 +00:00
Whiteboard: Prefer using pointer before changing the unit map,
...even though unit map doesn't invalidate pointers when moving units.
This commit is contained in:
parent
f24bd39a38
commit
d33c3fe62f
@ -211,19 +211,21 @@ void move::apply_temp_modifier(unit_map& unit_map)
|
|||||||
|
|
||||||
//TODO: we may need to change unit status here and change it back in remove_temp_modifier
|
//TODO: we may need to change unit status here and change it back in remove_temp_modifier
|
||||||
|
|
||||||
// Move the unit
|
|
||||||
unit_map::iterator unit_it = resources::units->find(get_source_hex());
|
unit_map::iterator unit_it = resources::units->find(get_source_hex());
|
||||||
assert(unit_it != resources::units->end());
|
assert(unit_it != resources::units->end());
|
||||||
unit* unit = &*unit_it;
|
|
||||||
DBG_WB << "Temporarily moving unit " << unit->name() << " [" << unit->underlying_id()
|
unit& unit = *unit_it;
|
||||||
|
//Modify movement points
|
||||||
|
DBG_WB <<"Changing movement points for unit " << unit.name() << " [" << unit.underlying_id()
|
||||||
|
<< "] from " << unit.movement_left() << " to "
|
||||||
|
<< unit.movement_left() - movement_cost_ << ".\n";
|
||||||
|
unit.set_movement(unit.movement_left() - movement_cost_);
|
||||||
|
|
||||||
|
// Move the unit
|
||||||
|
DBG_WB << "Temporarily moving unit " << unit.name() << " [" << unit.underlying_id()
|
||||||
<< "] from (" << get_source_hex() << ") to (" << get_dest_hex() <<")\n";
|
<< "] from (" << get_source_hex() << ") to (" << get_dest_hex() <<")\n";
|
||||||
unit_map.move(get_source_hex(), get_dest_hex());
|
unit_map.move(get_source_hex(), get_dest_hex());
|
||||||
|
|
||||||
//Modify movement points accordingly
|
|
||||||
DBG_WB <<"Changing movement points for unit " << unit->name() << " [" << unit->underlying_id()
|
|
||||||
<< "] from " << unit->movement_left() << " to "
|
|
||||||
<< unit->movement_left() - movement_cost_ << ".\n";
|
|
||||||
unit->set_movement(unit->movement_left() - movement_cost_);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void move::remove_temp_modifier(unit_map& unit_map)
|
void move::remove_temp_modifier(unit_map& unit_map)
|
||||||
@ -233,13 +235,13 @@ void move::remove_temp_modifier(unit_map& unit_map)
|
|||||||
|
|
||||||
unit_map::iterator unit_it = resources::units->find(get_dest_hex());
|
unit_map::iterator unit_it = resources::units->find(get_dest_hex());
|
||||||
assert(unit_it != resources::units->end());
|
assert(unit_it != resources::units->end());
|
||||||
unit& unit = *unit_it;
|
|
||||||
|
// Restore movement points
|
||||||
|
unit_it->set_movement(unit_it->movement_left() + movement_cost_);
|
||||||
|
|
||||||
// Restore the unit to its original position
|
// Restore the unit to its original position
|
||||||
unit_map.move(get_dest_hex(), get_source_hex());
|
unit_map.move(get_dest_hex(), get_source_hex());
|
||||||
|
|
||||||
// Restore movement points
|
|
||||||
unit.set_movement(unit.movement_left() + movement_cost_);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void move::draw_hex(const map_location& hex)
|
void move::draw_hex(const map_location& hex)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user