1
1
mirror of https://github.com/tstellar/bygfoot.git synced 2025-02-04 01:37:39 +01:00

Minor fixes.

This commit is contained in:
gyboth 2005-04-09 19:18:28 +00:00
parent d973da436a
commit b5ccda8879
40 changed files with 431 additions and 180 deletions

View File

@ -55,6 +55,27 @@
</widget>
</child>
<child>
<widget class="GtkImageMenuItem" id="menu_load_last_save">
<property name="visible">True</property>
<property name="label" translatable="yes">Load last save</property>
<property name="use_underline">True</property>
<signal name="activate" handler="on_menu_load_last_save_activate" last_modification_time="Sat, 09 Apr 2005 14:53:26 GMT"/>
<child internal-child="image">
<widget class="GtkImage" id="image277">
<property name="visible">True</property>
<property name="stock">gtk-open</property>
<property name="icon_size">1</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
</child>
</widget>
</child>
<child>
<widget class="GtkImageMenuItem" id="menu_save">
<property name="visible">True</property>
@ -110,7 +131,7 @@
<accelerator key="p" modifiers="GDK_CONTROL_MASK" signal="activate"/>
<child internal-child="image">
<widget class="GtkImage" id="image264">
<widget class="GtkImage" id="image278">
<property name="visible">True</property>
<property name="stock">gtk-preferences</property>
<property name="icon_size">1</property>
@ -246,7 +267,7 @@
<property name="visible">True</property>
<property name="label" translatable="yes">All Out Defend</property>
<property name="use_underline">True</property>
<property name="active">True</property>
<property name="active">False</property>
<signal name="button_press_event" handler="on_menu_team_button_press_event" last_modification_time="Mon, 28 Feb 2005 08:16:56 GMT"/>
</widget>
</child>
@ -256,7 +277,7 @@
<property name="visible">True</property>
<property name="label" translatable="yes">Defend</property>
<property name="use_underline">True</property>
<property name="active">True</property>
<property name="active">False</property>
<property name="group">menu_all_out_defend</property>
<signal name="button_press_event" handler="on_menu_team_button_press_event" last_modification_time="Mon, 28 Feb 2005 08:17:07 GMT"/>
</widget>
@ -267,7 +288,7 @@
<property name="visible">True</property>
<property name="label" translatable="yes">Balanced</property>
<property name="use_underline">True</property>
<property name="active">True</property>
<property name="active">False</property>
<property name="group">menu_all_out_defend</property>
<signal name="button_press_event" handler="on_menu_team_button_press_event" last_modification_time="Mon, 28 Feb 2005 08:17:14 GMT"/>
</widget>
@ -278,7 +299,7 @@
<property name="visible">True</property>
<property name="label" translatable="yes">Attack</property>
<property name="use_underline">True</property>
<property name="active">True</property>
<property name="active">False</property>
<property name="group">menu_all_out_defend</property>
<signal name="button_press_event" handler="on_menu_team_button_press_event" last_modification_time="Mon, 28 Feb 2005 08:17:20 GMT"/>
</widget>
@ -313,7 +334,7 @@
<property name="visible">True</property>
<property name="label" translatable="yes">Best</property>
<property name="use_underline">True</property>
<property name="active">True</property>
<property name="active">False</property>
<signal name="button_press_event" handler="on_menu_team_button_press_event" last_modification_time="Mon, 28 Feb 2005 08:15:47 GMT"/>
</widget>
</child>
@ -323,7 +344,7 @@
<property name="visible">True</property>
<property name="label" translatable="yes">Good</property>
<property name="use_underline">True</property>
<property name="active">True</property>
<property name="active">False</property>
<property name="group">menu_scout_best</property>
<signal name="button_press_event" handler="on_menu_team_button_press_event" last_modification_time="Mon, 28 Feb 2005 08:15:35 GMT"/>
</widget>
@ -334,7 +355,7 @@
<property name="visible">True</property>
<property name="label" translatable="yes">Average</property>
<property name="use_underline">True</property>
<property name="active">True</property>
<property name="active">False</property>
<property name="group">menu_scout_best</property>
<signal name="button_press_event" handler="on_menu_team_button_press_event" last_modification_time="Mon, 28 Feb 2005 08:15:54 GMT"/>
</widget>
@ -369,7 +390,7 @@
<property name="visible">True</property>
<property name="label" translatable="yes">Best</property>
<property name="use_underline">True</property>
<property name="active">True</property>
<property name="active">False</property>
<signal name="button_press_event" handler="on_menu_team_button_press_event" last_modification_time="Mon, 28 Feb 2005 08:16:14 GMT"/>
</widget>
</child>
@ -379,7 +400,7 @@
<property name="visible">True</property>
<property name="label" translatable="yes">Good</property>
<property name="use_underline">True</property>
<property name="active">True</property>
<property name="active">False</property>
<property name="group">menu_physio_best</property>
<signal name="button_press_event" handler="on_menu_team_button_press_event" last_modification_time="Mon, 28 Feb 2005 08:16:21 GMT"/>
</widget>
@ -390,7 +411,7 @@
<property name="visible">True</property>
<property name="label" translatable="yes">Average</property>
<property name="use_underline">True</property>
<property name="active">True</property>
<property name="active">False</property>
<property name="group">menu_physio_best</property>
<signal name="button_press_event" handler="on_menu_team_button_press_event" last_modification_time="Mon, 28 Feb 2005 08:16:28 GMT"/>
</widget>
@ -425,7 +446,7 @@
<property name="visible">True</property>
<property name="label" translatable="yes">On</property>
<property name="use_underline">True</property>
<property name="active">True</property>
<property name="active">False</property>
<signal name="button_press_event" handler="on_menu_team_button_press_event" last_modification_time="Tue, 08 Mar 2005 16:37:57 GMT"/>
</widget>
</child>
@ -435,7 +456,7 @@
<property name="visible">True</property>
<property name="label" translatable="yes">Off</property>
<property name="use_underline">True</property>
<property name="active">True</property>
<property name="active">False</property>
<property name="group">menu_boost_on</property>
<signal name="button_press_event" handler="on_menu_team_button_press_event" last_modification_time="Tue, 08 Mar 2005 16:37:48 GMT"/>
</widget>
@ -456,6 +477,12 @@
</widget>
</child>
<child>
<widget class="GtkMenuItem" id="trennlinie11">
<property name="visible">True</property>
</widget>
</child>
<child>
<widget class="GtkMenuItem" id="menu_custom_structure">
<property name="visible">True</property>
@ -465,6 +492,17 @@
</widget>
</child>
<child>
<widget class="GtkMenuItem" id="menu_rearrange_team">
<property name="visible">True</property>
<property name="tooltip" translatable="yes">Try to put the startup players onto their favoured positions and sort the substitutes (Ctrl-R or middle click)</property>
<property name="label" translatable="yes">Rearrange team</property>
<property name="use_underline">True</property>
<signal name="activate" handler="on_menu_rearrange_team_activate" last_modification_time="Sat, 09 Apr 2005 08:59:08 GMT"/>
<accelerator key="r" modifiers="GDK_CONTROL_MASK" signal="activate"/>
</widget>
</child>
<child>
<widget class="GtkMenuItem" id="trennlinie8">
<property name="visible">True</property>
@ -609,7 +647,7 @@
<accelerator key="F9" modifiers="0" signal="activate"/>
<child internal-child="image">
<widget class="GtkImage" id="image265">
<widget class="GtkImage" id="image279">
<property name="visible">True</property>
<property name="stock">gtk-go-forward</property>
<property name="icon_size">1</property>
@ -631,7 +669,7 @@
<accelerator key="F8" modifiers="0" signal="activate"/>
<child internal-child="image">
<widget class="GtkImage" id="image266">
<widget class="GtkImage" id="image280">
<property name="visible">True</property>
<property name="stock">gtk-go-back</property>
<property name="icon_size">1</property>
@ -653,7 +691,7 @@
<accelerator key="F12" modifiers="0" signal="activate"/>
<child internal-child="image">
<widget class="GtkImage" id="image267">
<widget class="GtkImage" id="image281">
<property name="visible">True</property>
<property name="stock">gtk-justify-fill</property>
<property name="icon_size">1</property>
@ -743,11 +781,10 @@
<widget class="GtkButton" id="button_load">
<property name="border_width">2</property>
<property name="visible">True</property>
<property name="tooltip" translatable="yes">Load game (L or Ctrl - O)</property>
<property name="tooltip" translatable="yes">Load game (Ctrl - O)</property>
<property name="can_focus">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<signal name="clicked" handler="on_button_load_clicked" last_modification_time="Fri, 06 Feb 2004 10:20:08 GMT"/>
<accelerator key="l" modifiers="0" signal="clicked"/>
<child>
<widget class="GtkImage" id="image11">
@ -776,7 +813,6 @@
<property name="can_focus">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<signal name="clicked" handler="on_button_save_clicked" last_modification_time="Fri, 06 Feb 2004 10:20:01 GMT"/>
<accelerator key="s" modifiers="0" signal="clicked"/>
<child>
<widget class="GtkImage" id="image12">

