Author: tschmitz
Date: Mon Aug 22 12:07:35 2011
New Revision: 50879
URL: http://svn.gna.org/viewcvs/wesnoth?rev=50879&view=rev
Log:
Fixed 2 bugs.
Fixed: planning multi-turn moves that conflict with allies at some point.
Fixed: crash when planning multi-turn moves through the fog.
Modified:
trunk/src/whiteboard/attack.cpp
trunk/src/whiteboard/attack.hpp
trunk/src/whiteboard/manager.cpp
trunk/src/whiteboard/mapbuilder.cpp
trunk/src/whiteboard/move.cpp
trunk/src/whiteboard/move.hpp
trunk/src/whiteboard/side_actions.cpp
trunk/src/whiteboard/side_actions.hpp
Modified: trunk/src/whiteboard/attack.cpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/whiteboard/attack.cpp?rev=50879&r1=50878&r2=50879&view=diff
==============================================================================
--- trunk/src/whiteboard/attack.cpp (original)
+++ trunk/src/whiteboard/attack.cpp Mon Aug 22 12:07:35 2011
@@ -49,9 +49,9 @@
return s;
}
-attack::attack(size_t team_index, bool hidden, const map_location& target_hex,
int weapon_choice, const pathfind::marked_route& route,
+attack::attack(size_t team_index, bool hidden, unit& u, const map_location&
target_hex, int weapon_choice, const pathfind::marked_route& route,
arrow_ptr arrow, fake_unit_ptr fake_unit)
- : move(team_index, hidden, route, arrow, fake_unit),
+ : move(team_index, hidden, u, route, arrow, fake_unit),
target_hex_(target_hex),
weapon_choice_(weapon_choice),
attack_movement_cost_(get_unit()->attacks()[weapon_choice_].movement_used()),
Modified: trunk/src/whiteboard/attack.hpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/whiteboard/attack.hpp?rev=50879&r1=50878&r2=50879&view=diff
==============================================================================
--- trunk/src/whiteboard/attack.hpp (original)
+++ trunk/src/whiteboard/attack.hpp Mon Aug 22 12:07:35 2011
@@ -31,8 +31,7 @@
friend class validate_visitor;
friend class highlight_visitor;
- ///Future unit map must be valid during construction, so that attack
can find its units
- attack(size_t team_index, bool hidden, const map_location& target_hex,
int weapon_choice, const pathfind::marked_route& route,
+ attack(size_t team_index, bool hidden, unit& mover, const map_location&
target_hex, int weapon_choice, const pathfind::marked_route& route,
arrow_ptr arrow, fake_unit_ptr fake_unit);
attack(config const&, bool hidden); // For deserialization
virtual ~attack();
Modified: trunk/src/whiteboard/manager.cpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/whiteboard/manager.cpp?rev=50879&r1=50878&r2=50879&view=diff
==============================================================================
--- trunk/src/whiteboard/manager.cpp (original)
+++ trunk/src/whiteboard/manager.cpp Mon Aug 22 12:07:35 2011
@@ -655,7 +655,7 @@
if (has_temp_move() && !executing_actions_ &&
!resources::controller->is_linger_mode())
{
side_actions& sa = *viewer_actions();
- unit const *const u =
future_visible_unit(route_->steps.front());
+ unit* u = future_visible_unit(route_->steps.front());
assert(u);
size_t first_turn = sa.get_turn_num_of(*u);
@@ -673,7 +673,7 @@
route.steps = move_arrow->get_path();
route.move_cost = path_cost(route.steps,*u);
- sa.queue_move(turn,route,move_arrow,fake_unit);
+ sa.queue_move(turn,*u,route,move_arrow,fake_unit);
}
erase_temp_move();
@@ -712,7 +712,7 @@
route_->steps.push_back(attack_from);
}
- unit const* attacking_unit = future_visible_unit(source_hex);
+ unit* attacking_unit = future_visible_unit(source_hex);
assert(attacking_unit);
int weapon_choice =
resources::controller->get_mouse_handler_base().show_attack_dialog(
@@ -721,7 +721,7 @@
if (weapon_choice >= 0)
{
side_actions& sa = *viewer_actions();
-
sa.queue_attack(sa.get_turn_num_of(*attacking_unit),target_hex,weapon_choice,*route_,move_arrow,fake_unit);
+
sa.queue_attack(sa.get_turn_num_of(*attacking_unit),*attacking_unit,target_hex,weapon_choice,*route_,move_arrow,fake_unit);
on_save_action();
Modified: trunk/src/whiteboard/mapbuilder.cpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/whiteboard/mapbuilder.cpp?rev=50879&r1=50878&r2=50879&view=diff
==============================================================================
--- trunk/src/whiteboard/mapbuilder.cpp (original)
+++ trunk/src/whiteboard/mapbuilder.cpp Mon Aug 22 12:07:35 2011
@@ -85,7 +85,7 @@
action_ptr act = *itor;
unit* u = act->get_unit();
- if(acted_this_turn_.find(u) == acted_this_turn_.end())
+ if(acted_this_turn_.find(u) != acted_this_turn_.end())
visit_helper(itor,act);
else //gotta restore MP first
{
Modified: trunk/src/whiteboard/move.cpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/whiteboard/move.cpp?rev=50879&r1=50878&r2=50879&view=diff
==============================================================================
--- trunk/src/whiteboard/move.cpp (original)
+++ trunk/src/whiteboard/move.cpp Mon Aug 22 12:07:35 2011
@@ -58,10 +58,10 @@
return s;
}
-move::move(size_t team_index, bool hidden, const pathfind::marked_route& route,
+move::move(size_t team_index, bool hidden, unit& u, const
pathfind::marked_route& route,
arrow_ptr arrow, fake_unit_ptr fake_unit)
: action(team_index,hidden),
- unit_(NULL),
+ unit_(&u),
unit_id_(),
route_(new pathfind::marked_route(route)),
movement_cost_(0),
@@ -73,15 +73,10 @@
mover_(),
fake_unit_hidden_(false)
{
- //Future unit map must be valid during construction, so that move can
find its unit
- scoped_planned_unit_map raii;
-
assert(!route_->steps.empty());
if(hidden)
fake_unit_->set_hidden(true);
-
- unit_ = wb::future_visible_unit(get_source_hex());
this->init();
}
Modified: trunk/src/whiteboard/move.hpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/whiteboard/move.hpp?rev=50879&r1=50878&r2=50879&view=diff
==============================================================================
--- trunk/src/whiteboard/move.hpp (original)
+++ trunk/src/whiteboard/move.hpp Mon Aug 22 12:07:35 2011
@@ -37,8 +37,8 @@
friend class validate_visitor;
friend class highlight_visitor;
- move(size_t team_index, bool hidden, const pathfind::marked_route&
route, arrow_ptr arrow,
- fake_unit_ptr fake_unit);
+ move(size_t team_index, bool hidden, unit& mover, const
pathfind::marked_route& route,
+ arrow_ptr arrow, fake_unit_ptr fake_unit);
move(config const&, bool hidden); // For deserialization
virtual ~move();
Modified: trunk/src/whiteboard/side_actions.cpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/whiteboard/side_actions.cpp?rev=50879&r1=50878&r2=50879&view=diff
==============================================================================
--- trunk/src/whiteboard/side_actions.cpp (original)
+++ trunk/src/whiteboard/side_actions.cpp Mon Aug 22 12:07:35 2011
@@ -249,19 +249,19 @@
act->show();
}
-side_actions::iterator side_actions::queue_move(size_t turn, const
pathfind::marked_route& route, arrow_ptr arrow, fake_unit_ptr fake_unit)
+side_actions::iterator side_actions::queue_move(size_t turn, unit& mover,
const pathfind::marked_route& route, arrow_ptr arrow, fake_unit_ptr fake_unit)
{
move_ptr new_move;
- new_move.reset(new move(team_index(), hidden_, route, arrow,
fake_unit));
+ new_move.reset(new move(team_index(), hidden_, mover, route, arrow,
fake_unit));
return queue_action(turn,new_move);
}
-side_actions::iterator side_actions::queue_attack(size_t turn, const
map_location& target_hex, int weapon_choice,
+side_actions::iterator side_actions::queue_attack(size_t turn, unit& mover,
const map_location& target_hex, int weapon_choice,
const pathfind::marked_route& route,
arrow_ptr arrow, fake_unit_ptr fake_unit)
{
attack_ptr new_attack;
- new_attack.reset(new attack(team_index(), hidden_, target_hex,
weapon_choice, route, arrow, fake_unit));
+ new_attack.reset(new attack(team_index(), hidden_, mover, target_hex,
weapon_choice, route, arrow, fake_unit));
return queue_action(turn,new_attack);
}
Modified: trunk/src/whiteboard/side_actions.hpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/whiteboard/side_actions.hpp?rev=50879&r1=50878&r2=50879&view=diff
==============================================================================
--- trunk/src/whiteboard/side_actions.hpp (original)
+++ trunk/src/whiteboard/side_actions.hpp Mon Aug 22 12:07:35 2011
@@ -144,14 +144,14 @@
* Queues a move to be executed last
* @return The queued move's position
*/
- iterator queue_move(size_t turn_num, const pathfind::marked_route&
route,
+ iterator queue_move(size_t turn_num, unit& mover, const
pathfind::marked_route& route,
arrow_ptr arrow, fake_unit_ptr fake_unit);
/**
* Queues an attack or attack-move to be executed last
* @return The queued attack's position
*/
- iterator queue_attack(size_t turn_num, const map_location& target_hex,
int weapon_choice, const pathfind::marked_route& route,
+ iterator queue_attack(size_t turn_num, unit& mover, const map_location&
target_hex, int weapon_choice, const pathfind::marked_route& route,
arrow_ptr arrow, fake_unit_ptr fake_unit);
/**
_______________________________________________
Wesnoth-commits mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-commits