1
1
mirror of https://github.com/tstellar/bygfoot.git synced 2025-02-10 00:20:55 +01:00

Some fixes; added confirmations.

This commit is contained in:
gyboth 2005-04-07 16:44:33 +00:00
parent b26f5bd652
commit 780231902a
44 changed files with 875 additions and 359 deletions

View File

@ -772,7 +772,7 @@
<widget class="GtkButton" id="button_save">
<property name="border_width">2</property>
<property name="visible">True</property>
<property name="tooltip" translatable="yes">Save game (S or Ctrl - S)</property>
<property name="tooltip" translatable="yes">Save game (Ctrl - S)</property>
<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"/>
@ -1841,7 +1841,7 @@
<property name="visible">True</property>
<property name="label" translatable="yes">Show info</property>
<property name="use_underline">True</property>
<signal name="activate" handler="on_player_menu_show_info_activate" last_modification_time="Sat, 26 Mar 2005 08:47:31 GMT"/>
<signal name="activate" handler="on_player_menu_show_info_activate" last_modification_time="Wed, 06 Apr 2005 13:36:41 GMT"/>
</widget>
</child>

View File

@ -1460,92 +1460,91 @@
<property name="spacing">5</property>
<child>
<widget class="GtkVBox" id="vbox48">
<widget class="GtkTable" id="table1">
<property name="visible">True</property>
<property name="n_rows">5</property>
<property name="n_columns">2</property>
<property name="homogeneous">False</property>
<property name="spacing">3</property>
<property name="row_spacing">3</property>
<property name="column_spacing">3</property>
<child>
<widget class="GtkHBox" id="hbox66">
<widget class="GtkLabel" id="label106">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">3</property>
<child>
<widget class="GtkLabel" id="label106">
<property name="visible">True</property>
<property name="label" translatable="yes">Status: </property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label_stadium_status">
<property name="visible">True</property>
<property name="label" translatable="yes">label107</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<property name="label" translatable="yes">Status: </property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="left_attach">0</property>
<property name="right_attach">1</property>
<property name="top_attach">0</property>
<property name="bottom_attach">1</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkHBox" id="hbox62">
<widget class="GtkLabel" id="label_stadium_status">
<property name="visible">True</property>
<property name="label" translatable="yes">label107</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">0</property>
<property name="bottom_attach">1</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label101">
<property name="visible">True</property>
<property name="label" translatable="yes">Current capacity:</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="left_attach">0</property>
<property name="right_attach">1</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkHBox" id="hbox69">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">3</property>
<child>
<widget class="GtkLabel" id="label101">
<property name="visible">True</property>
<property name="label" translatable="yes">Current capacity:</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<property name="spacing">0</property>
<child>
<widget class="GtkLabel" id="label_capacity">
@ -1556,7 +1555,7 @@
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0.5</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
@ -1571,7 +1570,7 @@
<child>
<widget class="GtkLabel" id="label102">
<property name="visible">True</property>
<property name="label" translatable="yes">seats</property>
<property name="label" translatable="yes"> seats</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
@ -1590,57 +1589,142 @@
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="x_options">fill</property>
<property name="y_options">fill</property>
</packing>
</child>
<child>
<widget class="GtkHBox" id="hbox63">
<widget class="GtkLabel" id="label103">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">3</property>
<child>
<widget class="GtkLabel" id="label103">
<property name="visible">True</property>
<property name="label" translatable="yes">Current safety: </property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<child>
<widget class="GtkProgressBar" id="progressbar_safety">
<property name="visible">True</property>
<property name="orientation">GTK_PROGRESS_LEFT_TO_RIGHT</property>
<property name="fraction">0</property>
<property name="pulse_step">0.1</property>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<property name="label" translatable="yes">Current safety: </property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="left_attach">0</property>
<property name="right_attach">1</property>
<property name="top_attach">2</property>
<property name="bottom_attach">3</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkProgressBar" id="progressbar_safety">
<property name="visible">True</property>
<property name="orientation">GTK_PROGRESS_LEFT_TO_RIGHT</property>
<property name="fraction">0</property>
<property name="pulse_step">0.1</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">2</property>
<property name="bottom_attach">3</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label109">
<property name="visible">True</property>
<property name="label" translatable="yes">Average attendance </property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="left_attach">0</property>
<property name="right_attach">1</property>
<property name="top_attach">3</property>
<property name="bottom_attach">4</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label_average_attendance">
<property name="visible">True</property>
<property name="label" translatable="yes">label110</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">3</property>
<property name="bottom_attach">4</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label111">
<property name="visible">True</property>
<property name="label" translatable="yes">Average attendance % </property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="left_attach">0</property>
<property name="right_attach">1</property>
<property name="top_attach">4</property>
<property name="bottom_attach">5</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkProgressBar" id="progressbar_average_attendance">
<property name="visible">True</property>
<property name="orientation">GTK_PROGRESS_LEFT_TO_RIGHT</property>
<property name="fraction">0</property>
<property name="pulse_step">0.1</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">4</property>
<property name="bottom_attach">5</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
</widget>

View File

@ -984,7 +984,7 @@
<widget class="GtkVBox" id="vbox17">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">3</property>
<property name="spacing">5</property>
<child>
<widget class="GtkImage" id="image8">
@ -1024,25 +1024,6 @@
</packing>
</child>
<child>
<widget class="GtkCheckButton" id="checkbutton_yesno">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">Don't bother me with this next time.</property>
<property name="use_underline">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="active">False</property>
<property name="inconsistent">False</property>
<property name="draw_indicator">True</property>
<signal name="toggled" handler="on_checkbutton_yesno_toggled" last_modification_time="Sun, 20 Mar 2005 19:13:34 GMT"/>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<child>
<widget class="GtkHBox" id="hbox18">
<property name="visible">True</property>

View File

@ -42,10 +42,11 @@
<property name="spacing">0</property>
<child>
<widget class="GtkCheckButton" id="checkbutton_conf_new_week_round">
<widget class="GtkCheckButton" id="checkbutton_conf_quit">
<property name="visible">True</property>
<property name="tooltip" translatable="yes">Whether to show a confirmation popup when you press quit and the game state is not saved</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">Confirm new week round</property>
<property name="label" translatable="yes">Confirm quit when not saved</property>
<property name="use_underline">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="active">False</property>
@ -60,10 +61,11 @@
</child>
<child>
<widget class="GtkCheckButton" id="checkbutton_conf_quit">
<widget class="GtkCheckButton" id="checkbutton_conf_unfit">
<property name="visible">True</property>
<property name="tooltip" translatable="yes">Whether to show a confirmation popup if a user team has an injured or banned player in the startup formation</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">Confirm quit</property>
<property name="label" translatable="yes">Confirm when unfit</property>
<property name="use_underline">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="active">False</property>
@ -211,6 +213,7 @@
<child>
<widget class="GtkSpinButton" id="spinbutton_autosave">
<property name="visible">True</property>
<property name="tooltip" translatable="yes">How often the game is saved automatically</property>
<property name="can_focus">True</property>
<property name="climb_rate">1</property>
<property name="digits">0</property>
@ -226,6 +229,47 @@
<property name="fill">False</property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="label36">
<property name="visible">True</property>
<property name="label" translatable="yes"> Autosave files </property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<child>
<widget class="GtkSpinButton" id="spinbutton_autosave_files">
<property name="visible">True</property>
<property name="tooltip" translatable="yes">How many files the autosave uses</property>
<property name="can_focus">True</property>
<property name="climb_rate">1</property>
<property name="digits">0</property>
<property name="numeric">False</property>
<property name="update_policy">GTK_UPDATE_ALWAYS</property>
<property name="snap_to_ticks">False</property>
<property name="wrap">False</property>
<property name="adjustment">1 0 100 1 10 10</property>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">True</property>
<property name="fill">True</property>
</packing>
</child>
</widget>
<packing>
<property name="left_attach">1</property>
@ -826,24 +870,6 @@
<property name="homogeneous">False</property>
<property name="spacing">0</property>
<child>
<widget class="GtkCheckButton" id="checkbutton_conf_unfit">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">Confirm when unfit</property>
<property name="use_underline">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="active">False</property>
<property name="inconsistent">False</property>
<property name="draw_indicator">True</property>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<child>
<widget class="GtkCheckButton" id="checkbutton_show_job">
<property name="visible">True</property>

View File

@ -10,7 +10,7 @@ bin_PROGRAMS = bygfoot
bygfoot_SOURCES = \
callback_func.c callback_func.h callbacks.h cup.h finance.h fixture.h game_gui.h league.h live_game.h maths.h misc.h option.h player.h start_end.h team.h transfer.h treeview.h user.h window.h \
callbacks.c callbacks.h callback_func.h game_gui.h load_save.h main.h option.h player.h team.h transfer.h treeview.h user.h window.h \
callbacks.c callbacks.h callback_func.h free.h game_gui.h load_save.h main.h option.h player.h team.h transfer.h treeview.h user.h window.h \
cup.c cup.h free.h main.h maths.h misc.h team.h variables.h xml_league.h \
file.c file.h free.h main.h misc.h option.h support.h variables.h \
finance.c callbacks.h finance.h game_gui.h maths.h option.h player.h team.h user.h \
@ -22,14 +22,14 @@ 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 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 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 \
misc_callbacks.c callbacks.h callback_func.h game.h game_gui.h live_game.h load_save.h main.h misc_callback_func.h misc_callbacks.h option.h user.h variables.h window.h \
misc_callbacks.c callbacks.h callback_func.h game.h game_gui.h live_game.h load_save.h main.h misc_callback_func.h misc_callbacks.h option.h user.h variables.h window.h xml_country.h \
misc_callback_func.c callbacks.h finance.h game.h game_gui.h gui.h load_save.h maths.h misc_callback_func.h option.h start_end.h support.h treeview.h user.h variables.h window.h xml_country.h xml_name.h \
misc_interface.c misc_interface.h misc_callbacks.h support.h \
misc2_callbacks.c finance.h game_gui.h main.h misc2_callbacks.h misc2_callback_func.h misc2_interface.h player.h support.h transfer.h treeview.h user.h window.h \
misc2_callbacks.c callback_func.h finance.h game_gui.h main.h misc2_callbacks.h misc2_callback_func.h misc2_interface.h player.h support.h transfer.h treeview.h user.h window.h \
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 \
@ -37,14 +37,14 @@ bygfoot_SOURCES = \
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 \
start_end.c cup.h file.h finance.h fixture.h game_gui.h gui.h league.h live_game.h main.h maths.h option.h start_end.h table.h team.h transfer.h user.h variables.h xml_name.h \
start_end.c cup.h file.h finance.h fixture.h game_gui.h gui.h league.h load_save.h live_game.h main.h maths.h option.h start_end.h table.h team.h transfer.h user.h variables.h xml_name.h \
support.c support.h \
table.c cup.h league.h table.h variables.h \
team.c cup.h fixture.h game.h game_gui.h league.h maths.h misc.h option.h player.h team.h transfer.h user.h \
transfer.c finance.h free.h game_gui.h maths.h option.h player.h support.h team.h transfer.h treeview.h user.h \
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 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 user.h window.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 \
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 \

