Author: tschmitz
Date: Tue Aug 2 12:16:23 2011
New Revision: 50560
URL: http://svn.gna.org/viewcvs/wesnoth?rev=50560&view=rev
Log:
Changed wb::manager::net_buffer_.
Instead of just one buffer for all network data, there is now one separate
buffer for each team's whiteboard network data.
Modified:
trunk/src/whiteboard/manager.cpp
trunk/src/whiteboard/manager.hpp
trunk/src/whiteboard/side_actions.cpp
trunk/src/whiteboard/validate_visitor.cpp
Modified: trunk/src/whiteboard/manager.cpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/whiteboard/manager.cpp?rev=50560&r1=50559&r2=50560&view=diff
==============================================================================
--- trunk/src/whiteboard/manager.cpp (original)
+++ trunk/src/whiteboard/manager.cpp Tue Aug 2 12:16:23 2011
@@ -61,7 +61,7 @@
fake_unit_(),
key_poller_(new CKey),
hidden_unit_hex_(),
- net_buffer_()
+ net_buffer_(resources::teams->size())
{
LOG_WB << "Manager initialized.\n";
}
@@ -409,20 +409,26 @@
void manager::send_network_data()
{
- if(net_buffer_.empty())
- return;
+ size_t size = net_buffer_.size();
+ for(size_t team_index=0; team_index<size; ++team_index)
+ {
+ config& buf_cfg = net_buffer_[team_index];
+
+ if(buf_cfg.empty())
+ continue;
config packet;
- config& wb_cfg = packet.add_child("whiteboard",net_buffer_);
- wb_cfg["side"] = viewer_side();
- wb_cfg["team_name"] =
resources::teams->at(viewer_team()).team_name();
-
- net_buffer_ = config();
+ config& wb_cfg = packet.add_child("whiteboard",buf_cfg);
+ wb_cfg["side"] = static_cast<int>(team_index+1);
+ wb_cfg["team_name"] =
resources::teams->at(team_index).team_name();
+
+ buf_cfg = config();
network::send_data(packet,0,"whiteboard");
size_t count = wb_cfg.child_count("net_cmd");
- LOG_WB << "Sent wb data (" << count << ").\n";
+ LOG_WB << "Side " << (team_index+1) << " sent wb data (" <<
count << " cmds).\n";
+ }
}
void manager::process_network_data(config const& cfg)
@@ -438,9 +444,9 @@
}
}
-void manager::queue_net_cmd(side_actions::net_cmd const& cmd)
-{
- net_buffer_.add_child("net_cmd",cmd);
+void manager::queue_net_cmd(size_t team_index, side_actions::net_cmd const&
cmd)
+{
+ net_buffer_[team_index].add_child("net_cmd",cmd);
}
void manager::create_temp_move()
Modified: trunk/src/whiteboard/manager.hpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/whiteboard/manager.hpp?rev=50560&r1=50559&r2=50560&view=diff
==============================================================================
--- trunk/src/whiteboard/manager.hpp (original)
+++ trunk/src/whiteboard/manager.hpp Tue Aug 2 12:16:23 2011
@@ -79,8 +79,8 @@
void send_network_data();
/// Called by turn_info::process_network_data() when network data needs
to be processed
void process_network_data(config const&);
- /// Adds a side_actions::net_cmd to net_buffer_, whereupon it will be
sent to all allies
- void queue_net_cmd(side_actions::net_cmd const&);
+ /// Adds a side_actions::net_cmd to net_buffer_[team_index], whereupon
it will (later) be sent to all allies
+ void queue_net_cmd(size_t team_index, side_actions::net_cmd const&);
/// Whether the current side has actions in its planned actions queue
static bool current_side_has_actions();
@@ -185,7 +185,8 @@
map_location hidden_unit_hex_;
- config net_buffer_;
+ ///net_buffer_[i] = whiteboard network data to be sent "from" teams[i].
+ std::vector<config> net_buffer_;
};
/** Applies the planned unit map for the duration of the struct's life.
Modified: trunk/src/whiteboard/side_actions.cpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/whiteboard/side_actions.cpp?rev=50560&r1=50559&r2=50560&view=diff
==============================================================================
--- trunk/src/whiteboard/side_actions.cpp (original)
+++ trunk/src/whiteboard/side_actions.cpp Tue Aug 2 12:16:23 2011
@@ -166,7 +166,7 @@
try {
exec_result = action->execute();
} catch (end_turn_exception&) {
-
resources::whiteboard->queue_net_cmd(make_net_cmd_remove(position));
+
resources::whiteboard->queue_net_cmd(team_index_,make_net_cmd_remove(position));
actions_.erase(position);
LOG_WB << "End turn exception caught during execution, deleting
action. " << *this << "\n";
validate_actions();
@@ -178,11 +178,11 @@
if(exec_result!=action::FAIL)
{
-
resources::whiteboard->queue_net_cmd(make_net_cmd_remove(position));
+
resources::whiteboard->queue_net_cmd(team_index_,make_net_cmd_remove(position));
actions_.erase(position);
}
else //action may have revised itself; let's tell our allies.
-
resources::whiteboard->queue_net_cmd(make_net_cmd_replace(position,*position));
+
resources::whiteboard->queue_net_cmd(team_index_,make_net_cmd_replace(position,*position));
switch(exec_result)
{
@@ -270,7 +270,7 @@
ERR_WB << "Modifying action queue while temp modifiers are
applied!!!\n";
}
assert(position >= begin() && position <= end());
- resources::whiteboard->queue_net_cmd(make_net_cmd_insert(position,
action));
+
resources::whiteboard->queue_net_cmd(team_index_,make_net_cmd_insert(position,
action));
iterator valid_position = actions_.insert(position, action);
LOG_WB << "Inserted at position #" << std::distance(begin(),
valid_position) + 1
<< " : " << action <<"\n";
@@ -359,7 +359,7 @@
<< " to position #" << action_number - 1 << "/" <<
last_position << ".\n";
action_ptr action = *position;
-
resources::whiteboard->queue_net_cmd(make_net_cmd_bump_later(position-1));
+
resources::whiteboard->queue_net_cmd(team_index_,make_net_cmd_bump_later(position-1));
action_queue::iterator after = actions_.erase(position);
//be careful, previous iterators have just been invalidated by erase()
action_queue::iterator destination = after - 1;
@@ -447,7 +447,7 @@
<< " to position #" << action_number + 1 << "/" <<
last_position << ".\n";
action_ptr action = *position;
- resources::whiteboard->queue_net_cmd(make_net_cmd_bump_later(position));
+
resources::whiteboard->queue_net_cmd(team_index_,make_net_cmd_bump_later(position));
action_queue::iterator after = actions_.erase(position);
//be careful, previous iterators have just been invalidated by erase()
DBG_WB << "Action temp. removed, position after is #" << after -
begin() + 1 << "/" << actions_.size() << ".\n";
@@ -474,7 +474,7 @@
{
LOG_WB << "Erasing action at position #" << distance + 1 <<
"\n";
-
resources::whiteboard->queue_net_cmd(make_net_cmd_remove(position));
+
resources::whiteboard->queue_net_cmd(team_index_,make_net_cmd_remove(position));
safe_erase(position);
if (validate_after_delete)
Modified: trunk/src/whiteboard/validate_visitor.cpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/whiteboard/validate_visitor.cpp?rev=50560&r1=50559&r2=50560&view=diff
==============================================================================
--- trunk/src/whiteboard/validate_visitor.cpp (original)
+++ trunk/src/whiteboard/validate_visitor.cpp Tue Aug 2 12:16:23 2011
@@ -132,7 +132,8 @@
if(new_route.steps.empty() || new_route.move_cost >=
pathfind::cost_calculator::getNoPathValue())
return OBSTRUCTED; //no path exists
- if(m.team_index() == viewer_team()) //< Don't mess with any
other team's queue -- only our own
+ size_t viewing_team = viewer_team();
+ if(m.team_index() == viewing_team) //< Don't mess with any
other team's queue -- only our own
{
if(new_route.steps != m.get_route().steps ||
new_route.move_cost != m.get_route().move_cost)
{
@@ -140,7 +141,7 @@
m.set_route(new_route);
//send updated path to allies
-
resources::whiteboard->queue_net_cmd(viewer_actions_.make_net_cmd_replace(arg_itor_,m_ptr));
+
resources::whiteboard->queue_net_cmd(viewing_team,viewer_actions_.make_net_cmd_replace(arg_itor_,m_ptr));
//@todo: Since this might lengthen the path, we
probably need a special conflict state
// to warn the player that the initial path is
no longer possible.
_______________________________________________
Wesnoth-commits mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-commits