View File

@ -715,7 +715,7 @@
<child>
<widget class="GtkLabel" id="label108">
<property name="visible">True</property>
<property name="label" translatable="yes">Resume last game</property>
<property name="label" translatable="yes">_Resume last game</property>
<property name="use_underline">True</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
@ -1452,6 +1452,7 @@
<property name="modal">False</property>
<property name="resizable">True</property>
<property name="destroy_with_parent">False</property>
<signal name="delete_event" handler="on_window_stadium_delete_event" last_modification_time="Sat, 09 Apr 2005 08:49:40 GMT"/>
<child>
<widget class="GtkVBox" id="vbox39">

View File

@ -22,7 +22,7 @@ bygfoot_SOURCES = \
interface.c callbacks.h interface.h support.h \
league.c cup.h league.h table.h team.h variables.h \
live_game.c fixture.h free.h game.h game_gui.h live_game.h maths.h misc_callback_func.h option.h player.h support.h team.h treeview.h user.h variables.h window.h \
load_save.c file.h game_gui.h gui.h load_save.h option.h support.h variables.h xml_loadsave_misc.h xml_loadsave_cup.h xml_loadsave_league.h xml_loadsave_transfers.h xml_loadsave_users.h xml.h \
load_save.c callbacks.h file.h game_gui.h gui.h load_save.h option.h support.h variables.h xml_loadsave_misc.h xml_loadsave_cup.h xml_loadsave_league.h xml_loadsave_transfers.h xml_loadsave_users.h xml.h \
main.c cup_struct.h misc_callbacks.h file.h free.h league_struct.h live_game.h main.h transfer_struct.h variables.h window.h \
maths.c maths.h misc.h \
misc.c main.h maths.h misc.h \
@ -33,7 +33,7 @@ bygfoot_SOURCES = \
misc2_callback_func.c file.h finance.h game_gui.h maths.h misc2_callback_func.h option.h player.h support.h team.h treeview.h transfer.h user.h window.h \
misc2_interface.c misc2_interface.h misc2_callbacks.h support.h \
option.c option.h variables.h \
option_gui.c file.h option_gui.h option.h support.h user.h variables.h \
option_gui.c file.h callbacks.h option_gui.h option.h support.h user.h variables.h \
options_callbacks.c file.h options_callbacks.h options_interface.h option_gui.h support.h user.h variables.h window.h \
options_interface.c options_interface.h options_callbacks.h support.h \
player.c cup.h free.h game_gui.h league.h maths.h misc.h option.h player.h team.h user.h \
@ -45,7 +45,7 @@ bygfoot_SOURCES = \
treeview.c cup.h file.h finance.h fixture.h free.h game.h league.h live_game.h maths.h misc.h player.h option.h support.h team.h transfer.h treeview.h treeview_cell.h user.h \
treeview_cell.c cup.h league.h misc.h option.h player.h team.h treeview.h treeview_cell.h user.h variables.h \
user.c fixture.h free.h game_gui.h live_game.h maths.h misc.h option.h player.h team.h transfer.h treeview.h user.h window.h \
window.c file.h finance.h free.h game_gui.h gui.h interface.h misc_interface.h misc2_interface.h option.h support.h user.h window.h \
window.c file.h finance.h free.h game_gui.h gui.h interface.h main.h misc_interface.h misc2_interface.h option.h support.h user.h window.h \
xml.c cup.h file.h free.h gui.h league.h misc.h support.h table.h transfer_struct.h user.h variables.h xml.h xml_loadsave_cup.h xml_loadsave_league.h xml_loadsave_teams.h xml_loadsave_fixtures.h xml_loadsave_table.h xml_loadsave_transfers.h xml_loadsave_users.h \
xml_loadsave_misc.c file.h misc.h variables.h xml.h xml_loadsave_misc.h xml_loadsave_cup.h xml_loadsave_league.h \
xml_loadsave_cup.c cup.h file.h misc.h team.h xml.h xml_loadsave_cup.h xml_loadsave_fixtures.h xml_loadsave_table.h xml_loadsave_teams.h \

View File

@ -58,7 +58,7 @@
enum ExitCodes
{
EXIT_OK = 0, /**< Normal exit. */
EXIT_DIR_OPEN_FAILED, /**< Exit when the $HOME/.bygfoot/definitions directory can't be opened. */
EXIT_NO_COUNTRY_FILES, /**< Exit when no country files have been found. */
EXIT_FILE_OPEN_FAILED, /** A file could not be opened. */
EXIT_PRINT_ERROR, /**< Exit when the print_error function is called on a set error.*/
EXIT_NO_LEAGUES, /**< The game must contain at least one league. */

View File

@ -130,6 +130,10 @@ callback_show_last_match(void)
window_create(WINDOW_LIVE);
current_user.live_game.fix =
&g_array_index(league_cup_get_fixtures(current_user.live_game.fix_clid),
Fixture, current_user.live_game.fix_idx);
treeview_show_game_stats(GTK_TREE_VIEW(lookup_widget(window.live, "treeview_stats")),
&current_user.live_game);
live_game_set_match(&current_user.live_game);
@ -138,6 +142,18 @@ callback_show_last_match(void)
game_gui_live_game_show_unit(&g_array_index(current_user.live_game.units, LiveGameUnit, i));
}
/** Show the last match stats of the current user. */
void
callback_show_last_match_stats(void)
{
current_user.live_game.fix =
&g_array_index(league_cup_get_fixtures(current_user.live_game.fix_clid),
Fixture, current_user.live_game.fix_idx);
treeview_show_game_stats(GTK_TREE_VIEW(lookup_widget(window.main, "treeview_right")),
&current_user.live_game);
}
/** Show some fixtures.
@param type An integer telling us which league/cup and which
week and round to show. */

View File

@ -39,4 +39,7 @@ callback_show_player_list(gint type);
void
callback_fire_player(gint idx);
void
callback_show_last_match_stats(void);
#endif

View File