View File

@ -36,7 +36,7 @@ callback_show_next_live_game(void)
option_int("int_opt_user_show_live_game",
&usr(fixture_user_team_involved(&g_array_index(lig(i).fixtures, Fixture, j))).
options))
{
{
live_game_calculate_fixture(&g_array_index(lig(i).fixtures, Fixture, j));
return;
}
@ -62,6 +62,8 @@ callback_show_next_live_game(void)
/* no more user games to show: end round. */
end_week_round();
setsav0;
}
/** Handle a click on the player list.
@ -114,6 +116,8 @@ callback_player_clicked(gint idx, GdkEventButton *event)
selected_row[0] = idx;
}
}
setsav0;
}
/** Show the last match of the current user. */
@ -237,6 +241,7 @@ callback_transfer_list_clicked(gint idx)
{
transfer_remove_player(idx);
on_button_transfers_clicked(NULL, NULL);
setsav0;
return;
}
@ -303,6 +308,8 @@ callback_offer_new_contract(gint idx)
powf(-1, (pl->age > pl->peak_age)))) *
(1 + scout_dev)));
}
setsav0;
}
/** Show the player list of a team in the browse-teams mode. */
@ -381,13 +388,13 @@ callback_fire_player(gint idx)
gchar buf[SMALL], buf2[SMALL];
Player *pl = player_of(current_user.tm, idx);
stat0 = STATUS_FIRE_PLAYER;
stat1 = idx;
stat2 = (gint)rint(pl->wage * const_float("float_player_fire_wage_factor") * pl->contract);
stat1 = STATUS_FIRE_PLAYER;
stat2 = idx;
stat3 = (gint)rint(pl->wage * const_float("float_player_fire_wage_factor") * pl->contract);
misc_print_grouped_int(stat2, buf2, FALSE);
misc_print_grouped_int(stat3, buf2, FALSE);
sprintf(buf, _("You want to fire %s. Since his contract expires in %.1f years, he demands a compensation of %s. Do you accept?"), pl->name->str, pl->contract, buf2);
window_show_yesno(buf, FALSE);
window_show_yesno(buf);
}

View File

