"Job exchange, first buggy draft with lots of debugging output."

This commit is contained in:
gyboth 2005-12-01 11:50:54 +00:00
parent 8a3ffc7c4a
commit 15ad0cbb01
66 changed files with 1295 additions and 757 deletions

View File

@ -68,7 +68,7 @@
<accelerator key="l" modifiers="GDK_CONTROL_MASK | GDK_SHIFT_MASK" signal="activate"/> <accelerator key="l" modifiers="GDK_CONTROL_MASK | GDK_SHIFT_MASK" signal="activate"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image2192"> <widget class="GtkImage" id="image2274">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock">gtk-revert-to-saved</property> <property name="stock">gtk-revert-to-saved</property>
<property name="icon_size">1</property> <property name="icon_size">1</property>
@ -136,7 +136,7 @@
<accelerator key="p" modifiers="GDK_CONTROL_MASK" signal="activate"/> <accelerator key="p" modifiers="GDK_CONTROL_MASK" signal="activate"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image2193"> <widget class="GtkImage" id="image2275">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock">gtk-preferences</property> <property name="stock">gtk-preferences</property>
<property name="icon_size">1</property> <property name="icon_size">1</property>
@ -200,7 +200,7 @@
<signal name="activate" handler="on_menu_save_window_geometry_activate" last_modification_time="Tue, 27 Sep 2005 10:09:53 GMT"/> <signal name="activate" handler="on_menu_save_window_geometry_activate" last_modification_time="Tue, 27 Sep 2005 10:09:53 GMT"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image2194"> <widget class="GtkImage" id="image2276">
<property name="visible">True</property> <property name="visible">True</property>
<property name="pixbuf">menu_save_geometry.png</property> <property name="pixbuf">menu_save_geometry.png</property>
<property name="xalign">0.5</property> <property name="xalign">0.5</property>
@ -234,7 +234,7 @@
<accelerator key="F3" modifiers="0" signal="activate"/> <accelerator key="F3" modifiers="0" signal="activate"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image2195"> <widget class="GtkImage" id="image2277">
<property name="visible">True</property> <property name="visible">True</property>
<property name="pixbuf">menu_fixtures.png</property> <property name="pixbuf">menu_fixtures.png</property>
<property name="xalign">0.5</property> <property name="xalign">0.5</property>
@ -255,7 +255,7 @@
<accelerator key="F4" modifiers="0" signal="activate"/> <accelerator key="F4" modifiers="0" signal="activate"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image2196"> <widget class="GtkImage" id="image2278">
<property name="visible">True</property> <property name="visible">True</property>
<property name="pixbuf">menu_fixtures_comp.png</property> <property name="pixbuf">menu_fixtures_comp.png</property>
<property name="xalign">0.5</property> <property name="xalign">0.5</property>
@ -276,7 +276,7 @@
<accelerator key="F5" modifiers="0" signal="activate"/> <accelerator key="F5" modifiers="0" signal="activate"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image2197"> <widget class="GtkImage" id="image2279">
<property name="visible">True</property> <property name="visible">True</property>
<property name="pixbuf">menu_table.png</property> <property name="pixbuf">menu_table.png</property>
<property name="xalign">0.5</property> <property name="xalign">0.5</property>
@ -297,7 +297,7 @@
<accelerator key="F6" modifiers="0" signal="activate"/> <accelerator key="F6" modifiers="0" signal="activate"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image2198"> <widget class="GtkImage" id="image2280">
<property name="visible">True</property> <property name="visible">True</property>
<property name="pixbuf">menu_league_results.png</property> <property name="pixbuf">menu_league_results.png</property>
<property name="xalign">0.5</property> <property name="xalign">0.5</property>
@ -318,7 +318,7 @@
<accelerator key="s" modifiers="GDK_SHIFT_MASK" signal="activate"/> <accelerator key="s" modifiers="GDK_SHIFT_MASK" signal="activate"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image2199"> <widget class="GtkImage" id="image2281">
<property name="visible">True</property> <property name="visible">True</property>
<property name="pixbuf">menu_season_res.png</property> <property name="pixbuf">menu_season_res.png</property>
<property name="xalign">0.5</property> <property name="xalign">0.5</property>
@ -345,7 +345,7 @@
<accelerator key="s" modifiers="0" signal="activate"/> <accelerator key="s" modifiers="0" signal="activate"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image2200"> <widget class="GtkImage" id="image2282">
<property name="visible">True</property> <property name="visible">True</property>
<property name="pixbuf">menu_league_stats.png</property> <property name="pixbuf">menu_league_stats.png</property>
<property name="xalign">0.5</property> <property name="xalign">0.5</property>
@ -366,7 +366,7 @@
<accelerator key="h" modifiers="0" signal="activate"/> <accelerator key="h" modifiers="0" signal="activate"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image2201"> <widget class="GtkImage" id="image2283">
<property name="visible">True</property> <property name="visible">True</property>
<property name="pixbuf">menu_history.png</property> <property name="pixbuf">menu_history.png</property>
<property name="xalign">0.5</property> <property name="xalign">0.5</property>
@ -398,7 +398,7 @@
<property name="use_underline">True</property> <property name="use_underline">True</property>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image2202"> <widget class="GtkImage" id="image2284">
<property name="visible">True</property> <property name="visible">True</property>
<property name="pixbuf">menu_style.png</property> <property name="pixbuf">menu_style.png</property>
<property name="xalign">0.5</property> <property name="xalign">0.5</property>
@ -416,7 +416,7 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="label" translatable="yes">All Out Defend</property> <property name="label" translatable="yes">All Out Defend</property>
<property name="use_underline">True</property> <property name="use_underline">True</property>
<property name="active">True</property> <property name="active">False</property>
<signal name="button_release_event" handler="on_menu_team_button_release_event" last_modification_time="Mon, 28 Feb 2005 08:16:56 GMT"/> <signal name="button_release_event" handler="on_menu_team_button_release_event" last_modification_time="Mon, 28 Feb 2005 08:16:56 GMT"/>
</widget> </widget>
</child> </child>
@ -426,7 +426,7 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="label" translatable="yes">Defend</property> <property name="label" translatable="yes">Defend</property>
<property name="use_underline">True</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> <property name="group">menu_all_out_defend</property>
<signal name="button_release_event" handler="on_menu_team_button_release_event" last_modification_time="Mon, 28 Feb 2005 08:17:07 GMT"/> <signal name="button_release_event" handler="on_menu_team_button_release_event" last_modification_time="Mon, 28 Feb 2005 08:17:07 GMT"/>
</widget> </widget>
@ -437,7 +437,7 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="label" translatable="yes">Balanced</property> <property name="label" translatable="yes">Balanced</property>
<property name="use_underline">True</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> <property name="group">menu_all_out_defend</property>
<signal name="button_release_event" handler="on_menu_team_button_release_event" last_modification_time="Mon, 28 Feb 2005 08:17:14 GMT"/> <signal name="button_release_event" handler="on_menu_team_button_release_event" last_modification_time="Mon, 28 Feb 2005 08:17:14 GMT"/>
</widget> </widget>
@ -448,7 +448,7 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="label" translatable="yes">Attack</property> <property name="label" translatable="yes">Attack</property>
<property name="use_underline">True</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> <property name="group">menu_all_out_defend</property>
<signal name="button_release_event" handler="on_menu_team_button_release_event" last_modification_time="Mon, 28 Feb 2005 08:17:20 GMT"/> <signal name="button_release_event" handler="on_menu_team_button_release_event" last_modification_time="Mon, 28 Feb 2005 08:17:20 GMT"/>
</widget> </widget>
@ -476,7 +476,7 @@
<property name="use_underline">True</property> <property name="use_underline">True</property>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image2203"> <widget class="GtkImage" id="image2285">
<property name="visible">True</property> <property name="visible">True</property>
<property name="pixbuf">menu_scout.png</property> <property name="pixbuf">menu_scout.png</property>
<property name="xalign">0.5</property> <property name="xalign">0.5</property>
@ -494,7 +494,7 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="label" translatable="yes">Best</property> <property name="label" translatable="yes">Best</property>
<property name="use_underline">True</property> <property name="use_underline">True</property>
<property name="active">True</property> <property name="active">False</property>
<signal name="button_release_event" handler="on_menu_team_button_release_event" last_modification_time="Mon, 28 Feb 2005 08:15:47 GMT"/> <signal name="button_release_event" handler="on_menu_team_button_release_event" last_modification_time="Mon, 28 Feb 2005 08:15:47 GMT"/>
</widget> </widget>
</child> </child>
@ -504,7 +504,7 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="label" translatable="yes">Good</property> <property name="label" translatable="yes">Good</property>
<property name="use_underline">True</property> <property name="use_underline">True</property>
<property name="active">True</property> <property name="active">False</property>
<property name="group">menu_scout_best</property> <property name="group">menu_scout_best</property>
<signal name="button_release_event" handler="on_menu_team_button_release_event" last_modification_time="Mon, 28 Feb 2005 08:15:35 GMT"/> <signal name="button_release_event" handler="on_menu_team_button_release_event" last_modification_time="Mon, 28 Feb 2005 08:15:35 GMT"/>
</widget> </widget>
@ -515,7 +515,7 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="label" translatable="yes">Average</property> <property name="label" translatable="yes">Average</property>
<property name="use_underline">True</property> <property name="use_underline">True</property>
<property name="active">True</property> <property name="active">False</property>
<property name="group">menu_scout_best</property> <property name="group">menu_scout_best</property>
<signal name="button_release_event" handler="on_menu_team_button_release_event" last_modification_time="Mon, 28 Feb 2005 08:15:54 GMT"/> <signal name="button_release_event" handler="on_menu_team_button_release_event" last_modification_time="Mon, 28 Feb 2005 08:15:54 GMT"/>
</widget> </widget>
@ -543,7 +543,7 @@
<property name="use_underline">True</property> <property name="use_underline">True</property>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image2204"> <widget class="GtkImage" id="image2286">
<property name="visible">True</property> <property name="visible">True</property>
<property name="pixbuf">menu_physio.png</property> <property name="pixbuf">menu_physio.png</property>
<property name="xalign">0.5</property> <property name="xalign">0.5</property>
@ -561,7 +561,7 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="label" translatable="yes">Best</property> <property name="label" translatable="yes">Best</property>
<property name="use_underline">True</property> <property name="use_underline">True</property>
<property name="active">True</property> <property name="active">False</property>
<signal name="button_release_event" handler="on_menu_team_button_release_event" last_modification_time="Mon, 28 Feb 2005 08:16:14 GMT"/> <signal name="button_release_event" handler="on_menu_team_button_release_event" last_modification_time="Mon, 28 Feb 2005 08:16:14 GMT"/>
</widget> </widget>
</child> </child>
@ -571,7 +571,7 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="label" translatable="yes">Good</property> <property name="label" translatable="yes">Good</property>
<property name="use_underline">True</property> <property name="use_underline">True</property>
<property name="active">True</property> <property name="active">False</property>
<property name="group">menu_physio_best</property> <property name="group">menu_physio_best</property>
<signal name="button_release_event" handler="on_menu_team_button_release_event" last_modification_time="Mon, 28 Feb 2005 08:16:21 GMT"/> <signal name="button_release_event" handler="on_menu_team_button_release_event" last_modification_time="Mon, 28 Feb 2005 08:16:21 GMT"/>
</widget> </widget>
@ -582,7 +582,7 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="label" translatable="yes">Average</property> <property name="label" translatable="yes">Average</property>
<property name="use_underline">True</property> <property name="use_underline">True</property>
<property name="active">True</property> <property name="active">False</property>
<property name="group">menu_physio_best</property> <property name="group">menu_physio_best</property>
<signal name="button_release_event" handler="on_menu_team_button_release_event" last_modification_time="Mon, 28 Feb 2005 08:16:28 GMT"/> <signal name="button_release_event" handler="on_menu_team_button_release_event" last_modification_time="Mon, 28 Feb 2005 08:16:28 GMT"/>
</widget> </widget>
@ -610,7 +610,7 @@
<property name="use_underline">True</property> <property name="use_underline">True</property>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image2205"> <widget class="GtkImage" id="image2287">
<property name="visible">True</property> <property name="visible">True</property>
<property name="pixbuf">menu_youth_academy.png</property> <property name="pixbuf">menu_youth_academy.png</property>
<property name="xalign">0.5</property> <property name="xalign">0.5</property>
@ -647,7 +647,7 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="label" translatable="yes">Best</property> <property name="label" translatable="yes">Best</property>
<property name="use_underline">True</property> <property name="use_underline">True</property>
<property name="active">True</property> <property name="active">False</property>
<signal name="button_release_event" handler="on_menu_team_button_release_event" last_modification_time="Thu, 07 Jul 2005 14:50:03 GMT"/> <signal name="button_release_event" handler="on_menu_team_button_release_event" last_modification_time="Thu, 07 Jul 2005 14:50:03 GMT"/>
</widget> </widget>
</child> </child>
@ -657,7 +657,7 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="label" translatable="yes">Good</property> <property name="label" translatable="yes">Good</property>
<property name="use_underline">True</property> <property name="use_underline">True</property>
<property name="active">True</property> <property name="active">False</property>
<property name="group">menu_yc_best</property> <property name="group">menu_yc_best</property>
<signal name="button_release_event" handler="on_menu_team_button_release_event" last_modification_time="Thu, 07 Jul 2005 14:50:03 GMT"/> <signal name="button_release_event" handler="on_menu_team_button_release_event" last_modification_time="Thu, 07 Jul 2005 14:50:03 GMT"/>
</widget> </widget>
@ -668,7 +668,7 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="label" translatable="yes">Average</property> <property name="label" translatable="yes">Average</property>
<property name="use_underline">True</property> <property name="use_underline">True</property>
<property name="active">True</property> <property name="active">False</property>
<property name="group">menu_yc_best</property> <property name="group">menu_yc_best</property>
<signal name="button_release_event" handler="on_menu_team_button_release_event" last_modification_time="Thu, 07 Jul 2005 14:50:03 GMT"/> <signal name="button_release_event" handler="on_menu_team_button_release_event" last_modification_time="Thu, 07 Jul 2005 14:50:03 GMT"/>
</widget> </widget>
@ -703,7 +703,7 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="label" translatable="yes">Goalies</property> <property name="label" translatable="yes">Goalies</property>
<property name="use_underline">True</property> <property name="use_underline">True</property>
<property name="active">True</property> <property name="active">False</property>
<signal name="button_release_event" handler="on_menu_team_button_release_event" last_modification_time="Thu, 14 Jul 2005 07:26:30 GMT"/> <signal name="button_release_event" handler="on_menu_team_button_release_event" last_modification_time="Thu, 14 Jul 2005 07:26:30 GMT"/>
</widget> </widget>
</child> </child>
@ -713,7 +713,7 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="label" translatable="yes">Defenders</property> <property name="label" translatable="yes">Defenders</property>
<property name="use_underline">True</property> <property name="use_underline">True</property>
<property name="active">True</property> <property name="active">False</property>
<property name="group">menu_recruit0</property> <property name="group">menu_recruit0</property>
<signal name="button_release_event" handler="on_menu_team_button_release_event" last_modification_time="Thu, 14 Jul 2005 07:29:19 GMT"/> <signal name="button_release_event" handler="on_menu_team_button_release_event" last_modification_time="Thu, 14 Jul 2005 07:29:19 GMT"/>
</widget> </widget>
@ -724,7 +724,7 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="label" translatable="yes">Midfielders</property> <property name="label" translatable="yes">Midfielders</property>
<property name="use_underline">True</property> <property name="use_underline">True</property>
<property name="active">True</property> <property name="active">False</property>
<property name="group">menu_recruit0</property> <property name="group">menu_recruit0</property>
<signal name="button_release_event" handler="on_menu_team_button_release_event" last_modification_time="Thu, 14 Jul 2005 07:29:14 GMT"/> <signal name="button_release_event" handler="on_menu_team_button_release_event" last_modification_time="Thu, 14 Jul 2005 07:29:14 GMT"/>
</widget> </widget>
@ -735,7 +735,7 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="label" translatable="yes">Forwards</property> <property name="label" translatable="yes">Forwards</property>
<property name="use_underline">True</property> <property name="use_underline">True</property>
<property name="active">True</property> <property name="active">False</property>
<property name="group">menu_recruit0</property> <property name="group">menu_recruit0</property>
<signal name="button_release_event" handler="on_menu_team_button_release_event" last_modification_time="Thu, 14 Jul 2005 07:29:09 GMT"/> <signal name="button_release_event" handler="on_menu_team_button_release_event" last_modification_time="Thu, 14 Jul 2005 07:29:09 GMT"/>
</widget> </widget>
@ -777,7 +777,7 @@
<property name="use_underline">True</property> <property name="use_underline">True</property>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image2206"> <widget class="GtkImage" id="image2288">
<property name="visible">True</property> <property name="visible">True</property>
<property name="pixbuf">menu_boost.png</property> <property name="pixbuf">menu_boost.png</property>
<property name="xalign">0.5</property> <property name="xalign">0.5</property>
@ -795,7 +795,7 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="label" translatable="yes">On</property> <property name="label" translatable="yes">On</property>
<property name="use_underline">True</property> <property name="use_underline">True</property>
<property name="active">True</property> <property name="active">False</property>
<signal name="button_release_event" handler="on_menu_team_button_release_event" last_modification_time="Tue, 08 Mar 2005 16:37:57 GMT"/> <signal name="button_release_event" handler="on_menu_team_button_release_event" last_modification_time="Tue, 08 Mar 2005 16:37:57 GMT"/>
</widget> </widget>
</child> </child>
@ -805,7 +805,7 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="label" translatable="yes">Off</property> <property name="label" translatable="yes">Off</property>
<property name="use_underline">True</property> <property name="use_underline">True</property>
<property name="active">True</property> <property name="active">False</property>
<property name="group">menu_boost_on</property> <property name="group">menu_boost_on</property>
<signal name="button_release_event" handler="on_menu_team_button_release_event" last_modification_time="Tue, 08 Mar 2005 16:37:48 GMT"/> <signal name="button_release_event" handler="on_menu_team_button_release_event" last_modification_time="Tue, 08 Mar 2005 16:37:48 GMT"/>
</widget> </widget>
@ -840,7 +840,7 @@
<signal name="activate" handler="on_menu_reset_players_activate" last_modification_time="Tue, 26 Apr 2005 13:16:39 GMT"/> <signal name="activate" handler="on_menu_reset_players_activate" last_modification_time="Tue, 26 Apr 2005 13:16:39 GMT"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image2207"> <widget class="GtkImage" id="image2289">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock">gtk-undo</property> <property name="stock">gtk-undo</property>
<property name="icon_size">1</property> <property name="icon_size">1</property>
@ -861,7 +861,7 @@
<signal name="activate" handler="on_menu_custom_structure_activate" last_modification_time="Sat, 26 Feb 2005 12:46:30 GMT"/> <signal name="activate" handler="on_menu_custom_structure_activate" last_modification_time="Sat, 26 Feb 2005 12:46:30 GMT"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image2208"> <widget class="GtkImage" id="image2290">
<property name="visible">True</property> <property name="visible">True</property>
<property name="pixbuf">menu_structure.png</property> <property name="pixbuf">menu_structure.png</property>
<property name="xalign">0.5</property> <property name="xalign">0.5</property>
@ -883,7 +883,7 @@
<accelerator key="r" modifiers="GDK_CONTROL_MASK" signal="activate"/> <accelerator key="r" modifiers="GDK_CONTROL_MASK" signal="activate"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image2209"> <widget class="GtkImage" id="image2291">
<property name="visible">True</property> <property name="visible">True</property>
<property name="pixbuf">menu_rearrange.png</property> <property name="pixbuf">menu_rearrange.png</property>
<property name="xalign">0.5</property> <property name="xalign">0.5</property>
@ -909,7 +909,7 @@
<signal name="activate" handler="on_menu_browse_teams_activate" last_modification_time="Mon, 03 Jan 2005 16:58:58 GMT"/> <signal name="activate" handler="on_menu_browse_teams_activate" last_modification_time="Mon, 03 Jan 2005 16:58:58 GMT"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image2210"> <widget class="GtkImage" id="image2292">
<property name="visible">True</property> <property name="visible">True</property>
<property name="pixbuf">menu_browse_tms.png</property> <property name="pixbuf">menu_browse_tms.png</property>
<property name="xalign">0.5</property> <property name="xalign">0.5</property>
@ -920,6 +920,23 @@
</child> </child>
</widget> </widget>
</child> </child>
<child>
<widget class="GtkSeparatorMenuItem" id="trennlinie16">
<property name="visible">True</property>
</widget>
</child>
<child>
<widget class="GtkMenuItem" id="menu_show_job_exchange">
<property name="visible">True</property>
<property name="tooltip" translatable="yes">Show the list of available manager jobs</property>
<property name="label" translatable="yes">Show job exchange</property>
<property name="use_underline">True</property>
<signal name="activate" handler="on_menu_show_job_exchange_activate" last_modification_time="Tue, 29 Nov 2005 13:48:22 GMT"/>
<accelerator key="j" modifiers="0" signal="activate"/>
</widget>
</child>
</widget> </widget>
</child> </child>
</widget> </widget>
@ -942,7 +959,7 @@
<signal name="activate" handler="on_menu_show_info_activate" last_modification_time="Sun, 02 Jan 2005 15:42:09 GMT"/> <signal name="activate" handler="on_menu_show_info_activate" last_modification_time="Sun, 02 Jan 2005 15:42:09 GMT"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image2211"> <widget class="GtkImage" id="image2293">
<property name="visible">True</property> <property name="visible">True</property>
<property name="pixbuf">menu_player_info.png</property> <property name="pixbuf">menu_player_info.png</property>
<property name="xalign">0.5</property> <property name="xalign">0.5</property>
@ -962,7 +979,7 @@
<signal name="activate" handler="on_menu_put_on_transfer_list_activate" last_modification_time="Sun, 02 Jan 2005 15:42:09 GMT"/> <signal name="activate" handler="on_menu_put_on_transfer_list_activate" last_modification_time="Sun, 02 Jan 2005 15:42:09 GMT"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image2212"> <widget class="GtkImage" id="image2294">
<property name="visible">True</property> <property name="visible">True</property>
<property name="pixbuf">menu_player_put_transfer.png</property> <property name="pixbuf">menu_player_put_transfer.png</property>
<property name="xalign">0.5</property> <property name="xalign">0.5</property>
@ -982,7 +999,7 @@
<signal name="activate" handler="on_menu_remove_from_transfer_list_activate" last_modification_time="Sun, 02 Jan 2005 15:42:09 GMT"/> <signal name="activate" handler="on_menu_remove_from_transfer_list_activate" last_modification_time="Sun, 02 Jan 2005 15:42:09 GMT"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image2213"> <widget class="GtkImage" id="image2295">
<property name="visible">True</property> <property name="visible">True</property>
<property name="pixbuf">menu_player_remove_transfer.png</property> <property name="pixbuf">menu_player_remove_transfer.png</property>
<property name="xalign">0.5</property> <property name="xalign">0.5</property>
@ -1002,7 +1019,7 @@
<signal name="activate" handler="on_menu_offer_new_contract_activate" last_modification_time="Fri, 25 Mar 2005 09:23:28 GMT"/> <signal name="activate" handler="on_menu_offer_new_contract_activate" last_modification_time="Fri, 25 Mar 2005 09:23:28 GMT"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image2214"> <widget class="GtkImage" id="image2296">
<property name="visible">True</property> <property name="visible">True</property>
<property name="pixbuf">menu_player_contract.png</property> <property name="pixbuf">menu_player_contract.png</property>
<property name="xalign">0.5</property> <property name="xalign">0.5</property>
@ -1022,7 +1039,7 @@
<signal name="activate" handler="on_menu_fire_activate" last_modification_time="Sun, 02 Jan 2005 15:42:09 GMT"/> <signal name="activate" handler="on_menu_fire_activate" last_modification_time="Sun, 02 Jan 2005 15:42:09 GMT"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image2215"> <widget class="GtkImage" id="image2297">
<property name="visible">True</property> <property name="visible">True</property>
<property name="pixbuf">menu_player_fire.png</property> <property name="pixbuf">menu_player_fire.png</property>
<property name="xalign">0.5</property> <property name="xalign">0.5</property>
@ -1042,7 +1059,7 @@
<signal name="activate" handler="on_menu_shoots_penalties_activate" last_modification_time="Sun, 02 Jan 2005 15:42:09 GMT"/> <signal name="activate" handler="on_menu_shoots_penalties_activate" last_modification_time="Sun, 02 Jan 2005 15:42:09 GMT"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image2216"> <widget class="GtkImage" id="image2298">
<property name="visible">True</property> <property name="visible">True</property>
<property name="pixbuf">menu_player_shoots.png</property> <property name="pixbuf">menu_player_shoots.png</property>
<property name="xalign">0.5</property> <property name="xalign">0.5</property>
@ -1062,7 +1079,7 @@
<signal name="activate" handler="on_menu_move_to_youth_academy_activate" last_modification_time="Thu, 07 Jul 2005 21:12:26 GMT"/> <signal name="activate" handler="on_menu_move_to_youth_academy_activate" last_modification_time="Thu, 07 Jul 2005 21:12:26 GMT"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image2217"> <widget class="GtkImage" id="image2299">
<property name="visible">True</property> <property name="visible">True</property>
<property name="pixbuf">menu_player_move_to_ya.png</property> <property name="pixbuf">menu_player_move_to_ya.png</property>
<property name="xalign">0.5</property> <property name="xalign">0.5</property>
@ -1088,7 +1105,7 @@
<signal name="activate" handler="on_menu_browse_players_activate" last_modification_time="Sat, 26 Mar 2005 09:42:31 GMT"/> <signal name="activate" handler="on_menu_browse_players_activate" last_modification_time="Sat, 26 Mar 2005 09:42:31 GMT"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image2218"> <widget class="GtkImage" id="image2300">
<property name="visible">True</property> <property name="visible">True</property>
<property name="pixbuf">menu_player_browse.png</property> <property name="pixbuf">menu_player_browse.png</property>
<property name="xalign">0.5</property> <property name="xalign">0.5</property>
@ -1122,7 +1139,7 @@
<accelerator key="v" modifiers="GDK_CONTROL_MASK" signal="activate"/> <accelerator key="v" modifiers="GDK_CONTROL_MASK" signal="activate"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image2219"> <widget class="GtkImage" id="image2301">
<property name="visible">True</property> <property name="visible">True</property>
<property name="pixbuf">menu_last_match.png</property> <property name="pixbuf">menu_last_match.png</property>
<property name="xalign">0.5</property> <property name="xalign">0.5</property>
@ -1143,7 +1160,7 @@
<accelerator key="F2" modifiers="0" signal="activate"/> <accelerator key="F2" modifiers="0" signal="activate"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image2220"> <widget class="GtkImage" id="image2302">
<property name="visible">True</property> <property name="visible">True</property>
<property name="pixbuf">menu_match_stats.png</property> <property name="pixbuf">menu_match_stats.png</property>
<property name="xalign">0.5</property> <property name="xalign">0.5</property>
@ -1164,7 +1181,7 @@
<accelerator key="F1" modifiers="0" signal="activate"/> <accelerator key="F1" modifiers="0" signal="activate"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image2221"> <widget class="GtkImage" id="image2303">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock">gtk-jump-to</property> <property name="stock">gtk-jump-to</property>
<property name="icon_size">1</property> <property name="icon_size">1</property>
@ -1184,7 +1201,7 @@
<property name="use_underline">True</property> <property name="use_underline">True</property>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image2222"> <widget class="GtkImage" id="image2304">
<property name="visible">True</property> <property name="visible">True</property>
<property name="pixbuf">menu_mmatches.png</property> <property name="pixbuf">menu_mmatches.png</property>
<property name="xalign">0.5</property> <property name="xalign">0.5</property>
@ -1207,7 +1224,7 @@
<accelerator key="a" modifiers="GDK_CONTROL_MASK" signal="activate"/> <accelerator key="a" modifiers="GDK_CONTROL_MASK" signal="activate"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image2223"> <widget class="GtkImage" id="image2305">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock">gtk-add</property> <property name="stock">gtk-add</property>
<property name="icon_size">1</property> <property name="icon_size">1</property>
@ -1230,7 +1247,7 @@
<accelerator key="m" modifiers="GDK_CONTROL_MASK" signal="activate"/> <accelerator key="m" modifiers="GDK_CONTROL_MASK" signal="activate"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image2224"> <widget class="GtkImage" id="image2306">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock">gtk-preferences</property> <property name="stock">gtk-preferences</property>
<property name="icon_size">1</property> <property name="icon_size">1</property>
@ -1262,7 +1279,7 @@
<accelerator key="h" modifiers="GDK_CONTROL_MASK" signal="activate"/> <accelerator key="h" modifiers="GDK_CONTROL_MASK" signal="activate"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image2225"> <widget class="GtkImage" id="image2307">
<property name="visible">True</property> <property name="visible">True</property>
<property name="pixbuf">menu_history.png</property> <property name="pixbuf">menu_history.png</property>
<property name="xalign">0.5</property> <property name="xalign">0.5</property>
@ -1289,7 +1306,7 @@
<accelerator key="F9" modifiers="0" signal="activate"/> <accelerator key="F9" modifiers="0" signal="activate"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image2226"> <widget class="GtkImage" id="image2308">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock">gtk-media-forward</property> <property name="stock">gtk-media-forward</property>
<property name="icon_size">1</property> <property name="icon_size">1</property>
@ -1311,7 +1328,7 @@
<accelerator key="F8" modifiers="0" signal="activate"/> <accelerator key="F8" modifiers="0" signal="activate"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image2227"> <widget class="GtkImage" id="image2309">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock">gtk-go-back</property> <property name="stock">gtk-go-back</property>
<property name="icon_size">1</property> <property name="icon_size">1</property>
@ -1333,7 +1350,7 @@
<accelerator key="F12" modifiers="0" signal="activate"/> <accelerator key="F12" modifiers="0" signal="activate"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image2228"> <widget class="GtkImage" id="image2310">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock">gtk-justify-fill</property> <property name="stock">gtk-justify-fill</property>
<property name="icon_size">1</property> <property name="icon_size">1</property>
@ -1368,7 +1385,7 @@
<accelerator key="f" modifiers="0" signal="activate"/> <accelerator key="f" modifiers="0" signal="activate"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image2229"> <widget class="GtkImage" id="image2311">
<property name="visible">True</property> <property name="visible">True</property>
<property name="pixbuf">menu_finances.png</property> <property name="pixbuf">menu_finances.png</property>
<property name="xalign">0.5</property> <property name="xalign">0.5</property>
@ -1389,7 +1406,7 @@
<accelerator key="f" modifiers="GDK_CONTROL_MASK" signal="activate"/> <accelerator key="f" modifiers="GDK_CONTROL_MASK" signal="activate"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image2230"> <widget class="GtkImage" id="image2312">
<property name="visible">True</property> <property name="visible">True</property>
<property name="pixbuf">menu_stadium.png</property> <property name="pixbuf">menu_stadium.png</property>
<property name="xalign">0.5</property> <property name="xalign">0.5</property>
@ -1439,7 +1456,7 @@
<signal name="activate" handler="on_menu_about_activate" last_modification_time="Sun, 18 Jan 2004 15:58:22 GMT"/> <signal name="activate" handler="on_menu_about_activate" last_modification_time="Sun, 18 Jan 2004 15:58:22 GMT"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image2231"> <widget class="GtkImage" id="image2313">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock">gtk-dialog-info</property> <property name="stock">gtk-dialog-info</property>
<property name="icon_size">1</property> <property name="icon_size">1</property>
@ -1460,7 +1477,7 @@
<signal name="activate" handler="on_menu_contributors_activate" last_modification_time="Sun, 22 May 2005 06:42:11 GMT"/> <signal name="activate" handler="on_menu_contributors_activate" last_modification_time="Sun, 22 May 2005 06:42:11 GMT"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image2232"> <widget class="GtkImage" id="image2314">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock">gtk-add</property> <property name="stock">gtk-add</property>
<property name="icon_size">1</property> <property name="icon_size">1</property>
@ -1481,7 +1498,7 @@
<signal name="activate" handler="on_menu_help_activate" last_modification_time="Sun, 22 May 2005 06:42:11 GMT"/> <signal name="activate" handler="on_menu_help_activate" last_modification_time="Sun, 22 May 2005 06:42:11 GMT"/>
<child internal-child="image"> <child internal-child="image">
<widget class="GtkImage" id="image2233"> <widget class="GtkImage" id="image2315">
<property name="visible">True</property> <property name="visible">True</property>
<property name="stock">gtk-help</property> <property name="stock">gtk-help</property>
<property name="icon_size">1</property> <property name="icon_size">1</property>
@ -2266,6 +2283,7 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="position">470</property> <property name="position">470</property>
<signal name="button_release_event" handler="on_hpaned2_button_release_event" last_modification_time="Wed, 30 Nov 2005 09:43:15 GMT"/>
<child> <child>
<widget class="GtkVBox" id="vbox3"> <widget class="GtkVBox" id="vbox3">

