? rc ? msgfmt1.diff ? tech_info1.diff ? future_fix.diff ? diff ? causescore ? check_headers.sh ? test.c ? prevnext.patch ? local_warmap131201.diff ? queue ? unit_move_turns1.diff ? po/diff Index: client/gui-gtk/helpdlg.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/client/gui-gtk/helpdlg.c,v retrieving revision 1.46 diff -u -r1.46 helpdlg.c --- client/gui-gtk/helpdlg.c 2001/12/21 11:17:35 1.46 +++ client/gui-gtk/helpdlg.c 2002/01/16 22:24:25 @@ -802,7 +802,7 @@ create_help_page(HELP_TECH); - if (iresearch.researching!=A_NONE) { - my_snprintf(buf, sizeof(buf), _("Researching: %s(%d/%d)"), - advances[p->research.researching].name, - p->research.bulbs_researched, total_bulbs_required(p)); - } else { - my_snprintf(buf, sizeof(buf), _("Researching Future Tech. %d: %d/%d"), - ((p->future_tech) + 1), p->research.bulbs_researched, - total_bulbs_required(p)); - } + my_snprintf(buf, sizeof(buf), _("Researching: %s(%d/%d)"), + get_tech_name(p, p->research.researching), + p->research.bulbs_researched, total_bulbs_required(p)); label=gtk_label_new(buf); gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, FALSE, 2); Index: client/gui-gtk/repodlgs.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/client/gui-gtk/repodlgs.c,v retrieving revision 1.44 diff -u -r1.44 repodlgs.c --- client/gui-gtk/repodlgs.c 2002/01/15 21:23:49 1.44 +++ client/gui-gtk/repodlgs.c 2002/01/16 22:24:26 @@ -342,18 +342,18 @@ gchar text_a[512], text_b[512]; gint a = GPOINTER_TO_INT(a_p), b = GPOINTER_TO_INT(b_p); - if(a < game.num_tech_types) { + if (!is_future_tech(a)) { a_str=advances[a].name; } else { - my_snprintf(text_a,sizeof(text_a), _("Researching Future Tech. %d"), + my_snprintf(text_a,sizeof(text_a), _("Future Tech. %d"), a - game.num_tech_types); a_str=text_a; } - if(b < game.num_tech_types) { + if(!is_future_tech(b)) { b_str=advances[b].name; } else { - my_snprintf(text_b,sizeof(text_b), _("Researching Future Tech. %d"), + my_snprintf(text_b,sizeof(text_b), _("Future Tech. %d"), b - game.num_tech_types); b_str=text_b; } @@ -458,7 +458,7 @@ game.num_tech_types) { data=advances[GPOINTER_TO_INT(g_list_nth_data(sorting_list, i))].name; } else { - my_snprintf(text, sizeof(text), _("Researching Future Tech. %d"), + my_snprintf(text, sizeof(text), _("Future Tech. %d"), GPOINTER_TO_INT(g_list_nth_data(sorting_list, i)) - game.num_tech_types); data=text; Index: client/gui-mui/helpdlg.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/client/gui-mui/helpdlg.c,v retrieving revision 1.24 diff -u -r1.24 helpdlg.c --- client/gui-mui/helpdlg.c 2001/12/21 11:17:36 1.24 +++ client/gui-mui/helpdlg.c 2002/01/16 22:24:26 @@ -720,7 +720,7 @@ create_help_page(HELP_TECH); - if (i < game.num_tech_types && i != A_NONE) + if (!is_future_tech(i)) { if (help_tech_group) { Index: client/gui-mui/inteldlg.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/client/gui-mui/inteldlg.c,v retrieving revision 1.7 diff -u -r1.7 inteldlg.c --- client/gui-mui/inteldlg.c 2001/12/21 11:17:37 1.7 +++ client/gui-mui/inteldlg.c 2002/01/16 22:24:26 @@ -143,15 +143,9 @@ settextf(tax_text, _("Tax: %d%%"), p->economic.tax); settextf(science_text, _("Science: %d%%"), p->economic.science); settextf(luxury_text, _("Luxury: %d%%"), p->economic.luxury); - if (p->research.researching != A_NONE) { - settextf(researching_text, _("Researching: %s(%d/%d)"), - advances[p->research.researching].name, - p->research.bulbs_researched, total_bulbs_required(p)); - } else { - settextf(researching_text, _("Researching Future Tech. %d: %d/%d"), - ((p->future_tech) + 1), p->research.bulbs_researched, - total_bulbs_required(p)); - } + settextf(researching_text, _("Researching: %s(%d/%d)"), + get_tech_name(p, p->research.researching), + p->research.bulbs_researched, total_bulbs_required(p)); settextf(capital_text, _("Capital: %s"), (pcity == NULL) ? _("(Unknown)") : pcity->name); Index: client/gui-win32/helpdlg.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/client/gui-win32/helpdlg.c,v retrieving revision 1.2 diff -u -r1.2 helpdlg.c --- client/gui-win32/helpdlg.c 2001/09/24 08:46:31 1.2 +++ client/gui-win32/helpdlg.c 2002/01/16 22:24:27 @@ -724,7 +724,7 @@ char *buf= &long_buffer[0]; create_help_page(HELP_TECH); - if (iresearch.researching != A_NONE) { - my_snprintf(buf, sizeof(buf), _("Researching: %s(%d/%d)"), - advances[p->research.researching].name, - p->research.bulbs_researched, total_bulbs_required(p)); - } else { - my_snprintf(buf, sizeof(buf), _("Researching Future Tech. %d: %d/%d"), - ((p->future_tech) + 1), p->research.bulbs_researched, - total_bulbs_required(p)); - } + my_snprintf(buf, sizeof(buf), _("Researching: %s(%d/%d)"), + get_tech_name(p, p->research.researching), + p->research.bulbs_researched, total_bulbs_required(p)); fcwin_box_add_static(hbox,buf,0,SS_CENTER,TRUE,TRUE,10); pcity = find_palace(p); Index: client/gui-xaw/helpdlg.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/client/gui-xaw/helpdlg.c,v retrieving revision 1.37 diff -u -r1.37 helpdlg.c --- client/gui-xaw/helpdlg.c 2001/12/21 11:17:39 1.37 +++ client/gui-xaw/helpdlg.c 2002/01/16 22:24:28 @@ -903,7 +903,7 @@ create_help_page(HELP_TECH); set_title_topic(pitem); - if (itext); Index: client/gui-xaw/inteldlg.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/client/gui-xaw/inteldlg.c,v retrieving revision 1.15 diff -u -r1.15 inteldlg.c --- client/gui-xaw/inteldlg.c 2001/12/21 11:17:39 1.15 +++ client/gui-xaw/inteldlg.c 2002/01/16 22:24:28 @@ -144,15 +144,9 @@ XtNlabel, buf, NULL); - if (p->research.researching != A_NONE) { - my_snprintf(buf, sizeof(buf), _("Researching: %s(%d/%d)"), - advances[p->research.researching].name, - p->research.bulbs_researched, total_bulbs_required(p)); - } else { - my_snprintf(buf, sizeof(buf), _("Researching Future Tech. %d: %d/%d"), - ((p->future_tech) + 1), p->research.bulbs_researched, - total_bulbs_required(p)); - } + my_snprintf(buf, sizeof(buf), _("Researching: %s(%d/%d)"), + get_tech_name(p, p->research.researching), + p->research.bulbs_researched, total_bulbs_required(p)); XtVaCreateManagedWidget("intelreslabel", labelWidgetClass, Index: client/gui-xaw/repodlgs.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/client/gui-xaw/repodlgs.c,v retrieving revision 1.30 diff -u -r1.30 repodlgs.c --- client/gui-xaw/repodlgs.c 2002/01/15 21:23:50 1.30 +++ client/gui-xaw/repodlgs.c 2002/01/16 22:24:29 @@ -225,19 +225,12 @@ char goal_text[512]; char *report_title; - if (game.player_ptr->research.researching != A_NONE) { - my_snprintf(current_text, sizeof(current_text), - _("Researching %s: %d/%d"), - advances[game.player_ptr->research.researching].name, - game.player_ptr->research.bulbs_researched, - total_bulbs_required(game.player_ptr)); - } else { - my_snprintf(current_text, sizeof(current_text), - _("Researching Future Tech. %d: %d/%d"), - ((game.player_ptr->future_tech) + 1), - game.player_ptr->research.bulbs_researched, - total_bulbs_required(game.player_ptr)); - } + my_snprintf(current_text, sizeof(current_text), + _("Researching %s: %d/%d"), + get_tech_name(game.player_ptr, + game.player_ptr->research.researching), + game.player_ptr->research.bulbs_researched, + total_bulbs_required(game.player_ptr)); my_snprintf(goal_text, sizeof(goal_text), _("Goal: %s (%d steps)"), @@ -515,18 +508,11 @@ xaw_set_label(science_label, report_title); free(report_title); - if (game.player_ptr->research.researching != A_NONE) { - my_snprintf(text, sizeof(text), _("Researching %s: %d/%d"), - advances[game.player_ptr->research.researching].name, - game.player_ptr->research.bulbs_researched, - total_bulbs_required(game.player_ptr)); - } else { - my_snprintf(text, sizeof(text), - _("Researching Future Tech. %d: %d/%d"), - ((game.player_ptr->future_tech) + 1), - game.player_ptr->research.bulbs_researched, - total_bulbs_required(game.player_ptr)); - } + my_snprintf(text, sizeof(text), _("Researching %s: %d/%d"), + get_tech_name(game.player_ptr, + game.player_ptr->research.researching), + game.player_ptr->research.bulbs_researched, + total_bulbs_required(game.player_ptr)); xaw_set_label(science_current_label, text); Index: common/tech.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/common/tech.c,v retrieving revision 1.34 diff -u -r1.34 tech.c --- common/tech.c 2002/01/15 19:36:23 1.34 +++ common/tech.c 2002/01/16 22:24:30 @@ -10,11 +10,16 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ***********************************************************************/ +#ifdef HAVE_CONFIG_H +#include +#endif + #include #include #include #include +#include "fcintl.h" #include "game.h" #include "log.h" #include "player.h" @@ -346,11 +351,12 @@ { int cost, tech_cost_style = game.rgame.tech_cost_style; - if (get_invention(pplayer, tech) == TECH_KNOWN) { + if (!is_future_tech(tech) && get_invention(pplayer, tech) == TECH_KNOWN) { + /* A non-future tech which is already known costs nothing. */ return 0; } - if (tech > game.num_tech_types) { + if (is_future_tech(tech)) { /* Future techs use style 0 */ tech_cost_style = 0; } @@ -482,4 +488,34 @@ memset(counted, 0, sizeof(counted)); advances[tech].num_reqs = precalc_tech_data_helper(tech, counted); } +} + +/************************************************************************** + Is the given tech a future tech. +**************************************************************************/ +int is_future_tech(Tech_Type_id tech) +{ + /* + * Future techs can be identify in two way: the "tech >= + * game.num_tech_types" condition and the "tech == A_NONE" + * condition. FIXME: clean this up. + */ + return (tech >= game.num_tech_types) || (tech == A_NONE); +} + +/************************************************************************** + Return the name of the given tech. You don't have to free the return + pointer. +**************************************************************************/ +const char *get_tech_name(struct player *pplayer, Tech_Type_id tech) +{ + static char buffer[200]; + + if (!is_future_tech(tech)) { + my_snprintf(buffer, sizeof(buffer), "%s", advances[tech].name); + } else { + my_snprintf(buffer, sizeof(buffer), _("Future Tech. %d"), + pplayer->future_tech + 1); + } + return buffer; } Index: common/tech.h =================================================================== RCS file: /home/freeciv/CVS/freeciv/common/tech.h,v retrieving revision 1.27 diff -u -r1.27 tech.h --- common/tech.h 2002/01/11 13:50:50 1.27 +++ common/tech.h 2002/01/16 22:24:30 @@ -109,6 +109,8 @@ int total_bulbs_required_for_goal(struct player *pplayer, Tech_Type_id goal); int is_tech_a_req_for_goal(struct player *pplayer, Tech_Type_id tech, Tech_Type_id goal); +int is_future_tech(Tech_Type_id tech); +const char *get_tech_name(struct player *pplayer, Tech_Type_id tech); void precalc_tech_data(void); Index: po/POTFILES.in =================================================================== RCS file: /home/freeciv/CVS/freeciv/po/POTFILES.in,v retrieving revision 1.47 diff -u -r1.47 POTFILES.in --- po/POTFILES.in 2001/10/30 11:29:34 1.47 +++ po/POTFILES.in 2002/01/16 22:24:31 @@ -8,6 +8,7 @@ common/player.c common/shared.c common/support.c +common/tech.c common/unit.c common/unittype.c common/version.c Index: server/plrhand.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/server/plrhand.c,v retrieving revision 1.206 diff -u -r1.206 plrhand.c --- server/plrhand.c 2002/01/15 21:15:06 1.206 +++ server/plrhand.c 2002/01/16 22:24:33 @@ -294,22 +294,21 @@ advances[plr->ai.tech_goal].name); } else { choose_random_tech(plr); - if (plr->research.researching!=A_NONE && tech_found != A_NONE) - notify_player(plr, - _("Game: Learned %s. Scientists choose to research %s."), - advances[tech_found].name, - advances[plr->research.researching].name); - else if (tech_found != A_NONE) - notify_player(plr, - _("Game: Learned %s. Scientists choose to research " - "Future Tech. 1."), + if (!is_future_tech(plr->research.researching) + && !is_future_tech(tech_found)) { + notify_player(plr,_("Game: Learned %s. Scientists " + "choose to research %s."), + advances[tech_found].name, + advances[plr->research.researching].name); + } else if (!is_future_tech(tech_found)) { + notify_player(plr, _("Game: Learned %s. Scientists " + "choose to research Future Tech. 1."), advances[tech_found].name); - else { + } else { + notify_player(plr, _("Game: Learned Future Tech. %d. " + "Researching Future Tech. %d."), + plr->future_tech, (plr->future_tech) + 1); plr->future_tech++; - notify_player(plr, - _("Game: Learned Future Tech. %d. " - "Researching Future Tech. %d."), - plr->future_tech,(plr->future_tech)+1); } } if (saving_bulbs) { @@ -347,7 +346,7 @@ { /* plr will be notified when new tech is chosen */ - if (plr->research.researching != A_NONE) { + if (!is_future_tech(plr->research.researching)) { notify_embassies(plr, (struct player*)0, _("Game: The %s have researched %s."), get_nation_name_plural(plr->nation), Index: server/unittools.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/server/unittools.c,v retrieving revision 1.148 diff -u -r1.148 unittools.c --- server/unittools.c 2002/01/14 17:17:17 1.148 +++ server/unittools.c 2002/01/16 22:24:36 @@ -2313,7 +2313,7 @@ pplayer->research.bulbs_researched = res_ed; pplayer->research.researching = res_ing; - if (new_tech!=A_NONE) { + if (!is_future_tech(new_tech)) { const char *tech_name = advances[new_tech].name; notify_player_ex(pplayer, punit->x, punit->y, E_NOEVENT, _("Game: You gain knowledge about %s."), tech_name);