@ -1,5 +1,6 @@
#include "callbacks.h"
#include "callback_func.h"
#include "free.h"
#include "game_gui.h"
#include "load_save.h"
#include "main.h"
@ -26,7 +27,12 @@ void
on_menu_new_activate (GtkMenuItem *menuitem,
gpointer user_data)
{
window_destroy(&window.main, FALSE);
free_memory();
main_init(-1, NULL);
window_show_startup();
stat0 = STATUS_TEAM_SELECTION;
}
@ -63,7 +69,13 @@ void
on_menu_quit_activate (GtkMenuItem *menuitem,
gpointer user_data)
{
main_exit_program(EXIT_OK, NULL);
if(!getsav || !opt_int("int_opt_confirm_quit"))
main_exit_program(EXIT_OK, NULL);
else
{
stat1 = STATUS_QUERY_QUIT;
window_show_yesno("The current game state is unsaved and will be lost. Continue?");
}
}
@ -123,7 +135,14 @@ void
on_button_new_week_clicked (GtkButton *button,
gpointer user_data)
{
callback_show_next_live_game();
if(!opt_int("int_opt_confirm_unfit") ||
!query_user_teams_have_unfit())
callback_show_next_live_game();
else
{
stat1 = STATUS_QUERY_UNFIT;
window_show_yesno(_("There are injured or banned players in one of the user teams. Continue?"));
}
}
@ -272,14 +291,6 @@ on_menu_season_history_activate (GtkMenuItem *menuitem,
}
void
on_menu_show_info_activate (GtkMenuItem *menuitem,
gpointer user_data)
{
}
void
on_menu_put_on_transfer_list_activate (GtkMenuItem *menuitem,
gpointer user_data)
@ -290,6 +301,7 @@ on_menu_put_on_transfer_list_activate (GtkMenuItem *menuitem,
game_gui_print_message(_("The player is already on the list."));
else
{
setsav0;
transfer_add_remove_user_player(player_of(current_user.tm, selected_row[0]));
selected_row[0] = -1;
}
@ -306,6 +318,7 @@ on_menu_remove_from_transfer_list_activate (GtkMenuItem *menuitem,
game_gui_print_message(_("The player is not on the list."));
else
{
setsav0;
transfer_add_remove_user_player(player_of(current_user.tm, selected_row[0]));
selected_row[0] = -1;
}
@ -340,6 +353,7 @@ on_menu_shoots_penalties_activate (GtkMenuItem *menuitem,
opt_user_set_int("int_opt_user_penalty_shooter", -1);
game_gui_print_message(_("Penalty/free kick shooter deselected."));
treeview_show_user_player_list();
setsav0;
}
else
{
@ -349,6 +363,7 @@ on_menu_shoots_penalties_activate (GtkMenuItem *menuitem,
player_of(current_user.tm, selected_row[0])->id);
game_gui_print_message(buf);
treeview_show_user_player_list();
setsav0;
}
selected_row[0] = -1;
@ -445,14 +460,6 @@ on_menu_previous_user_activate (GtkMenuItem *menuitem,
}
void
on_menu_show_user_list_activate (GtkMenuItem *menuitem,
gpointer user_data)
{
}
void
on_menu_custom_structure_activate (GtkMenuItem *menuitem,
gpointer user_data)
@ -469,6 +476,7 @@ on_menu_team_button_press_event (GtkWidget *widget,
gpointer user_data)
{
game_gui_read_radio_items(widget);
setsav0;
return FALSE;
}
@ -477,7 +485,7 @@ void
on_menu_manage_users_activate (GtkMenuItem *menuitem,
gpointer user_data)
{
stat0 = STATUS_USER_MANAGEMENT;
stat0 = stat1 = STATUS_USER_MANAGEMENT;
window_create(WINDOW_USER_MANAGEMENT);
treeview_show_users(GTK_TREE_VIEW(lookup_widget(window.user_management, "treeview_user_management_users")));
treeview_show_team_list(GTK_TREE_VIEW(lookup_widget(window.user_management, "treeview_user_management_teams")),
@ -542,6 +550,8 @@ on_eventbox_style_button_press_event (GtkWidget *widget,
if(stat0 == STATUS_MAIN)
treeview_show_next_opponent();
setsav0;
return FALSE;
}
@ -573,6 +583,8 @@ on_eventbox_boost_button_press_event (GtkWidget *widget,
if(stat0 == STATUS_MAIN)
treeview_show_next_opponent();
setsav0;
return FALSE;
}
@ -601,6 +613,8 @@ on_menu_check_button_press_event (GtkWidget *widget,
{
game_gui_read_check_items(widget);
setsav0;
return FALSE;
}
@ -616,14 +630,23 @@ on_menu_offer_new_contract_activate (GtkMenuItem *menuitem,
callback_offer_new_contract(selected_row[0]);
selected_row[0] = -1;
setsav0;
}
void
on_player_menu_show_info_activate (GtkMenuItem *menuitem,
gpointer user_data)
on_menu_show_info_activate (GtkMenuItem *menuitem,
gpointer user_data)
{
if(selected_row[0] == -1)
{
game_gui_print_message(_("You haven't selected a player."));
return;
}
stat0 = STATUS_SHOW_PLAYER_INFO;
treeview_show_player_info(player_of(current_user.tm, selected_row[0]));
}
@ -677,3 +700,11 @@ on_menu_browse_players_activate (GtkMenuItem *menuitem,
callback_show_player_list(SHOW_CURRENT);
stat0 = STATUS_SHOW_PLAYER_LIST;
}
void
on_player_menu_show_info_activate (GtkMenuItem *menuitem,
gpointer user_data)
{
on_menu_show_info_activate(NULL, NULL);
}

View File

@ -98,10 +98,6 @@ void
on_menu_season_history_activate (GtkMenuItem *menuitem,
gpointer user_data);
void
on_menu_show_info_activate (GtkMenuItem *menuitem,
gpointer user_data);
void
on_menu_put_on_transfer_list_activate (GtkMenuItem *menuitem,
gpointer user_data);
@ -141,10 +137,6 @@ void
on_menu_previous_user_activate (GtkMenuItem *menuitem,
gpointer user_data);
void
on_menu_show_user_list_activate (GtkMenuItem *menuitem,
gpointer user_data);
void
on_menu_custom_structure_activate (GtkMenuItem *menuitem,
gpointer user_data);
@ -207,8 +199,8 @@ on_menu_offer_new_contract_activate (GtkMenuItem *menuitem,
gpointer user_data);
void
on_player_menu_show_info_activate (GtkMenuItem *menuitem,
gpointer user_data);
on_menu_show_info_activate (GtkMenuItem *menuitem,
gpointer user_data);
void
on_player_menu_put_on_transfer_list_activate
@ -237,4 +229,8 @@ on_player_menu_shoots_penalties_activate
void
on_menu_browse_players_activate (GtkMenuItem *menuitem,
gpointer user_data);
void
on_player_menu_show_info_activate (GtkMenuItem *menuitem,
gpointer user_data);
#endif

View File

@ -1,6 +1,14 @@
#ifndef ENUMS_H
#define ENUMS_H
/** Some counters. */
enum Counters
{
COUNT_AUTOSAVE = 0,
COUNT_AUTOSAVE_FILE,
COUNT_END
};
/** Scout and physio qualities. */
enum Quality
{
@ -50,6 +58,7 @@ enum Status0Value
STATUS_SHOW_LIVE_GAME,
STATUS_LIVE_GAME_PAUSE,
STATUS_SHOW_TEAM_LIST,
STATUS_SHOW_PLAYER_INFO,
STATUS_BROWSE_TEAMS,
STATUS_TEAM_SELECTION,
STATUS_SHOW_LAST_MATCH,
@ -75,6 +84,8 @@ enum Status0Value
STATUS_SAVE_GAME,
STATUS_LOAD_GAME,
STATUS_LOAD_GAME_TEAM_SELECTION,
STATUS_QUERY_UNFIT,
STATUS_QUERY_QUIT,
STATUS_END
};

View File

@ -42,19 +42,21 @@ finance_update_user_weekly(User *user)
for(i=0;i<tm->players->len;i++)
{
user->money_out[1][MON_OUT_WAGE] -= player_of(tm, i)->wage;
user->money -= player_of(tm, i)->wage;
if(player_of(tm, i)->health > 0)
{
user->money -= (gint)(finance_wage_unit(tm) * physio_factor[user->physio % 10]);
user->money_out[1][MON_OUT_PHYSIO] -=
(gint)(finance_wage_unit(tm) * physio_factor[user->physio % 10]);
}
}
user->money_out[1][MON_OUT_SCOUT] -= (gint)(finance_wage_unit(tm) * scout_factor[user->scout % 10]);
user->money -= (gint)(finance_wage_unit(tm) * scout_factor[user->scout % 10]);
user->debt = (gint)rint((gfloat)user->debt * (1 + const_float("float_finance_interest")));
for(i=0;i<MON_OUT_END;i++)
user->money += user->money_out[1][i];
if(user->money < -finance_team_drawing_credit_loan(user->tm, FALSE) &&
user->counters[COUNT_USER_POSITIVE] == -1)
{

View File

@ -283,8 +283,11 @@ game_initialize(Fixture *fix)
if(user_idx[i] != -1)
{
if(i == 1 || !fix->home_advantage)
{
usr(user_idx[i]).money_out[1][MON_OUT_JOURNEY] -=
(gint)(finance_wage_unit(fix->teams[i]) * journey_factor);
usr(user_idx[i]).money -= (gint)(finance_wage_unit(fix->teams[i]) * journey_factor);
}
if(!fix->home_advantage)
{
@ -489,7 +492,8 @@ game_player_injury(Player *pl)
math_gauss_disti(const_int("int_player_injury_duration_ligament") -
const_int("int_player_injury_duration_dev_ligament"),
const_int("int_player_injury_duration_ligament") +
const_int("int_player_injury_duration_dev_ligament"))};
const_int("int_player_injury_duration_dev_ligament")),
50};
for(i=1;i<13;i++)
injury_probs[i] += injury_probs[i - 1];
@ -503,6 +507,10 @@ game_player_injury(Player *pl)
pl->recovery = duration[i - 1] + 1;
pl->cskill = pl->fitness = 0;
}
if(pl->health == PLAYER_INJURY_CAREER_STOP && team_is_user(pl->team) != -1)
user_event_add(&usr(team_is_user(pl->team)), EVENT_TYPE_PLAYER_CAREER_STOP, pl->id, -1,
NULL, NULL);
}
/** Return a factor influencing who's fouled whom

View File

@ -341,7 +341,8 @@ game_gui_print_message(gchar *text)
gboolean
game_gui_clear_entry_message(gpointer data)
{
gtk_entry_set_text(GTK_ENTRY(lookup_widget(window.main, "entry_message")), "");
if(window.main != NULL)
gtk_entry_set_text(GTK_ENTRY(lookup_widget(window.main, "entry_message")), "");
return FALSE;
}

View File

@ -4,6 +4,10 @@
#include "bygfoot.h"
#include "live_game_struct.h"
#define setsav1 gtk_widget_set_sensitive(lookup_widget(window.main, "button_save"), FALSE)
#define setsav0 gtk_widget_set_sensitive(lookup_widget(window.main, "button_save"), TRUE)
#define getsav GTK_WIDGET_SENSITIVE(lookup_widget(window.main, "button_save"))
void
game_gui_live_game_show_unit(const LiveGameUnit *unit);

View File

@ -612,7 +612,7 @@ create_main_window (void)
gtk_widget_show (button_save);
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 (S or Ctrl - S)"), NULL);
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);

View File

@ -1,5 +1,6 @@
#include "file.h"
#include "gui.h"
#include "game_gui.h"
#include "load_save.h"
#include "option.h"
#include "support.h"
@ -85,6 +86,7 @@ load_save_save_game(const gchar *filename)
g_free(fullname);
gui_show_progress(-1, "");
setsav1;
}
/** Load the game from the specified file. */
@ -147,6 +149,7 @@ load_save_load_game(const gchar* filename)
g_string_printf(save_file, "%s", filename);
gui_show_progress(-1, "");
setsav1;
}
/** Store the name of the last savegame in the users home dir. */
@ -186,3 +189,22 @@ load_save_last_save_get(void)
return g_strdup(buf);
}
/** Write an autosave. */
void
load_save_autosave(void)
{
gchar buf[SMALL];
const gchar *home = g_get_home_dir();
FILE *fil = NULL;
sprintf(buf, "%s/%s/saves/autosave%02d.zip", home, HOMEDIRNAME,
counters[COUNT_AUTOSAVE_FILE]);
if(!file_my_fopen(buf, "w", &fil, FALSE))
return;
load_save_save_game(buf);
counters[COUNT_AUTOSAVE_FILE] = (counters[COUNT_AUTOSAVE_FILE] + 1) % opt_int("int_opt_autosave_files");
}

View File

@ -15,4 +15,7 @@ load_save_last_save_set(const gchar *filename);
gchar*
load_save_last_save_get(void);
void
load_save_autosave(void);
#endif

View File

@ -103,6 +103,7 @@ main (gint argc, gchar *argv[])
window_show_startup();
stat0 = STATUS_TEAM_SELECTION;
/*d*/
on_button_add_player_clicked(NULL, NULL);

View File

@ -16,47 +16,47 @@
void
misc2_callback_transfer_user_player(void)
{
Team *new_team = transoff(stat1, 0).tm;
Team *new_team = transoff(stat2, 0).tm;
gchar buf[SMALL];
if(team_is_user(new_team) != -1)
{
if(new_team->players->len < const_int("int_team_max_players") &&
BUDGET(user_get_index(user_from_team(new_team))) > transoff(stat1, 0).fee)
BUDGET(user_get_index(user_from_team(new_team))) > transoff(stat2, 0).fee)
{
current_user.money += transoff(stat1, 0).fee;
current_user.money_in[1][MON_IN_TRANSFERS] += transoff(stat1, 0).fee;
user_from_team(new_team)->money -= transoff(stat1, 0).fee;
current_user.money += transoff(stat2, 0).fee;
current_user.money_in[1][MON_IN_TRANSFERS] += transoff(stat2, 0).fee;
user_from_team(new_team)->money -= transoff(stat2, 0).fee;
user_from_team(new_team)->money_out[1][MON_OUT_TRANSFERS] -=
transoff(stat1, 0).fee;
player_copy(player_of_id(trans(stat1).tm, trans(stat1).id),
transoff(stat2, 0).fee;
player_copy(player_of_id(trans(stat2).tm, trans(stat2).id),
new_team, new_team->players->len);
player_of(new_team, new_team->players->len - 1)->contract =
(gfloat)math_rndi(const_int("int_transfer_contract_lower"),
const_int("int_transfer_contract_upper"));
g_array_remove_index(current_user.tm->players,
player_id_index(current_user.tm, trans(stat1).id));
transfer_remove_player(stat1);
player_id_index(current_user.tm, trans(stat2).id));
transfer_remove_player(stat2);
}
else
{
sprintf(buf, _("%s couldn't afford to buy %s or his roster was full."),
user_from_team(new_team)->name->str,
player_of_id(trans(stat1).tm, trans(stat1).id)->name->str);
player_of_id(trans(stat2).tm, trans(stat2).id)->name->str);
game_gui_show_warning(buf);
sprintf(buf, _("You didn't have enough money to buy %s or your roster was full."),
player_of_id(trans(stat1).tm, trans(stat1).id)->name->str);
player_of_id(trans(stat2).tm, trans(stat2).id)->name->str);
user_event_add(user_from_team(new_team), EVENT_TYPE_WARNING, -1, -1, NULL, buf);
g_array_remove_index(trans(stat1).offers, 0);
g_array_remove_index(trans(stat2).offers, 0);
}
}
else
{
current_user.money += transoff(stat1, 0).fee;
current_user.money_in[1][MON_IN_TRANSFERS] += transoff(stat1, 0).fee;
current_user.money += transoff(stat2, 0).fee;
current_user.money_in[1][MON_IN_TRANSFERS] += transoff(stat2, 0).fee;
player_remove_from_team(current_user.tm,
player_id_index(current_user.tm, trans(stat1).id));
transfer_remove_player(stat1);
player_id_index(current_user.tm, trans(stat2).id));
transfer_remove_player(stat2);
}
treeview_show_user_player_list();
@ -80,6 +80,8 @@ misc2_callback_change_structure(gint structure)
team_change_structure(current_user.tm, structure);
treeview_show_user_player_list();
setsav0;
return TRUE;
}
@ -163,4 +165,6 @@ misc2_callback_add_user(void)
treeview_show_users(GTK_TREE_VIEW(lookup_widget(window.user_management, "treeview_user_management_users")));
treeview_show_team_list(treeview_user_management_teams, FALSE, FALSE);
setsav0;
}

View File