View File

@ -9,7 +9,8 @@
<property name="title" translatable="yes">Job offer</property> <property name="title" translatable="yes">Job offer</property>
<property name="type">GTK_WINDOW_TOPLEVEL</property> <property name="type">GTK_WINDOW_TOPLEVEL</property>
<property name="window_position">GTK_WIN_POS_CENTER</property> <property name="window_position">GTK_WIN_POS_CENTER</property>
<property name="modal">False</property> <property name="modal">True</property>
<property name="default_width">500</property>
<property name="default_height">600</property> <property name="default_height">600</property>
<property name="resizable">True</property> <property name="resizable">True</property>
<property name="destroy_with_parent">False</property> <property name="destroy_with_parent">False</property>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -9,7 +9,6 @@ INCLUDES = \
bin_PROGRAMS = bygfoot bin_PROGRAMS = bygfoot
bygfoot_SOURCES = \ bygfoot_SOURCES = \
mediaplayer.c mediaplayer.h \
bet.c bet.h bet_struct.h \ bet.c bet.h bet_struct.h \
callback_func.c callback_func.h callbacks.h cup.h finance.h fixture.h game_gui.h gui.h league.h live_game.h maths.h misc.h option.h player.h start_end.h team.h transfer.h treeview.h treeview_helper.h user.h window.h \ callback_func.c callback_func.h callbacks.h cup.h finance.h fixture.h game_gui.h gui.h league.h live_game.h maths.h misc.h option.h player.h start_end.h team.h transfer.h treeview.h treeview_helper.h user.h window.h \
callbacks.c callback_func.h callbacks.h debug.h free.h game_gui.h game.h gui.h league.h load_save.h main.h option.h player.h table.h team.h transfer.h treeview2.h treeview.h treeview_helper.h user.h window.h \ callbacks.c callback_func.h callbacks.h debug.h free.h game_gui.h game.h gui.h league.h load_save.h main.h option.h player.h table.h team.h transfer.h treeview2.h treeview.h treeview_helper.h user.h window.h \
@ -23,6 +22,7 @@ bygfoot_SOURCES = \
game_gui.c callbacks.h file.h game_gui.h gui.h league.h live_game.h maths.h misc.h option.h support.h team.h treeview.h user.h variables.h window.h \ game_gui.c callbacks.h file.h game_gui.h gui.h league.h live_game.h maths.h misc.h option.h support.h team.h treeview.h user.h variables.h window.h \
gui.c gui.h misc.h support.h variables.h window.h \ gui.c gui.h misc.h support.h variables.h window.h \
interface.c callbacks.h interface.h support.h \ interface.c callbacks.h interface.h support.h \
job.c job.h \
language.c callbacks.h free.h language.h lg_commentary.h misc.h option.h variables.h window.h \ language.c callbacks.h free.h language.h lg_commentary.h misc.h option.h variables.h window.h \
lg_commentary.c cup.h file.h fixture.h free.h league.h lg_commentary.h live_game.h main.h maths.h misc.h option.h player.h team.h variables.h xml_lg_commentary.h \ lg_commentary.c cup.h file.h fixture.h free.h league.h lg_commentary.h live_game.h main.h maths.h misc.h option.h player.h team.h variables.h xml_lg_commentary.h \
league.c cup.h free.h league.h main.h maths.h misc.h option.h player.h stat.h table.h team.h user.h variables.h \ league.c cup.h free.h league.h main.h maths.h misc.h option.h player.h stat.h table.h team.h user.h variables.h \
@ -60,6 +60,7 @@ bygfoot_SOURCES = \
xml.c cup.h file.h free.h gui.h league.h misc.h option.h support.h table.h transfer_struct.h user.h variables.h xml.h xml_loadsave_cup.h xml_loadsave_fixtures.h xml_loadsave_league.h xml_loadsave_league_stat.h xml_loadsave_live_game.h xml_loadsave_table.h xml_loadsave_teams.h xml_loadsave_transfers.h xml_loadsave_users.h \ xml.c cup.h file.h free.h gui.h league.h misc.h option.h support.h table.h transfer_struct.h user.h variables.h xml.h xml_loadsave_cup.h xml_loadsave_fixtures.h xml_loadsave_league.h xml_loadsave_league_stat.h xml_loadsave_live_game.h xml_loadsave_table.h xml_loadsave_teams.h xml_loadsave_transfers.h xml_loadsave_users.h \
xml_loadsave_cup.c cup.h file.h misc.h table.h team.h xml.h xml_loadsave_cup.h xml_loadsave_fixtures.h xml_loadsave_table.h xml_loadsave_teams.h \ xml_loadsave_cup.c cup.h file.h misc.h table.h team.h xml.h xml_loadsave_cup.h xml_loadsave_fixtures.h xml_loadsave_table.h xml_loadsave_teams.h \
xml_loadsave_fixtures.c file.h fixture.h misc.h team.h xml.h xml_loadsave_fixtures.h \ xml_loadsave_fixtures.c file.h fixture.h misc.h team.h xml.h xml_loadsave_fixtures.h \
xml_loadsave_jobs.c xml_loadsave_jobs.h \
xml_loadsave_league.c file.h league.h misc.h xml.h xml_loadsave_cup.h xml_loadsave_fixtures.h xml_loadsave_league.h xml_loadsave_league_stat.h xml_loadsave_table.h xml_loadsave_teams.h \ xml_loadsave_league.c file.h league.h misc.h xml.h xml_loadsave_cup.h xml_loadsave_fixtures.h xml_loadsave_league.h xml_loadsave_league_stat.h xml_loadsave_table.h xml_loadsave_teams.h \
xml_loadsave_leagues_cups.c cup.h file.h free.h league_struct.h misc.h xml.h xml_loadsave_cup.h xml_loadsave_league.h xml_loadsave_leagues_cups.h \ xml_loadsave_leagues_cups.c cup.h file.h free.h league_struct.h misc.h xml.h xml_loadsave_cup.h xml_loadsave_league.h xml_loadsave_leagues_cups.h \
xml_loadsave_league_stat.c file.h misc.h stat.h team.h xml.h xml_loadsave_league_stat.h \ xml_loadsave_league_stat.c file.h misc.h stat.h team.h xml.h xml_loadsave_league_stat.h \

View File

@ -127,6 +127,11 @@ typedef struct
*symbol, /**< Symbol of the country, eg a flag pixmap. */ *symbol, /**< Symbol of the country, eg a flag pixmap. */
*sid; /**< Id of the country, eg 'england'. */ *sid; /**< Id of the country, eg 'england'. */
/** A rating point from 0-10 telling us
how good the first league of the country is.
Spain, for instance, has rating 10, whereas Ireland has only 5. */
gint rating;
/** Leagues and cups arrays. */ /** Leagues and cups arrays. */
GArray *leagues, *cups; GArray *leagues, *cups;
@ -160,5 +165,8 @@ typedef struct
*sponsors, *sponsors,
*mmatches, *mmatches,
*bets; *bets;
/** The position of the horizontal divider is stored here. */
gint paned_pos;
} Windows; } Windows;
#endif #endif

View File

