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

Reply via email to