@ -1,3 +1,4 @@
#include "callback_func.h"
#include "finance.h"
#include "game_gui.h"
#include "main.h"
@ -39,6 +40,8 @@ on_button_offer_ok_clicked (GtkButton *button,
game_gui_show_main();
window_destroy(&window.job_offer, TRUE);
setsav0;
}
@ -70,7 +73,7 @@ on_button_warning_clicked (GtkWidget *widget,
{
window_destroy(&window.warning, FALSE);
if(stat0 == STATUS_SHOW_EVENT)
if(stat1 == STATUS_SHOW_EVENT)
user_event_show_next();
return FALSE;
@ -111,6 +114,8 @@ on_button_digits_ok_clicked (GtkButton *button,
window_destroy(&window.digits, TRUE);
game_gui_set_main_window_header();
setsav0;
}
@ -131,44 +136,43 @@ on_window_yesno_delete_event (GtkWidget *widget,
return FALSE;
}
void
on_checkbutton_yesno_toggled (GtkToggleButton *togglebutton,
gpointer user_data)
{
}
void
on_button_yesno_yes_clicked (GtkButton *button,
gpointer user_data)
{
switch(stat0)
{
window_destroy(&window.yesno, TRUE);
setsav0;
switch(stat1)
{
default:
g_warning("on_button_yesno_yes_clicked: unknown status %d\n", stat0);
g_warning("on_button_yesno_yes_clicked: unknown status %d\n", stat1);
break;
case STATUS_TRANSFER_OFFER:
misc2_callback_transfer_user_player();
break;
case STATUS_FIRE_PLAYER:
player_remove_from_team(current_user.tm, stat1);
current_user.money -= stat2;
current_user.money_out[1][MON_OUT_COMPENSATIONS] -= stat2;
player_remove_from_team(current_user.tm, stat2);
current_user.money -= stat3;
current_user.money_out[1][MON_OUT_COMPENSATIONS] -= stat3;
treeview_show_user_player_list();
game_gui_set_main_window_header();
break;
case STATUS_USER_MANAGEMENT:
user_remove(stat1, TRUE);
user_remove(stat2, TRUE);
treeview_show_users(GTK_TREE_VIEW(lookup_widget(window.user_management,
"treeview_user_management_users")));
treeview_show_team_list(GTK_TREE_VIEW(lookup_widget(window.user_management,
"treeview_user_management_teams")),
FALSE, FALSE);
break;
case STATUS_QUERY_UNFIT:
callback_show_next_live_game();
break;
case STATUS_QUERY_QUIT:
main_exit_program(EXIT_OK, NULL);
break;
}
window_destroy(&window.yesno, TRUE);
}
@ -238,13 +242,13 @@ on_treeview_user_management_users_button_press_event
if(users->len == 1)
{
game_gui_show_warning("You can't play Bygfoot with 0 users!");
game_gui_show_warning("You can't play Bygfoot without users!");
return TRUE;
}
stat1 = idx;
stat2 = idx;
sprintf(buf, "Remove user %s from the game?", usr(idx).name->str);
window_show_yesno(buf, FALSE);
window_show_yesno(buf);
return FALSE;
}

View File

@ -39,10 +39,6 @@ on_window_yesno_delete_event (GtkWidget *widget,
GdkEvent *event,
gpointer user_data);
void
on_checkbutton_yesno_toggled (GtkToggleButton *togglebutton,
gpointer user_data);
void
on_button_yesno_yes_clicked (GtkButton *button,
gpointer user_data);
@ -56,7 +52,6 @@ void
on_button_contract_offer_clicked (GtkButton *button,
gpointer user_data);
#endif
gboolean
on_window_contract_delete_event (GtkWidget *widget,
@ -88,3 +83,4 @@ on_treeview_user_management_teams_row_activated
GtkTreePath *path,
GtkTreeViewColumn *column,
gpointer user_data);
#endif

View File

@ -522,7 +522,6 @@ create_window_yesno (void)
GtkWidget *vbox17;
GtkWidget *image8;
GtkWidget *label_yesno;
GtkWidget *checkbutton_yesno;
GtkWidget *hbox18;
GtkWidget *button_yesno_yes;
GtkWidget *button_yesno_no;
@ -532,7 +531,7 @@ create_window_yesno (void)
gtk_window_set_title (GTK_WINDOW (window_yesno), _("window1"));
gtk_window_set_position (GTK_WINDOW (window_yesno), GTK_WIN_POS_CENTER);
vbox17 = gtk_vbox_new (FALSE, 3);
vbox17 = gtk_vbox_new (FALSE, 5);
gtk_widget_show (vbox17);
gtk_container_add (GTK_CONTAINER (window_yesno), vbox17);
@ -546,10 +545,6 @@ create_window_yesno (void)
gtk_label_set_justify (GTK_LABEL (label_yesno), GTK_JUSTIFY_LEFT);
gtk_label_set_line_wrap (GTK_LABEL (label_yesno), TRUE);
checkbutton_yesno = gtk_check_button_new_with_mnemonic (_("Don't bother me with this next time."));
gtk_widget_show (checkbutton_yesno);
gtk_box_pack_start (GTK_BOX (vbox17), checkbutton_yesno, FALSE, FALSE, 0);
hbox18 = gtk_hbox_new (FALSE, 3);
gtk_widget_show (hbox18);
gtk_box_pack_start (GTK_BOX (vbox17), hbox18, FALSE, FALSE, 0);
@ -565,9 +560,6 @@ create_window_yesno (void)
g_signal_connect ((gpointer) window_yesno, "delete_event",
G_CALLBACK (on_window_yesno_delete_event),
NULL);
g_signal_connect ((gpointer) checkbutton_yesno, "toggled",
G_CALLBACK (on_checkbutton_yesno_toggled),
NULL);
g_signal_connect ((gpointer) button_yesno_yes, "clicked",
G_CALLBACK (on_button_yesno_yes_clicked),
NULL);
@ -580,7 +572,6 @@ create_window_yesno (void)
GLADE_HOOKUP_OBJECT (window_yesno, vbox17, "vbox17");
GLADE_HOOKUP_OBJECT (window_yesno, image8, "image8");
GLADE_HOOKUP_OBJECT (window_yesno, label_yesno, "label_yesno");
GLADE_HOOKUP_OBJECT (window_yesno, checkbutton_yesno, "checkbutton_yesno");
GLADE_HOOKUP_OBJECT (window_yesno, hbox18, "hbox18");
GLADE_HOOKUP_OBJECT (window_yesno, button_yesno_yes, "button_yesno_yes");
GLADE_HOOKUP_OBJECT (window_yesno, button_yesno_no, "button_yesno_no");

View File

@ -209,6 +209,8 @@ misc_callback_improve_stadium(void)
window_destroy(&window.stadium, TRUE);
game_gui_set_main_window_header();
setsav0;
}
/** Load a savegame directly from the startup window. */

View File

@ -12,6 +12,7 @@
#include "user.h"
#include "variables.h"
#include "window.h"
#include "xml_country.h"
void
on_button_add_player_clicked (GtkButton *button,
@ -53,13 +54,6 @@ on_team_selection_tv_row_activated (GtkTreeView *treeview,
on_button_add_player_clicked(NULL, NULL);
}
void
on_button_select_country_file_clicked (GtkButton *button,
gpointer user_data)
{
}
void
on_team_selection_load_clicked (GtkButton *button,
gpointer user_data)
@ -153,6 +147,8 @@ on_button_font_sel_apply_clicked (GtkButton *button,
stat0 = STATUS_MAIN;
game_gui_show_main();
setsav0;
}
}
@ -311,4 +307,3 @@ on_button_startup_resume_clicked (GtkButton *button,
g_free(last_save);
}

View File

@ -15,10 +15,6 @@ on_team_selection_tv_row_activated (GtkTreeView *treeview,
GtkTreeViewColumn *column,
gpointer user_data);
void
on_button_select_country_file_clicked (GtkButton *button,
gpointer user_data);
void
on_team_selection_ok_clicked (GtkButton *button,
gpointer user_data);

View File

@ -892,17 +892,19 @@ create_window_stadium (void)
{
GtkWidget *window_stadium;
GtkWidget *vbox39;
GtkWidget *vbox48;
GtkWidget *hbox66;
GtkWidget *table1;
GtkWidget *label106;
GtkWidget *label_stadium_status;
GtkWidget *hbox62;
GtkWidget *label101;
GtkWidget *hbox69;
GtkWidget *label_capacity;
GtkWidget *label102;
GtkWidget *hbox63;
GtkWidget *label103;
GtkWidget *progressbar_safety;
GtkWidget *label109;
GtkWidget *label_average_attendance;
GtkWidget *label111;
GtkWidget *progressbar_average_attendance;
GtkWidget *hseparator14;
GtkWidget *vbox43;
GtkWidget *label90;
@ -948,55 +950,96 @@ create_window_stadium (void)
gtk_widget_show (vbox39);
gtk_container_add (GTK_CONTAINER (window_stadium), vbox39);
vbox48 = gtk_vbox_new (FALSE, 3);
gtk_widget_show (vbox48);
gtk_box_pack_start (GTK_BOX (vbox39), vbox48, FALSE, FALSE, 0);
hbox66 = gtk_hbox_new (FALSE, 3);
gtk_widget_show (hbox66);
gtk_box_pack_start (GTK_BOX (vbox48), hbox66, TRUE, TRUE, 0);
table1 = gtk_table_new (5, 2, FALSE);
gtk_widget_show (table1);
gtk_box_pack_start (GTK_BOX (vbox39), table1, FALSE, FALSE, 0);
gtk_table_set_row_spacings (GTK_TABLE (table1), 3);
gtk_table_set_col_spacings (GTK_TABLE (table1), 3);
label106 = gtk_label_new (_("Status: "));
gtk_widget_show (label106);
gtk_box_pack_start (GTK_BOX (hbox66), label106, FALSE, FALSE, 0);
gtk_table_attach (GTK_TABLE (table1), label106, 0, 1, 0, 1,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (0), 0, 0);
gtk_label_set_justify (GTK_LABEL (label106), GTK_JUSTIFY_LEFT);
gtk_misc_set_alignment (GTK_MISC (label106), 0, 0.5);
label_stadium_status = gtk_label_new (_("label107"));
gtk_widget_show (label_stadium_status);
gtk_box_pack_start (GTK_BOX (hbox66), label_stadium_status, FALSE, FALSE, 0);
gtk_table_attach (GTK_TABLE (table1), label_stadium_status, 1, 2, 0, 1,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (0), 0, 0);
gtk_label_set_justify (GTK_LABEL (label_stadium_status), GTK_JUSTIFY_LEFT);
hbox62 = gtk_hbox_new (FALSE, 3);
gtk_widget_show (hbox62);
gtk_box_pack_start (GTK_BOX (vbox48), hbox62, FALSE, FALSE, 0);
gtk_misc_set_alignment (GTK_MISC (label_stadium_status), 0, 0.5);
label101 = gtk_label_new (_("Current capacity:"));
gtk_widget_show (label101);
gtk_box_pack_start (GTK_BOX (hbox62), label101, FALSE, FALSE, 0);
gtk_table_attach (GTK_TABLE (table1), label101, 0, 1, 1, 2,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (0), 0, 0);
gtk_label_set_justify (GTK_LABEL (label101), GTK_JUSTIFY_LEFT);
gtk_misc_set_alignment (GTK_MISC (label101), 0, 0.5);
hbox69 = gtk_hbox_new (FALSE, 0);
gtk_widget_show (hbox69);
gtk_table_attach (GTK_TABLE (table1), hbox69, 1, 2, 1, 2,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (GTK_FILL), 0, 0);
label_capacity = gtk_label_new (_("label104"));
gtk_widget_show (label_capacity);
gtk_box_pack_start (GTK_BOX (hbox62), label_capacity, FALSE, FALSE, 0);
gtk_box_pack_start (GTK_BOX (hbox69), label_capacity, FALSE, FALSE, 0);
gtk_label_set_justify (GTK_LABEL (label_capacity), GTK_JUSTIFY_LEFT);
gtk_misc_set_alignment (GTK_MISC (label_capacity), 0, 0.5);
label102 = gtk_label_new (_("seats"));
label102 = gtk_label_new (_(" seats"));
gtk_widget_show (label102);
gtk_box_pack_start (GTK_BOX (hbox62), label102, FALSE, FALSE, 0);
gtk_box_pack_start (GTK_BOX (hbox69), label102, FALSE, FALSE, 0);
gtk_label_set_justify (GTK_LABEL (label102), GTK_JUSTIFY_LEFT);
hbox63 = gtk_hbox_new (FALSE, 3);
gtk_widget_show (hbox63);
gtk_box_pack_start (GTK_BOX (vbox48), hbox63, FALSE, FALSE, 0);
label103 = gtk_label_new (_("Current safety: "));
gtk_widget_show (label103);
gtk_box_pack_start (GTK_BOX (hbox63), label103, FALSE, FALSE, 0);
gtk_table_attach (GTK_TABLE (table1), label103, 0, 1, 2, 3,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (0), 0, 0);
gtk_label_set_justify (GTK_LABEL (label103), GTK_JUSTIFY_LEFT);
gtk_misc_set_alignment (GTK_MISC (label103), 0, 0.5);
progressbar_safety = gtk_progress_bar_new ();
gtk_widget_show (progressbar_safety);
gtk_box_pack_start (GTK_BOX (hbox63), progressbar_safety, FALSE, FALSE, 0);
gtk_table_attach (GTK_TABLE (table1), progressbar_safety, 1, 2, 2, 3,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (0), 0, 0);
label109 = gtk_label_new (_("Average attendance "));
gtk_widget_show (label109);
gtk_table_attach (GTK_TABLE (table1), label109, 0, 1, 3, 4,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (0), 0, 0);
gtk_label_set_justify (GTK_LABEL (label109), GTK_JUSTIFY_LEFT);
gtk_misc_set_alignment (GTK_MISC (label109), 0, 0.5);
label_average_attendance = gtk_label_new (_("label110"));
gtk_widget_show (label_average_attendance);
gtk_table_attach (GTK_TABLE (table1), label_average_attendance, 1, 2, 3, 4,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (0), 0, 0);
gtk_label_set_justify (GTK_LABEL (label_average_attendance), GTK_JUSTIFY_LEFT);
gtk_misc_set_alignment (GTK_MISC (label_average_attendance), 0, 0.5);
label111 = gtk_label_new (_("Average attendance % "));
gtk_widget_show (label111);
gtk_table_attach (GTK_TABLE (table1), label111, 0, 1, 4, 5,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (0), 0, 0);
gtk_label_set_justify (GTK_LABEL (label111), GTK_JUSTIFY_LEFT);
gtk_misc_set_alignment (GTK_MISC (label111), 0, 0.5);
progressbar_average_attendance = gtk_progress_bar_new ();
gtk_widget_show (progressbar_average_attendance);
gtk_table_attach (GTK_TABLE (table1), progressbar_average_attendance, 1, 2, 4, 5,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (0), 0, 0);
hseparator14 = gtk_hseparator_new ();
gtk_widget_show (hseparator14);
@ -1154,17 +1197,19 @@ create_window_stadium (void)
/* Store pointers to all widgets, for use by lookup_widget(). */
GLADE_HOOKUP_OBJECT_NO_REF (window_stadium, window_stadium, "window_stadium");
GLADE_HOOKUP_OBJECT (window_stadium, vbox39, "vbox39");
GLADE_HOOKUP_OBJECT (window_stadium, vbox48, "vbox48");
GLADE_HOOKUP_OBJECT (window_stadium, hbox66, "hbox66");
GLADE_HOOKUP_OBJECT (window_stadium, table1, "table1");
GLADE_HOOKUP_OBJECT (window_stadium, label106, "label106");
GLADE_HOOKUP_OBJECT (window_stadium, label_stadium_status, "label_stadium_status");
GLADE_HOOKUP_OBJECT (window_stadium, hbox62, "hbox62");
GLADE_HOOKUP_OBJECT (window_stadium, label101, "label101");
GLADE_HOOKUP_OBJECT (window_stadium, hbox69, "hbox69");
GLADE_HOOKUP_OBJECT (window_stadium, label_capacity, "label_capacity");
GLADE_HOOKUP_OBJECT (window_stadium, label102, "label102");
GLADE_HOOKUP_OBJECT (window_stadium, hbox63, "hbox63");
GLADE_HOOKUP_OBJECT (window_stadium, label103, "label103");
GLADE_HOOKUP_OBJECT (window_stadium, progressbar_safety, "progressbar_safety");
GLADE_HOOKUP_OBJECT (window_stadium, label109, "label109");
GLADE_HOOKUP_OBJECT (window_stadium, label_average_attendance, "label_average_attendance");
GLADE_HOOKUP_OBJECT (window_stadium, label111, "label111");
GLADE_HOOKUP_OBJECT (window_stadium, progressbar_average_attendance, "progressbar_average_attendance");
GLADE_HOOKUP_OBJECT (window_stadium, hseparator14, "hseparator14");
GLADE_HOOKUP_OBJECT (window_stadium, vbox43, "vbox43");
GLADE_HOOKUP_OBJECT (window_stadium, label90, "label90");

View File

@ -9,13 +9,12 @@
e.g. whether or not quit requires confirmation. */
enum BooleanOptions
{
BOOL_OPT_CONF_NEW_WEEK = 0,
BOOL_OPT_CONF_QUIT,
BOOL_OPT_CONF_QUIT = 0,
BOOL_OPT_CONF_UNFIT,
BOOL_OPT_SAVE_OVERWRITE,
BOOL_OPT_MAXIMIZE,
BOOL_OPT_PREFER_MESS,
BOOL_OPT_AUTOSAVE,
BOOL_OPT_CONF_UNFIT,
BOOL_OPT_SHOW_LIVE,
BOOL_OPT_SHOW_TENDENCY,
BOOL_OPT_PAUSE_INJURY,
@ -69,14 +68,14 @@ enum BooleanOptions
void
option_gui_write_bool_widgets(gint **bool_options, GtkToggleButton **bool_widgets)
{
bool_widgets[BOOL_OPT_CONF_NEW_WEEK] =
GTK_TOGGLE_BUTTON(lookup_widget(window.options, "checkbutton_conf_new_week_round"));
bool_options[BOOL_OPT_CONF_NEW_WEEK] = opt_intp("int_opt_confirm_new_week_round");
bool_widgets[BOOL_OPT_CONF_QUIT] =
GTK_TOGGLE_BUTTON(lookup_widget(window.options, "checkbutton_conf_quit"));
bool_options[BOOL_OPT_CONF_QUIT] = opt_intp("int_opt_confirm_quit");
bool_widgets[BOOL_OPT_CONF_UNFIT] =
GTK_TOGGLE_BUTTON(lookup_widget(window.options, "checkbutton_conf_unfit"));
bool_options[BOOL_OPT_CONF_UNFIT] = opt_intp("int_opt_confirm_unfit");
bool_widgets[BOOL_OPT_SAVE_OVERWRITE] =
GTK_TOGGLE_BUTTON(lookup_widget(window.options, "checkbutton_save_overwrite"));
bool_options[BOOL_OPT_SAVE_OVERWRITE] = opt_intp("int_opt_save_will_overwrite");
@ -93,10 +92,6 @@ option_gui_write_bool_widgets(gint **bool_options, GtkToggleButton **bool_widget
GTK_TOGGLE_BUTTON(lookup_widget(window.options, "checkbutton_autosave"));
bool_options[BOOL_OPT_AUTOSAVE] = opt_intp("int_opt_autosave");
bool_widgets[BOOL_OPT_CONF_UNFIT] =
GTK_TOGGLE_BUTTON(lookup_widget(window.options, "checkbutton_conf_unfit"));
bool_options[BOOL_OPT_CONF_UNFIT] = opt_user_intp("int_opt_user_confirm_unfit");
bool_widgets[BOOL_OPT_SHOW_LIVE] =
GTK_TOGGLE_BUTTON(lookup_widget(window.options, "checkbutton_show_live"));
bool_options[BOOL_OPT_SHOW_LIVE] = opt_user_intp("int_opt_user_show_live_game");
@ -282,6 +277,7 @@ option_gui_write_bool_widgets(gint **bool_options, GtkToggleButton **bool_widget
enum SpinOptions
{
SPIN_OPT_AUTOSAVE = 0,
SPIN_OPT_AUTOSAVE_FILES,
SPIN_OPT_PRECISION,
SPIN_OPT_REFRESH,
SPIN_OPT_LIVE_SPEED,
@ -296,6 +292,10 @@ option_gui_write_spin_widgets(gint **spin_options, GtkSpinButton **spin_widgets)
GTK_SPIN_BUTTON(lookup_widget(window.options, "spinbutton_autosave"));
spin_options[SPIN_OPT_AUTOSAVE] = opt_intp("int_opt_autosave_interval");
spin_widgets[SPIN_OPT_AUTOSAVE_FILES] =
GTK_SPIN_BUTTON(lookup_widget(window.options, "spinbutton_autosave_files"));
spin_options[SPIN_OPT_AUTOSAVE_FILES] = opt_intp("int_opt_autosave_files");
spin_widgets[SPIN_OPT_PRECISION] =
GTK_SPIN_BUTTON(lookup_widget(window.options, "spinbutton_precision"));
spin_options[SPIN_OPT_PRECISION] = opt_intp("int_opt_player_precision");

View File

@ -34,8 +34,8 @@ create_window_options (void)
GtkWidget *notebook1;
GtkWidget *hbox2;
GtkWidget *vbox3;
GtkWidget *checkbutton_conf_new_week_round;
GtkWidget *checkbutton_conf_quit;
GtkWidget *checkbutton_conf_unfit;
GtkWidget *checkbutton_save_overwrite;
GtkWidget *checkbutton_maximize;
GtkWidget *checkbutton_pref_mess;
@ -46,6 +46,9 @@ create_window_options (void)
GtkWidget *label6;
GtkObject *spinbutton_autosave_adj;
GtkWidget *spinbutton_autosave;
GtkWidget *label36;
GtkObject *spinbutton_autosave_files_adj;
GtkWidget *spinbutton_autosave_files;
GtkWidget *label7;
GtkWidget *label8;
GtkObject *spinbutton_precision_adj;
@ -84,7 +87,6 @@ create_window_options (void)
GtkWidget *label2;
GtkWidget *hbox6;
GtkWidget *vbox6;
GtkWidget *checkbutton_conf_unfit;
GtkWidget *checkbutton_show_job;
GtkWidget *vseparator3;
GtkWidget *vbox7;
@ -190,13 +192,15 @@ create_window_options (void)
gtk_widget_show (vbox3);
gtk_box_pack_start (GTK_BOX (hbox2), vbox3, TRUE, TRUE, 0);
checkbutton_conf_new_week_round = gtk_check_button_new_with_mnemonic (_("Confirm new week round"));
gtk_widget_show (checkbutton_conf_new_week_round);
gtk_box_pack_start (GTK_BOX (vbox3), checkbutton_conf_new_week_round, FALSE, FALSE, 0);
checkbutton_conf_quit = gtk_check_button_new_with_mnemonic (_("Confirm quit"));
checkbutton_conf_quit = gtk_check_button_new_with_mnemonic (_("Confirm quit when not saved"));
gtk_widget_show (checkbutton_conf_quit);
gtk_box_pack_start (GTK_BOX (vbox3), checkbutton_conf_quit, FALSE, FALSE, 0);
gtk_tooltips_set_tip (tooltips, checkbutton_conf_quit, _("Whether to show a confirmation popup when you press quit and the game state is not saved"), NULL);
checkbutton_conf_unfit = gtk_check_button_new_with_mnemonic (_("Confirm when unfit"));
gtk_widget_show (checkbutton_conf_unfit);
gtk_box_pack_start (GTK_BOX (vbox3), checkbutton_conf_unfit, FALSE, FALSE, 0);
gtk_tooltips_set_tip (tooltips, checkbutton_conf_unfit, _("Whether to show a confirmation popup if a user team has an injured or banned player in the startup formation"), NULL);
checkbutton_save_overwrite = gtk_check_button_new_with_mnemonic (_("Save overwrites"));
gtk_widget_show (checkbutton_save_overwrite);
@ -240,8 +244,20 @@ create_window_options (void)
spinbutton_autosave = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_autosave_adj), 1, 0);
gtk_widget_show (spinbutton_autosave);
gtk_box_pack_start (GTK_BOX (hbox3), spinbutton_autosave, FALSE, FALSE, 0);
gtk_tooltips_set_tip (tooltips, spinbutton_autosave, _("How often the game is saved automatically"), NULL);
gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbutton_autosave), TRUE);
label36 = gtk_label_new (_(" Autosave files "));
gtk_widget_show (label36);
gtk_box_pack_start (GTK_BOX (hbox3), label36, FALSE, FALSE, 0);
gtk_label_set_justify (GTK_LABEL (label36), GTK_JUSTIFY_LEFT);
spinbutton_autosave_files_adj = gtk_adjustment_new (1, 0, 100, 1, 10, 10);
spinbutton_autosave_files = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_autosave_files_adj), 1, 0);
gtk_widget_show (spinbutton_autosave_files);
gtk_box_pack_start (GTK_BOX (hbox3), spinbutton_autosave_files, TRUE, TRUE, 0);
gtk_tooltips_set_tip (tooltips, spinbutton_autosave_files, _("How many files the autosave uses"), NULL);
label7 = gtk_label_new (_("Player attribute precision "));
gtk_widget_show (label7);
gtk_table_attach (GTK_TABLE (table1), label7, 0, 1, 1, 2,
@ -418,10 +434,6 @@ create_window_options (void)
gtk_widget_show (vbox6);
gtk_box_pack_start (GTK_BOX (hbox6), vbox6, TRUE, TRUE, 0);
checkbutton_conf_unfit = gtk_check_button_new_with_mnemonic (_("Confirm when unfit"));
gtk_widget_show (checkbutton_conf_unfit);
gtk_box_pack_start (GTK_BOX (vbox6), checkbutton_conf_unfit, FALSE, FALSE, 0);
checkbutton_show_job = gtk_check_button_new_with_mnemonic (_("Show job offers"));
gtk_widget_show (checkbutton_show_job);
gtk_box_pack_start (GTK_BOX (vbox6), checkbutton_show_job, FALSE, FALSE, 0);
@ -914,8 +926,8 @@ create_window_options (void)
GLADE_HOOKUP_OBJECT (window_options, notebook1, "notebook1");
GLADE_HOOKUP_OBJECT (window_options, hbox2, "hbox2");
GLADE_HOOKUP_OBJECT (window_options, vbox3, "vbox3");
GLADE_HOOKUP_OBJECT (window_options, checkbutton_conf_new_week_round, "checkbutton_conf_new_week_round");
GLADE_HOOKUP_OBJECT (window_options, checkbutton_conf_quit, "checkbutton_conf_quit");
GLADE_HOOKUP_OBJECT (window_options, checkbutton_conf_unfit, "checkbutton_conf_unfit");
GLADE_HOOKUP_OBJECT (window_options, checkbutton_save_overwrite, "checkbutton_save_overwrite");
GLADE_HOOKUP_OBJECT (window_options, checkbutton_maximize, "checkbutton_maximize");
GLADE_HOOKUP_OBJECT (window_options, checkbutton_pref_mess, "checkbutton_pref_mess");
@ -925,6 +937,8 @@ create_window_options (void)
GLADE_HOOKUP_OBJECT (window_options, hbox3, "hbox3");
GLADE_HOOKUP_OBJECT (window_options, label6, "label6");
GLADE_HOOKUP_OBJECT (window_options, spinbutton_autosave, "spinbutton_autosave");
GLADE_HOOKUP_OBJECT (window_options, label36, "label36");
GLADE_HOOKUP_OBJECT (window_options, spinbutton_autosave_files, "spinbutton_autosave_files");
GLADE_HOOKUP_OBJECT (window_options, label7, "label7");
GLADE_HOOKUP_OBJECT (window_options, label8, "label8");
GLADE_HOOKUP_OBJECT (window_options, spinbutton_precision, "spinbutton_precision");
@ -960,7 +974,6 @@ create_window_options (void)
GLADE_HOOKUP_OBJECT (window_options, label2, "label2");
GLADE_HOOKUP_OBJECT (window_options, hbox6, "hbox6");
GLADE_HOOKUP_OBJECT (window_options, vbox6, "vbox6");
GLADE_HOOKUP_OBJECT (window_options, checkbutton_conf_unfit, "checkbutton_conf_unfit");
GLADE_HOOKUP_OBJECT (window_options, checkbutton_show_job, "checkbutton_show_job");
GLADE_HOOKUP_OBJECT (window_options, vseparator3, "vseparator3");
GLADE_HOOKUP_OBJECT (window_options, vbox7, "vbox7");

View File

@ -1021,3 +1021,54 @@ player_update_week_roundly(Team *tm, gint idx)
pl->cskill = (pl->health > 0 || player_is_banned(pl) > 0) ?
0 : player_get_cskill(pl, pl->cpos);
}
/** Return injury descriptions. */
gchar*
player_injury_to_char(gint injury_type)
{
switch(injury_type)
{
default:
g_warning("player_injury_to_char: unknown type %d\n", injury_type);
return NULL;
break;
case PLAYER_INJURY_NONE:
return _("OK");
break;
case PLAYER_INJURY_CONCUSSION:
return _("Concussion");
break;
case PLAYER_INJURY_PULLED_MUSCLE:
return _("Pulled muscle");
break;
case PLAYER_INJURY_HAMSTRING:
return _("Hamstring");
break;
case PLAYER_INJURY_GROIN:
return _("Groin injury");
break;
case PLAYER_INJURY_FRAC_ANKLE:
return _("Fractured ankle");
break;
case PLAYER_INJURY_RIB:
return _("Broken rib");
break;
case PLAYER_INJURY_LEG:
return _("Broken leg");
break;
case PLAYER_INJURY_BROK_ANKLE:
return _("Broken ankle");
break;
case PLAYER_INJURY_ARM:
return _("Broken arm");
break;
case PLAYER_INJURY_SHOULDER:
return _("Broken shoulder");
break;
case PLAYER_INJURY_LIGAMENT:
return _("Torn crucial ligament");
break;
}
return NULL;
}

View File

@ -130,4 +130,8 @@ player_update_injury(Player *pl);
void
player_copy(Player *pl, Team *tm, gint insert_at);
gchar*
player_injury_to_char(gint injury_type);
#endif

View File

@ -6,6 +6,7 @@
#include "gui.h"
#include "league.h"
#include "live_game.h"
#include "load_save.h"
#include "main.h"
#include "maths.h"
#include "option.h"
@ -24,7 +25,7 @@ typedef void(*WeekFunc)(void);
/** Array of functions called when a week round
is ended. */
WeekFunc end_week_round_funcs[] =
{end_week_round_results, end_week_round_sort_tables,
{end_week_round_autosave, end_week_round_results, end_week_round_sort_tables,
end_week_round_update_fixtures, NULL};
/** Array of functions called when a week round
@ -249,14 +250,15 @@ start_week_round(void)
start_func++;
}
if(!user_games_this_week_round())
if(!query_user_games_this_week_round())
end_week_round();
else
{
cur_user = 0;
game_gui_show_main();
if(week_round == 1)
/*d ??*/
/* if(week_round == 1) */
user_event_show_next();
}
}
@ -324,3 +326,17 @@ start_week_update_users(void)
user_weekly_update_counters(&usr(i));
}
}
/** Save the game if autosave is on. */
void
end_week_round_autosave(void)
{
if(!opt_int("int_opt_autosave") ||
!query_user_games_this_week_round())
return;
counters[COUNT_AUTOSAVE] = (counters[COUNT_AUTOSAVE] + 1) % opt_int("int_opt_autosave_interval");
if(counters[COUNT_AUTOSAVE] == 0)
load_save_autosave();
}