@ -101,14 +101,6 @@ callback_player_clicked(gint idx, GdkEventButton *event)
if(event->type != GDK_BUTTON_PRESS) if(event->type != GDK_BUTTON_PRESS)
return; return;
/*d*/
gint i;
for(i=0;i<lig(1).teams->len;i++)
printf("%d %s %d\n", i, g_array_index(lig(1).teams,
Team, i).name,
g_array_index(lig(1).teams,
Team, i).id);
if(event->button == 1) if(event->button == 1)
{ {
if(selected_row == -1) if(selected_row == -1)
@ -704,6 +696,9 @@ callback_show_league_stats(gint type)
void void
callback_show_season_history(gint type) callback_show_season_history(gint type)
{ {
const SeasonStat *stat = NULL;
gint len = season_stats->len;
switch(type) switch(type)
{ {
default: default:
@ -712,29 +707,31 @@ callback_show_season_history(gint type)
break; break;
case SHOW_CURRENT: case SHOW_CURRENT:
stat1 = -1; stat1 = -1;
stat2 = season - 2; stat2 = len - 1;
break; break;
case SHOW_NEXT_LEAGUE: case SHOW_NEXT_LEAGUE:
stat = &g_array_index(season_stats, SeasonStat, stat2);
if(stat1 == -1) if(stat1 == -1)
stat1 = 0; stat1 = 0;
else if(stat1 == ligs->len - 1) else if(stat1 == stat->league_champs->len - 1)
stat1 = -1; stat1 = -1;
else else
stat1++; stat1++;
break; break;
case SHOW_PREVIOUS_LEAGUE: case SHOW_PREVIOUS_LEAGUE:
stat = &g_array_index(season_stats, SeasonStat, stat2);
if(stat1 == -1) if(stat1 == -1)
stat1 = ligs->len - 1; stat1 = stat->league_champs->len - 1;
else if(stat1 == 0) else if(stat1 == 0)
stat1 = -1; stat1 = -1;
else else
stat1--; stat1--;
break; break;
case SHOW_NEXT: case SHOW_NEXT:
stat2 = (stat2 + 1) % (season - 1); stat2 = (stat2 + 1) % len;
break; break;
case SHOW_PREVIOUS: case SHOW_PREVIOUS:
stat2 = (stat2 == 0) ? season - 2 : stat2 - 1; stat2 = (stat2 == 0) ? len - 1 : stat2 - 1;
break; break;
} }

View File

@ -30,6 +30,7 @@
#include "game.h" #include "game.h"
#include "game_gui.h" #include "game_gui.h"
#include "gui.h" #include "gui.h"
#include "job.h"
#include "league.h" #include "league.h"
#include "load_save.h" #include "load_save.h"
#include "main.h" #include "main.h"
@ -419,9 +420,10 @@ void
on_menu_season_history_activate (GtkMenuItem *menuitem, on_menu_season_history_activate (GtkMenuItem *menuitem,
gpointer user_data) gpointer user_data)
{ {
if(season == 1) if(season_stats->len == 0)
{ {
game_gui_print_message(_("This is your first season.")); game_gui_print_message(
_("There are no season history elements stored yet."));
return; return;
} }
@ -641,6 +643,12 @@ on_treeview_right_button_press_event (GtkWidget *widget,
else else
window_show_menu_youth((GdkEvent*)event); window_show_menu_youth((GdkEvent*)event);
break; break;
case STATUS_SHOW_JOB_EXCHANGE:
if(event->button == 1)
game_gui_show_job_offer(NULL,
&g_array_index(jobs, Job, idx - 1),
STATUS_JOB_EXCHANGE_SHOW_TEAM);
break;
} }
gui_set_arrows(); gui_set_arrows();
@ -1185,3 +1193,30 @@ on_menu_betting_activate (GtkMenuItem *menuitem,
window_show_bets(); window_show_bets();
} }
void
on_menu_show_job_exchange_activate (GtkMenuItem *menuitem,
gpointer user_data)
{
stat0 = STATUS_SHOW_JOB_EXCHANGE;
gui_set_arrows();
treeview2_show_job_exchange();
game_gui_print_message(
_("Right click to apply for job at once, left click to see team info."));
game_gui_print_message_with_delay(
_("The job exchange update interval is %d weeks."),
const_int("int_job_update_interval"));
}
gboolean
on_hpaned2_button_release_event (GtkWidget *widget,
GdkEventButton *event,
gpointer user_data)
{
window.paned_pos =
gtk_paned_get_position(GTK_PANED(widget));
return FALSE;
}

View File

@ -333,8 +333,14 @@ on_menu_save_window_geometry_activate (GtkMenuItem *menuitem,
void void
on_menu_season_results_activate (GtkMenuItem *menuitem, on_menu_season_results_activate (GtkMenuItem *menuitem,
gpointer user_data); gpointer user_data);
#endif
void void
on_menu_betting_activate (GtkMenuItem *menuitem, on_menu_betting_activate (GtkMenuItem *menuitem,
gpointer user_data); gpointer user_data);
void
on_menu_show_job_exchange_activate (GtkMenuItem *menuitem,
gpointer user_data);
gboolean
on_hpaned2_button_release_event (GtkWidget *widget,
GdkEventButton *event,
gpointer user_data);
#endif

View File

@ -257,7 +257,7 @@ cup_get_team_pointers(Cup *cup, gint round)
for(i=0;i<cup_round->teams->len;i++) for(i=0;i<cup_round->teams->len;i++)
{ {
team_generate_players_stadium(&g_array_index(cup_round->teams, Team, i)); team_generate_players_stadium(&g_array_index(cup_round->teams, Team, i), 0);
g_ptr_array_add(cup->teams, &g_array_index(cup_round->teams, Team, i)); g_ptr_array_add(cup->teams, &g_array_index(cup_round->teams, Team, i));
g_ptr_array_add(teams, &g_array_index(cup_round->teams, Team, i)); g_ptr_array_add(teams, &g_array_index(cup_round->teams, Team, i));
} }
@ -992,9 +992,10 @@ query_cup_begins(const Cup *cup)
g_array_index(league->fixtures, Fixture, g_array_index(league->fixtures, Fixture,
league->fixtures->len - 1).attendance == -1)) || league->fixtures->len - 1).attendance == -1)) ||
(league == NULL && (league == NULL &&
cup_temp->fixtures->len > 0 && ((cup_temp->fixtures->len > 0 &&
g_array_index(cup_temp->fixtures, Fixture, g_array_index(cup_temp->fixtures, Fixture,
cup_temp->fixtures->len - 1).attendance == -1)) cup_temp->fixtures->len - 1).attendance == -1) ||
cup_temp->fixtures->len == 0)))
return FALSE; return FALSE;
} }
} }

View File

@ -137,6 +137,8 @@ enum Status0Value
STATUS_SELECT_MM_FILE_IMPORT, STATUS_SELECT_MM_FILE_IMPORT,
STATUS_SELECT_MM_FILE_EXPORT, STATUS_SELECT_MM_FILE_EXPORT,
STATUS_PLACE_BET, STATUS_PLACE_BET,
STATUS_SHOW_JOB_EXCHANGE,
STATUS_JOB_EXCHANGE_SHOW_TEAM,
STATUS_END STATUS_END
}; };

View File

@ -26,6 +26,7 @@
#include "callbacks.h" #include "callbacks.h"
#include "finance.h" #include "finance.h"
#include "game_gui.h" #include "game_gui.h"
#include "league.h"
#include "maths.h" #include "maths.h"
#include "option.h" #include "option.h"
#include "player.h" #include "player.h"
@ -147,8 +148,6 @@ finance_update_user_weekly(User *user)
{ {
new_team = team_get_new(tm, TRUE); new_team = team_get_new(tm, TRUE);
user_event_add(user, EVENT_TYPE_FIRE_FINANCE, -1, -1, new_team, NULL); user_event_add(user, EVENT_TYPE_FIRE_FINANCE, -1, -1, new_team, NULL);
user_history_add(user, USER_HISTORY_FIRE_FINANCES, tm->id,
new_team->id, new_team->clid, "");
} }
} }

View File

@ -67,17 +67,23 @@ fixture_write_cup_fixtures(Cup *cup)
{ {
gint i; gint i;
printf("fwc 1\n");
for(i=0;i<cup->rounds->len;i++) for(i=0;i<cup->rounds->len;i++)
cup_get_team_pointers(cup, i); cup_get_team_pointers(cup, i);
printf("fwc 2 %d\n",
g_array_index(cup->rounds, CupRound, 0).round_robin_number_of_groups);
if(g_array_index(cup->rounds, CupRound, 0).round_robin_number_of_groups > 0) if(g_array_index(cup->rounds, CupRound, 0).round_robin_number_of_groups > 0)
fixture_write_cup_round_robin(cup, 0, fixture_write_cup_round_robin(
misc_copy_ptr_array( cup, 0, misc_copy_ptr_array(
g_array_index(cup->rounds, CupRound, 0).team_ptrs)); g_array_index(cup->rounds, CupRound, 0).team_ptrs));
else else
fixture_write_knockout_round(cup, 0, fixture_write_knockout_round(
misc_copy_ptr_array( cup, 0, misc_copy_ptr_array(
g_array_index(cup->rounds, CupRound, 0).team_ptrs)); g_array_index(cup->rounds, CupRound, 0).team_ptrs));
printf("fwc 3\n");
} }
/** Update the fixtures for the given cup. /** Update the fixtures for the given cup.
@ -1346,8 +1352,9 @@ fixture_get_goals_to_win(const Fixture *fix, const Team *tm)
return return_value; return return_value;
} }
gint /*todo*/
fixture_get_goals_to_draw(const Fixture *fix, const Team *tm) /* gint */
{ /* fixture_get_goals_to_draw(const Fixture *fix, const Team *tm) */
/* { */
} /* } */

View File

@ -42,12 +42,13 @@ free_memory(void)
free_names(FALSE); free_names(FALSE);
free_transfer_list(); free_transfer_list();
free_strategies(); free_strategies();
free_country(FALSE); free_country(&country, FALSE);
free_users(FALSE); free_users(FALSE);
free_bets(FALSE); free_bets(FALSE);
free_live_game(&live_game_temp); free_live_game(&live_game_temp);
free_lg_commentary(FALSE); free_lg_commentary(FALSE);
free_support_dirs(); free_support_dirs();
free_jobs(FALSE);
} }
/** Free the transfer list. */ /** Free the transfer list. */
@ -86,20 +87,24 @@ free_season_stats(gboolean reset)
{ {
free_gchar_ptr( free_gchar_ptr(
g_array_index( g_array_index(
g_array_index(season_stats, SeasonStat, i).league_champs, ChampStat, j).cl_name); g_array_index(season_stats, SeasonStat, i).league_champs,
ChampStat, j).cl_name);
free_gchar_ptr( free_gchar_ptr(
g_array_index( g_array_index(
g_array_index(season_stats, SeasonStat, i).league_champs, ChampStat, j).team_name); g_array_index(season_stats, SeasonStat, i).league_champs,
ChampStat, j).team_name);
} }
for(j=0;j<g_array_index(season_stats, SeasonStat, i).cup_champs->len;j++) for(j=0;j<g_array_index(season_stats, SeasonStat, i).cup_champs->len;j++)
{ {
free_gchar_ptr( free_gchar_ptr(
g_array_index( g_array_index(
g_array_index(season_stats, SeasonStat, i).cup_champs, ChampStat, j).cl_name); g_array_index(season_stats, SeasonStat, i).cup_champs,
ChampStat, j).cl_name);
free_gchar_ptr( free_gchar_ptr(
g_array_index( g_array_index(
g_array_index(season_stats, SeasonStat, i).cup_champs, ChampStat, j).team_name); g_array_index(season_stats, SeasonStat, i).cup_champs,
ChampStat, j).team_name);
} }
g_array_free(g_array_index(season_stats, SeasonStat, i).cup_champs, TRUE); g_array_free(g_array_index(season_stats, SeasonStat, i).cup_champs, TRUE);
@ -139,7 +144,7 @@ free_users(gboolean reset)
void void
free_user(User *user) free_user(User *user)
{ {
gint i; gint i, j;
free_gchar_ptr(user->name); free_gchar_ptr(user->name);
free_g_string(&user->sponsor.name); free_g_string(&user->sponsor.name);
@ -152,8 +157,14 @@ free_user(User *user)
free_g_array(&user->events); free_g_array(&user->events);
for(i=0;i<user->history->len;i++) for(i=0;i<user->history->len;i++)
{
free_gchar_ptr(g_array_index(user->history, free_gchar_ptr(g_array_index(user->history,
UserHistory, i).value_string); UserHistory, i).team_name);
for(j=0;j<3;j++)
free_gchar_ptr(g_array_index(user->history,
UserHistory, i).string[j]);
}
free_g_array(&user->history); free_g_array(&user->history);
free_mmatches(&user->mmatches, FALSE); free_mmatches(&user->mmatches, FALSE);
@ -261,23 +272,22 @@ free_live_game(LiveGame *match)
free_g_array(&match->units); free_g_array(&match->units);
} }
/** /**
Free the main variable of the game, #country. Free a country variable.
*/ */
void void
free_country(gboolean reset) free_country(Country *cntry, gboolean reset)
{ {
free_gchar_ptr(country.name); free_gchar_ptr(cntry->name);
free_gchar_ptr(country.symbol); free_gchar_ptr(cntry->symbol);
free_gchar_ptr(country.sid); free_gchar_ptr(cntry->sid);
free_leagues_array(&ligs, reset); free_leagues_array(&cntry->leagues, reset);
free_cups_array(&cps, reset); free_cups_array(&cntry->cups, reset);
free_g_ptr_array(&acps); free_g_ptr_array(&cntry->allcups);
if(reset) if(reset)
acps = g_ptr_array_new(); cntry->allcups = g_ptr_array_new();
} }
/** /**
@ -338,12 +348,21 @@ free_league_stats(LeagueStat *stats)
{ {
gint i; gint i;
free_gchar_ptr(stats->league_name);
free_gchar_ptr(stats->league_symbol);
for(i=0;i<stats->teams_off->len;i++) for(i=0;i<stats->teams_off->len;i++)
{
free_gchar_ptr(g_array_index(stats->teams_off, Stat, i).team_name);
free_gchar_ptr(g_array_index(stats->teams_off, Stat, i).value_string); free_gchar_ptr(g_array_index(stats->teams_off, Stat, i).value_string);
}
free_g_array(&stats->teams_off); free_g_array(&stats->teams_off);
for(i=0;i<stats->teams_def->len;i++) for(i=0;i<stats->teams_def->len;i++)
{
free_gchar_ptr(g_array_index(stats->teams_def, Stat, i).team_name);
free_gchar_ptr(g_array_index(stats->teams_def, Stat, i).value_string); free_gchar_ptr(g_array_index(stats->teams_def, Stat, i).value_string);
}
free_g_array(&stats->teams_def); free_g_array(&stats->teams_def);
for(i=0;i<stats->player_scorers->len;i++) for(i=0;i<stats->player_scorers->len;i++)
@ -733,3 +752,57 @@ free_bets(gboolean reset)
bets[1] = g_array_new(FALSE, FALSE, sizeof(BetMatch)); bets[1] = g_array_new(FALSE, FALSE, sizeof(BetMatch));
} }
} }
/** Free a job struct.
@param free_team Whether to free the team associated
with the job if it's an international offer. */
void
free_job(Job *job, gboolean free_tm)
{
gint i;
if(job->type == JOB_TYPE_INTERNATIONAL)
{
free_gchar_ptr(job->country_file);
free_gchar_ptr(job->country_name);
free_gchar_ptr(job->league_name);
for(i=0;i<job_teams->len;i++)
if(g_array_index(job_teams, Team, i).id == job->team_id)
{
if(free_tm)
free_team(&g_array_index(job_teams, Team, i));
g_array_remove_index(job_teams, i);
}
}
}
/** Free the jobs and job_teams arrays. */
void
free_jobs(gboolean reset)
{
gint i;
if(jobs == NULL)
{
if(reset)
{
jobs = g_array_new(FALSE, FALSE, sizeof(Job));
job_teams = g_array_new(FALSE, FALSE, sizeof(Team));
}
return;
}
for(i=0;i<jobs->len;i++)
free_job(&g_array_index(jobs, Job, i), TRUE);
free_g_array(&jobs);
free_g_array(&job_teams);
if(reset)
{
jobs = g_array_new(FALSE, FALSE, sizeof(Job));
job_teams = g_array_new(FALSE, FALSE, sizeof(Team));
}
}

View File

@ -28,6 +28,7 @@
#include "bygfoot.h" #include "bygfoot.h"
#include "cup_struct.h" #include "cup_struct.h"
#include "job_struct.h"
#include "league_struct.h" #include "league_struct.h"
#include "live_game_struct.h" #include "live_game_struct.h"
#include "name_struct.h" #include "name_struct.h"
@ -56,7 +57,7 @@ void
free_user(User *user); free_user(User *user);
void void
free_country(gboolean reset); free_country(Country *cntry, gboolean reset);
void void
free_leagues_array(GArray **leagues, gboolean reset); free_leagues_array(GArray **leagues, gboolean reset);
@ -133,4 +134,10 @@ free_strategies(void);
void void
free_bets(gboolean reset); free_bets(gboolean reset);
void
free_job(Job *job, gboolean free_tm);
void
free_jobs(gboolean reset);
#endif #endif

View File

@ -1009,6 +1009,7 @@ game_post_match(Fixture *fix)
gint i; gint i;
GPtrArray *teams = NULL; GPtrArray *teams = NULL;
Cup *cup = NULL; Cup *cup = NULL;
gchar buf[SMALL], buf2[SMALL];
if((debug > 100 && fixture_user_team_involved(fix) != -1) || if((debug > 100 && fixture_user_team_involved(fix) != -1) ||
debug > 130) debug > 130)
@ -1020,13 +1021,7 @@ game_post_match(Fixture *fix)
table_update(fix); table_update(fix);
for(i=0;i<2;i++) for(i=0;i<2;i++)
/* { */ team_update_post_match(fix->teams[i], fix);
/* if(team_is_user(fix->teams[i]) == -1) */
/* team_update_cpu_team(fix->teams[i], */
/* (fixture_user_team_involved(fix) != -1)); */
/* else */
team_update_post_match(fix->teams[i], fix);
/* } */
if(fix->clid < ID_CUP_START) if(fix->clid < ID_CUP_START)
return; return;
@ -1039,19 +1034,40 @@ game_post_match(Fixture *fix)
teams = cup_get_teams_sorted(cup); teams = cup_get_teams_sorted(cup);
if(team_is_user((Team*)g_ptr_array_index(teams, 0)) != -1) if(team_is_user((Team*)g_ptr_array_index(teams, 0)) != -1)
{
user_history_add(&usr(team_is_user((Team*)g_ptr_array_index(teams, 0))), user_history_add(&usr(team_is_user((Team*)g_ptr_array_index(teams, 0))),
USER_HISTORY_WIN_FINAL, ((Team*)g_ptr_array_index(teams, 0))->id, USER_HISTORY_WIN_FINAL,
fix->clid, fix->round,((Team*)g_ptr_array_index(teams, 1))->name); ((Team*)g_ptr_array_index(teams, 0))->name,
league_cup_get_name_string(fix->clid),
((Team*)g_ptr_array_index(teams, 1))->name, NULL);
user_add_cup_success(&usr(team_is_user((Team*)g_ptr_array_index(teams, 0))),
cup, fix->round, USER_HISTORY_WIN_FINAL);
}
else if(team_is_user((Team*)g_ptr_array_index(teams, 1)) != -1) else if(team_is_user((Team*)g_ptr_array_index(teams, 1)) != -1)
{
user_history_add(&usr(team_is_user((Team*)g_ptr_array_index(teams, 1))), user_history_add(&usr(team_is_user((Team*)g_ptr_array_index(teams, 1))),
USER_HISTORY_LOSE_FINAL, ((Team*)g_ptr_array_index(teams, 1))->id, USER_HISTORY_LOSE_FINAL,
fix->clid, fix->round,((Team*)g_ptr_array_index(teams, 0))->name); ((Team*)g_ptr_array_index(teams, 1))->name,
league_cup_get_name_string(fix->clid),
((Team*)g_ptr_array_index(teams, 0))->name, NULL);
user_add_cup_success(&usr(team_is_user((Team*)g_ptr_array_index(teams, 1))),
cup, fix->round, USER_HISTORY_LOSE_FINAL);
}
g_ptr_array_free(teams, TRUE); g_ptr_array_free(teams, TRUE);
} }
else if(fixture_user_team_involved(fix) != -1) else if(fixture_user_team_involved(fix) != -1)
user_history_add(&usr(fixture_user_team_involved(fix)), USER_HISTORY_REACH_CUP_ROUND, {
usr(fixture_user_team_involved(fix)).team_id, cup_get_round_name(cup_from_clid(fix->clid), fix->round, buf);
fix->clid, fix->round, ""); sprintf(buf2, "%d", fix->round + 1);
user_history_add(&usr(fixture_user_team_involved(fix)),
USER_HISTORY_REACH_CUP_ROUND,
usr(fixture_user_team_involved(fix)).name,
league_cup_get_name_string(fix->clid),
buf, buf2);
user_add_cup_success(&usr(fixture_user_team_involved(fix)),
cup, fix->round, USER_HISTORY_REACH_CUP_ROUND);
}
} }
/** Reduce stadium capacity and safety after a stadium event. /** Reduce stadium capacity and safety after a stadium event.

View File

@ -27,6 +27,7 @@
#include "file.h" #include "file.h"
#include "game_gui.h" #include "game_gui.h"
#include "gui.h" #include "gui.h"
#include "job.h"
#include "league.h" #include "league.h"
#include "live_game.h" #include "live_game.h"
#include "maths.h" #include "maths.h"
@ -680,15 +681,31 @@ game_gui_show_warning(const gchar *format, ...)
} }
/** Show the job offer window. /** Show the job offer window.
@param team The team offering the job. @param team The team offering the job or NULL if we're looking
@param type The offer type (whether the user's been fired). */ at a job offer from the job exchange.
@param job The job pointer or NULL (depends on whether we're looking
at a job offer from the job exchange).
@param type The offer type (eg. whether the user's been fired). */
void void
game_gui_show_job_offer(Team *team, gint type) game_gui_show_job_offer(Team *team, Job *job, gint type)
{ {
gchar buf[SMALL], buf2[SMALL]; gchar buf[SMALL], buf2[SMALL];
GtkLabel *label_text, *label_text2, *label_name, GtkLabel *label_text, *label_text2, *label_name,
*label_league, *label_rank, *label_money, *label_league, *label_rank, *label_money,
*label_cap, *label_saf, *label_average_skill; *label_cap, *label_saf, *label_average_skill;
Team *tm = (type != STATUS_JOB_EXCHANGE_SHOW_TEAM) ?
team : job_get_team(job);
statp = (type != STATUS_JOB_EXCHANGE_SHOW_TEAM) ?
(gpointer)team : (gpointer)job;
stat2 = type;
if(type == STATUS_JOB_OFFER_FIRE_FINANCE ||
type == STATUS_JOB_OFFER_FIRE_FAILURE)
user_history_add(&current_user, (type == STATUS_JOB_OFFER_FIRE_FINANCE) ?
USER_HISTORY_FIRE_FINANCE : USER_HISTORY_FIRE_FAILURE,
current_user.tm->name, team->name,
league_cup_get_name_string(team->clid), NULL);
window_create(WINDOW_JOB_OFFER); window_create(WINDOW_JOB_OFFER);
@ -705,38 +722,55 @@ game_gui_show_job_offer(Team *team, gint type)
if(type == STATUS_JOB_OFFER_FIRE_FINANCE) if(type == STATUS_JOB_OFFER_FIRE_FINANCE)
sprintf(buf, _("The team owners have fired you because of financial mismanagement. Luckily, the owners of %s have heard of your dismissal and offer you a job. Here's some information on %s:"), sprintf(buf, _("The team owners have fired you because of financial mismanagement. Luckily, the owners of %s have heard of your dismissal and offer you a job. Here's some information on %s:"),
team->name, team->name); tm->name, tm->name);
else if(type == STATUS_JOB_OFFER_FIRE_FAILURE) else if(type == STATUS_JOB_OFFER_FIRE_FAILURE)
sprintf(buf, _("The team owners have fired you because of unsuccessfulness. Luckily, the owners of %s have heard of your dismissal and offer you a job. Here's some information on %s:"), sprintf(buf, _("The team owners have fired you because of unsuccessfulness. Luckily, the owners of %s have heard of your dismissal and offer you a job. Here's some information on %s:"),
team->name, team->name); tm->name, tm->name);
else if(type == STATUS_JOB_OFFER_SUCCESS) else if(type == STATUS_JOB_OFFER_SUCCESS)
sprintf(buf, _("The owners of %s are deeply impressed by your success with %s and would like to hire you. Here's some information on %s:"), sprintf(buf, _("The owners of %s are deeply impressed by your success with %s and would like to hire you. Here's some information on %s:"),
team->name, current_user.tm->name, team->name); tm->name, current_user.tm->name, tm->name);
else if(type == STATUS_JOB_EXCHANGE_SHOW_TEAM)
strcpy(buf, _("Click on OK to apply for the job. Click on CANCEL to close the window."));
strcpy(buf2, _("Accept?")); strcpy(buf2, (type != STATUS_JOB_EXCHANGE_SHOW_TEAM) ?
if(type != STATUS_JOB_OFFER_SUCCESS) _("Accept?") : _("Apply for the job?"));
if(type != STATUS_JOB_OFFER_SUCCESS &&
type != STATUS_JOB_EXCHANGE_SHOW_TEAM)
strcat(buf2, _(" (NOTE: If you don't, the game is over for you.)")); strcat(buf2, _(" (NOTE: If you don't, the game is over for you.)"));
gtk_label_set_text(label_text, buf); gtk_label_set_text(label_text, buf);
gtk_label_set_text(label_text2, buf2); gtk_label_set_text(label_text2, buf2);
gtk_label_set_text(label_name, team->name); gtk_label_set_text(label_name, tm->name);
gtk_label_set_text(label_league, league_cup_get_name_string(team->clid)); gtk_label_set_text(label_league,
gui_label_set_text_from_int(label_rank, team_get_league_rank(team), FALSE); (type != STATUS_JOB_EXCHANGE_SHOW_TEAM) ?
misc_print_grouped_int(math_round_integer(team->stadium.capacity * league_cup_get_name_string(tm->clid) : job->league_name);
math_rndi(const_int("int_initial_money_lower"),
const_int("int_initial_money_upper")), 2),
buf);
gtk_label_set_text(label_money, buf);
misc_print_grouped_int(team->stadium.capacity, buf);
gtk_label_set_text(label_cap, buf);
gui_label_set_text_from_int(label_saf, (gint)rint(team->stadium.safety * 100), FALSE);
sprintf(buf, "%.1f", team_get_average_skill(team, FALSE)); if(job == NULL ||
job->type == JOB_TYPE_NATIONAL)
gui_label_set_text_from_int(label_rank,
team_get_league_rank(tm), FALSE);
misc_print_grouped_int(
math_round_integer(tm->stadium.capacity *
math_rndi(const_int("int_initial_money_lower"),
const_int("int_initial_money_upper")), 2),
buf);
gtk_label_set_text(label_money, buf);
misc_print_grouped_int(tm->stadium.capacity, buf);
gtk_label_set_text(label_cap, buf);
gui_label_set_text_from_int(label_saf,
(gint)rint(tm->stadium.safety * 100), FALSE);
sprintf(buf, "%.1f", team_get_average_skill(tm, FALSE));
gtk_label_set_text(label_average_skill, buf); gtk_label_set_text(label_average_skill, buf);
treeview_show_player_list_team(GTK_TREE_VIEW(lookup_widget(window.job_offer, "treeview_players")), treeview_show_player_list_team(
team, GTK_TREE_VIEW(lookup_widget(window.job_offer, "treeview_players")),
(type != STATUS_JOB_OFFER_SUCCESS) ? 2 : current_user.scout); tm,
(type != STATUS_JOB_OFFER_SUCCESS && type != STATUS_JOB_EXCHANGE_SHOW_TEAM) ?
2 : current_user.scout);
} }
/** Write the checkbuttons in the menus. */ /** Write the checkbuttons in the menus. */

View File

@ -30,6 +30,7 @@
#include <glib/gprintf.h> #include <glib/gprintf.h>
#include "bygfoot.h" #include "bygfoot.h"
#include "job_struct.h"
#include "live_game_struct.h" #include "live_game_struct.h"
#include "option_struct.h" #include "option_struct.h"
@ -95,7 +96,7 @@ void
game_gui_write_meters(const Team *tm); game_gui_write_meters(const Team *tm);
void void
game_gui_show_job_offer(Team *team, gint type); game_gui_show_job_offer(Team *team, Job *job, gint type);
void void
game_gui_write_check_items(void); game_gui_write_check_items(void);

View File

@ -25,6 +25,7 @@
#include "gui.h" #include "gui.h"
#include "misc.h" #include "misc.h"
#include "option.h"
#include "support.h" #include "support.h"
#include "variables.h" #include "variables.h"
#include "window.h" #include "window.h"

File diff suppressed because it is too large Load Diff

View File

@ -76,7 +76,7 @@ league_new(gboolean new_id)
new.round_robins = 2; new.round_robins = 2;
new.yellow_red = 1000; new.yellow_red = 1000;
new.stats = stat_league_new(new.id); new.stats = stat_league_new("", "");
new.active = TRUE; new.active = TRUE;
@ -731,12 +731,14 @@ league_team_movements_assign_dest(GArray *team_movements, gint idx,
{ {
if(tmove->prom_rel_type == PROM_REL_PROMOTION) if(tmove->prom_rel_type == PROM_REL_PROMOTION)
user_history_add(&usr(team_is_user(&tmove->tm)), user_history_add(&usr(team_is_user(&tmove->tm)),
USER_HISTORY_PROMOTED, tmove->tm.id, USER_HISTORY_PROMOTED, tmove->tm.name,
lig(g_array_index(tmove->dest_idcs, gint, 0)).id, -1, ""); lig(g_array_index(tmove->dest_idcs, gint, 0)).name,
NULL, NULL);
else else
user_history_add(&usr(team_is_user(&tmove->tm)), user_history_add(&usr(team_is_user(&tmove->tm)),
USER_HISTORY_RELEGATED, tmove->tm.id, USER_HISTORY_RELEGATED, tmove->tm.name,
lig(g_array_index(tmove->dest_idcs, gint, 0)).id, -1, ""); lig(g_array_index(tmove->dest_idcs, gint, 0)).name,
NULL, NULL);
} }
} }

