[Top][All Lists]
[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_;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Wesnoth-cvs-commits] wesnoth/src multiplayer_connect.cpp multiplayer...,
David White <=