View File

@ -48,4 +48,7 @@ start_week_update_user_finances(void);
void
start_week_update_users(void);
void
end_week_round_autosave(void);
#endif

View File

@ -2158,3 +2158,106 @@ treeview_show_preview(void)
gtk_tree_view_set_model(treeview, model);
g_object_unref(model);
}
GtkTreeModel*
treeview_create_player_info(const Player *pl)
{
gint i;
gchar buf[SMALL];
gint pos[2] = {pl->pos, pl->cpos};
GtkListStore *liststore = gtk_list_store_new(2,
G_TYPE_STRING,
G_TYPE_STRING);
GtkTreeIter iter;
gtk_list_store_append(liststore, &iter);
gtk_list_store_set(liststore, &iter, 0, _("Name"), 1,
pl->name->str, -1);
/* for(i=0;i<2;i++) */
/* { */
/* if(pos[i] == PLAYER_POS_GOALIE) */
/* sprintf(buf, "<span background='%s' foreground='%s'>%s</span>", */
/* const_str("string_treeview_cell_color_player_pos_goalie_bg"), */
/* const_str("string_treeview_cell_color_player_pos_goalie_fg"), */
/* _("Goalkeeper")); */
/* else if(pos[i] == PLAYER_POS_DEFENDER) */
/* sprintf(buf, "<span background='%s' foreground='%s'>%s</span>", */
/* const_str("string_treeview_cell_color_player_pos_defender_bg"), */
/* const_str("string_treeview_cell_color_player_pos_defender_fg"), */
/* _("Defender")); */
/* else if(pos[i] == PLAYER_POS_MIDFIELDER) */
/* sprintf(buf, "<span background='%s' foreground='%s'>%s</span>", */
/* const_str("string_treeview_cell_color_player_pos_midfielder_bg"), */
/* const_str("string_treeview_cell_color_player_pos_midfielder_fg"), */
/* _("Midfielder")); */
/* else if(pos[i] == PLAYER_POS_FORWARD) */
/* sprintf(buf, "<span background='%s' foreground='%s'>%s</span>", */
/* const_str("string_treeview_cell_color_player_pos_forward_bg"), */
/* const_str("string_treeview_cell_color_player_pos_forward_fg"), */
/* _("Forward")); */
/* gtk_list_store_append(liststore, &iter); */
/* if(i == 0) */
/* gtk_list_store_set(liststore, &iter, 0, _("Position"), 1, */
/* buf, -1); */
/* else */
/* gtk_list_store_set(liststore, &iter, 0, _("Current position"), 1, */
/* buf, -1); */
/* } */
/* gtk_list_store_append(liststore, &iter); */
/* sprintf(buf, "%" */
/* gtk_list_store_set(liststore, &iter, 0, _("Skill"), */
/* gtk_list_store_append(liststore, &iter); */
/* if(pl->health != 0) */
/* sprintf(buf, "%s (expected recovery in %d weeks)", */
/* player_injury_to_char(pl->health), pl->recovery); */
/* else */
/* strcpy(buf, "OK"); */
/* gtk_list_store_set(liststore, &iter, 0, _("Health"), 1, buf, -1); */
return GTK_TREE_MODEL(liststore);
}
void
treeview_set_up_player_info(GtkTreeView *treeview)
{
gint i;
GtkTreeViewColumn *col;
GtkCellRenderer *renderer;
gtk_tree_selection_set_mode(gtk_tree_view_get_selection(treeview),
GTK_SELECTION_NONE);
gtk_tree_view_set_rules_hint(treeview, TRUE);
gtk_tree_view_set_headers_visible(treeview, FALSE);
for(i=0;i<2;i++)
{
col = gtk_tree_view_column_new();
gtk_tree_view_append_column(treeview, col);
renderer = treeview_cell_renderer_text_new();
gtk_tree_view_column_pack_start(col, renderer, FALSE);
gtk_tree_view_column_add_attribute(col, renderer,
"markup", i);
}
}
/** Show extended information about the player in the right treeview. */
void
treeview_show_player_info(const Player *pl)
{
GtkTreeView *treeview = GTK_TREE_VIEW(lookup_widget(window.main, "treeview_right"));
GtkTreeModel *model = NULL;
treeview_clear(treeview);
treeview_set_up_player_info(treeview);
model = treeview_create_player_info(pl);
gtk_tree_view_set_model(treeview, model);
g_object_unref(model);
}