View File

@ -35,16 +35,17 @@
#include "user.h" #include "user.h"
#include "variables.h" #include "variables.h"
#include "window.h" #include "window.h"
#include "xml_loadsave_misc.h"
#include "xml_loadsave_cup.h" #include "xml_loadsave_cup.h"
#include "xml_loadsave_jobs.h"
#include "xml_loadsave_league.h" #include "xml_loadsave_league.h"
#include "xml_loadsave_leagues_cups.h" #include "xml_loadsave_leagues_cups.h"
#include "xml_loadsave_misc.h"
#include "xml_loadsave_season_stats.h" #include "xml_loadsave_season_stats.h"
#include "xml_loadsave_transfers.h" #include "xml_loadsave_transfers.h"
#include "xml_loadsave_users.h" #include "xml_loadsave_users.h"
#include "xml.h" #include "xml.h"
#define PROGRESS_MAX 7 #define PROGRESS_MAX 8
/** Save the game to the specified file. */ /** Save the game to the specified file. */
void void
@ -119,6 +120,18 @@ load_save_save_game(const gchar *filename)
xml_loadsave_season_stats_write(prefix); xml_loadsave_season_stats_write(prefix);
if(debug > 60)
printf("load_save_save jobs \n");
gui_show_progress(
((PROGRESS_MAX * gtk_progress_bar_get_fraction(
GTK_PROGRESS_BAR(
lookup_widget(window.progress, "progressbar")))) + 1) / PROGRESS_MAX,
_("Saving job exchange..."),
PIC_TYPE_SAVE);
xml_loadsave_jobs_write(prefix);
if(debug > 60) if(debug > 60)
printf("load_save_save misc \n"); printf("load_save_save misc \n");
@ -259,6 +272,18 @@ load_save_load_game(const gchar* filename, gboolean create_main_window)
xml_loadsave_season_stats_read(dirname, prefix); xml_loadsave_season_stats_read(dirname, prefix);
if(debug > 60)
printf("load_save_load jobs \n");
gui_show_progress(
((PROGRESS_MAX * gtk_progress_bar_get_fraction(
GTK_PROGRESS_BAR(
lookup_widget(window.progress, "progressbar")))) + 1) / PROGRESS_MAX,
_("Loading job exchange..."),
PIC_TYPE_LOAD);
xml_loadsave_jobs_read(dirname, prefix);
if(debug > 60) if(debug > 60)
printf("load_save_load misc \n"); printf("load_save_load misc \n");

View File

@ -35,12 +35,13 @@
#include "debug.h" #include "debug.h"
#include "file.h" #include "file.h"
#include "free.h" #include "free.h"
#include "job_struct.h"
#include "language.h" #include "language.h"
#include "lg_commentary.h" #include "lg_commentary.h"
#include "live_game.h" #include "live_game.h"
#include "load_save.h" #include "load_save.h"
#include "main.h" #include "main.h"
#include "mediaplayer.h" /* #include "mediaplayer.h" */
#include "misc.h" #include "misc.h"
#include "misc_callbacks.h" #include "misc_callbacks.h"
#include "name_struct.h" #include "name_struct.h"
@ -183,6 +184,8 @@ main_init_variables(void)
strategies = g_array_new(FALSE, FALSE, sizeof(Strategy)); strategies = g_array_new(FALSE, FALSE, sizeof(Strategy));
bets[0] = g_array_new(FALSE, FALSE, sizeof(BetMatch)); bets[0] = g_array_new(FALSE, FALSE, sizeof(BetMatch));
bets[1] = g_array_new(FALSE, FALSE, sizeof(BetMatch)); bets[1] = g_array_new(FALSE, FALSE, sizeof(BetMatch));
jobs = g_array_new(FALSE, FALSE, sizeof(Job));
job_teams = g_array_new(FALSE, FALSE, sizeof(Team));
save_file = NULL; save_file = NULL;
@ -279,7 +282,7 @@ main (gint argc, gchar *argv[])
gtk_set_locale (); gtk_set_locale ();
gtk_init (&argc, &argv); gtk_init (&argc, &argv);
mediaplayer_init(&argc, &argv); /* mediaplayer_init(&argc, &argv); */
main_init(&argc, &argv); main_init(&argc, &argv);

View File

