wesnoth-cvs-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Wesnoth-cvs-commits] wesnoth/src multiplayer_connect.cpp multiplayer...


From: David White
Subject: [Wesnoth-cvs-commits] wesnoth/src multiplayer_connect.cpp multiplayer...
Date: Fri, 31 Dec 2004 14:57:44 -0500

CVSROOT:        /cvsroot/wesnoth
Module name:    wesnoth
Branch:         
Changes by:     David White <address@hidden>    04/12/31 19:31:13

Modified files:
        src            : multiplayer_connect.cpp multiplayer_connect.hpp 

Log message:
        fixed some problems with loading multiplayer games, including widgets 
not appearing, and teams not being maintained

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/wesnoth/wesnoth/src/multiplayer_connect.cpp.diff?tr1=1.91&tr2=1.92&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/wesnoth/wesnoth/src/multiplayer_connect.hpp.diff?tr1=1.20&tr2=1.21&r1=text&r2=text

Patches:
Index: wesnoth/src/multiplayer_connect.cpp
diff -u wesnoth/src/multiplayer_connect.cpp:1.91 
wesnoth/src/multiplayer_connect.cpp:1.92
--- wesnoth/src/multiplayer_connect.cpp:1.91    Thu Nov 18 22:00:12 2004
+++ wesnoth/src/multiplayer_connect.cpp Fri Dec 31 19:31:13 2004
@@ -1,4 +1,4 @@
-/* $Id: multiplayer_connect.cpp,v 1.91 2004/11/18 22:00:12 ydirson Exp $ */
+/* $Id: multiplayer_connect.cpp,v 1.92 2004/12/31 19:31:13 Sirp Exp $ */
 /*
    Copyright (C) 2003 by David White <address@hidden>
    Part of the Battle for Wesnoth Project http://wesnoth.whitevine.net
@@ -296,8 +296,7 @@
                player_teams_.push_back(_("Team") + std::string(" ") + 
team_name);
                (**sd)["colour"] = 
lexical_cast_default<std::string>(team_num+1);
 
-               if (!save_) 
-                       
player_leaders_.push_back(leader_list_manager(possible_sides, data_));
+               player_leaders_.push_back(leader_list_manager(possible_sides, 
data_));
        }
 
        std::string prefix;
@@ -435,7 +434,7 @@
 
                //Player team
                combos_team_.push_back(gui::combo(*disp_, player_teams_));
-               combos_team_.back().set_selected(side_num);
+               combos_team_.back().set_selected(combo_index_to_team(side_num));
 
                //Player color
                combos_color_.push_back(gui::combo(*disp_, player_colors_));
@@ -467,22 +466,20 @@
                
        //Doing this after creating the combos, because growing vectors may
        //move their elements in memory, and we need a stable pointer
-       if (!save_) {
-               for(sd = sides.first; sd != sides.second; ++sd) {
-                       const int side_num = sd - sides.first;
-                       const int spos = 60 * side_num;
-
-                       scroll_pane_.add_widget(&player_numbers_[side_num], 10, 
3 + spos);
-                       scroll_pane_.add_widget(&combos_type_[side_num], 30, 5 
+ spos);
-                       scroll_pane_.add_widget(&combos_race_[side_num], 145, 5 
+ spos);
-                       scroll_pane_.add_widget(&combos_leader_[side_num], 145, 
35 + spos);
-                       scroll_pane_.add_widget(&combos_team_[side_num], 260, 5 
+ spos);
-                       scroll_pane_.add_widget(&combos_color_[side_num], 375, 
5 + spos);
-                       scroll_pane_.add_widget(&sliders_gold_[side_num], 490, 
5 + spos);
-                       scroll_pane_.add_widget(&labels_gold_[side_num], 500 + 
sliders_gold_[side_num].width(), 5 + spos);
+       for(sd = sides.first; sd != sides.second; ++sd) {
+               const int side_num = sd - sides.first;
+               const int spos = 60 * side_num;
 
-                       
player_leaders_[side_num].set_combo(&combos_leader_[side_num]);
-               }
+               scroll_pane_.add_widget(&player_numbers_[side_num], 10, 3 + 
spos);
+               scroll_pane_.add_widget(&combos_type_[side_num], 30, 5 + spos);
+               scroll_pane_.add_widget(&combos_race_[side_num], 145, 5 + spos);
+               scroll_pane_.add_widget(&combos_leader_[side_num], 145, 35 + 
spos);
+               scroll_pane_.add_widget(&combos_team_[side_num], 260, 5 + spos);
+               scroll_pane_.add_widget(&combos_color_[side_num], 375, 5 + 
spos);
+               scroll_pane_.add_widget(&sliders_gold_[side_num], 490, 5 + 
spos);
+               scroll_pane_.add_widget(&labels_gold_[side_num], 500 + 
sliders_gold_[side_num].width(), 5 + spos);
+
+               player_leaders_[side_num].set_combo(&combos_leader_[side_num]);
        }
 
        std::cerr << "done set_area()\n";
@@ -677,8 +674,6 @@
 
                //Player leader
                if (!save_ && combos_leader_[n].changed()) {
-                       std::stringstream str;
-                       str << (combos_team_[n].selected()+1);
                        side["type"] = player_leaders_[n].get_leader();
                        level_changed = true;
                }
@@ -686,7 +681,7 @@
                //Player team
                if (combos_team_[n].changed()) {
                        std::stringstream str;
-                       str << (combos_team_[n].selected()+1);
+                       str << 
(combo_index_to_team(combos_team_[n].selected())+1);
                        side["team_name"] = str.str();
                        level_changed = true;
                }
@@ -1040,3 +1035,15 @@
 
        return full;
 }
+
+size_t mp_connect::combo_index_to_team(size_t index) const
+{
+       //in the case of loading a game, we may have the same team repeated 
multiple times in the list
+       //of team options. This function maps all such indexes to the same 
number, by using the first
+       //team of that name.
+       if(index >= player_teams_.size()) {
+               return 0;
+       }
+
+       return 
std::find(player_teams_.begin(),player_teams_.end(),player_teams_[index]) - 
player_teams_.begin();
+}
\ No newline at end of file
Index: wesnoth/src/multiplayer_connect.hpp
diff -u wesnoth/src/multiplayer_connect.hpp:1.20 
wesnoth/src/multiplayer_connect.hpp:1.21
--- wesnoth/src/multiplayer_connect.hpp:1.20    Mon Nov  1 18:06:36 2004
+++ wesnoth/src/multiplayer_connect.hpp Fri Dec 31 19:31:13 2004
@@ -1,4 +1,4 @@
-/* $Id: multiplayer_connect.hpp,v 1.20 2004/11/01 18:06:36 gruikya Exp $ */
+/* $Id: multiplayer_connect.hpp,v 1.21 2004/12/31 19:31:13 Sirp Exp $ */
 /*
    Copyright (C) 2003 by David White <address@hidden>
    Part of the Battle for Wesnoth Project http://wesnoth.whitevine.net
@@ -59,7 +59,9 @@
        void remove_player(const std::string& name);
        void update_positions();
        void update_network();
-       bool is_full();
+       bool is_full();
+
+       size_t combo_index_to_team(size_t index) const;
 
        display *disp_;
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]