View File

@ -198,4 +198,13 @@ treeview_create_preview(void);
void
treeview_show_preview(void);
void
treeview_show_player_info(const Player *pl);
void
treeview_set_up_player_info(GtkTreeView *treeview);
GtkTreeModel*
treeview_create_player_info(const Player *pl);
#endif

View File

@ -8,6 +8,7 @@
#include "player.h"
#include "team.h"
#include "transfer.h"
#include "treeview.h"
#include "user.h"
#include "window.h"
@ -153,7 +154,20 @@ user_set_player_list_attributes(const User *user, PlayerListAttribute *attribute
/** Find out whether there are user games at the specified date. */
gboolean
user_games_in_week_round(gint week_number, gint week_round_number)
query_user_games_in_week_round(gint week_number, gint week_round_number)
{
gint i;
for(i=0;i<users->len;i++)
if(query_user_game_in_week_round(i, week_number, week_round_number))
return TRUE;
return FALSE;
}
/** Find out whether the specified user has a match at the specified date. */
gboolean
query_user_game_in_week_round(gint usr_idx, gint week_number, gint week_round_number)
{
gint i, j;
@ -161,7 +175,7 @@ user_games_in_week_round(gint week_number, gint week_round_number)
{
for(i=0;i<ligs->len;i++)
for(j=0;j<lig(i).fixtures->len;j++)
if(fixture_user_team_involved(&g_array_index(lig(i).fixtures, Fixture, j)) != -1 &&
if(fixture_user_team_involved(&g_array_index(lig(i).fixtures, Fixture, j)) == usr_idx &&
g_array_index(lig(i).fixtures, Fixture, j).week_number == week_number &&
g_array_index(lig(i).fixtures, Fixture, j).week_round_number == week_round_number)
return TRUE;
@ -170,7 +184,7 @@ user_games_in_week_round(gint week_number, gint week_round_number)
{
for(i=0;i<cps->len;i++)
for(j=0;j<cp(i).fixtures->len;j++)
if(fixture_user_team_involved(&g_array_index(cp(i).fixtures, Fixture, j)) != -1 &&
if(fixture_user_team_involved(&g_array_index(cp(i).fixtures, Fixture, j)) == usr_idx &&
g_array_index(cp(i).fixtures, Fixture, j).week_number == week_number &&
g_array_index(cp(i).fixtures, Fixture, j).week_round_number == week_round_number)
return TRUE;
@ -179,6 +193,7 @@ user_games_in_week_round(gint week_number, gint week_round_number)
return FALSE;
}
/** Get the user managing the team.
@param tm The team.
@return A pointer to the user. */
@ -310,12 +325,9 @@ user_event_show_next(void)
gint temp_int = -1;
if(current_user.events->len == 0)
{
stat0 = STATUS_MAIN;
return;
}
stat0 = STATUS_SHOW_EVENT;
stat1 = STATUS_SHOW_EVENT;
event = &g_array_index(current_user.events, Event, 0);
@ -377,15 +389,27 @@ user_event_show_next(void)
sprintf(buf, _("%s would like to buy %s. They offer %s for him, which is %s than the player's value. Do you accept?"), transoff(temp_int, 0).tm->name->str,
player_of_id(event->user->tm, trans(temp_int).id)->name->str,
buf2, buf3);
stat0 = STATUS_TRANSFER_OFFER;
stat1 = temp_int;
window_show_yesno(buf, FALSE);
stat1 = STATUS_TRANSFER_OFFER;
stat2 = temp_int;
window_show_yesno(buf);
break;
case EVENT_TYPE_TRANSFER_OFFER_OUTBID:
sprintf(buf, _("There was a higher bid for %s than yours."),
event->value_string->str);
game_gui_show_warning(buf);
break;
case EVENT_TYPE_PLAYER_CAREER_STOP:
sprintf(buf, _("%s's injury was so severe that he can't play football on a professional level anymore. He leaves your team."), player_of_id(event->user->tm, event->value1)->name->str);
if(event->user->tm->players->len < 12)
{
strcat(buf, _(" Fortunately he's got a cousin who can help your team out."));
player_replace_by_new(player_of_id(event->user->tm, event->value1), TRUE);
}
else
player_remove_from_team(event->user->tm, player_id_index(event->user->tm, event->value1));
treeview_show_user_player_list();
game_gui_show_warning(buf);
break;
}
user_event_remove(&current_user, 0);
@ -417,3 +441,24 @@ user_get_index(User *user)
return -1;
}
/** Check whether one of the user teams has an unfit player
in the startup formation. */
gboolean
query_user_teams_have_unfit(void)
{
gint i, j;
for(i=0;i<users->len;i++)
{
if(query_user_game_in_week_round(i, week, week_round))
{
for(j=0;j<11;j++)
if(g_array_index(usr(i).tm->players, Player, j).health != 0 ||
player_is_banned(&g_array_index(usr(i).tm->players, Player, j)))
return TRUE;
}
}
return FALSE;
}

View File

@ -7,7 +7,7 @@
/** Convenience abbrevs. */
#define usr(i) g_array_index(users, User, i)
#define user_games_this_week_round() user_games_in_week_round(week, week_round)
#define query_user_games_this_week_round() query_user_games_in_week_round(week, week_round)
#define current_user usr(cur_user)
void
@ -29,7 +29,10 @@ void
user_set_player_list_attributes(const User *user, PlayerListAttribute *attribute, gint list_number);
gboolean
user_games_in_week_round(gint week_number, gint week_round_number);
query_user_game_in_week_round(gint usr_idx, gint week_number, gint week_round_number);
gboolean
query_user_games_in_week_round(gint week_number, gint week_round_number);
User*
user_from_team(const Team *tm);
@ -63,4 +66,7 @@ gint
user_event_get_index(User *user, gint type, gint value1, gint value2,
gpointer value_pointer, gchar *value_string);
gboolean
query_user_teams_have_unfit(void);
#endif

View File

@ -89,6 +89,7 @@ enum EventType
EVENT_TYPE_TRANSFER_OFFER_ROSTER,
EVENT_TYPE_TRANSFER_OFFER_ACCEPTED,
EVENT_TYPE_TRANSFER_OFFER_OUTBID,
EVENT_TYPE_PLAYER_CAREER_STOP,
EVENT_TYPE_END
};

View File

@ -30,6 +30,9 @@ OptionList constants;
@see TransferPlayer */
GArray *transfer_list;
/** Some counters we use. */
gint counters[COUNT_END];
/** These help us keep track of what's happening. */
gint status[6];

View File

@ -130,9 +130,11 @@ window_show_stadium(void)
GtkLabel *label_capacity,
*label_costs_capacity, *label_costs_safety,
*label_duration_capacity, *label_duration_safety,
*label_stadium_status;
*label_stadium_status, *label_average_attendance;
GtkSpinButton *spinbutton_capacity, *spinbutton_safety;
GtkProgressBar *progressbar_safety;
GtkProgressBar *progressbar_safety,
*progressbar_average_attendance;
gfloat average_attendance_perc = 0;
window_create(WINDOW_STADIUM);
@ -142,11 +144,13 @@ window_show_stadium(void)
label_duration_capacity = GTK_LABEL(lookup_widget(window.stadium, "label_duration_capacity"));
label_duration_safety = GTK_LABEL(lookup_widget(window.stadium, "label_duration_safety"));
label_stadium_status = GTK_LABEL(lookup_widget(window.stadium, "label_stadium_status"));
label_average_attendance = GTK_LABEL(lookup_widget(window.stadium, "label_average_attendance"));
spinbutton_capacity = GTK_SPIN_BUTTON(lookup_widget(window.stadium, "spinbutton_capacity"));
spinbutton_safety = GTK_SPIN_BUTTON(lookup_widget(window.stadium, "spinbutton_safety"));
progressbar_safety = GTK_PROGRESS_BAR(lookup_widget(window.stadium, "progressbar_safety"));
progressbar_average_attendance = GTK_PROGRESS_BAR(lookup_widget(window.stadium, "progressbar_average_attendance"));
gui_label_set_text_from_int(label_capacity, tm->stadium.capacity, FALSE);
gui_label_set_text_from_int(label_costs_capacity,
@ -159,17 +163,28 @@ window_show_stadium(void)
100)), FALSE);
gui_label_set_text_from_int(label_duration_capacity, 1, FALSE);
gui_label_set_text_from_int(label_duration_safety, 1, FALSE);
gui_label_set_text_from_int(label_average_attendance, tm->stadium.average_attendance, FALSE);
gtk_spin_button_set_value(spinbutton_capacity,
(gdouble)const_int("int_stadium_improvement_base_seats"));
gtk_spin_button_set_value(spinbutton_safety,
const_float("float_stadium_improvement_base_safety") * 100);
if(tm->stadium.games > 0)
average_attendance_perc =
(gfloat)(tm->stadium.average_attendance * tm->stadium.games) /
(gfloat)tm->stadium.possible_attendance;
gtk_progress_bar_set_fraction(progressbar_safety, tm->stadium.safety);
gtk_progress_bar_set_fraction(progressbar_average_attendance, average_attendance_perc);
sprintf(buf, "%d%%", (gint)rint(tm->stadium.safety * 100));
gtk_progress_bar_set_text(progressbar_safety, buf);
sprintf(buf, "%d%%", (gint)rint(average_attendance_perc * 100));
gtk_progress_bar_set_text(progressbar_average_attendance, buf);
if(current_user.counters[COUNT_USER_STADIUM_CAPACITY] +
current_user.counters[COUNT_USER_STADIUM_SAFETY] != 0)
{
@ -198,14 +213,11 @@ window_show(gpointer window)
@param text The text shown in the window.
@param checkbutton Whether to show the checkbutton. */
void
window_show_yesno(gchar *text, gboolean checkbutton)
window_show_yesno(gchar *text)
{
window_create(WINDOW_YESNO);
gtk_label_set_text(GTK_LABEL(lookup_widget(window.yesno, "label_yesno")), text);
if(!checkbutton)
gtk_widget_hide(lookup_widget(window.yesno, "checkbutton_yesno"));
}
/** Create and show a window. Which one depends on the argument.

View File

@ -43,7 +43,7 @@ void
window_show_stadium(void);
void
window_show_yesno(gchar *text, gboolean checkbutton);
window_show_yesno(gchar *text);
void
window_show_options(void);

View File

@ -75,7 +75,6 @@ xml_country_read_start_element (GMarkupParseContext *context,
}
else if(strcmp(element_name, TAG_CUP) == 0)
state = STATE_CUP;
else if(strcmp(element_name, TAG_COUNTRY) != 0)
g_warning("xml_country_read_start_element: unknown tag: %s; I'm in state %d\n",
element_name, state);

View File

@ -12,10 +12,11 @@ enum XmlLoadSaveCountryTags
TAG_MISC_SEASON,
TAG_MISC_WEEK,
TAG_MISC_WEEK_ROUND,
TAG_MISC_COUNTER,
TAG_END
};
gint state;
gint state, countidx;
void
xml_loadsave_misc_start_element (GMarkupParseContext *context,
@ -43,6 +44,9 @@ xml_loadsave_misc_start_element (GMarkupParseContext *context,
valid_tag = TRUE;
}
if(tag == TAG_MISC)
countidx = 0;
if(!valid_tag)
g_warning("xml_loadsave_misc_start_element: unknown tag: %s; I'm in state %d\n",
element_name, state);
@ -59,10 +63,15 @@ xml_loadsave_misc_end_element (GMarkupParseContext *context,
if(tag == TAG_NAME ||
tag == TAG_SYMBOL ||
tag == TAG_SID ||
tag == TAG_MISC_COUNTER ||
tag == TAG_MISC_SEASON ||
tag == TAG_MISC_WEEK ||
tag == TAG_MISC_WEEK_ROUND)
{
state = TAG_MISC;
if(tag == TAG_MISC_COUNTER)
countidx++;
}
else if(tag != TAG_MISC)
g_warning("xml_loadsave_misc_end_element: unknown tag: %s; I'm in state %d\n",
element_name, state);
@ -95,6 +104,8 @@ xml_loadsave_misc_text (GMarkupParseContext *context,
week = int_value;
else if(state == TAG_MISC_WEEK_ROUND)
week_round = int_value;
else if(state == TAG_MISC_COUNTER)
counters[countidx] = int_value;
}
@ -139,6 +150,7 @@ xml_loadsave_misc_read(const gchar *dirname, const gchar *basename)
void
xml_loadsave_misc_write(const gchar *prefix)
{
gint i;
gchar buf[SMALL];
FILE *fil = NULL;
@ -155,6 +167,9 @@ xml_loadsave_misc_write(const gchar *prefix)
xml_write_int(fil, week, TAG_MISC_WEEK, I0);
xml_write_int(fil, week_round, TAG_MISC_WEEK_ROUND, I0);
for(i=0;i<COUNT_END;i++)
xml_write_int(fil, counters[i], TAG_MISC_COUNTER, I0);
fprintf(fil, "</_%d>\n", TAG_MISC);
fclose(fil);
}

View File

@ -4,13 +4,14 @@
# Most of these options are uncommented because their meaning
# is rather clear if you take a look at the options window in the game.
int_opt_confirm_new_week_round 1
int_opt_confirm_quit 1
int_opt_confirm_quit 0
int_opt_confirm_unfit 0
int_opt_save_will_overwrite 1
int_opt_maximize_main_window 1
int_opt_prefer_messages 0
int_opt_autosave 0
int_opt_autosave_interval 3
int_opt_autosave_files 3
# precision of skill and talent in player lists
int_opt_player_precision 0

View File

@ -11,7 +11,6 @@ int_opt_user_pause_injury 1
int_opt_user_pause_red 1
int_opt_user_pause_break 1
int_opt_user_auto_sub 1
int_opt_user_confirm_unfit 1
int_opt_user_show_job_offers 1
int_opt_user_swap_adapts 1
int_opt_user_show_overall 0

View File

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<cup>
<name>Promotion Games</name>
<short_name>Prom. Gam.</short_name>
<symbol>flag_br.png</symbol>
<sid>brazil_prom_games</sid>
<type>national</type>
<cup_rounds>
<cup_round>
<home_away>1</home_away>
</cup_round>
<cup_round>
<home_away>0</home_away>
</cup_round>
</cup_rounds>
<choose_teams>
<choose_team>
<number_of_teams>8</number_of_teams>
<start_idx>1</start_idx>
<end_idx>8</end_idx>
</choose_team>
</choose_teams>
</cup>