@ -458,6 +458,9 @@ misc_parse(const gchar *s, gint *result)
void void
misc_string_assign(gchar **string, const gchar *contents) misc_string_assign(gchar **string, const gchar *contents)
{ {
if(contents == NULL)
return;
if(*string != NULL) if(*string != NULL)
g_free(*string); g_free(*string);

View File

@ -29,6 +29,7 @@
#include "finance.h" #include "finance.h"
#include "free.h" #include "free.h"
#include "game_gui.h" #include "game_gui.h"
#include "league.h"
#include "maths.h" #include "maths.h"
#include "misc.h" #include "misc.h"
#include "misc2_callback_func.h" #include "misc2_callback_func.h"
@ -231,7 +232,9 @@ misc2_callback_add_user(void)
new_user.tm = tm; new_user.tm = tm;
new_user.team_id = tm->id; new_user.team_id = tm->id;
user_history_add(&new_user, USER_HISTORY_START_GAME, tm->id, tm->clid, -1, ""); user_history_add(&new_user, USER_HISTORY_START_GAME,
tm->name, league_cup_get_name_string(tm->clid),
NULL, NULL);
g_array_append_val(users, new_user); g_array_append_val(users, new_user);

View File

@ -30,6 +30,8 @@
#include "finance.h" #include "finance.h"
#include "free.h" #include "free.h"
#include "game_gui.h" #include "game_gui.h"
#include "league.h"
#include "job.h"
#include "load_save.h" #include "load_save.h"
#include "main.h" #include "main.h"
#include "misc2_callbacks.h" #include "misc2_callbacks.h"
@ -37,6 +39,7 @@
#include "misc2_interface.h" #include "misc2_interface.h"
#include "player.h" #include "player.h"
#include "support.h" #include "support.h"
#include "team.h"
#include "transfer.h" #include "transfer.h"
#include "treeview.h" #include "treeview.h"
#include "treeview2.h" #include "treeview2.h"
@ -44,38 +47,72 @@
#include "user.h" #include "user.h"
#include "window.h" #include "window.h"
gboolean
on_button_cancel_clicked (GtkWidget *widget,
GdkEvent *event,
gpointer user_data)
{
return FALSE;
}
void
on_button_ok_clicked (GtkButton *button,
gpointer user_data)
{
}
void void
on_button_offer_ok_clicked (GtkButton *button, on_button_offer_ok_clicked (GtkButton *button,
gpointer user_data) gpointer user_data)
{ {
if(stat2 == STATUS_JOB_OFFER_SUCCESS) gboolean changed = TRUE;
user_history_add(&current_user, USER_HISTORY_JOB_OFFER_ACCEPTED, gchar *team_name = g_strdup(current_user.tm->name);
current_user.tm->id, ((Team*)statp)->id, ((Team*)statp)->clid, "");
user_change_team(&current_user, (Team*)statp); if(stat2 == STATUS_JOB_EXCHANGE_SHOW_TEAM)
{
if(query_job_application_successful((Job*)statp, &current_user))
{
if(((Job*)statp)->type != JOB_TYPE_NATIONAL)
{
game_gui_show_warning(
_("The owners of %s accept your application. Since %s don't want to get stuck with a lame duck, you get fired instantly and spend the rest of the current season tending your garden."),
job_get_team((Job*)statp)->name, current_user.tm->name);
job_change_country((Job*)statp);
}
else
game_gui_show_warning(
_("The owners of %s accept your application."),
current_user.tm->name);
stat0 = STATUS_MAIN; printf("misc2 1\n");
game_gui_show_main(); user_change_team(&current_user, team_of_id(((Job*)statp)->team_id));
window_destroy(&window.job_offer, TRUE); printf("misc2 2\n");
if(((Job*)statp)->type == JOB_TYPE_NATIONAL)
job_remove((Job*)statp, TRUE);
else
{
job_remove((Job*)statp, FALSE);
job_remove_national();
}
printf("misc2 3\n");
}
else
{
game_gui_show_warning(
_("The owners of %s politely reject your application. You're not successful enough in their eyes."),
job_get_team((Job*)statp)->name);
changed = FALSE;
}
}
else
user_change_team(&current_user, (Team*)statp);
printf("misc2 4\n");
if(changed)
{
if(stat2 == STATUS_JOB_OFFER_SUCCESS ||
stat2 == STATUS_JOB_EXCHANGE_SHOW_TEAM)
user_history_add(&current_user, USER_HISTORY_JOB_OFFER_ACCEPTED,
team_name,
current_user.tm->name,
league_cup_get_name_string(current_user.tm->clid),
NULL);
stat0 = STATUS_MAIN;
game_gui_show_main();
}
g_free(team_name);
window_destroy(&window.job_offer, FALSE);
setsav0; setsav0;
} }
@ -85,7 +122,8 @@ void
on_button_offer_cancel_clicked (GtkButton *button, on_button_offer_cancel_clicked (GtkButton *button,
gpointer user_data) gpointer user_data)
{ {
if(stat2 != STATUS_JOB_OFFER_SUCCESS) if(stat2 != STATUS_JOB_OFFER_SUCCESS &&
stat2 != STATUS_JOB_EXCHANGE_SHOW_TEAM)
{ {
if(users->len == 1) if(users->len == 1)
main_exit_program(EXIT_USER_FIRED, NULL); main_exit_program(EXIT_USER_FIRED, NULL);
@ -96,9 +134,13 @@ on_button_offer_cancel_clicked (GtkButton *button,
} }
} }
window_destroy(&window.job_offer, TRUE); window_destroy(&window.job_offer, FALSE);
stat0 = STATUS_MAIN;
game_gui_show_main(); if(stat0 != STATUS_SHOW_JOB_EXCHANGE)
{
stat0 = STATUS_MAIN;
game_gui_show_main();
}
} }

View File

@ -29,15 +29,6 @@
#include <gtk/gtk.h> #include <gtk/gtk.h>
gboolean
on_button_cancel_clicked (GtkWidget *widget,
GdkEvent *event,
gpointer user_data);
void
on_button_ok_clicked (GtkButton *button,
gpointer user_data);
void void
on_button_offer_ok_clicked (GtkButton *button, on_button_offer_ok_clicked (GtkButton *button,
gpointer user_data); gpointer user_data);

View File

@ -70,7 +70,8 @@ create_window_job_offer (void)
gtk_container_set_border_width (GTK_CONTAINER (window_job_offer), 6); gtk_container_set_border_width (GTK_CONTAINER (window_job_offer), 6);
gtk_window_set_title (GTK_WINDOW (window_job_offer), _("Job offer")); gtk_window_set_title (GTK_WINDOW (window_job_offer), _("Job offer"));
gtk_window_set_position (GTK_WINDOW (window_job_offer), GTK_WIN_POS_CENTER); gtk_window_set_position (GTK_WINDOW (window_job_offer), GTK_WIN_POS_CENTER);
gtk_window_set_default_size (GTK_WINDOW (window_job_offer), -1, 600); gtk_window_set_modal (GTK_WINDOW (window_job_offer), TRUE);
gtk_window_set_default_size (GTK_WINDOW (window_job_offer), 500, 600);
vbox5 = gtk_vbox_new (FALSE, 0); vbox5 = gtk_vbox_new (FALSE, 0);
gtk_widget_show (vbox5); gtk_widget_show (vbox5);

View File

@ -54,7 +54,7 @@ misc_callback_show_team_list(GtkWidget *widget, const gchar *country_file)
GtkWidget *treeview_startup = GtkWidget *treeview_startup =
lookup_widget(widget, "treeview_startup"); lookup_widget(widget, "treeview_startup");
xml_country_read(country_file); xml_country_read(country_file, NULL);
treeview_show_team_list(GTK_TREE_VIEW(treeview_startup), FALSE, FALSE); treeview_show_team_list(GTK_TREE_VIEW(treeview_startup), FALSE, FALSE);

View File

@ -31,6 +31,7 @@
#include "free.h" #include "free.h"
#include "game_gui.h" #include "game_gui.h"
#include "gui.h" #include "gui.h"
#include "job.h"
#include "league.h" #include "league.h"
#include "live_game.h" #include "live_game.h"
#include "load_save.h" #include "load_save.h"
@ -69,7 +70,7 @@ WeekFunc start_week_round_funcs[] =
WeekFunc start_week_funcs[] = WeekFunc start_week_funcs[] =
{start_week_add_cups, start_week_update_users, {start_week_add_cups, start_week_update_users,
start_week_update_teams, start_week_update_user_finances, start_week_update_teams, start_week_update_user_finances,
youth_academy_update_weekly, transfer_update, NULL}; youth_academy_update_weekly, transfer_update, job_update, NULL};
WeekFunc end_week_funcs[] = {stat_update_leagues, end_week_hide_cups, NULL}; WeekFunc end_week_funcs[] = {stat_update_leagues, end_week_hide_cups, NULL};
@ -88,6 +89,7 @@ void
start_new_season(void) start_new_season(void)
{ {
gint i, j; gint i, j;
gchar buf[SMALL];
week = week_round = 1; week = week_round = 1;
free_names(TRUE); free_names(TRUE);
@ -102,6 +104,7 @@ start_new_season(void)
g_ptr_array_remove_index(acps, i); g_ptr_array_remove_index(acps, i);
} }
printf("s1\n");
for(i=cps->len - 1; i >= 0; i--) for(i=cps->len - 1; i >= 0; i--)
if(cp(i).add_week == -1) if(cp(i).add_week == -1)
{ {
@ -109,12 +112,17 @@ start_new_season(void)
fixture_write_cup_fixtures(&cp(i)); fixture_write_cup_fixtures(&cp(i));
} }
printf("s2\n");
if(season > 1) if(season > 1)
{ {
for(i=0;i<users->len;i++) for(i=0;i<users->len;i++)
{
sprintf(buf, "%d", team_get_league_rank(usr(i).tm));
user_history_add(&usr(i), USER_HISTORY_END_SEASON, user_history_add(&usr(i), USER_HISTORY_END_SEASON,
usr(i).team_id, usr(i).tm->clid, usr(i).tm->name,
team_get_league_rank(usr(i).tm), ""); league_cup_get_name_string(usr(i).tm->clid),
buf, NULL);
}
start_new_season_league_changes(); start_new_season_league_changes();
@ -136,17 +144,25 @@ start_new_season(void)
g_ptr_array_add(acps, &cp(i)); g_ptr_array_add(acps, &cp(i));
} }
printf("s3\n");
for(i=0;i<ligs->len;i++) for(i=0;i<ligs->len;i++)
if(lig(i).active) if(lig(i).active)
fixture_write_league_fixtures(&lig(i)); fixture_write_league_fixtures(&lig(i));
printf("s4\n");
for(i=cps->len - 1; i >= 0; i--) for(i=cps->len - 1; i >= 0; i--)
{
printf("%d %s adw %d\n", i, cp(i).name, cp(i).add_week);
if(cp(i).add_week >= 0) if(cp(i).add_week >= 0)
{ {
printf("res\n");
cup_reset(&cp(i)); cup_reset(&cp(i));
printf("fix\n");
if(cp(i).add_week == 0) if(cp(i).add_week == 0)
fixture_write_cup_fixtures(&cp(i)); fixture_write_cup_fixtures(&cp(i));
printf("done\n");
} }
else if(cp(i).add_week == -1) else if(cp(i).add_week == -1)
{ {
@ -158,7 +174,11 @@ start_new_season(void)
team_of_id(g_array_index(cp(i).fixtures, Fixture, j).team_ids[1]); team_of_id(g_array_index(cp(i).fixtures, Fixture, j).team_ids[1]);
} }
} }
printf("#%d %s adw %d\n", i, cp(i).name, cp(i).add_week);
}
printf("s5\n");
stat5 = -1; stat5 = -1;
for(i=0;i<name_lists->len;i++) for(i=0;i<name_lists->len;i++)
@ -166,6 +186,8 @@ start_new_season(void)
if(season == 1) if(season == 1)
bet_update(); bet_update();
printf("s6\n");
} }
/** Fill some global variables with default values at the /** Fill some global variables with default values at the
@ -196,7 +218,7 @@ start_generate_league_teams(void)
for(i=0;i<ligs->len;i++) for(i=0;i<ligs->len;i++)
for(j=0;j<lig(i).teams->len;j++) for(j=0;j<lig(i).teams->len;j++)
team_generate_players_stadium(&g_array_index(lig(i).teams, Team, j)); team_generate_players_stadium(&g_array_index(lig(i).teams, Team, j), 0);
stat5 = -1; stat5 = -1;
} }
@ -365,8 +387,11 @@ end_week_round_update_fixtures(void)
week_round == 1 && week_round == 1 &&
team_is_user(g_array_index(lig(i).table.elements, TableElement, 0).team) != -1) team_is_user(g_array_index(lig(i).table.elements, TableElement, 0).team) != -1)
user_history_add(&usr(team_is_user(g_array_index(lig(i).table.elements, TableElement, 0).team)), user_history_add(&usr(team_is_user(g_array_index(lig(i).table.elements, TableElement, 0).team)),
USER_HISTORY_CHAMPION, g_array_index(lig(i).table.elements, TableElement, 0).team_id, USER_HISTORY_CHAMPION,
lig(i).id, -1, ""); g_array_index(lig(i).table.elements,
TableElement, 0).team->name,
league_cup_get_name_string(lig(i).id),
NULL, NULL);
for(i=0;i<cps->len;i++) for(i=0;i<cps->len;i++)
{ {
@ -569,12 +594,6 @@ start_new_season_league_changes(void)
for(i=0;i<ligs->len;i++) for(i=0;i<ligs->len;i++)
league_size[i] = lig(i).teams->len; league_size[i] = lig(i).teams->len;
/*d*/
for(i=0;i<lig(1).teams->len;i++)
printf("# %d %s %d\n", i,
g_array_index(lig(1).teams, Team, i).name,
g_array_index(lig(1).teams, Team, i).id);
for(i=0;i<team_movements->len;i++) for(i=0;i<team_movements->len;i++)
league_remove_team_with_id( league_remove_team_with_id(
league_from_clid(g_array_index(team_movements, TeamMove, i).tm.clid), league_from_clid(g_array_index(team_movements, TeamMove, i).tm.clid),
@ -583,17 +602,21 @@ start_new_season_league_changes(void)
league_team_movements_destinations(team_movements, league_size); league_team_movements_destinations(team_movements, league_size);
for(i = team_movements->len - 1; i >= 0; i--) for(i = team_movements->len - 1; i >= 0; i--)
if(g_array_index(team_movements, TeamMove, i).prom_rel_type == PROM_REL_RELEGATION) if(g_array_index(team_movements, TeamMove, i).prom_rel_type ==
PROM_REL_RELEGATION)
g_array_prepend_val( g_array_prepend_val(
lig(g_array_index( lig(g_array_index(
g_array_index(team_movements, TeamMove, i).dest_idcs, gint, 0)).teams, g_array_index(team_movements, TeamMove, i).dest_idcs,
gint, 0)).teams,
g_array_index(team_movements, TeamMove, i).tm); g_array_index(team_movements, TeamMove, i).tm);
for(i=1;i<team_movements->len;i++) for(i=1;i<team_movements->len;i++)
if(g_array_index(team_movements, TeamMove, i).prom_rel_type != PROM_REL_RELEGATION) if(g_array_index(team_movements, TeamMove, i).prom_rel_type !=
PROM_REL_RELEGATION)
g_array_append_val( g_array_append_val(
lig(g_array_index( lig(g_array_index(
g_array_index(team_movements, TeamMove, i).dest_idcs, gint, 0)).teams, g_array_index(team_movements, TeamMove, i).dest_idcs,
gint, 0)).teams,
g_array_index(team_movements, TeamMove, i).tm); g_array_index(team_movements, TeamMove, i).tm);
for(i=0;i<team_movements->len;i++) for(i=0;i<team_movements->len;i++)
@ -606,7 +629,8 @@ start_new_season_league_changes(void)
{ {
g_array_index(lig(i).teams, Team, j).clid = lig(i).id; g_array_index(lig(i).teams, Team, j).clid = lig(i).id;
for(k=0;k<g_array_index(lig(i).teams, Team, j).players->len;k++) for(k=0;k<g_array_index(lig(i).teams, Team, j).players->len;k++)
g_array_index(g_array_index(lig(i).teams, Team, j).players, Player, k).team = g_array_index(g_array_index(lig(i).teams, Team, j).players,
Player, k).team =
&g_array_index(lig(i).teams, Team, j); &g_array_index(lig(i).teams, Team, j);
} }

View File

@ -33,13 +33,15 @@
#include "team.h" #include "team.h"
#include "variables.h" #include "variables.h"
/** Return a newly allocated league stat with given clid. */ /** Return a newly allocated league stat with specified
league name and symbol. */
LeagueStat LeagueStat
stat_league_new(gint clid) stat_league_new(const gchar *league_name, const gchar *league_symbol)
{ {
LeagueStat new; LeagueStat new;
new.clid = clid; new.league_name = g_strdup(league_name);
new.league_symbol = g_strdup(league_symbol);
new.teams_off = g_array_new(FALSE, FALSE, sizeof(Stat)); new.teams_off = g_array_new(FALSE, FALSE, sizeof(Stat));
new.teams_def = g_array_new(FALSE, FALSE, sizeof(Stat)); new.teams_def = g_array_new(FALSE, FALSE, sizeof(Stat));
new.player_scorers = g_array_new(FALSE, FALSE, sizeof(Stat)); new.player_scorers = g_array_new(FALSE, FALSE, sizeof(Stat));
@ -60,8 +62,12 @@ stat_update_leagues(void)
lig(i).fixtures, Fixture, lig(i).fixtures->len - 1).week_number >= week) lig(i).fixtures, Fixture, lig(i).fixtures->len - 1).week_number >= week)
{ {
free_league_stats(&lig(i).stats); free_league_stats(&lig(i).stats);
lig(i).stats.teams_off = stat_update_league_teams(lig(i).teams, TEAM_COMPARE_OFFENSIVE); lig(i).stats.league_name = g_strdup(lig(i).name);
lig(i).stats.teams_def = stat_update_league_teams(lig(i).teams, TEAM_COMPARE_DEFENSE); lig(i).stats.league_symbol = g_strdup(lig(i).symbol);
lig(i).stats.teams_off =
stat_update_league_teams(lig(i).teams, TEAM_COMPARE_OFFENSIVE);
lig(i).stats.teams_def =
stat_update_league_teams(lig(i).teams, TEAM_COMPARE_DEFENSE);
stat_update_league_players(&lig(i)); stat_update_league_players(&lig(i));
} }
} }
@ -103,7 +109,7 @@ stat_update_league_players(League *league)
for(j=0;j<maxlen;j++) for(j=0;j<maxlen;j++)
{ {
pl = (Player*)g_ptr_array_index(players_sorted[i], j); pl = (Player*)g_ptr_array_index(players_sorted[i], j);
new_stat.team_id = pl->team->id; new_stat.team_name = g_strdup(pl->team->name);
new_stat.value_string = g_strdup(pl->name); new_stat.value_string = g_strdup(pl->name);
new_stat.value1 = new_stat.value1 =
player_games_goals_get(pl, pl->team->clid, PLAYER_VALUE_GOALS); player_games_goals_get(pl, pl->team->clid, PLAYER_VALUE_GOALS);
@ -138,9 +144,11 @@ stat_update_league_teams(const GArray *teams_array, gint compare_type)
for(i=0;i<maxlen;i++) for(i=0;i<maxlen;i++)
{ {
new_stat.team_id = ((Team*)g_ptr_array_index(teams, i))->id; new_stat.team_name = g_strdup(((Team*)g_ptr_array_index(teams, i))->name);
new_stat.value1 = team_get_table_value((Team*)g_ptr_array_index(teams, i), TABLE_GF); new_stat.value1 =
new_stat.value2 = team_get_table_value((Team*)g_ptr_array_index(teams, i), TABLE_GA); team_get_table_value((Team*)g_ptr_array_index(teams, i), TABLE_GF);
new_stat.value2 =
team_get_table_value((Team*)g_ptr_array_index(teams, i), TABLE_GA);
new_stat.value3 = -1; new_stat.value3 = -1;
new_stat.value_string = NULL; new_stat.value_string = NULL;
@ -182,7 +190,7 @@ stat_create_season_stat(void)
g_array_append_val(new.league_champs, new_champ); g_array_append_val(new.league_champs, new_champ);
g_array_append_val(new.league_stats, lig(i).stats); g_array_append_val(new.league_stats, lig(i).stats);
lig(i).stats = stat_league_new(lig(i).id); lig(i).stats = stat_league_new(lig(i).name, lig(i).symbol);
} }
for(i=0;i<acps->len;i++) for(i=0;i<acps->len;i++)

View File

@ -34,7 +34,7 @@ SeasonStat
stat_season_stat_new(gint season_number); stat_season_stat_new(gint season_number);
LeagueStat LeagueStat
stat_league_new(gint clid); stat_league_new(const gchar *league_name, const gchar *league_symbol);
GArray* GArray*
stat_update_league_teams(const GArray *teams, gint compare_type); stat_update_league_teams(const GArray *teams, gint compare_type);

View File

@ -30,16 +30,17 @@
string and integer values. */ string and integer values. */
typedef struct typedef struct
{ {
gint team_id; gchar *team_name;
gint value1, value2, value3; gint value1, value2, value3;
gchar *value_string; gchar *value_string;
} Stat; } Stat;
/** A structure holding some stat arrays about a league. */ /** A structure holding some stat arrays about a league. */
typedef struct typedef struct
{ {
/** The league id. */ gchar *league_symbol;
gint clid; gchar *league_name;
/** Best offensive and defensive teams. */ /** Best offensive and defensive teams. */
GArray *teams_off, *teams_def; GArray *teams_off, *teams_def;
/** Best goal getters and goalies. */ /** Best goal getters and goalies. */

View File

@ -27,8 +27,9 @@
#define STRATEGY_H #define STRATEGY_H
#include "bygfoot.h" #include "bygfoot.h"
#include "player_struct.h"
#include "strategy_struct.h" #include "strategy_struct.h"
/* #include "team_struct.h" */ #include "team_struct.h"
#include "variables.h" #include "variables.h"
void void

View File

@ -1,28 +1,3 @@
/*
support.c
Bygfoot Football Manager -- a small and simple GTK2-based
football management game.
http://bygfoot.sourceforge.net
Copyright (C) 2005 Gyözö Both (gyboth@bygfoot.com)
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
/* /*
* DO NOT EDIT THIS FILE - it is generated by Glade. * DO NOT EDIT THIS FILE - it is generated by Glade.
*/ */

View File

@ -1,28 +1,3 @@
/*
support.h
Bygfoot Football Manager -- a small and simple GTK2-based
football management game.
http://bygfoot.sourceforge.net
Copyright (C) 2005 Gyözö Both (gyboth@bygfoot.com)
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
/* /*
* DO NOT EDIT THIS FILE - it is generated by Glade. * DO NOT EDIT THIS FILE - it is generated by Glade.
*/ */

View File

@ -71,14 +71,14 @@ team_new(gboolean new_id)
/* Fill the players array of the team and the stadium. /* Fill the players array of the team and the stadium.
@param tm The team that gets filled. */ @param tm The team that gets filled. */
void void
team_generate_players_stadium(Team *tm) team_generate_players_stadium(Team *tm, gfloat av_talent)
{ {
gint i; gint i;
gfloat skill_factor = math_rnd(1 - const_float("float_team_skill_variance"), gfloat skill_factor = math_rnd(1 - const_float("float_team_skill_variance"),
1 + const_float("float_team_skill_variance")); 1 + const_float("float_team_skill_variance"));
Player new; Player new;
gfloat wages = 0, average_talent; gfloat wages = 0, average_talent, league_av_talent;
gchar *def_file = team_has_def_file(tm); gchar *def_file = team_has_def_file(tm);
tm->strategy_sid = strategy_get_random(); tm->strategy_sid = strategy_get_random();
@ -89,9 +89,13 @@ team_generate_players_stadium(Team *tm)
const_float("float_team_stadium_safety_upper")); const_float("float_team_stadium_safety_upper"));
if(tm->clid < ID_CUP_START) if(tm->clid < ID_CUP_START)
{
league_av_talent = (av_talent > 0) ?
av_talent : league_from_clid(tm->clid)->average_talent;
average_talent = (tm->average_talent == 0) ? average_talent = (tm->average_talent == 0) ?
skill_factor * league_from_clid(tm->clid)->average_talent : skill_factor * league_av_talent :
tm->average_talent; tm->average_talent;
}
else else
average_talent = average_talent =
skill_factor * team_get_average_talents(lig(0).teams) * skill_factor * team_get_average_talents(lig(0).teams) *
@ -321,6 +325,21 @@ team_is_user(const Team *tm)
return -1; return -1;
} }
/** Check whether the team with given name is a user-managed team.
@param team_name The team name we examine.
@return The user's index in the #users array or -1.*/
gint
team_name_is_user(const gchar *team_name)
{
gint i;
for(i=0;i<users->len;i++)
if(strcmp(team_name, usr(i).tm->name) == 0)
return i;
return -1;
}
/** Return the overall average skill or /** Return the overall average skill or
the cskill of the first 11 players. the cskill of the first 11 players.
@param tm The team we examine. @param tm The team we examine.

View File

@ -50,7 +50,7 @@ gboolean
query_is_my_team(const Team *tm); query_is_my_team(const Team *tm);
void void
team_generate_players_stadium(Team *tm); team_generate_players_stadium(Team *tm, gfloat av_talent);
gboolean gboolean
query_team_is_in_cups(const Team *tm, gint group); query_team_is_in_cups(const Team *tm, gint group);
@ -73,6 +73,9 @@ team_get_average_skill(const Team *tm, gboolean cskill);
gfloat gfloat
team_get_average_talent(const Team *tm); team_get_average_talent(const Team *tm);
gint
team_name_is_user(const gchar *team_name);
gint gint
team_is_user(const Team *tm); team_is_user(const Team *tm);

View File

@ -936,14 +936,15 @@ treeview_create_fixture(const Fixture *fix, GtkListStore *ls)
gchar *symbol[2] = {NULL, NULL}; gchar *symbol[2] = {NULL, NULL};
gchar buf_result[SMALL], buf[3][SMALL]; gchar buf_result[SMALL], buf[3][SMALL];
gchar *colour_fg = NULL, *colour_bg = NULL; gchar *colour_fg = NULL, *colour_bg = NULL;
gint user_idx = fixture_user_team_involved(fix);
if(fix->clid >= ID_CUP_START && if(fix->clid >= ID_CUP_START &&
query_cup_is_international(fix->clid)) query_cup_is_international(fix->clid))
for(i=0;i<2;i++) for(i=0;i<2;i++)
symbol[i] = fix->teams[i]->symbol; symbol[i] = fix->teams[i]->symbol;
if(fixture_user_team_involved(fix) != -1) if(user_idx != -1)
treeview_helper_set_user_colours(usr(fixture_user_team_involved(fix)).tm, treeview_helper_set_user_colours(usr(user_idx).tm->name,
&colour_bg, &colour_fg); &colour_bg, &colour_fg);
else else
{ {
@ -2040,7 +2041,7 @@ treeview_create_user_history(void)
gtk_list_store_set(ls, &iter, gtk_list_store_set(ls, &iter,
0, g_array_index(current_user.history, UserHistory, i).season, 0, g_array_index(current_user.history, UserHistory, i).season,
1, g_array_index(current_user.history, UserHistory, i).week, 1, g_array_index(current_user.history, UserHistory, i).week,
2, team_of_id(g_array_index(current_user.history, UserHistory, i).team_id)->name, 2, g_array_index(current_user.history, UserHistory, i).team_name,
4, buf, -1); 4, buf, -1);
} }
@ -2129,9 +2130,10 @@ treeview_create_league_stats(GtkListStore *ls, const LeagueStat *league_stat)
gchar *colour_fg = NULL, *colour_bg = NULL; gchar *colour_fg = NULL, *colour_bg = NULL;
gtk_list_store_append(ls, &iter); gtk_list_store_append(ls, &iter);
treeview_helper_insert_icon(ls, &iter, 0, league_from_clid(league_stat->clid)->symbol); treeview_helper_insert_icon(ls, &iter, 0,
league_stat->league_symbol);
gtk_list_store_set(ls, &iter, 1, const_int("int_treeview_helper_int_empty"), gtk_list_store_set(ls, &iter, 1, const_int("int_treeview_helper_int_empty"),
2, league_cup_get_name_string(league_stat->clid), 3, "", 4, "", 5, "", -1); 2, league_stat->league_name, 3, "", 4, "", 5, "", -1);
for(i=0;i<2;i++) for(i=0;i<2;i++)
{ {
@ -2151,11 +2153,13 @@ treeview_create_league_stats(GtkListStore *ls, const LeagueStat *league_stat)
g_array_index(teams[i], Stat, j).value1, g_array_index(teams[i], Stat, j).value1,
g_array_index(teams[i], Stat, j).value2); g_array_index(teams[i], Stat, j).value2);
treeview_helper_set_user_colours(team_of_id(g_array_index(teams[i], Stat, j).team_id), treeview_helper_set_user_colours(
&colour_bg, &colour_fg); g_array_index(teams[i], Stat, j).team_name,
&colour_bg, &colour_fg);
sprintf(buf2, "<span background='%s' foreground='%s'>%s</span>", sprintf(buf2, "<span background='%s' foreground='%s'>%s</span>",
colour_bg, colour_fg, team_of_id(g_array_index(teams[i], Stat, j).team_id)->name); colour_bg, colour_fg,
g_array_index(teams[i], Stat, j).team_name);
gtk_list_store_append(ls, &iter); gtk_list_store_append(ls, &iter);
gtk_list_store_set(ls, &iter, 0, NULL, 1, j + 1, gtk_list_store_set(ls, &iter, 0, NULL, 1, j + 1,
@ -2193,12 +2197,13 @@ treeview_create_league_stats(GtkListStore *ls, const LeagueStat *league_stat)
100 * (1 - (gfloat)g_array_index(players[i], Stat, j).value1 / 100 * (1 - (gfloat)g_array_index(players[i], Stat, j).value1 /
(gfloat)g_array_index(players[i], Stat, j).value3) : 0); (gfloat)g_array_index(players[i], Stat, j).value3) : 0);
treeview_helper_set_user_colours(team_of_id(g_array_index(players[i], Stat, j).team_id), treeview_helper_set_user_colours(
&colour_bg, &colour_fg); g_array_index(players[i], Stat, j).team_name,
&colour_bg, &colour_fg);
sprintf(buf3, "<span background='%s' foreground='%s'>%s (%s)</span>", sprintf(buf3, "<span background='%s' foreground='%s'>%s (%s)</span>",
colour_bg, colour_fg, colour_bg, colour_fg,
g_array_index(players[i], Stat, j).value_string, g_array_index(players[i], Stat, j).value_string,
team_of_id(g_array_index(players[i], Stat, j).team_id)->name); g_array_index(players[i], Stat, j).team_name);
sprintf(buf4, "%d", g_array_index(players[i], Stat, j).value1); sprintf(buf4, "%d", g_array_index(players[i], Stat, j).value1);
gtk_list_store_append(ls, &iter); gtk_list_store_append(ls, &iter);
@ -2300,11 +2305,12 @@ treeview_create_season_history_champions(GtkListStore *ls, const GArray* league_
} }
} }
/** Show the season history of the specified season /** Show the season history with given index in the season_stats array
and the specified page. Page is either a page of league stats and the specified page.
@param page Either a page of league stats
(if != -1) or -1 which means we show the champions. */ (if != -1) or -1 which means we show the champions. */
void void
treeview_show_season_history(gint page, gint season_number) treeview_show_season_history(gint page, gint idx)
{ {
gchar buf[SMALL]; gchar buf[SMALL];
GtkTreeView *treeview = GTK_TREE_VIEW(lookup_widget(window.main, "treeview_right")); GtkTreeView *treeview = GTK_TREE_VIEW(lookup_widget(window.main, "treeview_right"));
@ -2312,24 +2318,24 @@ treeview_show_season_history(gint page, gint season_number)
gtk_list_store_new(6, GDK_TYPE_PIXBUF, G_TYPE_INT, G_TYPE_STRING, G_TYPE_STRING, gtk_list_store_new(6, GDK_TYPE_PIXBUF, G_TYPE_INT, G_TYPE_STRING, G_TYPE_STRING,
G_TYPE_STRING, G_TYPE_STRING); G_TYPE_STRING, G_TYPE_STRING);
GtkTreeIter iter; GtkTreeIter iter;
SeasonStat *stat = &g_array_index(season_stats, SeasonStat, season_number); SeasonStat *stat = &g_array_index(season_stats, SeasonStat, idx);
treeview_helper_clear(treeview); treeview_helper_clear(treeview);
treeview_set_up_league_stats(treeview); treeview_set_up_league_stats(treeview);
sprintf(buf, _("Season %d"), season_number + 1); sprintf(buf, _("Season %d"), stat->season_number);
gtk_list_store_append(model, &iter); gtk_list_store_append(model, &iter);
gtk_list_store_set(model, &iter, 0, NULL, gtk_list_store_set(model, &iter, 0, NULL,
1, const_int("int_treeview_helper_int_empty"), 1, const_int("int_treeview_helper_int_empty"),
2, buf, -1); 2, buf, -1);
if(page != -1) if(page != -1)
treeview_create_league_stats(model, treeview_create_league_stats(
&g_array_index(stat->league_stats, LeagueStat, page)); model, &g_array_index(stat->league_stats, LeagueStat, page));
else else
treeview_create_season_history_champions(model, stat->league_champs, treeview_create_season_history_champions(
stat->cup_champs); model, stat->league_champs, stat->cup_champs);
gtk_tree_view_set_model(treeview, GTK_TREE_MODEL(model)); gtk_tree_view_set_model(treeview, GTK_TREE_MODEL(model));
g_object_unref(model); g_object_unref(model);

View File

@ -211,7 +211,7 @@ void
treeview_create_league_stats(GtkListStore *ls, const LeagueStat *league_stat); treeview_create_league_stats(GtkListStore *ls, const LeagueStat *league_stat);
void void
treeview_show_season_history(gint page, gint season_number); treeview_show_season_history(gint page, gint idx);
void void
treeview_create_season_history_champions(GtkListStore *ls, const GArray* league_champs, treeview_create_season_history_champions(GtkListStore *ls, const GArray* league_champs,

View File

@ -25,6 +25,7 @@
#include "bet.h" #include "bet.h"
#include "fixture.h" #include "fixture.h"
#include "job.h"
#include "league.h" #include "league.h"
#include "live_game.h" #include "live_game.h"
#include "misc.h" #include "misc.h"
@ -427,3 +428,102 @@ treeview2_show_bets(void)
gtk_tree_view_set_model(treeview, GTK_TREE_MODEL(model)); gtk_tree_view_set_model(treeview, GTK_TREE_MODEL(model));
g_object_unref(model); g_object_unref(model);
} }
void
treeview2_create_job_exchange(GtkListStore *ls)
{
gint i;
GtkTreeIter iter;
gchar buf[SMALL];
const Team *tm = NULL;
for(i=0;i<jobs->len;i++)
{
tm = job_get_team(&g_array_index(jobs, Job, i));
sprintf(buf, "%s (%d)", g_array_index(jobs, Job, i).league_name,
g_array_index(jobs, Job, i).league_layer);
gtk_list_store_append(ls, &iter);
gtk_list_store_set(ls, &iter, 0, i + 1,
1, tm->name,
2, buf,
3, &g_array_index(jobs, Job, i),
4, &g_array_index(jobs, Job, i),
5, &g_array_index(jobs, Job, i),
-1);
}
}
void
treeview2_set_up_job_exchange(GtkTreeView *treeview)
{
gint i;
GtkTreeViewColumn *col;
GtkCellRenderer *renderer;
gchar *titles[6] =
{"",
_("Team"),
_("League"),
_("Country"),
_("Av.skill"),
_("Talent %")};
gtk_tree_selection_set_mode(gtk_tree_view_get_selection(treeview),
GTK_SELECTION_SINGLE);
gtk_tree_view_set_headers_visible(treeview, TRUE);
col = gtk_tree_view_column_new();
gtk_tree_view_column_set_title(col, titles[0]);
gtk_tree_view_append_column(treeview, col);
renderer = treeview_helper_cell_renderer_text_new();
gtk_tree_view_column_pack_start(col, renderer, TRUE);
gtk_tree_view_column_add_attribute(col, renderer,
"text", 0);
for(i=1;i<3;i++)
{
col = gtk_tree_view_column_new();
gtk_tree_view_column_set_title(col, titles[i]);
gtk_tree_view_append_column(treeview, col);
renderer = treeview_helper_cell_renderer_text_new();
gtk_tree_view_column_pack_start(col, renderer, TRUE);
gtk_tree_view_column_add_attribute(col, renderer,
"text", i);
}
for(i=3;i<6;i++)
{
col = gtk_tree_view_column_new();
gtk_tree_view_column_set_title(col, titles[i]);
gtk_tree_view_append_column(treeview, col);
renderer = treeview_helper_cell_renderer_text_new();
gtk_tree_view_column_pack_start(col, renderer, TRUE);
gtk_tree_view_column_set_cell_data_func(col, renderer,
treeview_helper_job_exchange,
NULL, NULL);
if(i > 3)
{
gtk_tree_view_column_set_alignment(col, 0.5);
g_object_set(renderer, "xalign", 0.5, NULL);
}
}
}
/** Show the teams that offer a job. */
void
treeview2_show_job_exchange(void)
{
GtkTreeView *treeview =
GTK_TREE_VIEW(lookup_widget(window.main, "treeview_right"));
GtkListStore *model =
gtk_list_store_new(6, G_TYPE_INT, G_TYPE_STRING, G_TYPE_STRING,
G_TYPE_POINTER, G_TYPE_POINTER, G_TYPE_POINTER);
treeview_helper_clear(treeview);
treeview2_set_up_job_exchange(treeview);
treeview2_create_job_exchange(model);
gtk_tree_view_set_model(treeview, GTK_TREE_MODEL(model));
g_object_unref(model);
}

View File

@ -64,4 +64,13 @@ treeview2_set_up_bets(GtkTreeView *treeview);
void void
treeview2_show_bets(void); treeview2_show_bets(void);
void
treeview2_create_job_exchange(GtkListStore *ls);
void
treeview2_set_up_job_exchange(GtkTreeView *treeview);
void
treeview2_show_job_exchange(void);
#endif #endif

View File

@ -28,6 +28,7 @@
#include "file.h" #include "file.h"
#include "fixture.h" #include "fixture.h"
#include "free.h" #include "free.h"
#include "job.h"
#include "league.h" #include "league.h"
#include "misc.h" #include "misc.h"
#include "option.h" #include "option.h"
@ -269,7 +270,7 @@ treeview_helper_get_user_history_icon(gint history_type)
return NULL; return NULL;
case USER_HISTORY_START_GAME: case USER_HISTORY_START_GAME:
return const_app("string_treeview_helper_user_history_symbol_start_game_icon"); return const_app("string_treeview_helper_user_history_symbol_start_game_icon");
case USER_HISTORY_FIRE_FINANCES: case USER_HISTORY_FIRE_FINANCE:
return const_app("string_treeview_helper_user_history_symbol_fire_finances_icon"); return const_app("string_treeview_helper_user_history_symbol_fire_finances_icon");
case USER_HISTORY_FIRE_FAILURE: case USER_HISTORY_FIRE_FAILURE:
return const_app("string_treeview_helper_user_history_symbol_fire_failure_icon"); return const_app("string_treeview_helper_user_history_symbol_fire_failure_icon");
@ -629,14 +630,15 @@ treeview_helper_get_table_element_colours(const Table *table, gint idx,
/** Set the char pointers to the constant determining the background and foreground /** Set the char pointers to the constant determining the background and foreground
colours of user entries in treeviews if the team is a user team. */ colours of user entries in treeviews if the team is a user team. */
void void
treeview_helper_set_user_colours(const Team *tm, gchar **colour_bg, gchar **colour_fg) treeview_helper_set_user_colours(const gchar *team_name,
gchar **colour_bg, gchar **colour_fg)
{ {
if(tm == current_user.tm) if(strcmp(team_name, current_user.tm->name) == 0)
{ {
*colour_fg = const_app("string_treeview_current_user_fg"); *colour_fg = const_app("string_treeview_current_user_fg");
*colour_bg = const_app("string_treeview_current_user_bg"); *colour_bg = const_app("string_treeview_current_user_bg");
} }
else if(team_is_user(tm) != -1) else if(team_name_is_user(team_name) != -1)
{ {
*colour_fg = const_app("string_treeview_user_fg"); *colour_fg = const_app("string_treeview_user_fg");
*colour_bg = const_app("string_treeview_user_bg"); *colour_bg = const_app("string_treeview_user_bg");
@ -993,7 +995,7 @@ treeview_helper_player_to_cell(GtkTreeViewColumn *col,
gpointer user_data) gpointer user_data)
{ {
gint column = treeview_helper_get_col_number_column(col); gint column = treeview_helper_get_col_number_column(col);
gint attribute = GPOINTER_TO_INT(user_data); gint attribute = GPOINTER_TO_INT(user_data), idx = -1;
gchar buf[SMALL]; gchar buf[SMALL];
const Player *pl; const Player *pl;
@ -1072,7 +1074,10 @@ treeview_helper_player_to_cell(GtkTreeViewColumn *col,
sprintf(buf, "%s (%s)", pl->team->name, pl->team->strategy_sid); sprintf(buf, "%s (%s)", pl->team->name, pl->team->strategy_sid);
break; break;
case PLAYER_LIST_ATTRIBUTE_LEAGUE_CUP: case PLAYER_LIST_ATTRIBUTE_LEAGUE_CUP:
strcpy(buf, league_cup_get_name_string(pl->team->clid)); idx = job_team_is_on_list(pl->team->id);
strcpy(buf, (idx == -1) ?
league_cup_get_name_string(pl->team->clid) :
g_array_index(jobs, Job, idx).league_name);
break; break;
} }
@ -1660,3 +1665,43 @@ treeview_helper_search_equal(GtkTreeModel *model,
return return_value; return return_value;
} }
void
treeview_helper_job_exchange(GtkTreeViewColumn *col,
GtkCellRenderer *renderer,
GtkTreeModel *model,
GtkTreeIter *iter,
gpointer user_data)
{
gint column = treeview_helper_get_col_number_column(col);
gchar buf[SMALL];
const Job *job = NULL;
gtk_tree_model_get(model, iter, column, &job, -1);
if(job == NULL)
return;
g_object_set(renderer, "background",
const_app("string_treeview_helper_color_default_background"),
"foreground",
const_app("string_treeview_helper_color_default_foreground"),
NULL);
if(column == 3)
{
strcpy(buf, job->country_name);
if(job->type != JOB_TYPE_NATIONAL)
g_object_set(renderer, "background",
const_app("string_treeview_helper_color_job_international_bg"),
"foreground",
const_app("string_treeview_helper_color_job_international_fg"),
NULL);
}
else if(column == 4)
sprintf(buf, "%.1f", team_get_average_skill(job_get_team(job), FALSE));
else if(column == 5)
sprintf(buf, "%d", job->talent_percent);
g_object_set(renderer, "text", buf, NULL);
}

View File

@ -81,7 +81,8 @@ treeview_helper_get_table_element_colour_cups_cup(const Cup *cup,
const Team *tm, gchar **colour_bg); const Team *tm, gchar **colour_bg);
void void
treeview_helper_set_user_colours(const Team *tm, gchar **colour_bg, gchar **colour_fg); treeview_helper_set_user_colours(const gchar *team_name,
gchar **colour_bg, gchar **colour_fg);
PlayerListAttribute PlayerListAttribute
treeview_helper_get_attributes_from_scout(gint scout); treeview_helper_get_attributes_from_scout(gint scout);
@ -220,4 +221,12 @@ treeview_helper_search_equal(GtkTreeModel *model,
GtkTreeIter *iter, GtkTreeIter *iter,
gpointer search_data); gpointer search_data);
void
treeview_helper_job_exchange(GtkTreeViewColumn *col,
GtkCellRenderer *renderer,
GtkTreeModel *model,
GtkTreeIter *iter,
gpointer user_data);
#endif #endif

View File

@ -92,7 +92,9 @@ user_set_up_team_new_game(User *user)
if(user->scout == -1) if(user->scout == -1)
{ {
user_set_up_team(user); user_set_up_team(user);
user_history_add(user, USER_HISTORY_START_GAME, user->tm->id, user->tm->clid, -1, ""); user_history_add(user, USER_HISTORY_START_GAME,
user->tm->name,
league_cup_get_name_string(user->tm->clid), NULL, NULL);
} }
else else
{ {
@ -108,7 +110,9 @@ user_set_up_team_new_game(User *user)
user->tm = &g_array_index(lig(user->scout).teams, Team, rndom); user->tm = &g_array_index(lig(user->scout).teams, Team, rndom);
user->team_id = g_array_index(lig(user->scout).teams, Team, rndom).id; user->team_id = g_array_index(lig(user->scout).teams, Team, rndom).id;
user_history_add(user, USER_HISTORY_START_GAME, user->tm->id, user->tm->clid, -1, ""); user_history_add(user, USER_HISTORY_START_GAME,
user->tm->name,
league_cup_get_name_string(user->tm->clid), NULL, NULL);
user_set_up_team(user); user_set_up_team(user);
} }
@ -199,7 +203,7 @@ user_remove(gint idx, gboolean regenerate_team)
g_array_free(usr(idx).tm->players, TRUE); g_array_free(usr(idx).tm->players, TRUE);
usr(idx).tm->players = g_array_new(FALSE, FALSE, sizeof(Player)); usr(idx).tm->players = g_array_new(FALSE, FALSE, sizeof(Player));
team_generate_players_stadium(usr(idx).tm); team_generate_players_stadium(usr(idx).tm, 0);
for(i=0;i<usr(idx).tm->players->len;i++) for(i=0;i<usr(idx).tm->players->len;i++)
g_array_index(usr(idx).tm->players, Player, i).team = usr(idx).tm; g_array_index(usr(idx).tm->players, Player, i).team = usr(idx).tm;
} }
@ -293,10 +297,12 @@ user_job_offer(User *user)
Team *new_team = NULL; Team *new_team = NULL;
if(math_rnd(0, 1) > const_float("float_user_success_counter_check") || if(math_rnd(0, 1) > const_float("float_user_success_counter_check") ||
ABS(user->counters[COUNT_USER_SUCCESS]) < (gfloat)const_int("int_user_success_offer_limit") * 0.9) ABS(user->counters[COUNT_USER_SUCCESS]) <
(gfloat)const_int("int_user_success_offer_limit") * 0.9)
return; return;
if(user->counters[COUNT_USER_SUCCESS] < -(gfloat)const_int("int_user_success_offer_limit") * 0.9 && if(user->counters[COUNT_USER_SUCCESS] <
-(gfloat)const_int("int_user_success_offer_limit") * 0.9 &&
!user->counters[COUNT_USER_WARNING]) !user->counters[COUNT_USER_WARNING])
{ {
user_event_add(user, EVENT_TYPE_WARNING, -1, -1, NULL, user_event_add(user, EVENT_TYPE_WARNING, -1, -1, NULL,
@ -313,8 +319,6 @@ user_job_offer(User *user)
{ {
new_team = team_get_new(user->tm, TRUE); new_team = team_get_new(user->tm, TRUE);
user_event_add(user, EVENT_TYPE_FIRE_FAILURE, -1, -1, new_team, NULL); user_event_add(user, EVENT_TYPE_FIRE_FAILURE, -1, -1, new_team, NULL);
user_history_add(user, USER_HISTORY_FIRE_FAILURE, user->tm->id,
new_team->id, new_team->clid, "");
} }
else if(option_int("int_opt_user_show_job_offers", &user->options)) else if(option_int("int_opt_user_show_job_offers", &user->options))
{ {
@ -330,10 +334,11 @@ user_weekly_update_counters(User *user)
{ {
gint rank = team_get_league_rank(user->tm); gint rank = team_get_league_rank(user->tm);
gint teamslen = ((GArray*)(league_cup_get_teams(user->tm->clid)))->len; gint teamslen = ((GArray*)(league_cup_get_teams(user->tm->clid)))->len;
gint rank_bounds[2] = {(gint)rint(const_float("float_user_success_table_bound_upper") * gint rank_bounds[2] =
(gfloat)teamslen), {(gint)rint(const_float("float_user_success_table_bound_upper") *
(gint)rint(const_float("float_user_success_table_bound_lower") * (gfloat)teamslen),
(gfloat)teamslen)}; (gint)rint(const_float("float_user_success_table_bound_lower") *
(gfloat)teamslen)};
gint *cnts = user->counters; gint *cnts = user->counters;
gint increase_capacity; gint increase_capacity;
gfloat increase_safety; gfloat increase_safety;
@ -461,19 +466,16 @@ user_event_show_next(void)
game_gui_show_warning(event->value_string); game_gui_show_warning(event->value_string);
break; break;
case EVENT_TYPE_FIRE_FINANCE: case EVENT_TYPE_FIRE_FINANCE:
stat2 = STATUS_JOB_OFFER_FIRE_FINANCE; game_gui_show_job_offer((Team*)event->value_pointer, NULL,
statp = event->value_pointer; STATUS_JOB_OFFER_FIRE_FINANCE);
game_gui_show_job_offer((Team*)event->value_pointer, STATUS_JOB_OFFER_FIRE_FINANCE);
break; break;
case EVENT_TYPE_FIRE_FAILURE: case EVENT_TYPE_FIRE_FAILURE:
stat2 = STATUS_JOB_OFFER_FIRE_FAILURE; game_gui_show_job_offer((Team*)event->value_pointer, NULL,
statp = event->value_pointer; STATUS_JOB_OFFER_FIRE_FAILURE);
game_gui_show_job_offer((Team*)event->value_pointer, STATUS_JOB_OFFER_FIRE_FAILURE);
break; break;
case EVENT_TYPE_JOB_OFFER: case EVENT_TYPE_JOB_OFFER:
stat2 = STATUS_JOB_OFFER_SUCCESS; game_gui_show_job_offer((Team*)event->value_pointer, NULL,
statp = event->value_pointer; STATUS_JOB_OFFER_SUCCESS);
game_gui_show_job_offer((Team*)event->value_pointer, STATUS_JOB_OFFER_SUCCESS);
break; break;
case EVENT_TYPE_OVERDRAW: case EVENT_TYPE_OVERDRAW:
if(event->value1 == 1) if(event->value1 == 1)
@ -544,6 +546,7 @@ void
user_change_team(User *user, Team *tm) user_change_team(User *user, Team *tm)
{ {
gint i; gint i;
gint success = user->counters[COUNT_USER_SUCCESS];
user->tm = tm; user->tm = tm;
user->team_id = tm->id; user->team_id = tm->id;
@ -551,6 +554,9 @@ user_change_team(User *user, Team *tm)
user_set_up_team(user); user_set_up_team(user);
user->counters[COUNT_USER_NEW_SPONSOR] = 0; user->counters[COUNT_USER_NEW_SPONSOR] = 0;
user->counters[COUNT_USER_SUCCESS] = (success < 0) ?
0 : (gint)rint((gfloat)success / 2);
g_string_free(user->sponsor.name, TRUE); g_string_free(user->sponsor.name, TRUE);
user->sponsor = user_get_sponsor(&current_user); user->sponsor = user_get_sponsor(&current_user);
@ -601,29 +607,38 @@ user_history_compare(gconstpointer a, gconstpointer b)
/** Add an element to the user history filled with the given values. */ /** Add an element to the user history filled with the given values. */
void void
user_history_add(User *user, gint type, gint team_id, user_history_add(User *user, gint type, const gchar *team_name,
gint value1, gint value2, gchar *string) const gchar* string0, const gchar *string1,
const gchar *string2)
{ {
gint i; gint i;
UserHistory new_history; UserHistory new_history;
UserHistory *his = &new_history; UserHistory *his = &new_history;
gboolean replace = FALSE; gboolean replace = FALSE;
his->team_name = his->string[0] =
his->string[1] = his->string[2] = NULL;
if(type == USER_HISTORY_WIN_FINAL || if(type == USER_HISTORY_WIN_FINAL ||
type == USER_HISTORY_LOSE_FINAL || type == USER_HISTORY_LOSE_FINAL ||
type == USER_HISTORY_REACH_CUP_ROUND) type == USER_HISTORY_REACH_CUP_ROUND)
{ {
for(i=0;i<user->history->len;i++) for(i=0;i<user->history->len;i++)
if((g_array_index(user->history, UserHistory, i).type == USER_HISTORY_WIN_FINAL || if((g_array_index(user->history, UserHistory, i).type ==
g_array_index(user->history, UserHistory, i).type == USER_HISTORY_LOSE_FINAL || USER_HISTORY_WIN_FINAL ||
g_array_index(user->history, UserHistory, i).type == USER_HISTORY_REACH_CUP_ROUND) && g_array_index(user->history, UserHistory, i).type ==
USER_HISTORY_LOSE_FINAL ||
g_array_index(user->history, UserHistory, i).type ==
USER_HISTORY_REACH_CUP_ROUND) &&
g_array_index(user->history, UserHistory, i).season == season && g_array_index(user->history, UserHistory, i).season == season &&
g_array_index(user->history, UserHistory, i).team_id == team_id && strcmp(g_array_index(user->history, UserHistory, i).team_name,
g_array_index(user->history, UserHistory, i).value1 == value1) team_name) == 0 &&
strcmp(g_array_index(user->history, UserHistory, i).string[1],
string1) == 0)
{ {
/** Same cup round. */ /** Same cup round. */
if(g_array_index(user->history, UserHistory, i).value2 == value2 && if(strcmp(g_array_index(user->history, UserHistory, i).string[2],
string2) == 0 &&
type == USER_HISTORY_REACH_CUP_ROUND) type == USER_HISTORY_REACH_CUP_ROUND)
return; return;
@ -633,47 +648,7 @@ user_history_add(User *user, gint type, gint team_id,
} }
} }
if(type == USER_HISTORY_WIN_FINAL) if(type == USER_HISTORY_PROMOTED)
{
if(query_cup_is_international(value1))
user->counters[COUNT_USER_SUCCESS] +=
const_int("int_user_success_international_winner");
else if(query_cup_is_national(value1))
user->counters[COUNT_USER_SUCCESS] +=
const_int("int_user_success_national_winner");
}
else if(type == USER_HISTORY_LOSE_FINAL)
{
if(query_cup_is_international(value1))
user->counters[COUNT_USER_SUCCESS] +=
const_int("int_user_success_international_final");
else if(query_cup_is_national(value1))
user->counters[COUNT_USER_SUCCESS] +=
const_int("int_user_success_national_winner");
const_int("int_user_success_national_final");
}
else if(type == USER_HISTORY_REACH_CUP_ROUND)
{
if(value2 == cup_from_clid(value1)->rounds->len - 2)
{
if(query_cup_is_international(value1))
user->counters[COUNT_USER_SUCCESS] +=
const_int("int_user_success_international_semis");
else if(query_cup_is_national(value1))
user->counters[COUNT_USER_SUCCESS] +=
const_int("int_user_success_national_semis");
}
else if(value2 == cup_from_clid(value1)->rounds->len - 3)
{
if(query_cup_is_international(value1))
user->counters[COUNT_USER_SUCCESS] +=
const_int("int_user_success_international_quarter");
else if(query_cup_is_national(value1))
user->counters[COUNT_USER_SUCCESS] +=
const_int("int_user_success_national_quarter");
}
}
else if(type == USER_HISTORY_PROMOTED)
user->counters[COUNT_USER_SUCCESS] += user->counters[COUNT_USER_SUCCESS] +=
const_int("int_user_success_promotion"); const_int("int_user_success_promotion");
else if(type == USER_HISTORY_RELEGATED) else if(type == USER_HISTORY_RELEGATED)
@ -682,20 +657,27 @@ user_history_add(User *user, gint type, gint team_id,
his->season = season; his->season = season;
his->week = week; his->week = week;
his->type = type; his->type = type;
his->team_id = team_id;
his->value1 = value1;
his->value2 = value2;
if(replace) if(replace)
{ {
misc_string_assign(&his->value_string, string); if(string0 != NULL)
misc_string_assign(&his->string[0], string0);
if(string2 != NULL)
misc_string_assign(&his->string[2], string2);
g_array_sort(user->history, (GCompareFunc)user_history_compare); g_array_sort(user->history, (GCompareFunc)user_history_compare);
} }
else else
{ {
his->value_string = g_strdup(string); his->team_name = g_strdup(team_name);
if(string0 != NULL)
his->string[0] = g_strdup(string0);
if(string1 != NULL)
his->string[1] = g_strdup(string1);
if(string2 != NULL)
his->string[2] = g_strdup(string2);
g_array_prepend_val(user->history, *his); g_array_prepend_val(user->history, *his);
} }
} }
@ -705,8 +687,6 @@ user_history_add(User *user, gint type, gint team_id,
void void
user_history_to_string(const UserHistory *history, gchar *buf) user_history_to_string(const UserHistory *history, gchar *buf)
{ {
gchar buf2[SMALL];
switch(history->type) switch(history->type)
{ {
default: default:
@ -715,73 +695,120 @@ user_history_to_string(const UserHistory *history, gchar *buf)
case USER_HISTORY_START_GAME: case USER_HISTORY_START_GAME:
/* Buy a team in a league. */ /* Buy a team in a league. */
sprintf(buf, _("You start the game with %s in the %s."), sprintf(buf, _("You start the game with %s in the %s."),
team_of_id(history->team_id)->name, history->team_name,
league_cup_get_name_string(history->value1)); history->string[0]);
break; break;
case USER_HISTORY_FIRE_FINANCES: case USER_HISTORY_FIRE_FINANCE:
/* Team fires, team in a league. */ /* Team fires, team in a league. */
sprintf(buf, _("%s fires you because of financial mismanagement.\nYou find a new job with %s in the %s."), sprintf(buf, _("%s fires you because of financial mismanagement.\nYou find a new job with %s in the %s."),
team_of_id(history->team_id)->name, history->team_name,
team_of_id(history->value1)->name, history->string[0],
league_cup_get_name_string(history->value2)); history->string[1]);
break; break;
case USER_HISTORY_FIRE_FAILURE: case USER_HISTORY_FIRE_FAILURE:
/* Team fires, team in a league. */ /* Team fires, team in a league. */
sprintf(buf, _("%s fires you because of unsuccessfulness.\nYou find a new job with %s in the %s."), sprintf(buf, _("%s fires you because of unsuccessfulness.\nYou find a new job with %s in the %s."),
team_of_id(history->team_id)->name, history->team_name,
team_of_id(history->value1)->name, history->string[0],
league_cup_get_name_string(history->value2)); history->string[1]);
break; break;
case USER_HISTORY_JOB_OFFER_ACCEPTED: case USER_HISTORY_JOB_OFFER_ACCEPTED:
/* Team in a league. Leave team. */ /* Team in a league. Leave team. */
sprintf(buf, _("%s offer you a job in the %s.\nYou accept the challenge and leave %s."), sprintf(buf, _("%s offer you a job in the %s.\nYou accept the challenge and leave %s."),
team_of_id(history->value1)->name, history->string[0],
league_cup_get_name_string(history->value2), history->string[1],
team_of_id(history->team_id)->name); history->team_name);
break; break;
case USER_HISTORY_END_SEASON: case USER_HISTORY_END_SEASON:
/* League name. */ /* League name. */
sprintf(buf, _("You finish the season in the %s on rank %d."), sprintf(buf, _("You finish the season in the %s on rank %s."),
league_cup_get_name_string(history->value1), history->string[0],
history->value2); history->string[1]);
break; break;
case USER_HISTORY_PROMOTED: case USER_HISTORY_PROMOTED:
/* League name. */ /* League name. */
sprintf(buf, _("You get promoted to the %s."), sprintf(buf, _("You get promoted to the %s."),
league_cup_get_name_string(history->value1)); history->string[0]);
break; break;
case USER_HISTORY_RELEGATED: case USER_HISTORY_RELEGATED:
/* League name. */ /* League name. */
sprintf(buf, _("You get relegated to the %s."), sprintf(buf, _("You get relegated to the %s."),
league_cup_get_name_string(history->value1)); history->string[0]);
break; break;
case USER_HISTORY_WIN_FINAL: case USER_HISTORY_WIN_FINAL:
/* Cup name, team name. */ /* Cup name, team name. */
sprintf(buf, _("You win the %s final against %s."), sprintf(buf, _("You win the %s final against %s."),
league_cup_get_name_string(history->value1), history->string[0],
history->value_string); history->string[1]);
break; break;
case USER_HISTORY_LOSE_FINAL: case USER_HISTORY_LOSE_FINAL:
/* Cup name, team name. */ /* Cup name, team name. */
sprintf(buf, _("You lose in the %s final against %s."), sprintf(buf, _("You lose in the %s final against %s."),
league_cup_get_name_string(history->value1), history->string[0],
history->value_string); history->string[1]);
break; break;
case USER_HISTORY_REACH_CUP_ROUND: case USER_HISTORY_REACH_CUP_ROUND:
cup_get_round_name(cup_from_clid(history->value1), history->value2, buf2);
/* Cup round name (e.g. Last 32), number, cup name. */ /* Cup round name (e.g. Last 32), number, cup name. */
sprintf(buf, _("You reach the %s (round %d) of the %s."), buf2, sprintf(buf, _("You reach the %s (round %s) of the %s."),
history->value2 + 1, history->string[1],
league_cup_get_name_string(history->value1)); history->string[2],
history->string[0]);
break; break;
case USER_HISTORY_CHAMPION: case USER_HISTORY_CHAMPION:
/* League name. */ /* League name. */
sprintf(buf, _("You are champion of the %s!"), sprintf(buf, _("You are champion of the %s!"),
league_cup_get_name_string(history->value1)); history->string[0]);
break; break;
} }
} }
/** Increase the user success counter when the user
is successful in a cup. */
void
user_add_cup_success(User *user, const Cup *cup, gint round, gint type)
{
if(type == USER_HISTORY_WIN_FINAL)
{
if(query_cup_is_international(cup->id))
user->counters[COUNT_USER_SUCCESS] +=
const_int("int_user_success_international_winner");
else if(query_cup_is_national(cup->id))
user->counters[COUNT_USER_SUCCESS] +=
const_int("int_user_success_national_winner");
}
else if(type == USER_HISTORY_LOSE_FINAL)
{
if(query_cup_is_international(cup->id))
user->counters[COUNT_USER_SUCCESS] +=
const_int("int_user_success_international_final");
else if(query_cup_is_national(cup->id))
user->counters[COUNT_USER_SUCCESS] +=
const_int("int_user_success_national_winner");
const_int("int_user_success_national_final");
}
else if(type == USER_HISTORY_REACH_CUP_ROUND)
{
if(round == cup_from_clid(cup->id)->rounds->len - 2)
{
if(query_cup_is_international(cup->id))
user->counters[COUNT_USER_SUCCESS] +=
const_int("int_user_success_international_semis");
else if(query_cup_is_national(cup->id))
user->counters[COUNT_USER_SUCCESS] +=
const_int("int_user_success_national_semis");
}
else if(round == cup_from_clid(cup->id)->rounds->len - 3)
{
if(query_cup_is_international(cup->id))
user->counters[COUNT_USER_SUCCESS] +=
const_int("int_user_success_international_quarter");
else if(query_cup_is_national(cup->id))
user->counters[COUNT_USER_SUCCESS] +=
const_int("int_user_success_national_quarter");
}
}
}
/** Find out whether there's a user who /** Find out whether there's a user who
didn't have his turn before a new week round begins. */ didn't have his turn before a new week round begins. */
gboolean gboolean

View File

@ -27,6 +27,7 @@
#define USER_H #define USER_H
#include "bygfoot.h" #include "bygfoot.h"
#include "cup_struct.h"
#include "user_struct.h" #include "user_struct.h"
#include "variables.h" #include "variables.h"
@ -89,8 +90,9 @@ gboolean
query_user_teams_have_unfit(void); query_user_teams_have_unfit(void);
void void
user_history_add(User *user, gint type, gint team_id, user_history_add(User *user, gint type, const gchar *team_name,
gint value1, gint value2, gchar *string); const gchar* string0, const gchar *string1,
const gchar *string2);
void void
user_history_to_string(const UserHistory *history, gchar *buf); user_history_to_string(const UserHistory *history, gchar *buf);
@ -98,6 +100,9 @@ user_history_to_string(const UserHistory *history, gchar *buf);
gint gint
user_history_compare(gconstpointer a, gconstpointer b); user_history_compare(gconstpointer a, gconstpointer b);
void
user_add_cup_success(User *user, const Cup *cup, gint round, gint type);
void void
user_job_offer(User *user); user_job_offer(User *user);

View File

@ -86,7 +86,7 @@ enum CounterValue
enum UserHistoryType enum UserHistoryType
{ {
USER_HISTORY_START_GAME = 0, USER_HISTORY_START_GAME = 0,
USER_HISTORY_FIRE_FINANCES, USER_HISTORY_FIRE_FINANCE,
USER_HISTORY_FIRE_FAILURE, USER_HISTORY_FIRE_FAILURE,
USER_HISTORY_JOB_OFFER_ACCEPTED, USER_HISTORY_JOB_OFFER_ACCEPTED,
USER_HISTORY_END_SEASON, USER_HISTORY_END_SEASON,
@ -123,14 +123,13 @@ typedef struct
/** When the event happened. */ /** When the event happened. */
gint season, week; gint season, week;
/** The type (see #UserHistoryType) and team /** The type (see #UserHistoryType) of the history event. */
of the user. */ gint type;
gint type, team_id, /** The team of the user at the time. */
/** These can hold various information like gchar *team_name;
team or league/cup ids. */ /** These can hold various information like
value1, value2; team or league/cup ids. */
gchar *value_string; gchar *string[3];
} UserHistory; } UserHistory;
/** A user sponsor. */ /** A user sponsor. */

View File

@ -27,10 +27,6 @@
#include "enums.h" #include "enums.h"
#include "live_game_struct.h" #include "live_game_struct.h"
#include "option_struct.h" #include "option_struct.h"
#include "player_struct.h"
#include "stat_struct.h"
#include "team_struct.h"
#include "user_struct.h"
/** /**
* The main variable of the game. * The main variable of the game.
@ -76,6 +72,10 @@ GArray *strategies;
/** Array of current and recent bets. */ /** Array of current and recent bets. */
GArray *bets[2]; GArray *bets[2];
/** Array of jobs in the job exchange and
teams going with the international jobs. */
GArray *jobs, *job_teams;
/** Some counters we use. */ /** Some counters we use. */
gint counters[COUNT_END]; gint counters[COUNT_END];

View File

@ -649,6 +649,9 @@ window_create(gint window_type)
window.main = create_main_window(); window.main = create_main_window();
wind = window.main; wind = window.main;
window_main_load_geometry(); window_main_load_geometry();
window.paned_pos =
gtk_paned_get_position(
GTK_PANED(lookup_widget(window.main, "hpaned2")));
game_gui_print_message(_("Welcome to Bygfoot %s"), VERS); game_gui_print_message(_("Welcome to Bygfoot %s"), VERS);
sprintf(buf, "Bygfoot Football Manager %s", VERS); sprintf(buf, "Bygfoot Football Manager %s", VERS);
} }
@ -719,10 +722,7 @@ window_create(gint window_type)
if(window.job_offer != NULL) if(window.job_offer != NULL)
g_warning("window_create: called on already existing window\n"); g_warning("window_create: called on already existing window\n");
else else
{
popups_active++;
window.job_offer = create_window_job_offer(); window.job_offer = create_window_job_offer();
}
wind = window.job_offer; wind = window.job_offer;
strcpy(buf, _("Job offer")); strcpy(buf, _("Job offer"));
break; break;

View File

@ -71,6 +71,7 @@ enum XmlTags
#define TAG_START_SEASON_STATS 11000 #define TAG_START_SEASON_STATS 11000
#define TAG_START_LEAGUES_CUPS 12000 #define TAG_START_LEAGUES_CUPS 12000
#define TAG_START_TRANSFERS 20000 #define TAG_START_TRANSFERS 20000
#define TAG_START_JOBS 21000
#define xml_write_g_string(fil, gstring, tag, indent) xml_write_string(fil, (gstring)->str, tag, indent) #define xml_write_g_string(fil, gstring, tag, indent) xml_write_string(fil, (gstring)->str, tag, indent)

View File

@ -37,6 +37,7 @@
*/ */
#define TAG_COUNTRY "country" #define TAG_COUNTRY "country"
#define TAG_NAME "name" #define TAG_NAME "name"
#define TAG_RATING "rating"
#define TAG_SYMBOL "symbol" #define TAG_SYMBOL "symbol"
#define TAG_SID "sid" #define TAG_SID "sid"
#define TAG_SUPERNATIONAL "supernational" #define TAG_SUPERNATIONAL "supernational"
@ -52,6 +53,7 @@ enum XmlCountryStates
{ {
STATE_COUNTRY = 0, STATE_COUNTRY = 0,
STATE_NAME, STATE_NAME,
STATE_RATING,
STATE_SYMBOL, STATE_SYMBOL,
STATE_SID, STATE_SID,
STATE_SUPERNATIONAL, STATE_SUPERNATIONAL,
@ -66,6 +68,7 @@ enum XmlCountryStates
* The state variable used in the XML parsing functions. * The state variable used in the XML parsing functions.
*/ */
gint state; gint state;
Country *cntry;
/** /**
* The function called by the parser when an opening tag is read. * The function called by the parser when an opening tag is read.
@ -83,6 +86,8 @@ xml_country_read_start_element (GMarkupParseContext *context,
{ {
if(strcmp(element_name, TAG_NAME) == 0) if(strcmp(element_name, TAG_NAME) == 0)
state = STATE_NAME; state = STATE_NAME;
else if(strcmp(element_name, TAG_RATING) == 0)
state = STATE_RATING;
else if(strcmp(element_name, TAG_SYMBOL) == 0) else if(strcmp(element_name, TAG_SYMBOL) == 0)
state = STATE_SYMBOL; state = STATE_SYMBOL;
else if(strcmp(element_name, TAG_SID) == 0) else if(strcmp(element_name, TAG_SID) == 0)
@ -92,16 +97,16 @@ xml_country_read_start_element (GMarkupParseContext *context,
else if(strcmp(element_name, TAG_LEAGUES) == 0) else if(strcmp(element_name, TAG_LEAGUES) == 0)
{ {
state = STATE_LEAGUES; state = STATE_LEAGUES;
if(ligs == NULL) if(cntry->leagues == NULL)
ligs = g_array_new(FALSE, FALSE, sizeof(League)); cntry->leagues = g_array_new(FALSE, FALSE, sizeof(League));
} }
else if(strcmp(element_name, TAG_LEAGUE) == 0) else if(strcmp(element_name, TAG_LEAGUE) == 0)
state = STATE_LEAGUE; state = STATE_LEAGUE;
else if(strcmp(element_name, TAG_CUPS) == 0) else if(strcmp(element_name, TAG_CUPS) == 0)
{ {
state = STATE_CUPS; state = STATE_CUPS;
if(cps == NULL) if(cntry->cups == NULL)
cps = g_array_new(FALSE, FALSE, sizeof(Cup)); cntry->cups = g_array_new(FALSE, FALSE, sizeof(Cup));
} }
else if(strcmp(element_name, TAG_CUP) == 0) else if(strcmp(element_name, TAG_CUP) == 0)
state = STATE_CUP; state = STATE_CUP;
@ -122,6 +127,7 @@ xml_country_read_end_element (GMarkupParseContext *context,
GError **error) GError **error)
{ {
if(strcmp(element_name, TAG_NAME) == 0 || if(strcmp(element_name, TAG_NAME) == 0 ||
strcmp(element_name, TAG_RATING) == 0 ||
strcmp(element_name, TAG_SYMBOL) == 0 || strcmp(element_name, TAG_SYMBOL) == 0 ||
strcmp(element_name, TAG_SID) == 0 || strcmp(element_name, TAG_SID) == 0 ||
strcmp(element_name, TAG_SUPERNATIONAL) == 0 || strcmp(element_name, TAG_SUPERNATIONAL) == 0 ||
@ -160,12 +166,14 @@ xml_country_read_text (GMarkupParseContext *context,
int_value = (gint)g_ascii_strtod(buf, NULL); int_value = (gint)g_ascii_strtod(buf, NULL);
if(state == STATE_NAME) if(state == STATE_NAME)
misc_string_assign(&country.name, buf); misc_string_assign(&cntry->name, buf);
else if(state == STATE_RATING)
cntry->rating = int_value;
else if(state == STATE_SYMBOL) else if(state == STATE_SYMBOL)
misc_string_assign(&country.symbol, buf); misc_string_assign(&cntry->symbol, buf);
else if(state == STATE_SID) else if(state == STATE_SID)
misc_string_assign(&country.sid, buf); misc_string_assign(&cntry->sid, buf);
else if(state == STATE_SUPERNATIONAL) else if(state == STATE_SUPERNATIONAL && cntry == &country)
{ {
sett_set_int("int_opt_disable_finances", 1); sett_set_int("int_opt_disable_finances", 1);
sett_set_int("int_opt_disable_transfers", 1); sett_set_int("int_opt_disable_transfers", 1);
@ -175,22 +183,22 @@ xml_country_read_text (GMarkupParseContext *context,
sett_set_int("int_opt_disable_ya", 1); sett_set_int("int_opt_disable_ya", 1);
} }
else if(state == STATE_LEAGUE) else if(state == STATE_LEAGUE)
xml_league_read(buf, ligs); xml_league_read(buf, cntry->leagues);
else if(state == STATE_CUP) else if(state == STATE_CUP)
xml_cup_read(buf, cps); xml_cup_read(buf, cntry->cups);
} }
/** /**
* Function reading an XML file specifying a country. Function reading an XML file specifying a country.
* The variable #country gets freed and overwritten afterwards. @param country_name name of the xml file (e.g. 'country_england.xml')
* @param country_name name of the xml file (e.g. 'country_england.xml') to be read. Full path is not necessary, if the file is located in
* to be read. Full path is not necessary, if the file is located in one of the suppport directories; neither are the prefix 'country_'
* one of the suppport directories; neither are the prefix 'country_' or the suffix '.xml'.
* or the suffix '.xml'. @param cntry The country variable to write.
*/ */
void void
xml_country_read(const gchar *country_name) xml_country_read(const gchar *country_name, Country *cntry_arg)
{ {
gchar *file_name = file_find_support_file(country_name, FALSE); gchar *file_name = file_find_support_file(country_name, FALSE);
GMarkupParser parser = {xml_country_read_start_element, GMarkupParser parser = {xml_country_read_start_element,
@ -219,18 +227,23 @@ xml_country_read(const gchar *country_name)
return; return;
} }
cntry = (cntry_arg == NULL) ? &country : cntry_arg;
state = STATE_COUNTRY; state = STATE_COUNTRY;
strcpy(buf, file_name); strcpy(buf, file_name);
g_free(file_name); g_free(file_name);
free_country(TRUE); free_country(cntry, TRUE);
sett_set_int("int_opt_disable_finances", 0); if(cntry_arg == NULL)
sett_set_int("int_opt_disable_transfers", 0); {
sett_set_int("int_opt_disable_stadium", 0); sett_set_int("int_opt_disable_finances", 0);
sett_set_int("int_opt_disable_contracts", 0); sett_set_int("int_opt_disable_transfers", 0);
sett_set_int("int_opt_disable_boost_on", 0); sett_set_int("int_opt_disable_stadium", 0);
sett_set_int("int_opt_disable_ya", 0); sett_set_int("int_opt_disable_contracts", 0);
sett_set_int("int_opt_disable_boost_on", 0);
sett_set_int("int_opt_disable_ya", 0);
}
if(g_markup_parse_context_parse(context, file_contents, length, &error)) if(g_markup_parse_context_parse(context, file_contents, length, &error))
{ {
@ -244,7 +257,7 @@ xml_country_read(const gchar *country_name)
misc_print_error(&error, TRUE); misc_print_error(&error, TRUE);
} }
for(i=0;i<ligs->len;i++) for(i=0;i<cntry->leagues->len;i++)
if(lig(i).layer == -1) if(g_array_index(cntry->leagues, League, i).layer == -1)
lig(i).layer = i + 1; g_array_index(cntry->leagues, League, i).layer = i + 1;
} }

View File

@ -49,6 +49,6 @@ xml_country_read_text (GMarkupParseContext *context,
void void
xml_country_read(const gchar *country_name); xml_country_read(const gchar *country_name, Country *cntry_arg);
#endif #endif

View File

@ -133,7 +133,7 @@ xml_league_read_start_element (GMarkupParseContext *context,
{ {
PromRelElement new_element; PromRelElement new_element;
Team new_team; Team new_team;
if(strcmp(element_name, TAG_LEAGUE) == 0) if(strcmp(element_name, TAG_LEAGUE) == 0)
{ {
new_league = league_new(TRUE); new_league = league_new(TRUE);

View File

@ -33,11 +33,14 @@
enum enum
{ {
TAG_LEAGUE_STAT = TAG_START_LEAGUE_STAT, TAG_LEAGUE_STAT = TAG_START_LEAGUE_STAT,
TAG_STAT_LEAGUE_NAME,
TAG_STAT_LEAGUE_SYMBOL,
TAG_STAT_TEAMS_OFF, TAG_STAT_TEAMS_OFF,
TAG_STAT_TEAMS_DEF, TAG_STAT_TEAMS_DEF,
TAG_STAT_PLAYER_SCORERS, TAG_STAT_PLAYER_SCORERS,
TAG_STAT_PLAYER_GOALIES, TAG_STAT_PLAYER_GOALIES,
TAG_STAT, TAG_STAT,
TAG_STAT_TEAM_NAME,
TAG_STAT_VALUE, TAG_STAT_VALUE,
TAG_STAT_VALUE_STRING, TAG_STAT_VALUE_STRING,
TAG_END TAG_END
@ -66,17 +69,11 @@ xml_loadsave_league_stat_start_element (GMarkupParseContext *context,
valid_tag = TRUE; valid_tag = TRUE;
} }
for(i=TAG_NAME;i<=TAG_ROUND;i++)
if(tag == i)
{
state = i;
valid_tag = TRUE;
}
if(tag == TAG_STAT) if(tag == TAG_STAT)
{ {
valueidx = 0; valueidx = 0;
new_stat.value_string = NULL; new_stat.value_string =
new_stat.team_name = NULL;
} }
else if(tag == TAG_STAT_TEAMS_OFF || else if(tag == TAG_STAT_TEAMS_OFF ||
tag == TAG_STAT_TEAMS_DEF || tag == TAG_STAT_TEAMS_DEF ||
@ -85,8 +82,9 @@ xml_loadsave_league_stat_start_element (GMarkupParseContext *context,
in_state = tag; in_state = tag;
if(!valid_tag) if(!valid_tag)
g_warning("xml_loadsave_league_stat_start_element: unknown tag: %s; I'm in state %d\n", g_warning(
element_name, state); "xml_loadsave_league_stat_start_element: unknown tag: %s; I'm in state %d\n",
element_name, state);
} }
void void
@ -98,7 +96,8 @@ xml_loadsave_league_stat_end_element (GMarkupParseContext *context,
GArray *stat_array = NULL; GArray *stat_array = NULL;
gint tag = xml_get_tag_from_name(element_name); gint tag = xml_get_tag_from_name(element_name);
if(tag == TAG_ID || if(tag == TAG_STAT_LEAGUE_NAME ||
tag == TAG_STAT_LEAGUE_SYMBOL ||
tag == TAG_STAT_TEAMS_OFF || tag == TAG_STAT_TEAMS_OFF ||
tag == TAG_STAT_TEAMS_DEF || tag == TAG_STAT_TEAMS_DEF ||
tag == TAG_STAT_PLAYER_SCORERS || tag == TAG_STAT_PLAYER_SCORERS ||
@ -127,15 +126,16 @@ xml_loadsave_league_stat_end_element (GMarkupParseContext *context,
else if(tag == TAG_STAT_VALUE_STRING || else if(tag == TAG_STAT_VALUE_STRING ||
tag == TAG_STAT_VALUE || tag == TAG_STAT_VALUE ||
tag == TAG_STAT_VALUE_STRING || tag == TAG_STAT_VALUE_STRING ||
tag == TAG_TEAM_ID) tag == TAG_STAT_TEAM_NAME)
{ {
state = TAG_STAT; state = TAG_STAT;
if(tag == TAG_STAT_VALUE) if(tag == TAG_STAT_VALUE)
valueidx++; valueidx++;
} }
else if(tag != TAG_LEAGUE_STAT) else if(tag != TAG_LEAGUE_STAT)
g_warning("xml_loadsave_league_stat_end_element: unknown tag: %s; I'm in state %d\n", g_warning(
element_name, state); "xml_loadsave_league_stat_end_element: unknown tag: %s; I'm in state %d\n",
element_name, state);
} }
void void
@ -153,10 +153,12 @@ xml_loadsave_league_stat_text (GMarkupParseContext *context,
int_value = (gint)g_ascii_strtod(buf, NULL); int_value = (gint)g_ascii_strtod(buf, NULL);
if(state == TAG_ID) if(state == TAG_STAT_LEAGUE_NAME)
lig_stat->clid = int_value; lig_stat->league_name = g_strdup(buf);
else if(state == TAG_TEAM_ID) else if(state == TAG_STAT_LEAGUE_SYMBOL)
new_stat.team_id = int_value; lig_stat->league_symbol = g_strdup(buf);
else if(state == TAG_STAT_TEAM_NAME)
new_stat.team_name = g_strdup(buf);
else if(state == TAG_STAT_VALUE) else if(state == TAG_STAT_VALUE)
{ {
if(valueidx == 0) if(valueidx == 0)
@ -215,7 +217,8 @@ xml_loadsave_league_stat_write(const gchar *filename, const LeagueStat *league_s
fprintf(fil, "<_%d>\n", TAG_LEAGUE_STAT); fprintf(fil, "<_%d>\n", TAG_LEAGUE_STAT);
xml_write_int(fil, league_stat->clid, TAG_ID, I0); xml_write_string(fil, league_stat->league_name, TAG_STAT_LEAGUE_NAME, I0);
xml_write_string(fil, league_stat->league_symbol, TAG_STAT_LEAGUE_SYMBOL, I0);
fprintf(fil, "<_%d>\n", TAG_STAT_TEAMS_OFF); fprintf(fil, "<_%d>\n", TAG_STAT_TEAMS_OFF);
for(i=0;i<league_stat->teams_off->len;i++) for(i=0;i<league_stat->teams_off->len;i++)
@ -251,7 +254,7 @@ xml_loadsave_league_stat_write_stat(FILE *fil, const Stat *stat)
{ {
fprintf(fil, "%s<_%d>\n", I1, TAG_STAT); fprintf(fil, "%s<_%d>\n", I1, TAG_STAT);
xml_write_int(fil, stat->team_id, TAG_TEAM_ID, I1); xml_write_string(fil, stat->team_name, TAG_STAT_TEAM_NAME, I1);
xml_write_int(fil, stat->value1, TAG_STAT_VALUE, I1); xml_write_int(fil, stat->value1, TAG_STAT_VALUE, I1);
xml_write_int(fil, stat->value2, TAG_STAT_VALUE, I1); xml_write_int(fil, stat->value2, TAG_STAT_VALUE, I1);
xml_write_int(fil, stat->value3, TAG_STAT_VALUE, I1); xml_write_int(fil, stat->value3, TAG_STAT_VALUE, I1);

View File

@ -38,6 +38,7 @@
enum XmlLoadSaveCountryTags enum XmlLoadSaveCountryTags
{ {
TAG_MISC = TAG_START_MISC, TAG_MISC = TAG_START_MISC,
TAG_MISC_RATING,
TAG_MISC_SEASON, TAG_MISC_SEASON,
TAG_MISC_WEEK, TAG_MISC_WEEK,
TAG_MISC_WEEK_ROUND, TAG_MISC_WEEK_ROUND,
@ -105,6 +106,7 @@ xml_loadsave_misc_end_element (GMarkupParseContext *context,
if(tag == TAG_NAME || if(tag == TAG_NAME ||
tag == TAG_SYMBOL || tag == TAG_SYMBOL ||
tag == TAG_SID || tag == TAG_SID ||
tag == TAG_MISC_RATING ||
tag == TAG_MISC_ALLCUP || tag == TAG_MISC_ALLCUP ||
tag == TAG_MISC_COUNTER || tag == TAG_MISC_COUNTER ||
tag == TAG_MISC_SEASON || tag == TAG_MISC_SEASON ||
@ -151,6 +153,8 @@ xml_loadsave_misc_text (GMarkupParseContext *context,
if(state == TAG_NAME) if(state == TAG_NAME)
misc_string_assign(&country.name, buf); misc_string_assign(&country.name, buf);
else if(state == TAG_MISC_RATING)
country.rating = int_value;
else if(state == TAG_SYMBOL) else if(state == TAG_SYMBOL)
misc_string_assign(&country.symbol, buf); misc_string_assign(&country.symbol, buf);
else if(state == TAG_SID) else if(state == TAG_SID)
@ -231,6 +235,7 @@ xml_loadsave_misc_write(const gchar *prefix)
xml_write_string(fil, country.name, TAG_NAME, I0); xml_write_string(fil, country.name, TAG_NAME, I0);
xml_write_string(fil, country.symbol, TAG_SYMBOL, I0); xml_write_string(fil, country.symbol, TAG_SYMBOL, I0);
xml_write_string(fil, country.sid, TAG_SID, I0); xml_write_string(fil, country.sid, TAG_SID, I0);
xml_write_int(fil, country.rating, TAG_MISC_RATING, I0);
xml_write_int(fil, season, TAG_MISC_SEASON, I0); xml_write_int(fil, season, TAG_MISC_SEASON, I0);
xml_write_int(fil, week, TAG_MISC_WEEK, I0); xml_write_int(fil, week, TAG_MISC_WEEK, I0);
xml_write_int(fil, week_round, TAG_MISC_WEEK_ROUND, I0); xml_write_int(fil, week_round, TAG_MISC_WEEK_ROUND, I0);

View File

@ -149,7 +149,7 @@ xml_loadsave_season_stats_text (GMarkupParseContext *context,
new_champ_stat.cl_name = g_strdup(buf); new_champ_stat.cl_name = g_strdup(buf);
else if(state == TAG_LEAGUE_STAT_FILE) else if(state == TAG_LEAGUE_STAT_FILE)
{ {
new_league_stat = stat_league_new(-1); new_league_stat = stat_league_new("", "");
sprintf(buf2, "%s%s%s", dirname2, G_DIR_SEPARATOR_S, buf); sprintf(buf2, "%s%s%s", dirname2, G_DIR_SEPARATOR_S, buf);
xml_loadsave_league_stat_read(buf2, &new_league_stat); xml_loadsave_league_stat_read(buf2, &new_league_stat);
g_array_append_val(new_season_stat.league_stats, new_league_stat); g_array_append_val(new_season_stat.league_stats, new_league_stat);

View File

@ -52,10 +52,8 @@ enum
TAG_USER_HISTORY_SEASON, TAG_USER_HISTORY_SEASON,
TAG_USER_HISTORY_WEEK, TAG_USER_HISTORY_WEEK,
TAG_USER_HISTORY_TYPE, TAG_USER_HISTORY_TYPE,
TAG_USER_HISTORY_TEAM_ID, TAG_USER_HISTORY_TEAM_NAME,
TAG_USER_HISTORY_VALUE1, TAG_USER_HISTORY_STRING,
TAG_USER_HISTORY_VALUE2,
TAG_USER_HISTORY_VALUE_STRING,
TAG_USER_EVENT, TAG_USER_EVENT,
TAG_USER_EVENT_TYPE, TAG_USER_EVENT_TYPE,
TAG_USER_EVENT_VALUE1, TAG_USER_EVENT_VALUE1,
@ -114,8 +112,7 @@ xml_loadsave_users_start_element (GMarkupParseContext *context,
new_user = user_new(); new_user = user_new();
idx = idx_mon_out = idx_mon_in = 0; idx = idx_mon_out = idx_mon_in = 0;
} }
else if(tag >= TAG_START_PLAYERS && tag <= TAG_END_PLAYERS)
if(tag >= TAG_START_PLAYERS && tag <= TAG_END_PLAYERS)
{ {
state = TAG_START_PLAYERS; state = TAG_START_PLAYERS;
valid_tag = TRUE; valid_tag = TRUE;
@ -125,19 +122,22 @@ xml_loadsave_users_start_element (GMarkupParseContext *context,
xml_loadsave_players_start_element(tag, new_user.tm); xml_loadsave_players_start_element(tag, new_user.tm);
} }
else if(tag == TAG_USER_HISTORY)
if(state == TAG_USER_MONEY_OUTS || {
state == TAG_USER_MONEY_INS)
idx = 0; idx = 0;
new_history.team_name =
if(state == TAG_USER_BET0 || new_history.string[0] =
state == TAG_USER_BET1) new_history.string[1] =
idx_bet = (state == TAG_USER_BET1); new_history.string[2] = NULL;
}
if(tag == TAG_USER_HISTORY)
new_history.value_string = NULL;
else if(tag == TAG_USER_EVENT) else if(tag == TAG_USER_EVENT)
new_event.value_string = NULL; new_event.value_string = NULL;
else if(tag == TAG_USER_MONEY_OUTS ||
tag == TAG_USER_MONEY_INS)
idx = 0;
else if(tag == TAG_USER_BET0 ||
tag == TAG_USER_BET1)
idx_bet = (tag == TAG_USER_BET1);
if(!valid_tag) if(!valid_tag)
g_warning("xml_loadsave_users_start_element: unknown tag: %s; I'm in state %d\n", g_warning("xml_loadsave_users_start_element: unknown tag: %s; I'm in state %d\n",
@ -207,11 +207,14 @@ xml_loadsave_users_end_element (GMarkupParseContext *context,
else if(tag == TAG_USER_HISTORY_SEASON || else if(tag == TAG_USER_HISTORY_SEASON ||
tag == TAG_USER_HISTORY_WEEK || tag == TAG_USER_HISTORY_WEEK ||
tag == TAG_USER_HISTORY_TYPE || tag == TAG_USER_HISTORY_TYPE ||
tag == TAG_USER_HISTORY_TEAM_ID || tag == TAG_USER_HISTORY_TEAM_NAME ||
tag == TAG_USER_HISTORY_VALUE1 || tag == TAG_USER_HISTORY_STRING)
tag == TAG_USER_HISTORY_VALUE2 || {
tag == TAG_USER_HISTORY_VALUE_STRING)
state = TAG_USER_HISTORY; state = TAG_USER_HISTORY;
if(tag == TAG_USER_HISTORY_STRING)
idx++;
}
else if(tag == TAG_USER_EVENT_TYPE || else if(tag == TAG_USER_EVENT_TYPE ||
tag == TAG_USER_EVENT_VALUE1 || tag == TAG_USER_EVENT_VALUE1 ||
tag == TAG_USER_EVENT_VALUE2 || tag == TAG_USER_EVENT_VALUE2 ||
@ -286,14 +289,10 @@ xml_loadsave_users_text (GMarkupParseContext *context,
new_history.week = int_value; new_history.week = int_value;
else if(state == TAG_USER_HISTORY_TYPE) else if(state == TAG_USER_HISTORY_TYPE)
new_history.type = int_value; new_history.type = int_value;
else if(state == TAG_USER_HISTORY_TEAM_ID) else if(state == TAG_USER_HISTORY_TEAM_NAME)
new_history.team_id = int_value; new_history.team_name = g_strdup(buf);
else if(state == TAG_USER_HISTORY_VALUE1) else if(state == TAG_USER_HISTORY_STRING)
new_history.value1 = int_value; new_history.string[idx] = (strlen(buf) == 0) ? NULL : g_strdup(buf);
else if(state == TAG_USER_HISTORY_VALUE2)
new_history.value2 = int_value;
else if(state == TAG_USER_HISTORY_VALUE_STRING)
misc_string_assign(&new_history.value_string, buf);
else if(state == TAG_USER_EVENT_TYPE) else if(state == TAG_USER_EVENT_TYPE)
new_event.type = int_value; new_event.type = int_value;
else if(state == TAG_USER_EVENT_VALUE1) else if(state == TAG_USER_EVENT_VALUE1)
@ -301,7 +300,7 @@ xml_loadsave_users_text (GMarkupParseContext *context,
else if(state == TAG_USER_EVENT_VALUE2) else if(state == TAG_USER_EVENT_VALUE2)
new_event.value2 = int_value; new_event.value2 = int_value;
else if(state == TAG_USER_EVENT_VALUE_STRING) else if(state == TAG_USER_EVENT_VALUE_STRING)
misc_string_assign(&new_event.value_string, buf); new_event.value_string = g_strdup(buf);
else if(state == TAG_USER_YA_COACH) else if(state == TAG_USER_YA_COACH)
new_user.youth_academy.coach = int_value; new_user.youth_academy.coach = int_value;
else if(state == TAG_USER_YA_PERCENTAGE) else if(state == TAG_USER_YA_PERCENTAGE)
@ -439,7 +438,7 @@ xml_loadsave_users_write(const gchar *prefix)
void void
xml_user_write_history(FILE *fil, const GArray *history) xml_user_write_history(FILE *fil, const GArray *history)
{ {
gint i; gint i, j;
for(i=0;i<history->len;i++) for(i=0;i<history->len;i++)
{ {
@ -451,14 +450,14 @@ xml_user_write_history(FILE *fil, const GArray *history)
TAG_USER_HISTORY_WEEK, I2); TAG_USER_HISTORY_WEEK, I2);
xml_write_int(fil, g_array_index(history, UserHistory, i).type, xml_write_int(fil, g_array_index(history, UserHistory, i).type,
TAG_USER_HISTORY_TYPE, I2); TAG_USER_HISTORY_TYPE, I2);
xml_write_int(fil, g_array_index(history, UserHistory, i).team_id, xml_write_string(fil, g_array_index(history, UserHistory, i).team_name,
TAG_USER_HISTORY_TEAM_ID, I2); TAG_USER_HISTORY_TEAM_NAME, I2);
xml_write_int(fil, g_array_index(history, UserHistory, i).value1, for(j=0;j<3;j++)
TAG_USER_HISTORY_VALUE1, I2); if(g_array_index(history, UserHistory, i).string[j] != NULL)
xml_write_int(fil, g_array_index(history, UserHistory, i).value2, xml_write_string(fil, g_array_index(history, UserHistory, i).string[j],
TAG_USER_HISTORY_VALUE2, I2); TAG_USER_HISTORY_STRING, I2);
xml_write_string(fil, g_array_index(history, UserHistory, i).value_string, else
TAG_USER_HISTORY_VALUE_STRING, I2); xml_write_string(fil, "", TAG_USER_HISTORY_STRING, I2);
fprintf(fil, "%s</_%d>\n", I1, TAG_USER_HISTORY); fprintf(fil, "%s</_%d>\n", I1, TAG_USER_HISTORY);
} }

View File

@ -230,3 +230,7 @@ string_treeview_helper_player_status_yellow_danger player_status_yellow.png
# betting cell # betting cell
string_treeview_helper_color_user_bet_fg black string_treeview_helper_color_user_bet_fg black
string_treeview_helper_color_user_bet_bg lightblue string_treeview_helper_color_user_bet_bg lightblue
# colours for foreign countries in the job exchange list
string_treeview_helper_color_job_international_fg black
string_treeview_helper_color_job_international_bg lightblue

View File

@ -895,3 +895,29 @@ float_bet_wager_limit_factor 50000
# how much the user may wager at most # how much the user may wager at most
int_bet_wager_max 25000 int_bet_wager_max 25000
# lower and upper bounds for the number
# of new job offers when the job exchange gets updated
int_job_new_offers_lower 3
int_job_new_offers_upper 6
# how often (in weeks) an update occurs
int_job_update_interval 5
# percentage of international offers
float_job_international_perc 50000
# number of success points per average skill
# difference unit (needed when finding out whether
# a user's application for a job is successful)
int_job_application_points_per_av_skill 40
# how many points a league layer difference is worth
int_job_application_points_per_layer 30
# how many points more are needed for an international
# application
int_job_application_points_international 150
# how many points a country rating difference is worth
int_job_application_points_per_rating 80