diff --git a/bygfoot.glade b/bygfoot.glade index 3256628d..9a9744eb 100644 --- a/bygfoot.glade +++ b/bygfoot.glade @@ -110,7 +110,7 @@ - + True gtk-preferences 1 @@ -204,11 +204,11 @@ - + True Players True - + @@ -491,7 +491,6 @@ True Player True - @@ -597,7 +596,7 @@ - + True gtk-go-forward 1 @@ -619,7 +618,7 @@ - + True gtk-go-back 1 @@ -641,7 +640,7 @@ - + True gtk-justify-fill 1 @@ -677,24 +676,6 @@ - - - True - Get loan - True - - - - - - - True - Pay loan - True - - - - True @@ -726,15 +707,6 @@ - - - - True - Team Editor Help - True - - - diff --git a/bygfoot_misc2.glade b/bygfoot_misc2.glade index 7236a486..438b4b68 100644 --- a/bygfoot_misc2.glade +++ b/bygfoot_misc2.glade @@ -1100,6 +1100,7 @@ True True False + diff --git a/src/Makefile.am b/src/Makefile.am index 4af9b723..46d15012 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -30,7 +30,7 @@ bygfoot_SOURCES = \ misc_callback_func.c misc_callback_func.h start_end.h support.h team.h treeview.h user.h variables.h xml_country.h \ misc_interface.c misc_interface.h misc_callbacks.h support.h \ misc2_callbacks.c finance.h game_gui.h main.h misc2_callbacks.h misc2_callback_func.h misc2_interface.h support.h transfer.h user.h window.h \ - misc2_callback_func.c finance.h game_gui.h maths.h misc2_callback_func.h option.h player.h team.h treeview.h transfer.h user.h \ + misc2_callback_func.c finance.h game_gui.h maths.h misc2_callback_func.h option.h player.h support.h team.h treeview.h transfer.h user.h window.h \ misc2_interface.c misc2_interface.h misc2_callbacks.h support.h \ option.c option.h variables.h \ option_gui.c file.h option_gui.h option.h support.h user.h variables.h \ diff --git a/src/callback_func.c b/src/callback_func.c index 21667934..5ff33ff3 100644 --- a/src/callback_func.c +++ b/src/callback_func.c @@ -100,6 +100,7 @@ callback_player_clicked(gint idx, GdkEventButton *event) selected_row[0] = -1; treeview_show_user_player_list(); + treeview_show_next_opponent(); } else if(event->button == 3) { @@ -293,7 +294,6 @@ callback_offer_new_contract(gint idx) return; } - stat0 = STATUS_CONTRACT_OFFER; stat1 = player_assign_wage(pl); statp = (gpointer)pl; @@ -310,8 +310,6 @@ callback_offer_new_contract(gint idx) for(i=0;i<4;i++) { - printf("ag %.1f %d\n", pl->peak_age, - (gint)rint((gfloat)stat1 * (1 + i * const_float("float_contract_scale_factor")))); sprintf(buf, "spinbutton_contract%d", i + 1); spinbuttons[i] = GTK_SPIN_BUTTON(lookup_widget(window.contract, buf)); @@ -322,3 +320,52 @@ callback_offer_new_contract(gint idx) (1 + scout_dev))); } } + +/** Show the player list of a team in the browse-teams mode. */ +void +callback_show_team(gint type) +{ + GtkTreeView *treeview_right = GTK_TREE_VIEW(lookup_widget(window.main, "treeview_right")); + const Team *tm; + + if(type == SHOW_CURRENT) + { + tm = (const Team*)treeview_get_pointer(treeview_right, 2); + stat1 = team_get_index(tm); + } + else if(type == SHOW_NEXT) + { + stat1 = (stat1 == ((GArray*)statp)->len - 1) ? 0 : stat1 + 1; + tm = &g_array_index((GArray*)statp, Team, stat1); + } + else if(type == SHOW_PREVIOUS) + { + stat1 = (stat1 == 0) ? ((GArray*)statp)->len - 1 : stat1 - 1; + tm = &g_array_index((GArray*)statp, Team, stat1); + } + else + { + if(type == SHOW_NEXT_LEAGUE) + stat2 = league_cup_get_next_clid(stat2); + else + stat2 = league_cup_get_previous_clid(stat2); + + statp = (gpointer)(stat2 < ID_CUP_START) ? + league_from_clid(stat2)->teams : + cup_from_clid(stat2)->teams; + + stat1 = 0; + tm = &g_array_index((GArray*)statp, Team, stat1); + } + + stat0 = STATUS_BROWSE_TEAMS; + stat2 = tm->clid; + statp = (gpointer)(tm->clid < ID_CUP_START) ? + league_from_clid(tm->clid)->teams : + cup_from_clid(tm->clid)->teams; + + if(tm != current_user.tm) + treeview_show_player_list_team(treeview_right, tm, current_user.scout % 10); + else + callback_show_team((type == SHOW_PREVIOUS) ? SHOW_PREVIOUS : SHOW_NEXT); +} diff --git a/src/callback_func.h b/src/callback_func.h index e9acfc25..506f99c0 100644 --- a/src/callback_func.h +++ b/src/callback_func.h @@ -30,4 +30,7 @@ callback_transfer_list_clicked(gint idx); void callback_offer_new_contract(gint idx); +void +callback_show_team(gint type); + #endif diff --git a/src/callbacks.c b/src/callbacks.c index d1abd775..f78c69d5 100644 --- a/src/callbacks.c +++ b/src/callbacks.c @@ -67,14 +67,6 @@ on_menu_about_activate (GtkMenuItem *menuitem, } -void -on_menu_team_editor_help_activate (GtkMenuItem *menuitem, - gpointer user_data) -{ - -} - - void on_button_load_clicked (GtkButton *button, gpointer user_data) @@ -164,6 +156,9 @@ on_button_browse_forward_clicked (GtkButton *button, case STATUS_SHOW_FIXTURES: callback_show_fixtures(SHOW_NEXT); break; + case STATUS_BROWSE_TEAMS: + callback_show_team(SHOW_NEXT); + break; } } @@ -177,6 +172,8 @@ on_button_browse_back_clicked (GtkButton *button, case STATUS_SHOW_FIXTURES: callback_show_fixtures(SHOW_PREVIOUS); break; + case STATUS_BROWSE_TEAMS: + callback_show_team(SHOW_PREVIOUS); } } @@ -194,6 +191,9 @@ on_button_cl_back_clicked (GtkButton *button, case STATUS_SHOW_TABLES: callback_show_tables(SHOW_PREVIOUS_LEAGUE); break; + case STATUS_BROWSE_TEAMS: + callback_show_team(SHOW_PREVIOUS_LEAGUE); + break; } } @@ -210,6 +210,9 @@ on_button_cl_forward_clicked (GtkButton *button, case STATUS_SHOW_TABLES: callback_show_tables(SHOW_NEXT_LEAGUE); break; + case STATUS_BROWSE_TEAMS: + callback_show_team(SHOW_NEXT_LEAGUE); + break; } } @@ -239,8 +242,8 @@ on_menu_tables_activate (GtkMenuItem *menuitem, void -on_players1_activate (GtkMenuItem *menuitem, - gpointer user_data) +on_players_activate (GtkMenuItem *menuitem, + gpointer user_data) { } @@ -254,14 +257,6 @@ on_menu_season_history_activate (GtkMenuItem *menuitem, } -void -on_menu_player_activate (GtkMenuItem *menuitem, - gpointer user_data) -{ - -} - - void on_menu_show_info_activate (GtkMenuItem *menuitem, gpointer user_data) @@ -424,7 +419,7 @@ on_menu_browse_teams_activate (GtkMenuItem *menuitem, treeview_show_team_list(GTK_TREE_VIEW(treeview_right), TRUE, TRUE); - stat0 = STATUS_BROWSE_TEAMS; + stat0 = STATUS_SHOW_TEAM_LIST; } @@ -458,29 +453,14 @@ on_treeview_right_button_press_event (GtkWidget *widget, return TRUE; } break; + case STATUS_SHOW_TEAM_LIST: + callback_show_team(SHOW_CURRENT); + break; } return FALSE; } - - -void -on_menu_get_loan_activate (GtkMenuItem *menuitem, - gpointer user_data) -{ - -} - - -void -on_menu_pay_loan_activate (GtkMenuItem *menuitem, - gpointer user_data) -{ - -} - - void on_menu_next_user_activate (GtkMenuItem *menuitem, gpointer user_data) @@ -582,6 +562,7 @@ on_eventbox_style_button_press_event (GtkWidget *widget, game_gui_write_meters(); game_gui_write_radio_items(); + treeview_show_next_opponent(); return FALSE; } @@ -610,8 +591,9 @@ on_eventbox_boost_button_press_event (GtkWidget *widget, game_gui_write_meters(); game_gui_write_radio_items(); + treeview_show_next_opponent(); - return FALSE; + return FALSE; } void diff --git a/src/callbacks.h b/src/callbacks.h index b4f2ad08..34c04f96 100644 --- a/src/callbacks.h +++ b/src/callbacks.h @@ -33,10 +33,6 @@ void on_menu_about_activate (GtkMenuItem *menuitem, gpointer user_data); -void -on_menu_team_editor_help_activate (GtkMenuItem *menuitem, - gpointer user_data); - void on_button_load_clicked (GtkButton *button, gpointer user_data); @@ -95,17 +91,13 @@ on_menu_tables_activate (GtkMenuItem *menuitem, gpointer user_data); void -on_players1_activate (GtkMenuItem *menuitem, +on_players_activate (GtkMenuItem *menuitem, gpointer user_data); void on_menu_season_history_activate (GtkMenuItem *menuitem, gpointer user_data); -void -on_menu_player_activate (GtkMenuItem *menuitem, - gpointer user_data); - void on_menu_show_info_activate (GtkMenuItem *menuitem, gpointer user_data); @@ -192,13 +184,6 @@ gboolean on_treeview_right_button_press_event (GtkWidget *widget, GdkEventButton *event, gpointer user_data); -void -on_menu_get_loan_activate (GtkMenuItem *menuitem, - gpointer user_data); - -void -on_menu_pay_loan_activate (GtkMenuItem *menuitem, - gpointer user_data); void on_menu_next_user_activate (GtkMenuItem *menuitem, diff --git a/src/enums.h b/src/enums.h index 6f9774f0..2dec1d97 100644 --- a/src/enums.h +++ b/src/enums.h @@ -49,6 +49,7 @@ enum Status0Value STATUS_MAIN, STATUS_SHOW_LIVE_GAME, STATUS_LIVE_GAME_PAUSE, + STATUS_SHOW_TEAM_LIST, STATUS_BROWSE_TEAMS, STATUS_TEAM_SELECTION, STATUS_SHOW_LAST_MATCH, diff --git a/src/game.c b/src/game.c index 779dcb33..49bf1fd6 100644 --- a/src/game.c +++ b/src/game.c @@ -54,9 +54,12 @@ game_get_values(const Fixture *fix, gfloat team_values[][GAME_TEAM_VALUE_END], for(j=GAME_TEAM_VALUE_DEFEND;jboost)); + team_values[i][GAME_TEAM_VALUE_DEFEND] *= (1 - style_factor); + team_values[i][GAME_TEAM_VALUE_ATTACK] *= (1 + style_factor); + /*d*/ /* if(fixture_user_team_involved(fix) != -1) */ /* { */ diff --git a/src/game_gui.c b/src/game_gui.c index 1c4aea03..1718db35 100644 --- a/src/game_gui.c +++ b/src/game_gui.c @@ -304,6 +304,8 @@ game_gui_read_radio_items(GtkWidget *widget) if(old_scout != current_user.scout || old_physio != current_user.physio) game_gui_print_message(_("Next week you'll fire him and hire a new one.")); + + treeview_show_next_opponent(); } /** Show the main menu. */ @@ -312,7 +314,7 @@ game_gui_show_main(void) { game_gui_set_main_window_header(); treeview_show_user_player_list(); - treeview_show_next_opponent(GTK_TREE_VIEW(lookup_widget(window.main, "treeview_right"))); + treeview_show_next_opponent(); } /** Print a message into the main window entry. */ diff --git a/src/interface.c b/src/interface.c index d4b33533..d068f776 100644 --- a/src/interface.c +++ b/src/interface.c @@ -44,7 +44,7 @@ create_main_window (void) GtkWidget *menu_options; GtkWidget *menu_options_menu; GtkWidget *menu_preferences; - GtkWidget *image252; + GtkWidget *image258; GtkWidget *trennlinie7; GtkWidget *menu_job_offers; GtkWidget *menu_live_game; @@ -54,7 +54,7 @@ create_main_window (void) GtkWidget *menu_fixtures; GtkWidget *menu_tables; GtkWidget *menu_my_league_results; - GtkWidget *players1; + GtkWidget *players; GtkWidget *menu_season_history; GtkWidget *menu_team; GtkWidget *menu_team_menu; @@ -103,21 +103,18 @@ create_main_window (void) GtkWidget *menu_user_show_last_stats; GtkWidget *trennlinie9; GtkWidget *menu_next_user; - GtkWidget *image253; + GtkWidget *image259; GtkWidget *menu_previous_user; - GtkWidget *image254; + GtkWidget *image260; GtkWidget *menu_manage_users; - GtkWidget *image255; + GtkWidget *image261; GtkWidget *menu_finances_stadium; GtkWidget *menu_finances_stadium_menu; GtkWidget *menu_show_finances; - GtkWidget *menu_get_loan; - GtkWidget *menu_pay_loan; GtkWidget *menu_show_stadium; GtkWidget *menu_help; GtkWidget *menu_help_menu; GtkWidget *menu_about; - GtkWidget *team_editor_help1; GtkWidget *hbox1; GtkWidget *button_load; GtkWidget *image11; @@ -264,9 +261,9 @@ create_main_window (void) GDK_p, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE); - image252 = gtk_image_new_from_stock ("gtk-preferences", GTK_ICON_SIZE_MENU); - gtk_widget_show (image252); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_preferences), image252); + image258 = gtk_image_new_from_stock ("gtk-preferences", GTK_ICON_SIZE_MENU); + gtk_widget_show (image258); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_preferences), image258); trennlinie7 = gtk_menu_item_new (); gtk_widget_show (trennlinie7); @@ -313,9 +310,9 @@ create_main_window (void) gtk_widget_show (menu_my_league_results); gtk_container_add (GTK_CONTAINER (menu_figures_menu), menu_my_league_results); - players1 = gtk_menu_item_new_with_mnemonic (_("Players")); - gtk_widget_show (players1); - gtk_container_add (GTK_CONTAINER (menu_figures_menu), players1); + players = gtk_menu_item_new_with_mnemonic (_("Players")); + gtk_widget_show (players); + gtk_container_add (GTK_CONTAINER (menu_figures_menu), players); menu_season_history = gtk_menu_item_new_with_mnemonic (_("Season history")); gtk_widget_show (menu_season_history); @@ -514,9 +511,9 @@ create_main_window (void) GDK_F9, 0, GTK_ACCEL_VISIBLE); - image253 = gtk_image_new_from_stock ("gtk-go-forward", GTK_ICON_SIZE_MENU); - gtk_widget_show (image253); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_next_user), image253); + image259 = gtk_image_new_from_stock ("gtk-go-forward", GTK_ICON_SIZE_MENU); + gtk_widget_show (image259); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_next_user), image259); menu_previous_user = gtk_image_menu_item_new_with_mnemonic (_("Previous user")); gtk_widget_show (menu_previous_user); @@ -525,9 +522,9 @@ create_main_window (void) GDK_F8, 0, GTK_ACCEL_VISIBLE); - image254 = gtk_image_new_from_stock ("gtk-go-back", GTK_ICON_SIZE_MENU); - gtk_widget_show (image254); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_previous_user), image254); + image260 = gtk_image_new_from_stock ("gtk-go-back", GTK_ICON_SIZE_MENU); + gtk_widget_show (image260); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_previous_user), image260); menu_manage_users = gtk_image_menu_item_new_with_mnemonic (_("Manage users")); gtk_widget_show (menu_manage_users); @@ -536,9 +533,9 @@ create_main_window (void) GDK_F12, 0, GTK_ACCEL_VISIBLE); - image255 = gtk_image_new_from_stock ("gtk-justify-fill", GTK_ICON_SIZE_MENU); - gtk_widget_show (image255); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_manage_users), image255); + image261 = gtk_image_new_from_stock ("gtk-justify-fill", GTK_ICON_SIZE_MENU); + gtk_widget_show (image261); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_manage_users), image261); menu_finances_stadium = gtk_menu_item_new_with_mnemonic (_("FinStad")); gtk_widget_show (menu_finances_stadium); @@ -554,14 +551,6 @@ create_main_window (void) GDK_f, 0, GTK_ACCEL_VISIBLE); - menu_get_loan = gtk_menu_item_new_with_mnemonic (_("Get loan")); - gtk_widget_show (menu_get_loan); - gtk_container_add (GTK_CONTAINER (menu_finances_stadium_menu), menu_get_loan); - - menu_pay_loan = gtk_menu_item_new_with_mnemonic (_("Pay loan")); - gtk_widget_show (menu_pay_loan); - gtk_container_add (GTK_CONTAINER (menu_finances_stadium_menu), menu_pay_loan); - menu_show_stadium = gtk_menu_item_new_with_mnemonic (_("Show stadium")); gtk_widget_show (menu_show_stadium); gtk_container_add (GTK_CONTAINER (menu_finances_stadium_menu), menu_show_stadium); @@ -580,10 +569,6 @@ create_main_window (void) gtk_widget_show (menu_about); gtk_container_add (GTK_CONTAINER (menu_help_menu), menu_about); - team_editor_help1 = gtk_menu_item_new_with_mnemonic (_("Team Editor Help")); - gtk_widget_show (team_editor_help1); - gtk_container_add (GTK_CONTAINER (menu_help_menu), team_editor_help1); - hbox1 = gtk_hbox_new (FALSE, 0); gtk_widget_show (hbox1); gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0); @@ -1025,8 +1010,8 @@ create_main_window (void) g_signal_connect ((gpointer) menu_my_league_results, "activate", G_CALLBACK (on_menu_my_league_results_activate), NULL); - g_signal_connect ((gpointer) players1, "activate", - G_CALLBACK (on_players1_activate), + g_signal_connect ((gpointer) players, "activate", + G_CALLBACK (on_players_activate), NULL); g_signal_connect ((gpointer) menu_season_history, "activate", G_CALLBACK (on_menu_season_history_activate), @@ -1085,9 +1070,6 @@ create_main_window (void) g_signal_connect ((gpointer) menu_browse_teams, "activate", G_CALLBACK (on_menu_browse_teams_activate), NULL); - g_signal_connect ((gpointer) menu_player, "activate", - G_CALLBACK (on_menu_player_activate), - NULL); g_signal_connect ((gpointer) menu_show_info, "activate", G_CALLBACK (on_menu_show_info_activate), NULL); @@ -1124,21 +1106,12 @@ create_main_window (void) g_signal_connect ((gpointer) menu_show_finances, "activate", G_CALLBACK (on_menu_show_finances_activate), NULL); - g_signal_connect ((gpointer) menu_get_loan, "activate", - G_CALLBACK (on_menu_get_loan_activate), - NULL); - g_signal_connect ((gpointer) menu_pay_loan, "activate", - G_CALLBACK (on_menu_pay_loan_activate), - NULL); g_signal_connect ((gpointer) menu_show_stadium, "activate", G_CALLBACK (on_menu_show_stadium_activate), NULL); g_signal_connect ((gpointer) menu_about, "activate", G_CALLBACK (on_menu_about_activate), NULL); - g_signal_connect ((gpointer) team_editor_help1, "activate", - G_CALLBACK (on_menu_team_editor_help_activate), - NULL); g_signal_connect ((gpointer) button_load, "clicked", G_CALLBACK (on_button_load_clicked), NULL); @@ -1206,7 +1179,7 @@ create_main_window (void) GLADE_HOOKUP_OBJECT (main_window, menu_options, "menu_options"); GLADE_HOOKUP_OBJECT (main_window, menu_options_menu, "menu_options_menu"); GLADE_HOOKUP_OBJECT (main_window, menu_preferences, "menu_preferences"); - GLADE_HOOKUP_OBJECT (main_window, image252, "image252"); + GLADE_HOOKUP_OBJECT (main_window, image258, "image258"); GLADE_HOOKUP_OBJECT (main_window, trennlinie7, "trennlinie7"); GLADE_HOOKUP_OBJECT (main_window, menu_job_offers, "menu_job_offers"); GLADE_HOOKUP_OBJECT (main_window, menu_live_game, "menu_live_game"); @@ -1216,7 +1189,7 @@ create_main_window (void) GLADE_HOOKUP_OBJECT (main_window, menu_fixtures, "menu_fixtures"); GLADE_HOOKUP_OBJECT (main_window, menu_tables, "menu_tables"); GLADE_HOOKUP_OBJECT (main_window, menu_my_league_results, "menu_my_league_results"); - GLADE_HOOKUP_OBJECT (main_window, players1, "players1"); + GLADE_HOOKUP_OBJECT (main_window, players, "players"); GLADE_HOOKUP_OBJECT (main_window, menu_season_history, "menu_season_history"); GLADE_HOOKUP_OBJECT (main_window, menu_team, "menu_team"); GLADE_HOOKUP_OBJECT (main_window, menu_team_menu, "menu_team_menu"); @@ -1261,21 +1234,18 @@ create_main_window (void) GLADE_HOOKUP_OBJECT (main_window, menu_user_show_last_stats, "menu_user_show_last_stats"); GLADE_HOOKUP_OBJECT (main_window, trennlinie9, "trennlinie9"); GLADE_HOOKUP_OBJECT (main_window, menu_next_user, "menu_next_user"); - GLADE_HOOKUP_OBJECT (main_window, image253, "image253"); + GLADE_HOOKUP_OBJECT (main_window, image259, "image259"); GLADE_HOOKUP_OBJECT (main_window, menu_previous_user, "menu_previous_user"); - GLADE_HOOKUP_OBJECT (main_window, image254, "image254"); + GLADE_HOOKUP_OBJECT (main_window, image260, "image260"); GLADE_HOOKUP_OBJECT (main_window, menu_manage_users, "menu_manage_users"); - GLADE_HOOKUP_OBJECT (main_window, image255, "image255"); + GLADE_HOOKUP_OBJECT (main_window, image261, "image261"); GLADE_HOOKUP_OBJECT (main_window, menu_finances_stadium, "menu_finances_stadium"); GLADE_HOOKUP_OBJECT (main_window, menu_finances_stadium_menu, "menu_finances_stadium_menu"); GLADE_HOOKUP_OBJECT (main_window, menu_show_finances, "menu_show_finances"); - GLADE_HOOKUP_OBJECT (main_window, menu_get_loan, "menu_get_loan"); - GLADE_HOOKUP_OBJECT (main_window, menu_pay_loan, "menu_pay_loan"); GLADE_HOOKUP_OBJECT (main_window, menu_show_stadium, "menu_show_stadium"); GLADE_HOOKUP_OBJECT (main_window, menu_help, "menu_help"); GLADE_HOOKUP_OBJECT (main_window, menu_help_menu, "menu_help_menu"); GLADE_HOOKUP_OBJECT (main_window, menu_about, "menu_about"); - GLADE_HOOKUP_OBJECT (main_window, team_editor_help1, "team_editor_help1"); GLADE_HOOKUP_OBJECT (main_window, hbox1, "hbox1"); GLADE_HOOKUP_OBJECT (main_window, button_load, "button_load"); GLADE_HOOKUP_OBJECT (main_window, image11, "image11"); diff --git a/src/misc2_callback_func.c b/src/misc2_callback_func.c index 1e578586..dc38bd75 100644 --- a/src/misc2_callback_func.c +++ b/src/misc2_callback_func.c @@ -4,10 +4,12 @@ #include "misc2_callback_func.h" #include "option.h" #include "player.h" +#include "support.h" #include "team.h" #include "treeview.h" #include "transfer.h" #include "user.h" +#include "window.h" /** Transfer a user player. */ void @@ -77,3 +79,58 @@ misc2_callback_change_structure(gint structure) team_change_structure(current_user.tm, structure); treeview_show_user_player_list(); } + +/** Handle a click on the contract offer button. */ +void +misc2_callback_contract_offer(void) +{ + gint i; + gchar buf[SMALL]; + GtkSpinButton *spinbutton; + gint value = 0; + Player *pl = (Player*)statp; + + for(i=0;i<4;i++) + { + sprintf(buf, "radiobutton_contract%d", i + 1); + + if(gtk_toggle_button_get_active( + GTK_TOGGLE_BUTTON(lookup_widget(window.contract, buf)))) + { + sprintf(buf, "spinbutton_contract%d", i + 1); + spinbutton = GTK_SPIN_BUTTON(lookup_widget(window.contract, buf)); + value = gtk_spin_button_get_value_as_int(spinbutton); + + if(value >= (gint)rint((gfloat)stat1 * + (1 + (i * const_float("float_contract_scale_factor") * + powf(-1, (pl->age > pl->peak_age)))))) + { + pl->contract += (i + 1); + pl->wage = value; + sprintf(buf, _("%s has accepted your offer."), pl->name->str); + game_gui_print_message(buf); + window_destroy(&window.contract, FALSE); + } + else + { + pl->offers++; + if(pl->offers < const_int("int_contract_max_offers")) + { + sprintf(buf, _("%s rejects your offer. You may still make %d offers."), + pl->name->str, + const_int("int_contract_max_offers") - pl->offers); + game_gui_show_warning(buf); + } + else + { + sprintf(buf, _("%s rejects your offer and won't negotiate with you anymore. You should sell him before his contract expires (he'll simply leave your team otherwise)."), + pl->name->str); + game_gui_show_warning(buf); + window_destroy(&window.contract, FALSE); + } + } + + break; + } + } +} diff --git a/src/misc2_callback_func.h b/src/misc2_callback_func.h index d553932b..665b7929 100644 --- a/src/misc2_callback_func.h +++ b/src/misc2_callback_func.h @@ -9,5 +9,8 @@ misc2_callback_transfer_user_player(void); void misc2_callback_change_structure(gint structure); +void +misc2_callback_contract_offer(void); + #endif diff --git a/src/misc2_callbacks.c b/src/misc2_callbacks.c index d354246e..046d7972 100644 --- a/src/misc2_callbacks.c +++ b/src/misc2_callbacks.c @@ -165,7 +165,15 @@ void on_button_contract_offer_clicked (GtkButton *button, gpointer user_data) { - - /*d*/ - window_destroy(&window.contract, FALSE); + misc2_callback_contract_offer(); } + +gboolean +on_window_contract_delete_event (GtkWidget *widget, + GdkEvent *event, + gpointer user_data) +{ + + return TRUE; +} + diff --git a/src/misc2_callbacks.h b/src/misc2_callbacks.h index c642ae8c..67d06427 100644 --- a/src/misc2_callbacks.h +++ b/src/misc2_callbacks.h @@ -57,3 +57,8 @@ on_button_contract_offer_clicked (GtkButton *button, gpointer user_data); #endif + +gboolean +on_window_contract_delete_event (GtkWidget *widget, + GdkEvent *event, + gpointer user_data); diff --git a/src/misc2_interface.c b/src/misc2_interface.c index cbc772d6..bea1ab59 100644 --- a/src/misc2_interface.c +++ b/src/misc2_interface.c @@ -734,6 +734,9 @@ create_window_contract (void) gtk_box_pack_start (GTK_BOX (hbox20), label44, FALSE, FALSE, 0); gtk_label_set_justify (GTK_LABEL (label44), GTK_JUSTIFY_LEFT); + g_signal_connect ((gpointer) window_contract, "delete_event", + G_CALLBACK (on_window_contract_delete_event), + NULL); g_signal_connect ((gpointer) button_contract_offer, "clicked", G_CALLBACK (on_button_contract_offer_clicked), NULL); diff --git a/src/player.c b/src/player.c index 84951896..956dde12 100644 --- a/src/player.c +++ b/src/player.c @@ -20,7 +20,7 @@ player_new(Team *tm, gfloat average_skill) gfloat skill_factor = math_rnd(1 - const_float("float_player_average_skill_variance"), 1 + const_float("float_player_average_skill_variance")); - Player new; + Player new; new.name = g_string_new(((GString*)g_ptr_array_index(player_names, math_rndi(0, player_names->len - 1)))->str); @@ -44,10 +44,10 @@ player_new(Team *tm, gfloat average_skill) if(new.peak_age - new.age > const_float("float_player_peak_age_diff_younger1") || new.peak_age - new.age < const_float("float_player_peak_age_diff_older1")) - new.skill = new.skill * const_float("float_player_skill_reduction1"); + new.skill = new.skill * (1 - const_float("float_player_skill_reduction1")); else if(new.peak_age - new.age > const_float("float_player_peak_age_diff_younger2") || new.peak_age - new.age < const_float("float_player_peak_age_diff_peak_older")) - new.skill = new.skill * const_float("float_player_skill_reduction2"); + new.skill = new.skill * (1 - const_float("float_player_skill_reduction2")); new.cskill = new.skill; diff --git a/src/team.c b/src/team.c index 45bd2243..c26e4130 100644 --- a/src/team.c +++ b/src/team.c @@ -114,14 +114,14 @@ team_generate_players_stadium(Team *tm) if(tm->clid < ID_CUP_START) average_skill = const_float("float_player_max_skill") * skill_factor * - ((gfloat)team_return_league_cup_value_int(tm, LEAGUE_CUP_VALUE_AVERAGE_SKILL) / 1000); + ((gfloat)team_return_league_cup_value_int(tm, LEAGUE_CUP_VALUE_AVERAGE_SKILL) / 10000); else average_skill = - skill_factor * lig(0).average_skill * - ((gfloat)team_return_league_cup_value_int(tm, LEAGUE_CUP_VALUE_SKILL_DIFF) / 1000); + skill_factor * team_get_average_skills(lig(0).teams) * + (1 + (gfloat)team_return_league_cup_value_int(tm, LEAGUE_CUP_VALUE_SKILL_DIFF) / 10000); + + average_skill = CLAMP(average_skill, 0, const_float("float_player_max_skill")); - average_skill = CLAMP(average_skill, 0, const_float("float_player_max_skill")); - for(i=0;i 0) ? sum / (gfloat)counter : 0; } /** Return the rank of the team. @@ -897,3 +897,37 @@ team_get_new(const Team *tm, gboolean fire) return return_value; } + +/** Return the index of the team in the teams array. */ +gint +team_get_index(const Team *tm) +{ + gint i; + GArray *teams = (tm->clid < ID_CUP_START) ? + league_from_clid(tm->clid)->teams : + cup_from_clid(tm->clid)->teams; + + for(i=0;ilen;i++) + if(&g_array_index(teams, Team, i) == tm) + return i; + + g_warning("team_get_index: team %s not found.\n", tm->name->str); + + return -1; +} + +/** Return the average of the average skills of the teams in the array. */ +gfloat +team_get_average_skills(const GArray *teams) +{ + gint i; + gfloat sum = 0; + + if(teams->len == 0) + return 0; + + for(i=0;ilen;i++) + sum += team_get_average_skill(&g_array_index(teams, Team, i), FALSE); + + return sum / teams->len; +} diff --git a/src/team.h b/src/team.h index 5cd4a408..4fe03be8 100644 --- a/src/team.h +++ b/src/team.h @@ -11,6 +11,7 @@ enum TeamCompare { TEAM_COMPARE_LEAGUE_RANK = 0, TEAM_COMPARE_UNSORTED, + TEAM_COMPARE_AV_SKILL, TEAM_COMPARE_END }; @@ -116,4 +117,10 @@ team_get_sorted(GCompareDataFunc compare_function, gint type, gboolean cup); gint team_compare_func(gconstpointer a, gconstpointer b, gpointer data); +gint +team_get_index(const Team *tm); + +gfloat +team_get_average_skills(const GArray *teams); + #endif diff --git a/src/treeview.c b/src/treeview.c index f2921468..d58ba8ba 100644 --- a/src/treeview.c +++ b/src/treeview.c @@ -239,6 +239,33 @@ treeview_pixbuf_from_filename(gchar *filename) return symbol; } +/** Function comparing two teams in a team list treeview. */ +gint +treeview_team_compare(GtkTreeModel *model, + GtkTreeIter *a, + GtkTreeIter *b, + gpointer user_data) +{ + gint type = GPOINTER_TO_INT(user_data); + gpointer *tm1, *tm2; + + gtk_tree_model_get(model, a, 4, &tm1, -1); + gtk_tree_model_get(model, b, 4, &tm2, -1); + + switch(type) + { + default: + g_warning("treeview_team_compare: unknown type %d.\n", type); + break; + case TEAM_COMPARE_AV_SKILL: + return misc_float_compare(team_get_average_skill((Team*)tm1, FALSE), + team_get_average_skill((Team*)tm2, FALSE)); + break; + } + + return 0; +} + /** Creates the model for the treeview in the team selection window. The model contains a list of all the teams from the leagues in @@ -257,11 +284,12 @@ treeview_create_team_selection_list(gboolean show_cup_teams, gboolean show_user_ GtkTreeIter iter; GdkPixbuf *symbol = NULL; - liststore = gtk_list_store_new(4, + liststore = gtk_list_store_new(5, G_TYPE_INT, GDK_TYPE_PIXBUF, G_TYPE_POINTER, - G_TYPE_STRING); + G_TYPE_STRING, + G_TYPE_POINTER); for(i=0;ilen;i++) { @@ -277,6 +305,7 @@ treeview_create_team_selection_list(gboolean show_cup_teams, gboolean show_user_ 1, symbol, 2, (gpointer)&g_array_index(lig(i).teams, Team, j), 3, lig(i).name->str, + 4, (gpointer)&g_array_index(lig(i).teams, Team, j), -1); } } @@ -301,11 +330,15 @@ treeview_create_team_selection_list(gboolean show_cup_teams, gboolean show_user_ 1, symbol, 2, (gpointer)&g_array_index(cp(i).teams, Team, j), 3, cp(i).name->str, + 4, (gpointer)&g_array_index(cp(i).teams, Team, j), -1); if(symbol != NULL) g_object_unref(symbol); } + gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(liststore), 4, + treeview_team_compare, GINT_TO_POINTER(TEAM_COMPARE_AV_SKILL), NULL); + return GTK_TREE_MODEL(liststore); } @@ -323,7 +356,7 @@ treeview_set_up_team_selection_treeview (GtkTreeView *treeview) gtk_tree_selection_set_mode( gtk_tree_view_get_selection(treeview), GTK_SELECTION_BROWSE); - + gtk_tree_view_set_headers_visible(treeview, TRUE); gtk_tree_view_set_rules_hint(treeview, TRUE); /* Numbering the teams */ @@ -350,7 +383,7 @@ treeview_set_up_team_selection_treeview (GtkTreeView *treeview) gtk_tree_view_column_pack_start(col, renderer, TRUE); gtk_tree_view_column_set_cell_data_func(col, renderer, treeview_cell_team_selection, - GINT_TO_POINTER(2), NULL); + NULL, NULL); /* League column */ col = gtk_tree_view_column_new(); gtk_tree_view_column_set_title(col, _("League")); @@ -359,6 +392,18 @@ treeview_set_up_team_selection_treeview (GtkTreeView *treeview) gtk_tree_view_column_pack_start(col, renderer, TRUE); gtk_tree_view_column_add_attribute(col, renderer, "text", 3); + + /* Average skill */ + col = gtk_tree_view_column_new(); + gtk_tree_view_column_set_title(col, _("Av.Sk.")); + gtk_tree_view_column_set_sort_column_id(col, 4); + gtk_tree_view_append_column(treeview, col); + renderer = treeview_cell_renderer_text_new(); + gtk_tree_view_column_pack_start(col, renderer, TRUE); + gtk_tree_view_column_set_cell_data_func(col, renderer, + treeview_cell_team_selection, + NULL, NULL); + } /** Shows the list of teams in the game. @@ -460,6 +505,8 @@ treeview_set_up_player_list (GtkTreeView *treeview, gint *attributes, gint max) gtk_tree_selection_set_mode( gtk_tree_view_get_selection(treeview), GTK_SELECTION_SINGLE); + gtk_tree_view_set_rules_hint(treeview, FALSE); + gtk_tree_view_set_headers_visible(treeview, TRUE); /* number the players */ col = gtk_tree_view_column_new(); @@ -509,7 +556,6 @@ treeview_show_player_list(GtkTreeView *treeview, GPtrArray *players, PlayerListA GtkTreeModel *model = NULL; treeview_clear(treeview); - gtk_tree_view_set_headers_visible(treeview, TRUE); for(i=0;i - team_get_average_skill(current_user.tm, FALSE)) + sprintf(buf, "%.1f", team_get_average_skill(opp, TRUE)); + if(team_get_average_skill(opp, TRUE) > + team_get_average_skill(current_user.tm, TRUE)) sprintf(buf2, " (%+.1f)", const_str("string_treeview_opponent_skill_positive_fg"), - team_get_average_skill(opp, FALSE) - - team_get_average_skill(current_user.tm, FALSE)); + team_get_average_skill(opp, TRUE) - + team_get_average_skill(current_user.tm, TRUE)); else sprintf(buf2, " (%+.1f)", const_str("string_treeview_opponent_skill_negative_fg"), - team_get_average_skill(opp, FALSE) - - team_get_average_skill(current_user.tm, FALSE)); + team_get_average_skill(opp, TRUE) - + team_get_average_skill(current_user.tm, TRUE)); strcat(buf, buf2); gtk_list_store_append(liststore, &iter); @@ -1821,6 +1872,8 @@ treeview_set_up_next_opponent(GtkTreeView *treeview) gtk_tree_selection_set_mode(gtk_tree_view_get_selection(treeview), GTK_SELECTION_NONE); + gtk_tree_view_set_rules_hint(treeview, FALSE); + gtk_tree_view_set_headers_visible(treeview, FALSE); for(i=0;i<2;i++) { @@ -1835,12 +1888,13 @@ treeview_set_up_next_opponent(GtkTreeView *treeview) /** Show some information about the next opponent. */ void -treeview_show_next_opponent(GtkTreeView *treeview) +treeview_show_next_opponent(void) { + GtkTreeView *treeview = + GTK_TREE_VIEW(lookup_widget(window.main, "treeview_right")); GtkTreeModel *model = NULL; treeview_clear(treeview); - gtk_tree_view_set_headers_visible(treeview, FALSE); treeview_set_up_next_opponent(treeview); model = treeview_create_next_opponent(); @@ -1914,6 +1968,8 @@ treeview_set_up_league_results(GtkTreeView *treeview) gtk_tree_selection_set_mode(gtk_tree_view_get_selection(treeview), GTK_SELECTION_NONE); + gtk_tree_view_set_rules_hint(treeview, TRUE); + gtk_tree_view_set_headers_visible(treeview, TRUE); for(i=0;i<3;i++) { @@ -1935,7 +1991,6 @@ treeview_show_league_results(GtkTreeView *treeview) GtkTreeModel *model = NULL; treeview_clear(treeview); - gtk_tree_view_set_headers_visible(treeview, TRUE); treeview_set_up_league_results(treeview); model = treeview_create_league_results(); diff --git a/src/treeview.h b/src/treeview.h index 94a0ff3d..1b97b56d 100644 --- a/src/treeview.h +++ b/src/treeview.h @@ -151,7 +151,7 @@ void treeview_show_transfer_list(GtkTreeView *treeview); void -treeview_show_next_opponent(GtkTreeView *treeview); +treeview_show_next_opponent(void); void treeview_set_up_next_opponent(GtkTreeView *treeview); @@ -177,4 +177,10 @@ treeview_create_league_results(void); void treeview_create_next_opponent_values(GtkListStore *liststore, const Fixture *fix); +gint +treeview_team_compare(GtkTreeModel *model, + GtkTreeIter *a, + GtkTreeIter *b, + gpointer user_data); + #endif diff --git a/src/treeview_cell.c b/src/treeview_cell.c index 0358ba4b..01d3351d 100644 --- a/src/treeview_cell.c +++ b/src/treeview_cell.c @@ -16,13 +16,19 @@ treeview_cell_team_selection(GtkTreeViewColumn *col, GtkTreeIter *iter, gpointer user_data) { - gint column = GPOINTER_TO_INT(user_data); + gchar buf[SMALL]; + gint column = treeview_get_col_number_column(col); gpointer team_pointer; gtk_tree_model_get(model, iter, column, &team_pointer, -1); if(column == 2) g_object_set(renderer, "text", ((Team*)team_pointer)->name->str, NULL); + else if(column == 4) + { + sprintf(buf, "%.1f", team_get_average_skill((Team*)team_pointer, FALSE)); + g_object_set(renderer, "text", buf, NULL); + } else g_warning("treeview_cell_team_selection: unknown column: %d\n", column); } @@ -35,7 +41,7 @@ treeview_cell_int_to_cell(GtkTreeViewColumn *col, GtkTreeIter *iter, gpointer user_data) { - gint column = GPOINTER_TO_INT(user_data); + gint column = treeview_get_col_number_column(col); gint value; gchar buf[SMALL]; diff --git a/support_files/bygfoot_constants b/support_files/bygfoot_constants index f40f6b2d..0d15901f 100644 --- a/support_files/bygfoot_constants +++ b/support_files/bygfoot_constants @@ -43,8 +43,8 @@ float_player_fitness_upper 10000 # skill reduction factor for very young and very old players # at generation -float_player_skill_reduction1 7500 -float_player_skill_reduction2 9000 +float_player_skill_reduction1 500 +float_player_skill_reduction2 250 # value scale factor (we take 1 + factor or 1 - factor # in the game) for values of young/old players @@ -167,7 +167,7 @@ int_treeview_cell_int_empty -5 int_treeview_latest_results 10 # number of |'s for an ideal 442 team in the opponent preview -int_treeview_max_pipes 30 +int_treeview_max_pipes 50 # maximum number of players in a team. int_team_max_players 20 @@ -221,7 +221,7 @@ float_game_gui_live_game_scale_range 100000 # How much a player's skill can deviate from # the average skill in his team. -float_player_average_skill_variance 1000 +float_player_average_skill_variance 750 # these determine the value calculation of players. # value is a function of skill and talent involving diff --git a/support_files/definitions/cup_champ_league.xml b/support_files/definitions/cup_champ_league.xml index 24b9a55c..e8ecccf7 100644 --- a/support_files/definitions/cup_champ_league.xml +++ b/support_files/definitions/cup_champ_league.xml @@ -6,7 +6,7 @@ champ_league international 3 - 1100 + 750 46 4 diff --git a/support_files/definitions/cup_cwc.xml b/support_files/definitions/cup_cwc.xml index 09829b70..b465314f 100644 --- a/support_files/definitions/cup_cwc.xml +++ b/support_files/definitions/cup_cwc.xml @@ -6,7 +6,7 @@ cwc international 3 - 1075 + 500 45 4 diff --git a/support_files/definitions/cup_uefa.xml b/support_files/definitions/cup_uefa.xml index 447a03a1..b915c4e7 100644 --- a/support_files/definitions/cup_uefa.xml +++ b/support_files/definitions/cup_uefa.xml @@ -6,7 +6,7 @@ uefa international 3 - 1050 + 250 44 4 diff --git a/support_files/definitions/league_england1.xml b/support_files/definitions/league_england1.xml index b9c86ecf..9d050841 100644 --- a/support_files/definitions/league_england1.xml +++ b/support_files/definitions/league_england1.xml @@ -7,7 +7,7 @@ flag_en.png 1 1 - 800 + 8000 diff --git a/support_files/definitions/league_england2.xml b/support_files/definitions/league_england2.xml index 4af00466..8d22f60e 100644 --- a/support_files/definitions/league_england2.xml +++ b/support_files/definitions/league_england2.xml @@ -7,7 +7,7 @@ flag_en.png 1 1 - 700 + 7000 diff --git a/support_files/definitions/league_england3.xml b/support_files/definitions/league_england3.xml index ad6d153c..e1c3e5d0 100644 --- a/support_files/definitions/league_england3.xml +++ b/support_files/definitions/league_england3.xml @@ -7,7 +7,7 @@ flag_en.png 1 1 - 600 + 6000 diff --git a/support_files/definitions/league_england4.xml b/support_files/definitions/league_england4.xml index 5be6ecb9..f01e655e 100644 --- a/support_files/definitions/league_england4.xml +++ b/support_files/definitions/league_england4.xml @@ -7,7 +7,7 @@ flag_en.png 1 1 - 500 + 5000 diff --git a/support_files/definitions/league_england5.xml b/support_files/definitions/league_england5.xml index 359e7a0f..a0f26056 100644 --- a/support_files/definitions/league_england5.xml +++ b/support_files/definitions/league_england5.xml @@ -7,7 +7,7 @@ flag_en.png 1 1 - 400 + 4000