@ -108,6 +108,7 @@ on_button_back_to_main_clicked (GtkButton *button,
gpointer user_data)
{
stat0 = STATUS_MAIN;
gtk_notebook_set_current_page(GTK_NOTEBOOK(lookup_widget(window.main, "notebook_player")), 0);
game_gui_show_main();
}
@ -119,6 +120,7 @@ on_button_transfers_clicked (GtkButton *button,
stat0 = STATUS_SHOW_TRANSFER_LIST;
game_gui_print_message(_("Left click to make an offer. Right click to remove offer."));
treeview_show_transfer_list(GTK_TREE_VIEW(lookup_widget(window.main, "treeview_right")));
gtk_notebook_set_current_page(GTK_NOTEBOOK(lookup_widget(window.main, "notebook_player")), 1);
}
@ -161,6 +163,12 @@ on_player_list1_button_press_event (GtkWidget *widget,
{
gint idx = -1;
if(event->button == 2)
{
on_menu_rearrange_team_activate(NULL, NULL);
return TRUE;
}
if(treeview_select_row(GTK_TREE_VIEW(widget), event))
idx = treeview_get_index(GTK_TREE_VIEW(widget), 0);
@ -187,6 +195,10 @@ on_button_browse_forward_clicked (GtkButton *button,
case STATUS_BROWSE_TEAMS:
callback_show_team(SHOW_NEXT);
break;
case STATUS_SHOW_PLAYER_INFO:
selected_row[0] = (selected_row[0] + 1) % current_user.tm->players->len;
on_menu_show_info_activate(NULL, NULL);
break;
}
}
@ -202,11 +214,14 @@ on_button_browse_back_clicked (GtkButton *button,
break;
case STATUS_BROWSE_TEAMS:
callback_show_team(SHOW_PREVIOUS);
break;
case STATUS_SHOW_PLAYER_INFO:
selected_row[0] = (selected_row[0] == 0) ? current_user.tm->players->len - 1 : selected_row[0] - 1;
on_menu_show_info_activate(NULL, NULL);
break;
}
}
void
on_button_cl_back_clicked (GtkButton *button,
gpointer user_data)
@ -398,6 +413,16 @@ on_treeview_right_button_press_event (GtkWidget *widget,
{
gint idx;
if(stat0 == STATUS_SHOW_FINANCES)
{
if(event->button == 1)
callback_get_loan();
else if(event->button == 3)
callback_pay_loan();
else if(event->button == 2)
on_menu_show_stadium_activate(NULL, NULL);
}
if(gtk_tree_selection_get_mode(
gtk_tree_view_get_selection(GTK_TREE_VIEW(widget))) ==
GTK_SELECTION_NONE)
@ -410,12 +435,6 @@ on_treeview_right_button_press_event (GtkWidget *widget,
switch(stat0)
{
case STATUS_SHOW_FINANCES:
if(event->button == 1)
callback_get_loan();
else if(event->button == 3)
callback_pay_loan();
break;
case STATUS_SHOW_TRANSFER_LIST:
if(event->button == 1 || trans(idx - 1).tm == current_user.tm)
callback_transfer_list_clicked(idx - 1);
@ -519,8 +538,7 @@ on_menu_user_show_last_stats_activate (GtkMenuItem *menuitem,
}
stat0 = STATUS_SHOW_LAST_MATCH_STATS;
treeview_show_game_stats(GTK_TREE_VIEW(lookup_widget(window.main, "treeview_right")),
&current_user.live_game);
callback_show_last_match_stats();
}
gboolean
@ -593,7 +611,7 @@ on_menu_show_finances_activate (GtkMenuItem *menuitem,
gpointer user_data)
{
stat0 = STATUS_SHOW_FINANCES;
game_gui_print_message("Left-click on the list to get a loan. Right-click to pay back.");
game_gui_print_message("Left-click: get loan; Right-click: pay back; Middle click: stadium window.");
treeview_show_finances(GTK_TREE_VIEW(lookup_widget(window.main, "treeview_right")),
&current_user);
}
@ -708,3 +726,19 @@ on_player_menu_show_info_activate (GtkMenuItem *menuitem,
on_menu_show_info_activate(NULL, NULL);
}
void
on_menu_rearrange_team_activate (GtkMenuItem *menuitem,
gpointer user_data)
{
team_rearrange(current_user.tm);
treeview_show_user_player_list();
}
void
on_menu_load_last_save_activate (GtkMenuItem *menuitem,
gpointer user_data)
{
load_save_load_game("last_save");
}

View File

@ -233,4 +233,11 @@ on_menu_browse_players_activate (GtkMenuItem *menuitem,
void
on_player_menu_show_info_activate (GtkMenuItem *menuitem,
gpointer user_data);
void
on_menu_rearrange_team_activate (GtkMenuItem *menuitem,
gpointer user_data);
#endif
void
on_menu_load_last_save_activate (GtkMenuItem *menuitem,
gpointer user_data);

View File

@ -53,13 +53,14 @@ file_add_support_directory_recursive (const gchar *directo
the full path name.
The return value must be freed.
@param filename The name of the file we look for (without path).
@param warning Whether to show a warning if we don't find the file.
@return A pointer to the full path string of the file or NULL if
we didn't find the file. The gchar* must be freed.
@see #support_directories
@see file_add_support_directory_recursive()
*/
gchar*
file_find_support_file (const gchar *filename)
file_find_support_file (const gchar *filename, gboolean warning)
{
GList *elem = support_directories;
@ -74,8 +75,8 @@ file_find_support_file (const gchar *filename)
elem = elem->next;
}
/* if(opt_int("int_opt_debug")) */
/* g_warning("file_find_support_file: file '%s' not found.", filename); */
if(warning)
g_warning("file_find_support_file: file '%s' not found.", filename);
return NULL;
}
@ -104,7 +105,7 @@ gboolean
file_my_fopen(const gchar *filename, gchar *bits, FILE **fil, gboolean abort_program)
{
gchar buf[SMALL];
gchar *support_file = file_find_support_file(filename);
gchar *support_file = file_find_support_file(filename, FALSE);
*fil = fopen(filename, bits);
if(*fil != NULL)
@ -171,7 +172,7 @@ file_check_home_dir_copy_conf_files(void)
sprintf(buf, "%s/%s/%s", home, HOMEDIRNAME, conf_files[i]);
if(!g_file_test(buf, G_FILE_TEST_EXISTS))
{
conf_file = file_find_support_file(conf_files[i]);
conf_file = file_find_support_file(conf_files[i], TRUE);
sprintf(buf, "cp -v %s %s/%s/%s", conf_file, home, HOMEDIRNAME, conf_files[i]);
file_my_system(buf);
}
@ -239,19 +240,19 @@ file_dir_get_contents(const gchar *dir_name, const gchar *prefix, const gchar *s
{
GError *error = NULL;
GDir *dir = g_dir_open(dir_name, 0, &error);
GPtrArray *contents = NULL;
GPtrArray *contents = g_ptr_array_new();
GString *new = NULL;
const gchar *file = NULL;
misc_print_error(&error, FALSE);
if(dir == NULL)
return NULL;
return contents;
file = g_dir_read_name(dir);
if(file != NULL)
contents = g_ptr_array_new();
if(file == NULL)
return contents;
while(file != NULL)
{
@ -269,26 +270,34 @@ file_dir_get_contents(const gchar *dir_name, const gchar *prefix, const gchar *s
return contents;
}
/** Return the first directory called 'definitions' from the support
directories array. */
const gchar*
file_get_definitions_dir(void)
/** Return the country definition files found in the support dirs. */
GPtrArray*
file_get_country_files(void)
{
gint i;
GList *elem = support_directories;
GPtrArray *country_files = g_ptr_array_new();
GPtrArray *dir_contents = NULL;
GString *new_string = NULL;
while(elem != NULL)
{
if(g_str_has_suffix((gchar*)elem->data, "definitions") ||
g_str_has_suffix((gchar*)elem->data, "definitions/"))
return (gchar*)elem->data;
dir_contents = file_dir_get_contents((gchar*)elem->data, "country_", ".xml");
for(i=0;i<dir_contents->len;i++)
if(!query_misc_string_in_array(((GString*)g_ptr_array_index(dir_contents, i))->str,
country_files))
{
new_string = g_string_new(((GString*)g_ptr_array_index(dir_contents, i))->str);
g_ptr_array_add(country_files, new_string);
}
free_g_string_array(&dir_contents);
elem = elem->next;
}
main_exit_program(EXIT_DIR_OPEN_FAILED,
"Didn't find definitions directory.\n");
return NULL;
return country_files;
}
/** Read the file until the next line that's not a comment or
@ -404,7 +413,7 @@ file_load_opt_file(const gchar *filename, OptionList *optionlist)
void
file_load_conf_files(void)
{
gchar *conf_file = file_find_support_file("bygfoot.conf");
gchar *conf_file = file_find_support_file("bygfoot.conf", TRUE);
file_load_opt_file(conf_file, &options);
g_free(conf_file);
@ -421,13 +430,13 @@ file_load_user_conf_file(User *user)
gchar *conf_file = NULL, buf[SMALL];
sprintf(buf, "bygfoot_%s.conf", user->name->str);
conf_file = file_find_support_file(buf);
conf_file = file_find_support_file(buf, FALSE);
if(conf_file == NULL ||
!file_my_fopen(conf_file, "r", &fil, FALSE))
{
g_free(conf_file);
conf_file = file_find_support_file(opt_str("string_opt_default_user_conf_file"));
conf_file = file_find_support_file(opt_str("string_opt_default_user_conf_file"), TRUE);
}
file_load_opt_file(conf_file, &user->options);

View File

@ -9,7 +9,7 @@ void
file_add_support_directory_recursive (const gchar *directory);
gchar*
file_find_support_file (const gchar *filename);
file_find_support_file (const gchar *filename, gboolean warning);
gboolean
file_get_next_opt_line(FILE *fil, gchar *opt_name, gchar *opt_value);
@ -29,8 +29,8 @@ file_get_player_names(gint number_of_names);
gboolean
file_my_fopen(const gchar *filename, gchar *bits, FILE **fil, gboolean abort_program);
const gchar*
file_get_definitions_dir(void);
GPtrArray*
file_get_country_files(void);
void
file_load_conf_files(void);

View File

@ -144,9 +144,9 @@ finance_get_loan(gint value)
sprintf(buf, _("You have %d weeks to pay back your loan."),
current_user.counters[COUNT_USER_LOAN]);
game_gui_print_message(buf);
on_menu_show_finances_activate(NULL, NULL);
game_gui_print_message(buf);
}
@ -176,8 +176,8 @@ finance_pay_loan(gint value)
current_user.counters[COUNT_USER_LOAN]);
}
game_gui_print_message(buf);
on_menu_show_finances_activate(NULL, NULL);
game_gui_print_message(buf);
}
/** Return the cost of a stadium improvement.

View File

@ -216,7 +216,6 @@ fixture_get_round_robin_advance(const Cup *cup, gint round)
Team*
fixture_winner_of(const Fixture *fix)
{
gint i;
const Fixture *first_leg;
const CupRound *cupround =
&g_array_index(cup_from_clid(fix->clid)->rounds, CupRound, fix->round);

View File

@ -274,10 +274,9 @@ game_initialize(Fixture *fix)
if(g_array_index(fix->teams[i]->players, Player, j).cskill > 0)
player_games_goals_set(&g_array_index(fix->teams[i]->players, Player, j), fix->clid,
PLAYER_VALUE_GAMES, 1, TRUE);
}
g_array_index(fix->teams[i]->players, Player, j).participation =
(j < 11 && g_array_index(fix->teams[i]->players, Player, j).cskill > 0);
g_array_index(fix->teams[i]->players, Player, j).participation = TRUE;
}
}
if(user_idx[i] != -1)
@ -875,8 +874,7 @@ game_post_match(Fixture *fix)
for(i=0;i<2;i++)
{
if(team_is_user(fix->teams[i]) == -1 &&
fix->teams[i]->clid == fix->clid)
if(team_is_user(fix->teams[i]) == -1)
team_update_cpu_team(fix->teams[i],
(fixture_user_team_involved(fix) != -1));
else

View File

@ -246,15 +246,15 @@ game_gui_write_meters(void)
GtkImage *image_style = GTK_IMAGE(lookup_widget(window.main, "image_style")),
*image_boost = GTK_IMAGE(lookup_widget(window.main, "image_boost"));
gchar *image_style_files[5] =
{file_find_support_file(const_str("string_game_gui_style_all_out_defend_icon")),
file_find_support_file(const_str("string_game_gui_style_defend_icon")),
file_find_support_file(const_str("string_game_gui_style_balanced_icon")),
file_find_support_file(const_str("string_game_gui_style_attack_icon")),
file_find_support_file(const_str("string_game_gui_style_all_out_attack_icon"))};
{file_find_support_file(const_str("string_game_gui_style_all_out_defend_icon"), TRUE),
file_find_support_file(const_str("string_game_gui_style_defend_icon"), TRUE),
file_find_support_file(const_str("string_game_gui_style_balanced_icon"), TRUE),
file_find_support_file(const_str("string_game_gui_style_attack_icon"), TRUE),
file_find_support_file(const_str("string_game_gui_style_all_out_attack_icon"), TRUE)};
gchar *image_boost_files[3] =
{file_find_support_file(const_str("string_game_gui_boost_anti_icon")),
file_find_support_file(const_str("string_game_gui_boost_off_icon")),
file_find_support_file(const_str("string_game_gui_boost_on_icon"))};
{file_find_support_file(const_str("string_game_gui_boost_anti_icon"), TRUE),
file_find_support_file(const_str("string_game_gui_boost_off_icon"), TRUE),
file_find_support_file(const_str("string_game_gui_boost_on_icon"), TRUE)};
gtk_image_set_from_file(image_style, image_style_files[current_user.tm->style + 2]);
gtk_image_set_from_file(image_boost, image_boost_files[current_user.tm->boost + 1]);

View File

@ -37,6 +37,8 @@ create_main_window (void)
GtkWidget *menu_file_menu;
GtkWidget *menu_new;
GtkWidget *menu_open;
GtkWidget *menu_load_last_save;
GtkWidget *image277;
GtkWidget *menu_save;
GtkWidget *menu_save_as;
GtkWidget *trennlinie1;
@ -44,7 +46,7 @@ create_main_window (void)
GtkWidget *menu_options;
GtkWidget *menu_options_menu;
GtkWidget *menu_preferences;
GtkWidget *image264;
GtkWidget *image278;
GtkWidget *trennlinie7;
GtkWidget *menu_job_offers;
GtkWidget *menu_live_game;
@ -86,7 +88,9 @@ create_main_window (void)
GtkWidget *menu_boost_on;
GtkWidget *menu_boost_off;
GtkWidget *menu_boost_anti;
GtkWidget *trennlinie11;
GtkWidget *menu_custom_structure;
GtkWidget *menu_rearrange_team;
GtkWidget *trennlinie8;
GtkWidget *menu_browse_teams;
GtkWidget *menu_player;
@ -105,11 +109,11 @@ create_main_window (void)
GtkWidget *menu_user_show_last_stats;
GtkWidget *trennlinie9;
GtkWidget *menu_next_user;
GtkWidget *image265;
GtkWidget *image279;
GtkWidget *menu_previous_user;
GtkWidget *image266;
GtkWidget *image280;
GtkWidget *menu_manage_users;
GtkWidget *image267;
GtkWidget *image281;
GtkWidget *menu_finances_stadium;
GtkWidget *menu_finances_stadium_menu;
GtkWidget *menu_show_finances;
@ -232,6 +236,14 @@ create_main_window (void)
gtk_widget_show (menu_open);
gtk_container_add (GTK_CONTAINER (menu_file_menu), menu_open);
menu_load_last_save = gtk_image_menu_item_new_with_mnemonic (_("Load last save"));
gtk_widget_show (menu_load_last_save);
gtk_container_add (GTK_CONTAINER (menu_file_menu), menu_load_last_save);
image277 = gtk_image_new_from_stock ("gtk-open", GTK_ICON_SIZE_MENU);
gtk_widget_show (image277);
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_load_last_save), image277);
menu_save = gtk_image_menu_item_new_from_stock ("gtk-save", accel_group);
gtk_widget_show (menu_save);
gtk_container_add (GTK_CONTAINER (menu_file_menu), menu_save);
@ -263,9 +275,9 @@ create_main_window (void)
GDK_p, GDK_CONTROL_MASK,
GTK_ACCEL_VISIBLE);
image264 = gtk_image_new_from_stock ("gtk-preferences", GTK_ICON_SIZE_MENU);
gtk_widget_show (image264);
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_preferences), image264);
image278 = gtk_image_new_from_stock ("gtk-preferences", GTK_ICON_SIZE_MENU);
gtk_widget_show (image278);
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_preferences), image278);
trennlinie7 = gtk_menu_item_new ();
gtk_widget_show (trennlinie7);
@ -337,25 +349,21 @@ create_main_window (void)
menu_all_out_defend_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_all_out_defend));
gtk_widget_show (menu_all_out_defend);
gtk_container_add (GTK_CONTAINER (menu_playing_style_menu), menu_all_out_defend);
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_all_out_defend), TRUE);
menu_defend = gtk_radio_menu_item_new_with_mnemonic (menu_all_out_defend_group, _("Defend"));
menu_all_out_defend_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_defend));
gtk_widget_show (menu_defend);
gtk_container_add (GTK_CONTAINER (menu_playing_style_menu), menu_defend);
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_defend), TRUE);
menu_balanced = gtk_radio_menu_item_new_with_mnemonic (menu_all_out_defend_group, _("Balanced"));
menu_all_out_defend_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_balanced));
gtk_widget_show (menu_balanced);
gtk_container_add (GTK_CONTAINER (menu_playing_style_menu), menu_balanced);
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_balanced), TRUE);
menu_attack = gtk_radio_menu_item_new_with_mnemonic (menu_all_out_defend_group, _("Attack"));
menu_all_out_defend_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_attack));
gtk_widget_show (menu_attack);
gtk_container_add (GTK_CONTAINER (menu_playing_style_menu), menu_attack);
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_attack), TRUE);
menu_all_out_attack = gtk_radio_menu_item_new_with_mnemonic (menu_all_out_defend_group, _("All Out Attack"));
menu_all_out_defend_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_all_out_attack));
@ -374,19 +382,16 @@ create_main_window (void)
menu_scout_best_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_scout_best));
gtk_widget_show (menu_scout_best);
gtk_container_add (GTK_CONTAINER (menu_scout_menu), menu_scout_best);
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_scout_best), TRUE);
menu_scout_good = gtk_radio_menu_item_new_with_mnemonic (menu_scout_best_group, _("Good"));
menu_scout_best_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_scout_good));
gtk_widget_show (menu_scout_good);
gtk_container_add (GTK_CONTAINER (menu_scout_menu), menu_scout_good);
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_scout_good), TRUE);
menu_scout_average = gtk_radio_menu_item_new_with_mnemonic (menu_scout_best_group, _("Average"));
menu_scout_best_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_scout_average));
gtk_widget_show (menu_scout_average);
gtk_container_add (GTK_CONTAINER (menu_scout_menu), menu_scout_average);
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_scout_average), TRUE);
menu_scout_bad = gtk_radio_menu_item_new_with_mnemonic (menu_scout_best_group, _("Bad"));
menu_scout_best_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_scout_bad));
@ -405,19 +410,16 @@ create_main_window (void)
menu_physio_best_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_physio_best));
gtk_widget_show (menu_physio_best);
gtk_container_add (GTK_CONTAINER (menu_physio_menu), menu_physio_best);
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_physio_best), TRUE);
menu_physio_good = gtk_radio_menu_item_new_with_mnemonic (menu_physio_best_group, _("Good"));
menu_physio_best_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_physio_good));
gtk_widget_show (menu_physio_good);
gtk_container_add (GTK_CONTAINER (menu_physio_menu), menu_physio_good);
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_physio_good), TRUE);
menu_physio_average = gtk_radio_menu_item_new_with_mnemonic (menu_physio_best_group, _("Average"));
menu_physio_best_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_physio_average));
gtk_widget_show (menu_physio_average);
gtk_container_add (GTK_CONTAINER (menu_physio_menu), menu_physio_average);
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_physio_average), TRUE);
menu_physio_bad = gtk_radio_menu_item_new_with_mnemonic (menu_physio_best_group, _("Bad"));
menu_physio_best_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_physio_bad));
@ -436,13 +438,11 @@ create_main_window (void)
menu_boost_on_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_boost_on));
gtk_widget_show (menu_boost_on);
gtk_container_add (GTK_CONTAINER (menu_boost_menu), menu_boost_on);
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_boost_on), TRUE);
menu_boost_off = gtk_radio_menu_item_new_with_mnemonic (menu_boost_on_group, _("Off"));
menu_boost_on_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_boost_off));
gtk_widget_show (menu_boost_off);
gtk_container_add (GTK_CONTAINER (menu_boost_menu), menu_boost_off);
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_boost_off), TRUE);
menu_boost_anti = gtk_radio_menu_item_new_with_mnemonic (menu_boost_on_group, _("Anti"));
menu_boost_on_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_boost_anti));
@ -450,10 +450,23 @@ create_main_window (void)
gtk_container_add (GTK_CONTAINER (menu_boost_menu), menu_boost_anti);
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_boost_anti), TRUE);
trennlinie11 = gtk_menu_item_new ();
gtk_widget_show (trennlinie11);
gtk_container_add (GTK_CONTAINER (menu_team_menu), trennlinie11);
gtk_widget_set_sensitive (trennlinie11, FALSE);
menu_custom_structure = gtk_menu_item_new_with_mnemonic (_("Enter custom structure"));
gtk_widget_show (menu_custom_structure);
gtk_container_add (GTK_CONTAINER (menu_team_menu), menu_custom_structure);
menu_rearrange_team = gtk_menu_item_new_with_mnemonic (_("Rearrange team"));
gtk_widget_show (menu_rearrange_team);
gtk_container_add (GTK_CONTAINER (menu_team_menu), menu_rearrange_team);
gtk_tooltips_set_tip (tooltips, menu_rearrange_team, _("Try to put the startup players onto their favoured positions and sort the substitutes (Ctrl-R or middle click)"), NULL);
gtk_widget_add_accelerator (menu_rearrange_team, "activate", accel_group,
GDK_r, GDK_CONTROL_MASK,
GTK_ACCEL_VISIBLE);
trennlinie8 = gtk_menu_item_new ();
gtk_widget_show (trennlinie8);
gtk_container_add (GTK_CONTAINER (menu_team_menu), trennlinie8);
@ -533,9 +546,9 @@ create_main_window (void)
GDK_F9, 0,
GTK_ACCEL_VISIBLE);
image265 = gtk_image_new_from_stock ("gtk-go-forward", GTK_ICON_SIZE_MENU);
gtk_widget_show (image265);
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_next_user), image265);
image279 = gtk_image_new_from_stock ("gtk-go-forward", GTK_ICON_SIZE_MENU);
gtk_widget_show (image279);
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_next_user), image279);
menu_previous_user = gtk_image_menu_item_new_with_mnemonic (_("Previous user"));
gtk_widget_show (menu_previous_user);
@ -544,9 +557,9 @@ create_main_window (void)
GDK_F8, 0,
GTK_ACCEL_VISIBLE);
image266 = gtk_image_new_from_stock ("gtk-go-back", GTK_ICON_SIZE_MENU);
gtk_widget_show (image266);
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_previous_user), image266);
image280 = gtk_image_new_from_stock ("gtk-go-back", GTK_ICON_SIZE_MENU);
gtk_widget_show (image280);
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_previous_user), image280);
menu_manage_users = gtk_image_menu_item_new_with_mnemonic (_("Manage users"));
gtk_widget_show (menu_manage_users);
@ -555,9 +568,9 @@ create_main_window (void)
GDK_F12, 0,
GTK_ACCEL_VISIBLE);
image267 = gtk_image_new_from_stock ("gtk-justify-fill", GTK_ICON_SIZE_MENU);
gtk_widget_show (image267);
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_manage_users), image267);
image281 = gtk_image_new_from_stock ("gtk-justify-fill", GTK_ICON_SIZE_MENU);
gtk_widget_show (image281);
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_manage_users), image281);
menu_finances_stadium = gtk_menu_item_new_with_mnemonic (_("FinStad"));
gtk_widget_show (menu_finances_stadium);
@ -599,10 +612,7 @@ create_main_window (void)
gtk_widget_show (button_load);
gtk_box_pack_start (GTK_BOX (hbox1), button_load, FALSE, FALSE, 2);
gtk_container_set_border_width (GTK_CONTAINER (button_load), 2);
gtk_tooltips_set_tip (tooltips, button_load, _("Load game (L or Ctrl - O)"), NULL);
gtk_widget_add_accelerator (button_load, "clicked", accel_group,
GDK_l, 0,
GTK_ACCEL_VISIBLE);
gtk_tooltips_set_tip (tooltips, button_load, _("Load game (Ctrl - O)"), NULL);
image11 = gtk_image_new_from_stock ("gtk-open", GTK_ICON_SIZE_BUTTON);
gtk_widget_show (image11);
@ -613,9 +623,6 @@ create_main_window (void)
gtk_box_pack_start (GTK_BOX (hbox1), button_save, FALSE, FALSE, 0);
gtk_container_set_border_width (GTK_CONTAINER (button_save), 2);
gtk_tooltips_set_tip (tooltips, button_save, _("Save game (Ctrl - S)"), NULL);
gtk_widget_add_accelerator (button_save, "clicked", accel_group,
GDK_s, 0,
GTK_ACCEL_VISIBLE);
image12 = gtk_image_new_from_stock ("gtk-save", GTK_ICON_SIZE_BUTTON);
gtk_widget_show (image12);
@ -996,6 +1003,9 @@ create_main_window (void)
g_signal_connect ((gpointer) menu_open, "activate",
G_CALLBACK (on_menu_open_activate),
NULL);
g_signal_connect ((gpointer) menu_load_last_save, "activate",
G_CALLBACK (on_menu_load_last_save_activate),
NULL);
g_signal_connect ((gpointer) menu_save, "activate",
G_CALLBACK (on_menu_save_activate),
NULL);
@ -1083,6 +1093,9 @@ create_main_window (void)
g_signal_connect ((gpointer) menu_custom_structure, "activate",
G_CALLBACK (on_menu_custom_structure_activate),
NULL);
g_signal_connect ((gpointer) menu_rearrange_team, "activate",
G_CALLBACK (on_menu_rearrange_team_activate),
NULL);
g_signal_connect ((gpointer) menu_browse_teams, "activate",
G_CALLBACK (on_menu_browse_teams_activate),
NULL);
@ -1191,6 +1204,8 @@ create_main_window (void)
GLADE_HOOKUP_OBJECT (main_window, menu_file_menu, "menu_file_menu");
GLADE_HOOKUP_OBJECT (main_window, menu_new, "menu_new");
GLADE_HOOKUP_OBJECT (main_window, menu_open, "menu_open");
GLADE_HOOKUP_OBJECT (main_window, menu_load_last_save, "menu_load_last_save");
GLADE_HOOKUP_OBJECT (main_window, image277, "image277");
GLADE_HOOKUP_OBJECT (main_window, menu_save, "menu_save");
GLADE_HOOKUP_OBJECT (main_window, menu_save_as, "menu_save_as");
GLADE_HOOKUP_OBJECT (main_window, trennlinie1, "trennlinie1");
@ -1198,7 +1213,7 @@ create_main_window (void)
GLADE_HOOKUP_OBJECT (main_window, menu_options, "menu_options");
GLADE_HOOKUP_OBJECT (main_window, menu_options_menu, "menu_options_menu");
GLADE_HOOKUP_OBJECT (main_window, menu_preferences, "menu_preferences");
GLADE_HOOKUP_OBJECT (main_window, image264, "image264");
GLADE_HOOKUP_OBJECT (main_window, image278, "image278");
GLADE_HOOKUP_OBJECT (main_window, trennlinie7, "trennlinie7");
GLADE_HOOKUP_OBJECT (main_window, menu_job_offers, "menu_job_offers");
GLADE_HOOKUP_OBJECT (main_window, menu_live_game, "menu_live_game");
@ -1236,7 +1251,9 @@ create_main_window (void)
GLADE_HOOKUP_OBJECT (main_window, menu_boost_on, "menu_boost_on");
GLADE_HOOKUP_OBJECT (main_window, menu_boost_off, "menu_boost_off");
GLADE_HOOKUP_OBJECT (main_window, menu_boost_anti, "menu_boost_anti");
GLADE_HOOKUP_OBJECT (main_window, trennlinie11, "trennlinie11");
GLADE_HOOKUP_OBJECT (main_window, menu_custom_structure, "menu_custom_structure");
GLADE_HOOKUP_OBJECT (main_window, menu_rearrange_team, "menu_rearrange_team");
GLADE_HOOKUP_OBJECT (main_window, trennlinie8, "trennlinie8");
GLADE_HOOKUP_OBJECT (main_window, menu_browse_teams, "menu_browse_teams");
GLADE_HOOKUP_OBJECT (main_window, menu_player, "menu_player");
@ -1255,11 +1272,11 @@ create_main_window (void)
GLADE_HOOKUP_OBJECT (main_window, menu_user_show_last_stats, "menu_user_show_last_stats");
GLADE_HOOKUP_OBJECT (main_window, trennlinie9, "trennlinie9");
GLADE_HOOKUP_OBJECT (main_window, menu_next_user, "menu_next_user");
GLADE_HOOKUP_OBJECT (main_window, image265, "image265");
GLADE_HOOKUP_OBJECT (main_window, image279, "image279");
GLADE_HOOKUP_OBJECT (main_window, menu_previous_user, "menu_previous_user");
GLADE_HOOKUP_OBJECT (main_window, image266, "image266");
GLADE_HOOKUP_OBJECT (main_window, image280, "image280");
GLADE_HOOKUP_OBJECT (main_window, menu_manage_users, "menu_manage_users");
GLADE_HOOKUP_OBJECT (main_window, image267, "image267");
GLADE_HOOKUP_OBJECT (main_window, image281, "image281");
GLADE_HOOKUP_OBJECT (main_window, menu_finances_stadium, "menu_finances_stadium");
GLADE_HOOKUP_OBJECT (main_window, menu_finances_stadium_menu, "menu_finances_stadium_menu");
GLADE_HOOKUP_OBJECT (main_window, menu_show_finances, "menu_show_finances");

View File

@ -1555,6 +1555,9 @@ live_game_reset(LiveGame *live_game, Fixture *fix, gboolean free_variable)
live_game->stats.values[1][i] = 0;
live_game->fix = fix;
live_game->fix_clid = (fix != NULL) ? fix->clid : -1;
live_game->fix_idx = (fix != NULL) ? fixture_get_index(fix) : -1;
live_game->subs_left[0] = live_game->subs_left[1] = 3;
live_game->stadium_event = -1;

View File

@ -190,6 +190,9 @@ typedef struct
{
/** The fixture that belongs to the game. */
Fixture *fix;
/** Integers determining the fixture (needed because fixture pointers
can change when new fixtures are added to the fixtures array). */
gint fix_clid, fix_idx;
/** Substitutions left for the teams. */
gint subs_left[2];
/** The team that started the game, 0 or 1. */

View File

@ -1,3 +1,4 @@
#include "callbacks.h"
#include "file.h"
#include "gui.h"
#include "game_gui.h"
@ -12,7 +13,7 @@
#include "xml_loadsave_transfers.h"
#include "xml.h"
#define PROGRESS_MAX 6
#define PROGRESS_MAX 7
/** Save the game to the specified file. */
void
@ -40,6 +41,16 @@ load_save_save_game(const gchar *filename)
xml_loadsave_misc_write(prefix);
gui_show_progress(
((PROGRESS_MAX * gtk_progress_bar_get_fraction(
GTK_PROGRESS_BAR(lookup_widget(window.progress, "progressbar")))) + 1) / PROGRESS_MAX,
"Saving options/constants...");
sprintf(buf, "%s___options", prefix);
file_save_opt_file(buf, &options);
sprintf(buf, "%s___constants", prefix);
file_save_opt_file(buf, &constants);
gui_show_progress(
((PROGRESS_MAX * gtk_progress_bar_get_fraction(
GTK_PROGRESS_BAR(lookup_widget(window.progress, "progressbar")))) + 1) / PROGRESS_MAX,
@ -98,6 +109,25 @@ load_save_load_game(const gchar* filename)
*dirname = g_path_get_dirname(filename);
gchar *prefix = g_strndup(basename, strlen(basename) - strlen(const_str("string_save_suffix")));
if(strcmp(basename, "last_save") == 0)
{
g_free(basename);
g_free(dirname);
g_free(prefix);
basename = load_save_last_save_get();
if(basename != NULL)
{
load_save_load_game(basename);
g_free(basename);
}
else
g_warning("load_save_load_game: last save file not found.\n");
return;
}
gui_show_progress(0, "Uncompressing savegame...");
file_decompress(filename);
@ -109,6 +139,16 @@ load_save_load_game(const gchar* filename)
xml_loadsave_misc_read(dirname, prefix);
gui_show_progress(
((PROGRESS_MAX * gtk_progress_bar_get_fraction(
GTK_PROGRESS_BAR(lookup_widget(window.progress, "progressbar")))) + 1) / PROGRESS_MAX,
"Loading options/constants...");
sprintf(buf, "%s___options", prefix);
file_load_opt_file(buf, &options);
sprintf(buf, "%s___constants", prefix);
file_load_opt_file(buf, &constants);
gui_show_progress(
((PROGRESS_MAX * gtk_progress_bar_get_fraction(
GTK_PROGRESS_BAR(lookup_widget(window.progress, "progressbar")))) + 1) / PROGRESS_MAX,
@ -150,6 +190,9 @@ load_save_load_game(const gchar* filename)
gui_show_progress(-1, "");
setsav1;
cur_user = 0;
on_button_back_to_main_clicked(NULL, NULL);
}
/** Store the name of the last savegame in the users home dir. */

View File

@ -230,7 +230,7 @@ misc_truncate_string(const gchar *src, gchar *dest, gint number_of_chars)
/** Find out whether the first string contains the second string. */
gboolean
misc_string_contains(const gchar *string, const gchar *text)
query_misc_string_contains(const gchar *string, const gchar *text)
{
gint i, j;
gint lens = strlen(string),
@ -254,3 +254,16 @@ misc_string_contains(const gchar *string, const gchar *text)
return FALSE;
}
/** Check whether the string is in the GString array. */
gboolean
query_misc_string_in_array(const gchar *string, GPtrArray *array)
{
gint i;
for(i=0;i<array->len;i++)
if(strcmp(string, ((GString*)g_ptr_array_index(array, i))->str) == 0)
return TRUE;
return FALSE;
}

View File

@ -34,6 +34,9 @@ void
misc_truncate_string(const gchar *src, gchar *dest, gint number_of_chars);
gboolean
misc_string_contains(const gchar *string, const gchar *text);
query_misc_string_contains(const gchar *string, const gchar *text);
gboolean
query_misc_string_in_array(const gchar *string, GPtrArray *array);
#endif

View File

@ -113,7 +113,7 @@ misc2_callback_contract_offer(void)
pl->contract += (i + 1);
pl->wage = value;
sprintf(buf, _("%s accepts your offer."), pl->name->str);
game_gui_print_message(buf);
game_gui_show_warning(buf);
window_destroy(&window.contract, FALSE);
}
else

View File

@ -221,6 +221,4 @@ misc_callback_startup_load(const gchar *filename)
window_create(WINDOW_MAIN);
xml_name_read(opt_str("string_opt_player_names_file"), 1000);
load_save_load_game(filename);
cur_user = 0;
on_button_back_to_main_clicked(NULL, NULL);
}

View File

@ -84,11 +84,7 @@ on_button_fsel_ok_clicked (GtkButton *button,
if(stat1 == STATUS_SAVE_GAME)
load_save_save_game(filename);
else if(stat1 == STATUS_LOAD_GAME)
{
load_save_load_game(filename);
cur_user = 0;
on_button_back_to_main_clicked(NULL, NULL);
}
else if(stat1 == STATUS_LOAD_GAME_TEAM_SELECTION)
misc_callback_startup_load(filename);
@ -269,6 +265,9 @@ on_button_stadium_ok_clicked (GtkButton *button,
gpointer user_data)
{
misc_callback_improve_stadium();
if(stat0 == STATUS_SHOW_FINANCES)
on_menu_show_finances_activate(NULL, NULL);
}
@ -298,12 +297,15 @@ void
on_button_startup_resume_clicked (GtkButton *button,
gpointer user_data)
{
gchar *last_save = load_save_last_save_get();
if(last_save == NULL)
return;
misc_callback_startup_load(last_save);
g_free(last_save);
misc_callback_startup_load("last_save");
}
gboolean
on_window_stadium_delete_event (GtkWidget *widget,
GdkEvent *event,
gpointer user_data)
{
return TRUE;
}

View File

@ -118,3 +118,8 @@ void
on_button_startup_resume_clicked (GtkButton *button,
gpointer user_data);
#endif
gboolean
on_window_stadium_delete_event (GtkWidget *widget,
GdkEvent *event,
gpointer user_data);

View File

@ -336,7 +336,7 @@ create_window_startup (void)
gtk_widget_show (image61);
gtk_box_pack_start (GTK_BOX (hbox68), image61, FALSE, FALSE, 0);
label108 = gtk_label_new_with_mnemonic (_("Resume last game"));
label108 = gtk_label_new_with_mnemonic (_("_Resume last game"));
gtk_widget_show (label108);
gtk_box_pack_start (GTK_BOX (hbox68), label108, FALSE, FALSE, 0);
gtk_label_set_justify (GTK_LABEL (label108), GTK_JUSTIFY_LEFT);
@ -1175,6 +1175,9 @@ create_window_stadium (void)
GDK_Escape, 0,
GTK_ACCEL_VISIBLE);
g_signal_connect ((gpointer) window_stadium, "delete_event",
G_CALLBACK (on_window_stadium_delete_event),
NULL);
g_signal_connect ((gpointer) spinbutton_capacity, "value_changed",
G_CALLBACK (on_spinbutton_capacity_value_changed),
NULL);

View File

@ -1,3 +1,4 @@
#include "callbacks.h"
#include "file.h"
#include "option.h"
#include "option_gui.h"
@ -387,10 +388,13 @@ option_gui_write_options(void)
for(i=0;i<ENTRY_OPT_END;i++)
{
if(i == ENTRY_OPT_CONSTANTS &&
strcmp(gtk_entry_get_text(entry_widgets[i]), opt_str("string_opt_constants_file" )) != 0)
file_load_opt_file(gtk_entry_get_text(entry_widgets[i]), &constants);
g_string_printf(entry_options[i], "%s", gtk_entry_get_text(entry_widgets[i]));
if(i == ENTRY_OPT_CONSTANTS &&
strcmp(gtk_entry_get_text(entry_widgets[i]), opt_str("string_opt_constants_file")) != 0)
file_load_opt_file(gtk_entry_get_text(entry_widgets[i]), &constants);
else if(i == ENTRY_OPT_FONT_NAME &&
strcmp(gtk_entry_get_text(entry_widgets[i]), opt_str("string_opt_font_name")) != 0)
on_button_back_to_main_clicked(NULL, NULL);
}
}

View File

@ -668,7 +668,10 @@ player_update_fitness(Player *pl)
gfloat increase = -1;
if(pl->participation)
{
pl->participation = FALSE;
return;
}
for(i=0;i<7;i++)
if(diff > age_limits[i])
@ -946,6 +949,7 @@ player_update_weekly(Team *tm, gint idx)
pl->age += 0.0192;
pl->contract -= 0.0192;
/*todo: warning*/
if(pl->contract <= 0)
player_remove_contract(tm, idx);
@ -981,9 +985,6 @@ player_remove_from_team(Team *tm, gint idx)
void
player_update_post_match(Player *pl, gint clid)
{
if(pl->health == 0)
player_update_fitness(pl);
if(player_card_get(pl, clid, PLAYER_VALUE_CARD_RED) > 0)
player_card_set(pl, clid, PLAYER_VALUE_CARD_RED, -1, TRUE);
}
@ -1018,8 +1019,11 @@ player_update_week_roundly(Team *tm, gint idx)
{
Player *pl = player_of(tm, idx);
if(pl->health == 0)
player_update_fitness(pl);
pl->cskill = (pl->health > 0 || player_is_banned(pl) > 0) ?
0 : player_get_cskill(pl, pl->cpos);
0 : player_get_cskill(pl, pl->cpos);
}
/** Return injury descriptions. */

View File

@ -162,7 +162,7 @@ end_week_round_results(void)
gchar buf[SMALL], buf2[SMALL];
gfloat num_matches =
(gfloat)fixture_get_number_of_matches(week, week_round);
if(week_round == 1)
{
for(i=0;i<ligs->len;i++)
@ -172,6 +172,7 @@ end_week_round_results(void)
g_array_index(lig(i).fixtures, Fixture, j).attendance == -1)
{
live_game_calculate_fixture(&g_array_index(lig(i).fixtures, Fixture, j));
done++;
fixture_result_to_buf(&g_array_index(lig(i).fixtures, Fixture, j), buf);
sprintf(buf2, "%s %s %s",
@ -190,6 +191,7 @@ end_week_round_results(void)
g_array_index(cp(i).fixtures, Fixture, j).attendance == -1)
{
live_game_calculate_fixture(&g_array_index(cp(i).fixtures, Fixture, j));
done++;
fixture_result_to_buf(&g_array_index(cp(i).fixtures, Fixture, j), buf);
sprintf(buf2, "%s %s %s",

View File

@ -664,10 +664,17 @@ team_update_cpu_corrections(Team *tm, gboolean reset_fitness)
for(i=0;i<tm->players->len;i++)
{
pl = player_of(tm, i);
for(j=0;j<pl->cards->len;j++)
g_array_index(pl->cards, PlayerCard, j).red = 0;
if(pl->cskill == 0)
{
pl->health = pl->recovery = 0;
pl->cskill = player_get_cskill(pl, pl->cpos);
pl->fitness = math_rnd(const_float("float_player_fitness_lower"),
const_float("float_player_fitness_upper"));
}
if(pl->pos != pl->cpos)
@ -676,18 +683,16 @@ team_update_cpu_corrections(Team *tm, gboolean reset_fitness)
pl->cskill = player_get_cskill(pl, pl->cpos);
}
for(j=0;j<pl->cards->len;j++)
g_array_index(pl->cards, PlayerCard, j).red = 0;
if(reset_fitness)
pl->fitness = math_rnd(const_float("float_player_fitness_lower"),
const_float("float_player_fitness_upper"));
}
team_rearrange(tm);
tm->structure = team_find_appropriate_structure(tm);
if(!player_substitution_good_structure(tm->structure,
player_of(tm, 1)->pos, player_of(tm, 1)->pos))
if(!player_substitution_good_structure(tm->structure, PLAYER_POS_DEFENDER, PLAYER_POS_DEFENDER))
{
tm->structure = team_assign_playing_structure();
for(i=0;i<tm->players->len;i++)
@ -755,7 +760,7 @@ team_update_cpu_new_players(Team *tm)
/** Heal players, re-set fitnesses, make some random subs
and replace some players with new ones.
@param tm The team we examine.
@param reset_fitness Whether to reset the fitness values of playes. */
@param reset_fitness Whether to reset the fitness values of players. */
void
team_update_cpu_team(Team *tm, gboolean reset_fitness)
{

View File

@ -241,7 +241,7 @@ treeview_pixbuf_from_filename(gchar *filename)
if(filename != NULL && strlen(filename) != 0)
{
symbol_file = file_find_support_file(filename);
symbol_file = file_find_support_file(filename, FALSE);
if(symbol_file != NULL)
{
symbol = gdk_pixbuf_new_from_file(symbol_file, &error);
@ -1010,7 +1010,7 @@ treeview_create_game_stats(LiveGame *live_game)
gchar buf[2][SMALL];
gchar buf3[SMALL];
gchar *categories[LIVE_GAME_STAT_VALUE_END] =
{_("Goals (w/o pen.)"),
{_("Goals (regular)"),
_("Shots"),
_("Shot %"),
_("Possession"),
@ -1616,6 +1616,37 @@ treeview_show_table(GtkTreeView *treeview, gint clid)
g_object_unref(model);
}
/** Print some quick info about the stadium in the finances view. */
void
treeview_create_stadium_summary(GtkListStore *liststore)
{
gchar buf[SMALL];
GtkTreeIter iter;
gtk_list_store_append(liststore, &iter);
misc_print_grouped_int(current_user.tm->stadium.capacity, buf, FALSE);
gtk_list_store_set(liststore, &iter, 0, _("Stadium capacity"), 1, buf, 2, "", -1);
gtk_list_store_append(liststore, &iter);
sprintf(buf, "%.0f", current_user.tm->stadium.safety * 100);
gtk_list_store_set(liststore, &iter, 0, _("Stadium safety"), 1, buf, 2, "", -1);
if(current_user.counters[COUNT_USER_STADIUM_CAPACITY] +
current_user.counters[COUNT_USER_STADIUM_SAFETY] != 0)
{
gtk_list_store_append(liststore, &iter);
sprintf(buf, _("Improvement in progress.\n%d seats and %d%% safety still to be done.\nExpected finish: %d weeks."),
current_user.counters[COUNT_USER_STADIUM_CAPACITY],
current_user.counters[COUNT_USER_STADIUM_SAFETY],
MAX(finance_get_stadium_improvement_duration(
(gfloat)current_user.counters[COUNT_USER_STADIUM_CAPACITY], TRUE),
finance_get_stadium_improvement_duration(
(gfloat)current_user.counters[COUNT_USER_STADIUM_SAFETY] / 100, FALSE)));
gtk_list_store_set(liststore, &iter, 0, _("Stadium status"), 1, buf, 2, "", -1);
}
}
GtkTreeModel*
treeview_create_finances(const User* user)
{
@ -1711,6 +1742,11 @@ treeview_create_finances(const User* user)
gtk_list_store_set(liststore, &iter, 0, buf, 1, "", 2, buf2, -1);
}
gtk_list_store_append(liststore, &iter);
gtk_list_store_set(liststore, &iter, 0, "", 1, "", 2, "", -1);
treeview_create_stadium_summary(liststore);
return GTK_TREE_MODEL(liststore);
}

View File

@ -210,4 +210,7 @@ treeview_create_player_info(const Player *pl);
gint
treeview_iter_get_row(GtkTreeModel *model, GtkTreeIter *iter);
void
treeview_create_stadium_summary(GtkListStore *liststore);
#endif

View File

@ -161,7 +161,7 @@ treeview_cell_player_info_banned_to_cell(GtkCellRenderer *renderer, const GArray
for(i=0;i<cards->len;i++)
if(g_array_index(cards, PlayerCard, i).red > 0)
{
sprintf(buf2, "%s: %d weeks ",
sprintf(buf2, "%s: %d weeks\n",
league_cup_get_name_string(g_array_index(cards, PlayerCard, i).clid),
g_array_index(cards, PlayerCard, i).red);
strcat(buf, buf2);
@ -191,12 +191,12 @@ treeview_cell_player_info_yellow_to_cell(GtkCellRenderer *renderer, const GArray
{
if(yellow_red < 1000)
{
sprintf(buf2, "%s: %d (%d) ",
sprintf(buf2, "%s: %d (%d)\n",
league_cup_get_name_string(g_array_index(cards, PlayerCard, i).clid),
g_array_index(cards, PlayerCard, i).yellow, yellow_red);
}
else
sprintf(buf2, "%s: %d (no limit) ",
sprintf(buf2, "%s: %d (no limit)\n",
league_cup_get_name_string(g_array_index(cards, PlayerCard, i).clid),
g_array_index(cards, PlayerCard, i).yellow);
@ -217,7 +217,7 @@ treeview_cell_player_info_games_goals_to_cell(GtkCellRenderer *renderer, const G
for(i=0;i<games_goals->len;i++)
{
sprintf(buf2, "%s: %d/%d ",
sprintf(buf2, "%s: %d/%d\n",
league_cup_get_name_string(g_array_index(games_goals, PlayerGamesGoals, i).clid),
g_array_index(games_goals, PlayerGamesGoals, i).games,
g_array_index(games_goals, PlayerGamesGoals, i).goals);

View File

@ -4,6 +4,7 @@
#include "game_gui.h"
#include "gui.h"
#include "interface.h"
#include "main.h"
#include "misc_interface.h"
#include "misc2_interface.h"
#include "option.h"
@ -24,22 +25,22 @@ window_show_startup(void)
window_create(WINDOW_STARTUP);
GtkWidget *combo_country =
lookup_widget(window_startup, "combo_country");
const gchar *country_dir;
GPtrArray *dir_contents = NULL;
GPtrArray *country_files = NULL;
GList *combo_strings = NULL;
gint i;
country_dir = file_get_definitions_dir();
country_files = file_get_country_files();
dir_contents = file_dir_get_contents(country_dir, "country_", "");
if(country_files->len == 0)
main_exit_program(EXIT_NO_COUNTRY_FILES, "Didn't find any country definition files in the support directories.");
for(i=0;i<dir_contents->len;i++)
for(i=0;i<country_files->len;i++)
combo_strings = g_list_append(combo_strings,
((GString*)g_ptr_array_index(dir_contents, i))->str);
((GString*)g_ptr_array_index(country_files, i))->str);
gtk_combo_set_popdown_strings(GTK_COMBO(combo_country), combo_strings);
free_g_string_array(&dir_contents);
free_g_string_array(&country_files);
}
/** Show the file selection window. */

View File

@ -65,7 +65,7 @@ xml_load_leagues(const gchar *dirname, const gchar *basename)
if(!g_str_has_suffix(((GString*)g_ptr_array_index(dir_contents, i))->str, "_table.xml") &&
!g_str_has_suffix(((GString*)g_ptr_array_index(dir_contents, i))->str, "_fixtures.xml") &&
!g_str_has_suffix(((GString*)g_ptr_array_index(dir_contents, i))->str, "_teams.xml") &&
!misc_string_contains(((GString*)g_ptr_array_index(dir_contents, i))->str, "_promcup"))
!query_misc_string_contains(((GString*)g_ptr_array_index(dir_contents, i))->str, "_promcup"))
xml_load_league(dirname, ((GString*)g_ptr_array_index(dir_contents, i))->str,
dir_contents);
@ -107,7 +107,7 @@ xml_load_league(const gchar *dirname, const gchar *basename, const GPtrArray *di
for(i=0;i<dir_contents->len;i++)
if(g_str_has_prefix(((GString*)g_ptr_array_index(dir_contents, i))->str, buf) &&
!misc_string_contains(((GString*)g_ptr_array_index(dir_contents, i))->str, "_table") &&
!query_misc_string_contains(((GString*)g_ptr_array_index(dir_contents, i))->str, "_table") &&
!g_str_has_suffix(((GString*)g_ptr_array_index(dir_contents, i))->str, "_fixtures.xml") &&
!g_str_has_suffix(((GString*)g_ptr_array_index(dir_contents, i))->str, "_teams.xml"))
{
@ -134,7 +134,7 @@ xml_load_cups(const gchar *dirname, const gchar *basename)
for(i=0;i<dir_contents->len;i++)
{
if(!misc_string_contains(((GString*)g_ptr_array_index(dir_contents, i))->str, "_table") &&
if(!query_misc_string_contains(((GString*)g_ptr_array_index(dir_contents, i))->str, "_table") &&
!g_str_has_suffix(((GString*)g_ptr_array_index(dir_contents, i))->str, "_fixtures.xml") &&
!g_str_has_suffix(((GString*)g_ptr_array_index(dir_contents, i))->str, "_teams.xml"))
xml_load_cup(dirname, ((GString*)g_ptr_array_index(dir_contents, i))->str,
@ -177,7 +177,7 @@ xml_load_cup(const gchar *dirname, const gchar *basename, const GPtrArray *dir_c
{
if(g_str_has_prefix(((GString*)g_ptr_array_index(dir_contents, i))->str,
prefix) &&
misc_string_contains(((GString*)g_ptr_array_index(dir_contents, i))->str,
query_misc_string_contains(((GString*)g_ptr_array_index(dir_contents, i))->str,
"_table"))
{
new_table = table_new();

View File

@ -149,7 +149,7 @@ xml_country_read_text (GMarkupParseContext *context,
void
xml_country_read(const gchar *country_name)
{
gchar *file_name = file_find_support_file(country_name);
gchar *file_name = file_find_support_file(country_name, FALSE);
GMarkupParser parser = {xml_country_read_start_element,
xml_country_read_end_element,
xml_country_read_text, NULL, NULL};
@ -165,7 +165,7 @@ xml_country_read(const gchar *country_name)
if(file_name == NULL)
{
sprintf(buf, "country_%s.xml", country_name);
file_name = file_find_support_file(buf);
file_name = file_find_support_file(buf, TRUE);
}
if(!g_file_get_contents(file_name, &file_contents, &length, &error))

View File

@ -312,7 +312,7 @@ xml_cup_read_text (GMarkupParseContext *context,
void
xml_cup_read(const gchar *cup_name, GArray *cups)
{
gchar *file_name = file_find_support_file(cup_name);
gchar *file_name = file_find_support_file(cup_name, FALSE);
GMarkupParser parser = {xml_cup_read_start_element,
xml_cup_read_end_element,
xml_cup_read_text, NULL, NULL};
@ -328,7 +328,7 @@ xml_cup_read(const gchar *cup_name, GArray *cups)
if(file_name == NULL)
{
sprintf(buf, "cup_%s.xml", cup_name);
file_name = file_find_support_file(buf);
file_name = file_find_support_file(buf, TRUE);
}
if(!g_file_get_contents(file_name, &file_contents, &length, &error))

View File

@ -295,7 +295,7 @@ xml_league_read(const gchar *league_name, GArray *leagues)
{
gint i;
TableElement new_table_element;
gchar *file_name = file_find_support_file(league_name);
gchar *file_name = file_find_support_file(league_name, FALSE);
GMarkupParser parser = {xml_league_read_start_element,
xml_league_read_end_element,
xml_league_read_text, NULL, NULL};
@ -311,7 +311,7 @@ xml_league_read(const gchar *league_name, GArray *leagues)
if(file_name == NULL)
{
sprintf(buf, "league_%s.xml", league_name);
file_name = file_find_support_file(buf);
file_name = file_find_support_file(buf, TRUE);
}
if(!g_file_get_contents(file_name, &file_contents, &length, &error))

View File

@ -154,10 +154,13 @@ xml_loadsave_live_game_text (GMarkupParseContext *context,
int_value = (gint)g_ascii_strtod(buf, NULL);
if(state == TAG_LIVE_GAME_FIX_CLID)
fix_clid = int_value;
lgame->fix_clid = int_value;
else if(state == TAG_LIVE_GAME_FIX_IDX)
lgame->fix = &g_array_index(league_cup_get_fixtures(fix_clid),
{
lgame->fix_idx = int_value;
lgame->fix = &g_array_index(league_cup_get_fixtures(lgame->fix_clid),
Fixture, int_value);
}
else if(state == TAG_LIVE_GAME_UNIT_POSSESSION)
new_unit.possession = int_value;
else if(state == TAG_LIVE_GAME_UNIT_AREA)

View File

@ -91,7 +91,7 @@ void
xml_name_read(const gchar *names_file, gint number_of_names)
{
gint i;
gchar *file_name = file_find_support_file(names_file);
gchar *file_name = file_find_support_file(names_file, FALSE);
GMarkupParser parser = {xml_name_read_start_element,
xml_name_read_end_element,
xml_name_read_text, NULL, NULL};

View File

@ -484,7 +484,7 @@ int_team_subs_upper 3
float_team_new_style 1000
# prob that the team structure gets changed
float_team_new_structure 500
float_team_new_structure 2000
# the influence of the fitness on the current skill.
# this determines the player's contribution to the team
@ -746,7 +746,7 @@ string_treeview_opponent_skill_positive_fg darkred
string_treeview_opponent_skill_negative_fg darkgreen
# background of the home column in the league results
string_treeview_league_results_away_bg lightgrey
string_treeview_league_results_away_bg white
string_treeview_league_results_away_fg black
# foreground of own team bar in the opponent preview