From d9990117f40292932bf7ebf1893a410ebfb8c0c8 Mon Sep 17 00:00:00 2001 From: gyboth Date: Sun, 9 Nov 2008 09:36:55 +0000 Subject: [PATCH] Automatic loan repayment. --- bygfoot_misc3.glade | 75 +++++++++++++++++ src/finance.c | 2 +- src/misc2_callbacks.c | 181 ++++++++++++++++++++++-------------------- src/misc3_interface.c | 25 ++++++ src/window.c | 11 ++- 5 files changed, 203 insertions(+), 91 deletions(-) diff --git a/bygfoot_misc3.glade b/bygfoot_misc3.glade index 06361ed2..8cb94c72 100644 --- a/bygfoot_misc3.glade +++ b/bygfoot_misc3.glade @@ -1012,6 +1012,81 @@ False 7 + + + True + False + 3 + + + + True + Your debt: + False + False + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + False + False + + + + + + True + + False + False + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + 0 + False + False + + + + + 0 + False + False + + + + + + 10 + True + + + 0 + False + False + + + True diff --git a/src/finance.c b/src/finance.c index d251c732..6412b109 100644 --- a/src/finance.c +++ b/src/finance.c @@ -153,7 +153,7 @@ finance_update_user_weekly(User *user) if(user->counters[COUNT_USER_LOAN] > -1) user->counters[COUNT_USER_LOAN]--; - if(user->counters[COUNT_USER_LOAN] == 0 && debug < 50 && user->alr_start_week == 0) + if(user->counters[COUNT_USER_LOAN] == 0 && debug < 50) user_event_add(user, EVENT_TYPE_WARNING, -1, -1, NULL, _("You have to pay back your loan this week.")); diff --git a/src/misc2_callbacks.c b/src/misc2_callbacks.c index 8a29509f..32801fb1 100644 --- a/src/misc2_callbacks.c +++ b/src/misc2_callbacks.c @@ -1,26 +1,26 @@ /* - misc2_callbacks.c + misc2_callbacks.c - Bygfoot Football Manager -- a small and simple GTK2-based - football management game. + Bygfoot Football Manager -- a small and simple GTK2-based + football management game. - http://bygfoot.sourceforge.net + http://bygfoot.sourceforge.net - Copyright (C) 2005 Gyözö Both (gyboth@bygfoot.com) + 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 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. + 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. + 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. */ #include "bet.h" @@ -135,32 +135,34 @@ on_button_digits_ok_clicked (GtkButton *button, switch(stat1) { - case STATUS_GET_LOAN: - finance_get_loan(values[0]); - on_menu_show_finances_activate(NULL, NULL); - break; - case STATUS_PAY_LOAN: - finance_pay_loan(¤t_user, values[0]); - on_menu_show_finances_activate(NULL, NULL); - break; - case STATUS_SHOW_TRANSFER_LIST: - if(transfer_add_offer(stat2, current_user.tm, values[0], values[1])) - game_gui_print_message(_("Your offer has been updated.")); - else - game_gui_print_message(_("Your offer will be considered next week.")); - break; - case STATUS_CUSTOM_STRUCTURE: - destroy_window = misc2_callback_change_structure(values[1]); - if(destroy_window && stat0 == STATUS_LIVE_GAME_PAUSE) - gtk_widget_set_sensitive(window.main, TRUE); - break; - case STATUS_SET_YA_PERCENTAGE: - current_user.youth_academy.percentage = values[1]; - break; - case STATUS_PLACE_BET: - if(!bet_place(stat2, stat3, values[0])) - destroy_window = FALSE; - break; + case STATUS_GET_LOAN: + finance_get_loan(values[0]); + on_menu_show_finances_activate(NULL, NULL); + break; + case STATUS_PAY_LOAN: + finance_pay_loan(¤t_user, values[0]); + on_menu_show_finances_activate(NULL, NULL); + if(current_user.debt != 0 && current_user.alr_start_week != 0) + window_show_yesno(_("Adjust repayment schedule?")); + break; + case STATUS_SHOW_TRANSFER_LIST: + if(transfer_add_offer(stat2, current_user.tm, values[0], values[1])) + game_gui_print_message(_("Your offer has been updated.")); + else + game_gui_print_message(_("Your offer will be considered next week.")); + break; + case STATUS_CUSTOM_STRUCTURE: + destroy_window = misc2_callback_change_structure(values[1]); + if(destroy_window && stat0 == STATUS_LIVE_GAME_PAUSE) + gtk_widget_set_sensitive(window.main, TRUE); + break; + case STATUS_SET_YA_PERCENTAGE: + current_user.youth_academy.percentage = values[1]; + break; + case STATUS_PLACE_BET: + if(!bet_place(stat2, stat3, values[0])) + destroy_window = FALSE; + break; } if(destroy_window) @@ -209,43 +211,46 @@ on_button_yesno_yes_clicked (GtkButton *button, switch(stat1) { - default: - g_warning("on_button_yesno_yes_clicked: unknown status %d\n", stat1); - break; - case STATUS_FIRE_PLAYER: - player_remove_from_team(current_user.tm, stat2); - current_user.money -= stat3; - current_user.money_out[1][MON_OUT_COMPENSATIONS] -= stat3; - treeview_show_user_player_list(); - game_gui_set_main_window_header(); - break; - case STATUS_USER_MANAGEMENT: - user_remove(stat2, TRUE); - treeview_show_users( - GTK_TREE_VIEW(lookup_widget(window.user_management, - "treeview_user_management_users"))); - treeview_show_team_list( - GTK_TREE_VIEW(lookup_widget(window.user_management, - "treeview_user_management_teams")), - FALSE, FALSE); - break; - case STATUS_QUERY_UNFIT: - load_save_autosave(); - callback_show_next_live_game(); - break; - case STATUS_QUERY_QUIT: - main_exit_program(EXIT_OK, NULL); - break; - case STATUS_QUERY_USER_NO_TURN: - load_save_autosave(); - callback_show_next_live_game(); - break; - case STATUS_QUERY_KICK_YOUTH: - free_player(&g_array_index(current_user.youth_academy.players, Player, selected_row)); - g_array_remove_index(current_user.youth_academy.players, selected_row); - on_menu_show_youth_academy_activate(NULL, NULL); - selected_row = -1; - break; + default: + g_warning("on_button_yesno_yes_clicked: unknown status %d\n", stat1); + break; + case STATUS_PAY_LOAN: + on_automatic_loan_repayment_activate(NULL, NULL); + break; + case STATUS_FIRE_PLAYER: + player_remove_from_team(current_user.tm, stat2); + current_user.money -= stat3; + current_user.money_out[1][MON_OUT_COMPENSATIONS] -= stat3; + treeview_show_user_player_list(); + game_gui_set_main_window_header(); + break; + case STATUS_USER_MANAGEMENT: + user_remove(stat2, TRUE); + treeview_show_users( + GTK_TREE_VIEW(lookup_widget(window.user_management, + "treeview_user_management_users"))); + treeview_show_team_list( + GTK_TREE_VIEW(lookup_widget(window.user_management, + "treeview_user_management_teams")), + FALSE, FALSE); + break; + case STATUS_QUERY_UNFIT: + load_save_autosave(); + callback_show_next_live_game(); + break; + case STATUS_QUERY_QUIT: + main_exit_program(EXIT_OK, NULL); + break; + case STATUS_QUERY_USER_NO_TURN: + load_save_autosave(); + callback_show_next_live_game(); + break; + case STATUS_QUERY_KICK_YOUTH: + free_player(&g_array_index(current_user.youth_academy.players, Player, selected_row)); + g_array_remove_index(current_user.youth_academy.players, selected_row); + on_menu_show_youth_academy_activate(NULL, NULL); + selected_row = -1; + break; } if(stat4 == STATUS_SHOW_EVENT) @@ -310,8 +315,8 @@ on_button_user_management_add_clicked (GtkButton *button, void on_button_user_management_close_clicked - (GtkButton *button, - gpointer user_data) +(GtkButton *button, + gpointer user_data) { window_destroy(&window.user_management); on_button_back_to_main_clicked(NULL, NULL); @@ -320,9 +325,9 @@ on_button_user_management_close_clicked gboolean on_treeview_user_management_users_button_press_event - (GtkWidget *widget, - GdkEventButton *event, - gpointer user_data) +(GtkWidget *widget, + GdkEventButton *event, + gpointer user_data) { gchar buf[SMALL]; gint idx = -1; @@ -347,10 +352,10 @@ on_treeview_user_management_users_button_press_event void on_treeview_user_management_teams_row_activated - (GtkTreeView *treeview, - GtkTreePath *path, - GtkTreeViewColumn *column, - gpointer user_data) +(GtkTreeView *treeview, + GtkTreePath *path, + GtkTreeViewColumn *column, + gpointer user_data) { on_button_user_management_add_clicked(NULL, NULL); } diff --git a/src/misc3_interface.c b/src/misc3_interface.c index 0e5a58b3..5f120d64 100644 --- a/src/misc3_interface.c +++ b/src/misc3_interface.c @@ -502,6 +502,10 @@ create_window_alr (void) { GtkWidget *window_alr; GtkWidget *vbox5; + GtkWidget *hbox17; + GtkWidget *label26; + GtkWidget *label_alr_debt; + GtkWidget *hseparator7; GtkWidget *label22; GtkWidget *table2; GtkWidget *label23; @@ -544,6 +548,23 @@ create_window_alr (void) gtk_container_add (GTK_CONTAINER (window_alr), vbox5); gtk_container_set_border_width (GTK_CONTAINER (vbox5), 5); + hbox17 = gtk_hbox_new (FALSE, 3); + gtk_widget_show (hbox17); + gtk_box_pack_start (GTK_BOX (vbox5), hbox17, FALSE, FALSE, 0); + + label26 = gtk_label_new (_("Your debt:")); + gtk_widget_show (label26); + gtk_box_pack_start (GTK_BOX (hbox17), label26, FALSE, FALSE, 0); + + label_alr_debt = gtk_label_new (""); + gtk_widget_show (label_alr_debt); + gtk_box_pack_start (GTK_BOX (hbox17), label_alr_debt, FALSE, FALSE, 0); + + hseparator7 = gtk_hseparator_new (); + gtk_widget_show (hseparator7); + gtk_box_pack_start (GTK_BOX (vbox5), hseparator7, FALSE, FALSE, 0); + gtk_widget_set_size_request (hseparator7, -1, 10); + label22 = gtk_label_new (_("Current settings:")); gtk_widget_show (label22); gtk_box_pack_start (GTK_BOX (vbox5), label22, FALSE, FALSE, 0); @@ -712,6 +733,10 @@ create_window_alr (void) /* Store pointers to all widgets, for use by lookup_widget(). */ GLADE_HOOKUP_OBJECT_NO_REF (window_alr, window_alr, "window_alr"); GLADE_HOOKUP_OBJECT (window_alr, vbox5, "vbox5"); + GLADE_HOOKUP_OBJECT (window_alr, hbox17, "hbox17"); + GLADE_HOOKUP_OBJECT (window_alr, label26, "label26"); + GLADE_HOOKUP_OBJECT (window_alr, label_alr_debt, "label_alr_debt"); + GLADE_HOOKUP_OBJECT (window_alr, hseparator7, "hseparator7"); GLADE_HOOKUP_OBJECT (window_alr, label22, "label22"); GLADE_HOOKUP_OBJECT (window_alr, table2, "table2"); GLADE_HOOKUP_OBJECT (window_alr, label23, "label23"); diff --git a/src/window.c b/src/window.c index 8e3d6cb9..5dcbebfa 100644 --- a/src/window.c +++ b/src/window.c @@ -1018,12 +1018,19 @@ window_show_training_camp(void) void window_show_alr(void) { + gchar weekly_installment[SMALL], + debt[SMALL]; + window_create(WINDOW_ALR); + misc_print_grouped_int(current_user.alr_weekly_installment, weekly_installment); + misc_print_grouped_int(-current_user.debt, debt); + gui_label_set_text_from_int(GTK_LABEL(lookup_widget(window.alr, "label_current_start_week")), current_user.alr_start_week, FALSE); - gui_label_set_text_from_int(GTK_LABEL(lookup_widget(window.alr, "label_current_weekly_installment")), - current_user.alr_weekly_installment, FALSE); + gtk_label_set_text(GTK_LABEL(lookup_widget(window.alr, "label_current_weekly_installment")), weekly_installment); + gtk_label_set_text(GTK_LABEL(lookup_widget(window.alr, "label_alr_debt")), debt); + gtk_spin_button_set_range(GTK_SPIN_BUTTON(lookup_widget(window.alr, "spinbutton_start_week")), week + 1, MIN(week + current_user.counters[COUNT_USER_LOAN], fixture_get_last_scheduled_week())); gtk_spin_button_set_range(GTK_SPIN_BUTTON(lookup_widget(window.alr, "spinbutton_weekly_installment")),