mirror of
https://github.com/tstellar/bygfoot.git
synced 2025-02-13 18:10:43 +01:00
"Yet another transfer improvement."
This commit is contained in:
parent
dc80245c5c
commit
7c1f86ef4f
@ -2114,4 +2114,193 @@
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget class="GtkWindow" id="window_transfer_dialog">
|
||||
<property name="border_width">5</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="title" translatable="yes"></property>
|
||||
<property name="type">GTK_WINDOW_TOPLEVEL</property>
|
||||
<property name="window_position">GTK_WIN_POS_CENTER</property>
|
||||
<property name="modal">True</property>
|
||||
<property name="resizable">True</property>
|
||||
<property name="destroy_with_parent">False</property>
|
||||
<property name="decorated">True</property>
|
||||
<property name="skip_taskbar_hint">False</property>
|
||||
<property name="skip_pager_hint">False</property>
|
||||
<property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
|
||||
<property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
|
||||
<signal name="delete_event" handler="on_window_transfer_dialog_delete_event" last_modification_time="Mon, 30 May 2005 14:25:43 GMT"/>
|
||||
|
||||
<child>
|
||||
<widget class="GtkVBox" id="vbox26">
|
||||
<property name="visible">True</property>
|
||||
<property name="homogeneous">False</property>
|
||||
<property name="spacing">5</property>
|
||||
|
||||
<child>
|
||||
<widget class="GtkImage" id="image14">
|
||||
<property name="visible">True</property>
|
||||
<property name="stock">gtk-dialog-question</property>
|
||||
<property name="icon_size">6</property>
|
||||
<property name="xalign">0.5</property>
|
||||
<property name="yalign">0.5</property>
|
||||
<property name="xpad">0</property>
|
||||
<property name="ypad">0</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="padding">0</property>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkLabel" id="label_transfer_dialog">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes"></property>
|
||||
<property name="use_underline">False</property>
|
||||
<property name="use_markup">False</property>
|
||||
<property name="justify">GTK_JUSTIFY_LEFT</property>
|
||||
<property name="wrap">True</property>
|
||||
<property name="selectable">False</property>
|
||||
<property name="xalign">0.5</property>
|
||||
<property name="yalign">0.5</property>
|
||||
<property name="xpad">0</property>
|
||||
<property name="ypad">0</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="padding">0</property>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkHBox" id="hbox25">
|
||||
<property name="visible">True</property>
|
||||
<property name="homogeneous">False</property>
|
||||
<property name="spacing">3</property>
|
||||
|
||||
<child>
|
||||
<widget class="GtkButton" id="button_transfer_yes">
|
||||
<property name="visible">True</property>
|
||||
<property name="tooltip" translatable="yes">Return</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="label">gtk-yes</property>
|
||||
<property name="use_stock">True</property>
|
||||
<property name="relief">GTK_RELIEF_NORMAL</property>
|
||||
<property name="focus_on_click">True</property>
|
||||
<signal name="clicked" handler="on_button_transfer_yes_clicked" last_modification_time="Mon, 30 May 2005 14:31:32 GMT"/>
|
||||
<accelerator key="Return" modifiers="0" signal="clicked"/>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="padding">0</property>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkButton" id="button_transfer_no">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="label">gtk-no</property>
|
||||
<property name="use_stock">True</property>
|
||||
<property name="relief">GTK_RELIEF_NORMAL</property>
|
||||
<property name="focus_on_click">True</property>
|
||||
<signal name="clicked" handler="on_button_transfer_no_clicked" last_modification_time="Mon, 30 May 2005 14:31:36 GMT"/>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="padding">0</property>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkButton" id="button_transfer_later">
|
||||
<property name="visible">True</property>
|
||||
<property name="tooltip" translatable="yes">Esc</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="relief">GTK_RELIEF_NORMAL</property>
|
||||
<property name="focus_on_click">True</property>
|
||||
<signal name="clicked" handler="on_button_transfer_later_clicked" last_modification_time="Mon, 30 May 2005 14:31:40 GMT"/>
|
||||
<accelerator key="Escape" modifiers="0" signal="clicked"/>
|
||||
|
||||
<child>
|
||||
<widget class="GtkAlignment" id="alignment8">
|
||||
<property name="visible">True</property>
|
||||
<property name="xalign">0.5</property>
|
||||
<property name="yalign">0.5</property>
|
||||
<property name="xscale">0</property>
|
||||
<property name="yscale">0</property>
|
||||
<property name="top_padding">0</property>
|
||||
<property name="bottom_padding">0</property>
|
||||
<property name="left_padding">0</property>
|
||||
<property name="right_padding">0</property>
|
||||
|
||||
<child>
|
||||
<widget class="GtkHBox" id="hbox26">
|
||||
<property name="visible">True</property>
|
||||
<property name="homogeneous">False</property>
|
||||
<property name="spacing">2</property>
|
||||
|
||||
<child>
|
||||
<widget class="GtkImage" id="image15">
|
||||
<property name="visible">True</property>
|
||||
<property name="stock">gtk-go-forward</property>
|
||||
<property name="icon_size">4</property>
|
||||
<property name="xalign">0.5</property>
|
||||
<property name="yalign">0.5</property>
|
||||
<property name="xpad">0</property>
|
||||
<property name="ypad">0</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="padding">0</property>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkLabel" id="label53">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">Decide later</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="use_markup">False</property>
|
||||
<property name="justify">GTK_JUSTIFY_LEFT</property>
|
||||
<property name="wrap">False</property>
|
||||
<property name="selectable">False</property>
|
||||
<property name="xalign">0.5</property>
|
||||
<property name="yalign">0.5</property>
|
||||
<property name="xpad">0</property>
|
||||
<property name="ypad">0</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="padding">0</property>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="padding">0</property>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="padding">0</property>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
</glade-interface>
|
||||
|
@ -31,7 +31,7 @@ bygfoot_SOURCES = \
|
||||
misc_callbacks.c callbacks.h callback_func.h game.h game_gui.h live_game.h load_save.h main.h misc_callback_func.h misc_callbacks.h option.h user.h variables.h window.h xml_country.h \
|
||||
misc_callback_func.c callbacks.h finance.h game.h game_gui.h gui.h load_save.h maths.h misc_callback_func.h option.h start_end.h support.h treeview.h user.h variables.h window.h xml_country.h xml_name.h \
|
||||
misc_interface.c misc_interface.h misc_callbacks.h support.h \
|
||||
misc2_callbacks.c callback_func.h debug.h finance.h game_gui.h load_save.h main.h misc2_callbacks.h misc2_callback_func.h misc2_interface.h player.h support.h transfer.h treeview.h user.h window.h \
|
||||
misc2_callbacks.c callbacks.h callback_func.h debug.h finance.h game_gui.h load_save.h main.h misc2_callbacks.h misc2_callback_func.h misc2_interface.h player.h support.h transfer.h treeview.h user.h window.h \
|
||||
misc2_callback_func.c callbacks.h file.h finance.h game_gui.h maths.h misc2_callback_func.h option.h player.h support.h team.h treeview.h transfer.h user.h window.h \
|
||||
misc2_interface.c misc2_interface.h misc2_callbacks.h support.h \
|
||||
option.c option.h variables.h \
|
||||
@ -44,7 +44,7 @@ bygfoot_SOURCES = \
|
||||
support.c support.h \
|
||||
table.c cup.h league.h table.h variables.h \
|
||||
team.c cup.h fixture.h game.h game_gui.h league.h maths.h misc.h option.h player.h team.h transfer.h user.h \
|
||||
transfer.c cup.h finance.h free.h game_gui.h maths.h option.h player.h support.h team.h transfer.h treeview.h user.h \
|
||||
transfer.c cup.h finance.h free.h game_gui.h maths.h misc.h option.h player.h support.h team.h transfer.h treeview.h user.h \
|
||||
treeview.c cup.h finance.h fixture.h free.h game.h league.h live_game.h maths.h misc.h player.h option.h support.h team.h transfer.h treeview.h treeview_helper.h user.h \
|
||||
treeview_helper.c cup.h file.h fixture.h free.h league.h misc.h option.h player.h support.h team.h transfer.h treeview.h treeview_helper.h user.h variables.h \
|
||||
user.c cup.h fixture.h free.h game_gui.h league.h live_game.h maths.h misc.h option.h player.h team.h transfer.h treeview.h user.h window.h \
|
||||
|
@ -120,6 +120,7 @@ typedef struct
|
||||
*menu_player,
|
||||
*user_management,
|
||||
*wdebug,
|
||||
*help;
|
||||
*help,
|
||||
*transfer_dialog;
|
||||
} Windows;
|
||||
#endif
|
||||
|
@ -24,6 +24,9 @@ callback_show_next_live_game(void)
|
||||
{
|
||||
gint i, j;
|
||||
|
||||
for(i=0;i<users->len;i++)
|
||||
usr(i).counters[COUNT_USER_TOOK_TURN] = 0;
|
||||
|
||||
for(i=0;i<ligs->len;i++)
|
||||
for(j=0;j<lig(i).fixtures->len;j++)
|
||||
if(g_array_index(lig(i).fixtures, Fixture, j).week_number == week &&
|
||||
@ -293,7 +296,10 @@ callback_transfer_list_user(gint button, gint idx)
|
||||
else if(button == 1)
|
||||
{
|
||||
if(trans(idx).offers->len == 0)
|
||||
game_gui_print_message("There are no offers for the player.");
|
||||
game_gui_print_message(_("There are no offers for the player."));
|
||||
else if(trans(idx).offers->len > 0 &&
|
||||
!transoff(idx, 0).accepted)
|
||||
game_gui_print_message(_("There are some offers for the player which you will see next week."));
|
||||
else
|
||||
{
|
||||
misc_print_grouped_int(transoff(idx, 0).fee, buf2, FALSE);
|
||||
@ -311,7 +317,7 @@ callback_transfer_list_user(gint button, gint idx)
|
||||
buf2, buf3);
|
||||
stat1 = STATUS_TRANSFER_OFFER_USER;
|
||||
stat2 = idx;
|
||||
window_show_yesno(buf);
|
||||
window_show_transfer_dialog(buf);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -329,8 +335,11 @@ callback_transfer_list_cpu(gint button, gint idx)
|
||||
if(button == 3)
|
||||
{
|
||||
g_array_remove_index(trans(idx).offers, 0);
|
||||
trans(idx).locked = FALSE;
|
||||
if(trans(idx).offers->len > 0)
|
||||
transfer_offers_notify(&trans(idx), FALSE);
|
||||
|
||||
game_gui_print_message(_("Your offer has been removed."));
|
||||
on_button_transfers_clicked(NULL, NULL);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -347,7 +356,7 @@ callback_transfer_list_cpu(gint button, gint idx)
|
||||
buf2, buf3, player_of_id_team(trans(idx).tm, trans(idx).id)->name->str);
|
||||
stat1 = STATUS_TRANSFER_OFFER_CPU;
|
||||
stat2 = idx;
|
||||
window_show_yesno(buf);
|
||||
window_show_transfer_dialog(buf);
|
||||
}
|
||||
|
||||
/** Handle a click on the transfer list.
|
||||
@ -364,12 +373,17 @@ callback_transfer_list_clicked(gint button, gint idx)
|
||||
callback_transfer_list_user(button, idx);
|
||||
return;
|
||||
}
|
||||
else if(tr->locked)
|
||||
else if(tr->offers->len > 0 &&
|
||||
transoff(idx, 0).accepted)
|
||||
{
|
||||
if(transoff(idx, 0).tm == current_user.tm)
|
||||
{
|
||||
if(team_is_user(tr->tm) != -1)
|
||||
game_gui_print_message(_("The team owners are considering your offer currently."));
|
||||
{
|
||||
sprintf(buf, _("User %s didn't consider your offer yet."),
|
||||
user_from_team(tr->tm)->name->str);
|
||||
game_gui_print_message(buf);
|
||||
}
|
||||
else
|
||||
callback_transfer_list_cpu(button, idx);
|
||||
}
|
||||
|
@ -166,17 +166,24 @@ void
|
||||
on_button_new_week_clicked (GtkButton *button,
|
||||
gpointer user_data)
|
||||
{
|
||||
if(!opt_int("int_opt_confirm_unfit") ||
|
||||
!query_user_teams_have_unfit())
|
||||
if(transfer_offers_pending())
|
||||
game_gui_show_warning(_("You still have some transfer business to manage."));
|
||||
else if(query_user_no_turn())
|
||||
{
|
||||
load_save_autosave();
|
||||
callback_show_next_live_game();
|
||||
stat1 = STATUS_QUERY_USER_NO_TURN;
|
||||
window_show_yesno(_("At least one user didn't take his turn this week. Continue?"));
|
||||
}
|
||||
else
|
||||
else if(opt_int("int_opt_confirm_unfit") &&
|
||||
query_user_teams_have_unfit())
|
||||
{
|
||||
stat1 = STATUS_QUERY_UNFIT;
|
||||
window_show_yesno(_("There are injured or banned players in one of the user teams. Continue?"));
|
||||
}
|
||||
else
|
||||
{
|
||||
load_save_autosave();
|
||||
callback_show_next_live_game();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -519,7 +526,7 @@ on_treeview_right_button_press_event (GtkWidget *widget,
|
||||
{
|
||||
case STATUS_SHOW_TRANSFER_LIST:
|
||||
if(trans(idx - 1).tm == current_user.tm ||
|
||||
trans(idx - 1).locked ||
|
||||
(trans(idx - 1).offers->len > 0 && transoff(idx - 1, 0).accepted) ||
|
||||
event->button == 1)
|
||||
callback_transfer_list_clicked(event->button, idx - 1);
|
||||
else if(event->button == 3)
|
||||
@ -551,8 +558,13 @@ void
|
||||
on_menu_next_user_activate (GtkMenuItem *menuitem,
|
||||
gpointer user_data)
|
||||
{
|
||||
cur_user = (cur_user + 1) % users->len;
|
||||
if(transfer_offers_pending())
|
||||
{
|
||||
game_gui_show_warning(_("You still have some transfer business to manage."));
|
||||
return;
|
||||
}
|
||||
|
||||
cur_user = (cur_user + 1) % users->len;
|
||||
user_event_show_next();
|
||||
|
||||
on_button_back_to_main_clicked(NULL, NULL);
|
||||
@ -563,8 +575,13 @@ void
|
||||
on_menu_previous_user_activate (GtkMenuItem *menuitem,
|
||||
gpointer user_data)
|
||||
{
|
||||
cur_user = (cur_user == 0) ? users->len - 1 : cur_user - 1;
|
||||
if(transfer_offers_pending())
|
||||
{
|
||||
game_gui_show_warning(_("You still have some transfer business to manage."));
|
||||
return;
|
||||
}
|
||||
|
||||
cur_user = (cur_user == 0) ? users->len - 1 : cur_user - 1;
|
||||
user_event_show_next();
|
||||
|
||||
on_button_back_to_main_clicked(NULL, NULL);
|
||||
|
@ -98,6 +98,7 @@ enum Status0Value
|
||||
STATUS_LOAD_GAME_TEAM_SELECTION,
|
||||
STATUS_QUERY_UNFIT,
|
||||
STATUS_QUERY_QUIT,
|
||||
STATUS_QUERY_USER_NO_TURN,
|
||||
STATUS_END
|
||||
};
|
||||
|
||||
|
@ -182,15 +182,18 @@ game_gui_get_radio_items(GtkWidget **style, GtkWidget **scout,
|
||||
void
|
||||
game_gui_set_main_window_header(void)
|
||||
{
|
||||
gint i;
|
||||
gchar buf[SMALL];
|
||||
GtkLabel *label_user= GTK_LABEL(lookup_widget(window.main, "label_user"));
|
||||
GtkLabel *label_season= GTK_LABEL(lookup_widget(window.main, "label_season"));
|
||||
GtkLabel *label_week= GTK_LABEL(lookup_widget(window.main, "label_week"));
|
||||
GtkLabel *label_round= GTK_LABEL(lookup_widget(window.main, "label_round"));
|
||||
GtkLabel *label_team= GTK_LABEL(lookup_widget(window.main, "label_team"));
|
||||
GtkLabel *label_league= GTK_LABEL(lookup_widget(window.main, "label_league"));
|
||||
GtkLabel *label_rank= GTK_LABEL(lookup_widget(window.main, "label_rank"));
|
||||
GtkLabel *label_money= GTK_LABEL(lookup_widget(window.main, "label_money"));
|
||||
GtkLabel *label_user= GTK_LABEL(lookup_widget(window.main, "label_user")),
|
||||
*label_season= GTK_LABEL(lookup_widget(window.main, "label_season")),
|
||||
*label_week= GTK_LABEL(lookup_widget(window.main, "label_week")),
|
||||
*label_round= GTK_LABEL(lookup_widget(window.main, "label_round")),
|
||||
*label_team= GTK_LABEL(lookup_widget(window.main, "label_team")),
|
||||
*label_league= GTK_LABEL(lookup_widget(window.main, "label_league")),
|
||||
*label_rank= GTK_LABEL(lookup_widget(window.main, "label_rank")),
|
||||
*label_money= GTK_LABEL(lookup_widget(window.main, "label_money"));
|
||||
GtkWidget *menu_users[2] = {lookup_widget(window.main, "menu_next_user"),
|
||||
lookup_widget(window.main, "menu_previous_user")};
|
||||
|
||||
gtk_label_set_text(label_user, current_user.name->str);
|
||||
gui_label_set_text_from_int(label_season, season, FALSE);
|
||||
@ -207,6 +210,9 @@ game_gui_set_main_window_header(void)
|
||||
gtk_label_set_text(label_team, current_user.tm->name->str);
|
||||
gtk_label_set_text(label_league, league_from_clid(current_user.tm->clid)->name->str);
|
||||
|
||||
for(i=0;i<2;i++)
|
||||
gtk_widget_set_sensitive(menu_users[i], (users->len > 1));
|
||||
|
||||
game_gui_write_av_skills();
|
||||
|
||||
game_gui_write_radio_items();
|
||||
@ -322,6 +328,8 @@ game_gui_show_main(void)
|
||||
game_gui_set_main_window_header();
|
||||
treeview_show_user_player_list();
|
||||
|
||||
current_user.counters[COUNT_USER_TOOK_TURN] = 1;
|
||||
|
||||
if(current_user.counters[COUNT_USER_SHOW_RES] && stat0 != STATUS_LIVE_GAME_PAUSE)
|
||||
{
|
||||
on_menu_user_show_last_stats_activate(NULL, NULL);
|
||||
@ -363,7 +371,6 @@ game_gui_clear_entry_message(gpointer data)
|
||||
enum MainWindowInensitiveItems
|
||||
{
|
||||
INSENSITIVE_ITEM_TOOLBAR = 0,
|
||||
/* INSENSITIVE_ITEM_PLAYER_LIST2, */
|
||||
INSENSITIVE_ITEM_MENU_FILE,
|
||||
INSENSITIVE_ITEM_MENU_OPTIONS,
|
||||
INSENSITIVE_ITEM_MENU_FIGURES,
|
||||
@ -403,8 +410,6 @@ game_gui_set_main_window_sensitivity(gboolean value)
|
||||
|
||||
insensitive_items[INSENSITIVE_ITEM_TOOLBAR] =
|
||||
lookup_widget(window.main, "hbox1");
|
||||
/* insensitive_items[INSENSITIVE_ITEM_PLAYER_LIST2] = */
|
||||
/* lookup_widget(window.main, "vbox8"); */
|
||||
insensitive_items[INSENSITIVE_ITEM_MENU_FILE] =
|
||||
lookup_widget(window.main, "menu_file");
|
||||
insensitive_items[INSENSITIVE_ITEM_MENU_OPTIONS] =
|
||||
|
@ -50,6 +50,8 @@ misc2_callback_transfer_user_player(void)
|
||||
player_of_id_team(trans(stat2).tm, trans(stat2).id)->name->str);
|
||||
user_event_add(user_from_team(new_team), EVENT_TYPE_WARNING, -1, -1, NULL, buf);
|
||||
g_array_remove_index(trans(stat2).offers, 0);
|
||||
if(trans(stat2).offers->len > 0)
|
||||
transoff(stat2, 0).accepted = TRUE;
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -1,3 +1,4 @@
|
||||
#include "callbacks.h"
|
||||
#include "callback_func.h"
|
||||
#include "debug.h"
|
||||
#include "finance.h"
|
||||
@ -160,12 +161,6 @@ on_button_yesno_yes_clicked (GtkButton *button,
|
||||
default:
|
||||
g_warning("on_button_yesno_yes_clicked: unknown status %d\n", stat1);
|
||||
break;
|
||||
case STATUS_TRANSFER_OFFER_USER:
|
||||
misc2_callback_transfer_user_player();
|
||||
break;
|
||||
case STATUS_TRANSFER_OFFER_CPU:
|
||||
misc2_callback_transfer_cpu_player();
|
||||
break;
|
||||
case STATUS_FIRE_PLAYER:
|
||||
player_remove_from_team(current_user.tm, stat2);
|
||||
current_user.money -= stat3;
|
||||
@ -188,6 +183,10 @@ on_button_yesno_yes_clicked (GtkButton *button,
|
||||
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;
|
||||
}
|
||||
|
||||
if(stat4 == STATUS_SHOW_EVENT)
|
||||
@ -395,3 +394,50 @@ on_spinbutton2_activate (GtkEntry *entry,
|
||||
on_button_digits_ok_clicked(NULL, NULL);
|
||||
}
|
||||
|
||||
|
||||
gboolean
|
||||
on_window_transfer_dialog_delete_event (GtkWidget *widget,
|
||||
GdkEvent *event,
|
||||
gpointer user_data)
|
||||
{
|
||||
on_button_transfer_later_clicked(NULL, NULL);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
on_button_transfer_yes_clicked (GtkButton *button,
|
||||
gpointer user_data)
|
||||
{
|
||||
if(stat1 == STATUS_TRANSFER_OFFER_USER)
|
||||
misc2_callback_transfer_user_player();
|
||||
else if(STATUS_TRANSFER_OFFER_CPU)
|
||||
misc2_callback_transfer_cpu_player();
|
||||
|
||||
window_destroy(&window.transfer_dialog, FALSE);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
on_button_transfer_no_clicked (GtkButton *button,
|
||||
gpointer user_data)
|
||||
{
|
||||
g_array_remove_index(trans(stat2).offers, 0);
|
||||
if(trans(stat2).offers->len > 0)
|
||||
transfer_offers_notify(&trans(stat2), FALSE);
|
||||
|
||||
treeview_show_user_player_list();
|
||||
game_gui_set_main_window_header();
|
||||
on_button_transfers_clicked(NULL, NULL);
|
||||
|
||||
window_destroy(&window.transfer_dialog, FALSE);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
on_button_transfer_later_clicked (GtkButton *button,
|
||||
gpointer user_data)
|
||||
{
|
||||
window_destroy(&window.transfer_dialog, FALSE);
|
||||
}
|
||||
|
||||
|
@ -124,7 +124,6 @@ on_window_help_delete_event (GtkWidget *widget,
|
||||
void
|
||||
on_button_help_close_clicked (GtkButton *button,
|
||||
gpointer user_data);
|
||||
#endif
|
||||
|
||||
void
|
||||
on_spinbutton1_activate (GtkEntry *entry,
|
||||
@ -133,3 +132,21 @@ on_spinbutton1_activate (GtkEntry *entry,
|
||||
void
|
||||
on_spinbutton2_activate (GtkEntry *entry,
|
||||
gpointer user_data);
|
||||
|
||||
gboolean
|
||||
on_window_transfer_dialog_delete_event (GtkWidget *widget,
|
||||
GdkEvent *event,
|
||||
gpointer user_data);
|
||||
|
||||
void
|
||||
on_button_transfer_yes_clicked (GtkButton *button,
|
||||
gpointer user_data);
|
||||
|
||||
void
|
||||
on_button_transfer_no_clicked (GtkButton *button,
|
||||
gpointer user_data);
|
||||
|
||||
void
|
||||
on_button_transfer_later_clicked (GtkButton *button,
|
||||
gpointer user_data);
|
||||
#endif
|
||||
|
@ -1094,3 +1094,116 @@ create_window_help (void)
|
||||
return window_help;
|
||||
}
|
||||
|
||||
GtkWidget*
|
||||
create_window_transfer_dialog (void)
|
||||
{
|
||||
GtkWidget *window_transfer_dialog;
|
||||
GtkWidget *vbox26;
|
||||
GtkWidget *image14;
|
||||
GtkWidget *label_transfer_dialog;
|
||||
GtkWidget *hbox25;
|
||||
GtkWidget *button_transfer_yes;
|
||||
GtkWidget *button_transfer_no;
|
||||
GtkWidget *button_transfer_later;
|
||||
GtkWidget *alignment8;
|
||||
GtkWidget *hbox26;
|
||||
GtkWidget *image15;
|
||||
GtkWidget *label53;
|
||||
GtkAccelGroup *accel_group;
|
||||
GtkTooltips *tooltips;
|
||||
|
||||
tooltips = gtk_tooltips_new ();
|
||||
|
||||
accel_group = gtk_accel_group_new ();
|
||||
|
||||
window_transfer_dialog = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (window_transfer_dialog), 5);
|
||||
gtk_window_set_position (GTK_WINDOW (window_transfer_dialog), GTK_WIN_POS_CENTER);
|
||||
gtk_window_set_modal (GTK_WINDOW (window_transfer_dialog), TRUE);
|
||||
|
||||
vbox26 = gtk_vbox_new (FALSE, 5);
|
||||
gtk_widget_show (vbox26);
|
||||
gtk_container_add (GTK_CONTAINER (window_transfer_dialog), vbox26);
|
||||
|
||||
image14 = gtk_image_new_from_stock ("gtk-dialog-question", GTK_ICON_SIZE_DIALOG);
|
||||
gtk_widget_show (image14);
|
||||
gtk_box_pack_start (GTK_BOX (vbox26), image14, FALSE, TRUE, 0);
|
||||
|
||||
label_transfer_dialog = gtk_label_new ("");
|
||||
gtk_widget_show (label_transfer_dialog);
|
||||
gtk_box_pack_start (GTK_BOX (vbox26), label_transfer_dialog, FALSE, FALSE, 0);
|
||||
gtk_label_set_line_wrap (GTK_LABEL (label_transfer_dialog), TRUE);
|
||||
|
||||
hbox25 = gtk_hbox_new (FALSE, 3);
|
||||
gtk_widget_show (hbox25);
|
||||
gtk_box_pack_start (GTK_BOX (vbox26), hbox25, FALSE, FALSE, 0);
|
||||
|
||||
button_transfer_yes = gtk_button_new_from_stock ("gtk-yes");
|
||||
gtk_widget_show (button_transfer_yes);
|
||||
gtk_box_pack_start (GTK_BOX (hbox25), button_transfer_yes, TRUE, TRUE, 0);
|
||||
gtk_tooltips_set_tip (tooltips, button_transfer_yes, _("Return"), NULL);
|
||||
gtk_widget_add_accelerator (button_transfer_yes, "clicked", accel_group,
|
||||
GDK_Return, 0,
|
||||
GTK_ACCEL_VISIBLE);
|
||||
|
||||
button_transfer_no = gtk_button_new_from_stock ("gtk-no");
|
||||
gtk_widget_show (button_transfer_no);
|
||||
gtk_box_pack_start (GTK_BOX (hbox25), button_transfer_no, TRUE, TRUE, 0);
|
||||
|
||||
button_transfer_later = gtk_button_new ();
|
||||
gtk_widget_show (button_transfer_later);
|
||||
gtk_box_pack_start (GTK_BOX (hbox25), button_transfer_later, TRUE, TRUE, 0);
|
||||
gtk_tooltips_set_tip (tooltips, button_transfer_later, _("Esc"), NULL);
|
||||
gtk_widget_add_accelerator (button_transfer_later, "clicked", accel_group,
|
||||
GDK_Escape, 0,
|
||||
GTK_ACCEL_VISIBLE);
|
||||
|
||||
alignment8 = gtk_alignment_new (0.5, 0.5, 0, 0);
|
||||
gtk_widget_show (alignment8);
|
||||
gtk_container_add (GTK_CONTAINER (button_transfer_later), alignment8);
|
||||
|
||||
hbox26 = gtk_hbox_new (FALSE, 2);
|
||||
gtk_widget_show (hbox26);
|
||||
gtk_container_add (GTK_CONTAINER (alignment8), hbox26);
|
||||
|
||||
image15 = gtk_image_new_from_stock ("gtk-go-forward", GTK_ICON_SIZE_BUTTON);
|
||||
gtk_widget_show (image15);
|
||||
gtk_box_pack_start (GTK_BOX (hbox26), image15, FALSE, FALSE, 0);
|
||||
|
||||
label53 = gtk_label_new_with_mnemonic (_("Decide later"));
|
||||
gtk_widget_show (label53);
|
||||
gtk_box_pack_start (GTK_BOX (hbox26), label53, FALSE, FALSE, 0);
|
||||
|
||||
g_signal_connect ((gpointer) window_transfer_dialog, "delete_event",
|
||||
G_CALLBACK (on_window_transfer_dialog_delete_event),
|
||||
NULL);
|
||||
g_signal_connect ((gpointer) button_transfer_yes, "clicked",
|
||||
G_CALLBACK (on_button_transfer_yes_clicked),
|
||||
NULL);
|
||||
g_signal_connect ((gpointer) button_transfer_no, "clicked",
|
||||
G_CALLBACK (on_button_transfer_no_clicked),
|
||||
NULL);
|
||||
g_signal_connect ((gpointer) button_transfer_later, "clicked",
|
||||
G_CALLBACK (on_button_transfer_later_clicked),
|
||||
NULL);
|
||||
|
||||
/* Store pointers to all widgets, for use by lookup_widget(). */
|
||||
GLADE_HOOKUP_OBJECT_NO_REF (window_transfer_dialog, window_transfer_dialog, "window_transfer_dialog");
|
||||
GLADE_HOOKUP_OBJECT (window_transfer_dialog, vbox26, "vbox26");
|
||||
GLADE_HOOKUP_OBJECT (window_transfer_dialog, image14, "image14");
|
||||
GLADE_HOOKUP_OBJECT (window_transfer_dialog, label_transfer_dialog, "label_transfer_dialog");
|
||||
GLADE_HOOKUP_OBJECT (window_transfer_dialog, hbox25, "hbox25");
|
||||
GLADE_HOOKUP_OBJECT (window_transfer_dialog, button_transfer_yes, "button_transfer_yes");
|
||||
GLADE_HOOKUP_OBJECT (window_transfer_dialog, button_transfer_no, "button_transfer_no");
|
||||
GLADE_HOOKUP_OBJECT (window_transfer_dialog, button_transfer_later, "button_transfer_later");
|
||||
GLADE_HOOKUP_OBJECT (window_transfer_dialog, alignment8, "alignment8");
|
||||
GLADE_HOOKUP_OBJECT (window_transfer_dialog, hbox26, "hbox26");
|
||||
GLADE_HOOKUP_OBJECT (window_transfer_dialog, image15, "image15");
|
||||
GLADE_HOOKUP_OBJECT (window_transfer_dialog, label53, "label53");
|
||||
GLADE_HOOKUP_OBJECT_NO_REF (window_transfer_dialog, tooltips, "tooltips");
|
||||
|
||||
gtk_window_add_accel_group (GTK_WINDOW (window_transfer_dialog), accel_group);
|
||||
|
||||
return window_transfer_dialog;
|
||||
}
|
||||
|
||||
|
@ -11,3 +11,4 @@ GtkWidget* create_window_contract (void);
|
||||
GtkWidget* create_window_user_management (void);
|
||||
GtkWidget* create_window_debug (void);
|
||||
GtkWidget* create_window_help (void);
|
||||
GtkWidget* create_window_transfer_dialog (void);
|
||||
|
146
src/transfer.c
146
src/transfer.c
@ -3,6 +3,7 @@
|
||||
#include "free.h"
|
||||
#include "game_gui.h"
|
||||
#include "maths.h"
|
||||
#include "misc.h"
|
||||
#include "option.h"
|
||||
#include "player.h"
|
||||
#include "support.h"
|
||||
@ -28,14 +29,10 @@ transfer_update(void)
|
||||
}
|
||||
|
||||
for(i=transfer_list->len - 1;i>=0;i--)
|
||||
{
|
||||
for(j=trans(i).offers->len - 1;j>=0;j--)
|
||||
if(trans(i).locked || team_is_user(transoff(i, j).tm) == -1)
|
||||
if(transoff(i, j).accepted || team_is_user(transoff(i, j).tm) == -1)
|
||||
g_array_remove_index(trans(i).offers, j);
|
||||
|
||||
trans(i).locked = FALSE;
|
||||
}
|
||||
|
||||
transfer_add_new_players();
|
||||
transfer_add_cpu_offers();
|
||||
transfer_evaluate_offers();
|
||||
@ -110,82 +107,37 @@ transfer_offer_compare_func(gconstpointer a, gconstpointer b)
|
||||
*tr2 = (const TransferOffer*)b;
|
||||
gint return_value;
|
||||
|
||||
if(tr1->fee > tr2->fee)
|
||||
return_value = -1;
|
||||
else if(tr2->fee > tr1->fee)
|
||||
return_value = 1;
|
||||
else if(tr1->wage > tr2->wage)
|
||||
return_value = -1;
|
||||
else if(tr2->wage > tr1->wage)
|
||||
return_value = 1;
|
||||
else
|
||||
return_value = 0;
|
||||
return_value = (tr1->fee != tr2->fee) ?
|
||||
misc_int_compare(tr1->fee, tr2->fee) :
|
||||
misc_int_compare(tr1->wage, tr2->wage);
|
||||
|
||||
return return_value;
|
||||
}
|
||||
|
||||
/** Send notification events about rejected transfer offers for
|
||||
/** Send notification events about accepted transfer offers for
|
||||
user players. */
|
||||
void
|
||||
transfer_offers_notify(Transfer *tr)
|
||||
transfer_offers_notify(Transfer *tr, gboolean sort)
|
||||
{
|
||||
gint i;
|
||||
gboolean valid_offer = FALSE;
|
||||
TransferOffer *off = NULL;
|
||||
|
||||
g_array_sort(tr->offers, transfer_offer_compare_func);
|
||||
if(sort)
|
||||
g_array_sort(tr->offers, transfer_offer_compare_func);
|
||||
off = &g_array_index(tr->offers, TransferOffer, 0);
|
||||
|
||||
for(i=tr->offers->len - 1; i >= 1; i--)
|
||||
{
|
||||
if(team_is_user(g_array_index(tr->offers, TransferOffer, i).tm) != -1)
|
||||
user_event_add(user_from_team(g_array_index(tr->offers, TransferOffer, i).tm),
|
||||
EVENT_TYPE_TRANSFER_OFFER_REJECTED_BETTER_OFFER,
|
||||
g_array_index(tr->offers, TransferOffer, i).fee,
|
||||
g_array_index(tr->offers, TransferOffer, i).wage,
|
||||
tr->tm, player_of_id_team(tr->tm, tr->id)->name->str);
|
||||
|
||||
g_array_remove_index(tr->offers, i);
|
||||
}
|
||||
off->accepted = TRUE;
|
||||
|
||||
if(team_is_user(tr->tm) != -1)
|
||||
{
|
||||
user_event_add(user_from_team(tr->tm), EVENT_TYPE_TRANSFER_OFFER_USER,
|
||||
-1, -1, NULL, player_of_id_team(tr->tm, tr->id)->name->str);
|
||||
valid_offer = TRUE;
|
||||
tr->locked = TRUE;
|
||||
}
|
||||
else if(player_of_id_team(tr->tm, tr->id)->value > off->fee &&
|
||||
player_of_id_team(tr->tm, tr->id)->wage > off->wage)
|
||||
user_event_add(user_from_team(off->tm),
|
||||
EVENT_TYPE_TRANSFER_OFFER_REJECTED_FEE_WAGE,
|
||||
off->fee, off->wage,
|
||||
tr->tm, player_of_id_team(tr->tm, tr->id)->name->str);
|
||||
else if(player_of_id_team(tr->tm, tr->id)->value > off->fee)
|
||||
user_event_add(user_from_team(off->tm),
|
||||
EVENT_TYPE_TRANSFER_OFFER_REJECTED_FEE,
|
||||
off->fee, off->wage,
|
||||
tr->tm, player_of_id_team(tr->tm, tr->id)->name->str);
|
||||
else if(player_of_id_team(tr->tm, tr->id)->wage > off->wage)
|
||||
user_event_add(user_from_team(off->tm),
|
||||
EVENT_TYPE_TRANSFER_OFFER_REJECTED_WAGE,
|
||||
off->fee, off->wage,
|
||||
tr->tm, player_of_id_team(tr->tm, tr->id)->name->str);
|
||||
else if(off->tm->players->len >= const_int("int_team_max_players"))
|
||||
user_event_add(user_from_team(off->tm),
|
||||
EVENT_TYPE_TRANSFER_OFFER_ROSTER, -1, -1,
|
||||
tr->tm, player_of_id_team(tr->tm, tr->id)->name->str);
|
||||
|
||||
else
|
||||
{
|
||||
user_event_add(user_from_team(off->tm),
|
||||
EVENT_TYPE_TRANSFER_OFFER_CPU, -1, -1,
|
||||
NULL, player_of_id_team(tr->tm, tr->id)->name->str);
|
||||
valid_offer = TRUE;
|
||||
tr->locked = TRUE;
|
||||
}
|
||||
|
||||
if(!valid_offer)
|
||||
g_array_remove_index(tr->offers, 0);
|
||||
if(!sort)
|
||||
user_event_show_next();
|
||||
}
|
||||
|
||||
/** Move players to the users' teams if their offer
|
||||
@ -198,18 +150,40 @@ transfer_evaluate_offers(void)
|
||||
for(i=transfer_list->len - 1;i>=0;i--)
|
||||
if(trans(i).offers->len > 0)
|
||||
{
|
||||
for(j=trans(i).offers->len - 1;j >= 0; j--)
|
||||
if(team_is_user(transoff(i, j).tm) != -1 &&
|
||||
transoff(i, j).fee > BUDGET(team_is_user(transoff(i, j).tm)))
|
||||
if(team_is_user(trans(i).tm) == -1)
|
||||
{
|
||||
for(j=trans(i).offers->len - 1; j >= 0; j--)
|
||||
{
|
||||
user_event_add(user_from_team(transoff(i, j).tm),
|
||||
EVENT_TYPE_TRANSFER_OFFER_MONEY, -1, -1,
|
||||
trans(i).tm, player_of_id_team(trans(i).tm, trans(i).id)->name->str);
|
||||
g_array_remove_index(trans(i).offers, j);
|
||||
if(player_of_id_team(trans(i).tm, trans(i).id)->value > transoff(i, j).fee &&
|
||||
player_of_id_team(trans(i).tm, trans(i).id)->wage > transoff(i, j).wage)
|
||||
{
|
||||
user_event_add(user_from_team(transoff(i, j).tm),
|
||||
EVENT_TYPE_TRANSFER_OFFER_REJECTED_FEE_WAGE,
|
||||
transoff(i, j).fee, transoff(i, j).wage,
|
||||
trans(i).tm, player_of_id_team(trans(i).tm, trans(i).id)->name->str);
|
||||
g_array_remove_index(trans(i).offers, j);
|
||||
}
|
||||
else if(player_of_id_team(trans(i).tm, trans(i).id)->value > transoff(i, j).fee)
|
||||
{
|
||||
user_event_add(user_from_team(transoff(i, j).tm),
|
||||
EVENT_TYPE_TRANSFER_OFFER_REJECTED_FEE,
|
||||
transoff(i, j).fee, transoff(i, j).wage,
|
||||
trans(i).tm, player_of_id_team(trans(i).tm, trans(i).id)->name->str);
|
||||
g_array_remove_index(trans(i).offers, j);
|
||||
}
|
||||
else if(player_of_id_team(trans(i).tm, trans(i).id)->wage > transoff(i, j).wage)
|
||||
{
|
||||
user_event_add(user_from_team(transoff(i, j).tm),
|
||||
EVENT_TYPE_TRANSFER_OFFER_REJECTED_WAGE,
|
||||
transoff(i, j).fee, transoff(i, j).wage,
|
||||
trans(i).tm, player_of_id_team(trans(i).tm, trans(i).id)->name->str);
|
||||
g_array_remove_index(trans(i).offers, j);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(trans(i).offers->len > 0)
|
||||
transfer_offers_notify(&trans(i));
|
||||
transfer_offers_notify(&trans(i), TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
@ -267,7 +241,6 @@ transfer_add_player(Player *pl, gint time)
|
||||
new.id = pl->id;
|
||||
new.time = time;
|
||||
new.offers = g_array_new(FALSE, FALSE, sizeof(TransferOffer));
|
||||
new.locked = FALSE;
|
||||
|
||||
for(i=0;i<4;i++)
|
||||
{
|
||||
@ -360,7 +333,8 @@ transfer_player_has_offer(const Player *pl)
|
||||
for(i=0;i<transfer_list->len;i++)
|
||||
if(trans(i).tm == pl->team &&
|
||||
trans(i).id == pl->id &&
|
||||
trans(i).locked)
|
||||
trans(i).offers->len > 0 &&
|
||||
transoff(i, 0).accepted)
|
||||
return &transoff(i, 0);
|
||||
|
||||
return NULL;
|
||||
@ -374,10 +348,6 @@ transfer_add_offer(gint idx, Team *tm, gint fee, gint wage)
|
||||
gint i;
|
||||
TransferOffer new;
|
||||
|
||||
new.tm = tm;
|
||||
new.fee = fee;
|
||||
new.wage = wage;
|
||||
|
||||
for(i=0;i<trans(idx).offers->len;i++)
|
||||
if(transoff(idx, i).tm == tm)
|
||||
{
|
||||
@ -386,6 +356,11 @@ transfer_add_offer(gint idx, Team *tm, gint fee, gint wage)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
new.tm = tm;
|
||||
new.fee = fee;
|
||||
new.wage = wage;
|
||||
new.accepted = FALSE;
|
||||
|
||||
g_array_append_val(trans(idx).offers, new);
|
||||
|
||||
return FALSE;
|
||||
@ -445,3 +420,24 @@ transfer_add_remove_user_player(Player *pl)
|
||||
|
||||
treeview_show_transfer_list(GTK_TREE_VIEW(lookup_widget(window.main, "treeview_right")));
|
||||
}
|
||||
|
||||
/** Find out whether the current user has to do
|
||||
some transfer business before a user change or
|
||||
a new week. */
|
||||
gboolean
|
||||
transfer_offers_pending(void)
|
||||
{
|
||||
gint i;
|
||||
|
||||
for(i=0;i<transfer_list->len;i++)
|
||||
if((trans(i).tm == current_user.tm &&
|
||||
trans(i).offers->len > 0 &&
|
||||
transoff(i, 0).accepted) ||
|
||||
(team_is_user(trans(i).tm) == -1 &&
|
||||
trans(i).offers->len > 0 &&
|
||||
transoff(i, 0).tm == current_user.tm &&
|
||||
transoff(i, 0).accepted))
|
||||
return TRUE;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
@ -60,7 +60,7 @@ void
|
||||
transfer_add_remove_user_player(Player *pl);
|
||||
|
||||
void
|
||||
transfer_offers_notify(Transfer *trans);
|
||||
transfer_offers_notify(Transfer *trans, gboolean sort);
|
||||
|
||||
const TransferOffer*
|
||||
transfer_player_has_offer(const Player *pl);
|
||||
@ -68,4 +68,7 @@ transfer_player_has_offer(const Player *pl);
|
||||
gboolean
|
||||
query_transfer_current_team_offer(const Player *pl);
|
||||
|
||||
gboolean
|
||||
transfer_offers_pending(void);
|
||||
|
||||
#endif
|
||||
|
@ -18,8 +18,6 @@ typedef struct
|
||||
gint fee[QUALITY_END], wage[QUALITY_END];
|
||||
/** Offers for the player. */
|
||||
GArray *offers;
|
||||
/** This is true if an accepted offer is pending. */
|
||||
gboolean locked;
|
||||
} Transfer;
|
||||
|
||||
typedef struct
|
||||
@ -28,7 +26,8 @@ typedef struct
|
||||
Team *tm;
|
||||
/** Transfer fee and wage offer. */
|
||||
gint fee, wage;
|
||||
|
||||
/** Whether the offer got accepted. */
|
||||
gboolean accepted;
|
||||
} TransferOffer;
|
||||
|
||||
#endif
|
||||
|
@ -963,14 +963,19 @@ treeview_helper_player_name_to_cell(GtkCellRenderer *renderer, gchar *buf, const
|
||||
}
|
||||
else if(off->tm == current_user.tm)
|
||||
{
|
||||
colour_bg = const_app("string_treeview_helper_color_transfer_offer_locked_cpu_bg");
|
||||
colour_fg = const_app("string_treeview_helper_color_transfer_offer_locked_cpu_fg");
|
||||
colour_bg = const_app("string_treeview_helper_color_transfer_offer_accepted_current_bg");
|
||||
colour_fg = const_app("string_treeview_helper_color_transfer_offer_accepted_current_fg");
|
||||
}
|
||||
else
|
||||
{
|
||||
colour_bg = const_app("string_treeview_helper_color_transfer_offer_accepted_other_bg");
|
||||
colour_fg = const_app("string_treeview_helper_color_transfer_offer_accepted_other_fg");
|
||||
}
|
||||
}
|
||||
else if(query_transfer_current_team_offer(pl))
|
||||
{
|
||||
colour_bg = const_app("string_treeview_helper_color_transfer_offer_cpu_bg");
|
||||
colour_fg = const_app("string_treeview_helper_color_transfer_offer_cpu_fg");
|
||||
colour_bg = const_app("string_treeview_helper_color_transfer_offer_bg");
|
||||
colour_fg = const_app("string_treeview_helper_color_transfer_offer_fg");
|
||||
}
|
||||
|
||||
g_object_set(renderer, "background", colour_bg, NULL);
|
||||
|
14
src/user.c
14
src/user.c
@ -765,3 +765,17 @@ user_history_to_string(const UserHistory *history, gchar *buf)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/** Find out whether there's a user who
|
||||
didn't have his turn before a new week round begins. */
|
||||
gboolean
|
||||
query_user_no_turn(void)
|
||||
{
|
||||
gint i;
|
||||
|
||||
for(i=0;i<users->len;i++)
|
||||
if(!usr(i).counters[COUNT_USER_TOOK_TURN])
|
||||
return TRUE;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
@ -82,4 +82,7 @@ user_history_compare(gconstpointer a, gconstpointer b);
|
||||
void
|
||||
user_job_offer(User *user);
|
||||
|
||||
gboolean
|
||||
query_user_no_turn(void);
|
||||
|
||||
#endif
|
||||
|
@ -45,6 +45,7 @@ enum CounterValue
|
||||
COUNT_USER_STADIUM_CAPACITY, /**< Counter for building stadium seats. */
|
||||
COUNT_USER_STADIUM_SAFETY, /**< Counter for increasing stadium safety. */
|
||||
COUNT_USER_SHOW_RES, /**< Whether the latest result is shown when the main window gets refreshed. */
|
||||
COUNT_USER_TOOK_TURN, /**< Whether the user took his turn in a week round. */
|
||||
COUNT_USER_END
|
||||
};
|
||||
|
||||
|
26
src/window.c
26
src/window.c
@ -134,7 +134,8 @@ window_show_menu_player(GdkEvent *event)
|
||||
/** Show the digits window with the labels and values set
|
||||
according to the arguments. */
|
||||
void
|
||||
window_show_digits(gchar *text_main, gchar* text1, gint value1, gchar* text2, gint value2)
|
||||
window_show_digits(const gchar *text_main, const gchar* text1, gint value1,
|
||||
const gchar* text2, gint value2)
|
||||
{
|
||||
GtkLabel *label_main, *label_1, *label_2;
|
||||
GtkSpinButton *spinbutton1, *spinbutton2;
|
||||
@ -232,16 +233,23 @@ window_show(gpointer window)
|
||||
}
|
||||
|
||||
/** Show the window where the user can select between yes and no.
|
||||
@param text The text shown in the window.
|
||||
@param checkbutton Whether to show the checkbutton. */
|
||||
@param text The text shown in the window. */
|
||||
void
|
||||
window_show_yesno(gchar *text)
|
||||
window_show_yesno(const gchar *text)
|
||||
{
|
||||
window_create(WINDOW_YESNO);
|
||||
|
||||
gtk_label_set_text(GTK_LABEL(lookup_widget(window.yesno, "label_yesno")), text);
|
||||
}
|
||||
|
||||
/** Show the transfer dialog (yes/no/later).
|
||||
@param text The text to put into the label. */
|
||||
void
|
||||
window_show_transfer_dialog(const gchar *text)
|
||||
{
|
||||
window_create(WINDOW_TRANSFER_DIALOG);
|
||||
gtk_label_set_text(GTK_LABEL(lookup_widget(window.transfer_dialog, "label_transfer_dialog")), text);
|
||||
}
|
||||
|
||||
/** Set the spinbuttons in the live window
|
||||
to the correct values. */
|
||||
void
|
||||
@ -428,6 +436,14 @@ window_create(gint window_type)
|
||||
window.help = create_window_help();
|
||||
wind = window.help;
|
||||
break;
|
||||
case WINDOW_TRANSFER_DIALOG:
|
||||
if(window.transfer_dialog != NULL)
|
||||
g_warning("window_create: called on already existing window\n");
|
||||
else
|
||||
window.transfer_dialog = create_window_transfer_dialog();
|
||||
wind = window.transfer_dialog;
|
||||
strcpy(buf, "Transfer offer");
|
||||
break;
|
||||
}
|
||||
|
||||
gtk_window_set_title(GTK_WINDOW(wind), buf);
|
||||
|
@ -23,6 +23,7 @@ enum Windows
|
||||
WINDOW_USER_MANAGEMENT,
|
||||
WINDOW_DEBUG,
|
||||
WINDOW_HELP,
|
||||
WINDOW_TRANSFER_DIALOG,
|
||||
WINDOW_END
|
||||
};
|
||||
|
||||
@ -39,7 +40,8 @@ void
|
||||
window_destroy(GtkWidget **wind, gboolean count_popups);
|
||||
|
||||
void
|
||||
window_show_digits(gchar *text_main, gchar* text1, gint value1, gchar* text2, gint value2);
|
||||
window_show_digits(const gchar *text_main, const gchar* text1,
|
||||
gint value1, const gchar* text2, gint value2);
|
||||
|
||||
void
|
||||
window_show_file_sel(void);
|
||||
@ -48,7 +50,7 @@ void
|
||||
window_show_stadium(void);
|
||||
|
||||
void
|
||||
window_show_yesno(gchar *text);
|
||||
window_show_yesno(const gchar *text);
|
||||
|
||||
void
|
||||
window_show_options(void);
|
||||
@ -59,4 +61,7 @@ window_show_menu_player(GdkEvent *event);
|
||||
void
|
||||
window_live_set_spinbuttons(void);
|
||||
|
||||
void
|
||||
window_show_transfer_dialog(const gchar *text);
|
||||
|
||||
#endif
|
||||
|
@ -10,7 +10,6 @@ enum
|
||||
TAG_TRANSFERS = TAG_START_TRANSFERS,
|
||||
TAG_TRANSFER,
|
||||
TAG_TRANSFER_PLAYER_ID,
|
||||
TAG_TRANSFER_LOCKED,
|
||||
TAG_TRANSFER_TIME,
|
||||
TAG_TRANSFER_FEE,
|
||||
TAG_TRANSFER_WAGE,
|
||||
@ -18,6 +17,7 @@ enum
|
||||
TAG_TRANSFER_OFFER_TEAM_ID,
|
||||
TAG_TRANSFER_OFFER_FEE,
|
||||
TAG_TRANSFER_OFFER_WAGE,
|
||||
TAG_TRANSFER_OFFER_ACCEPTED,
|
||||
TAG_END
|
||||
};
|
||||
|
||||
@ -77,7 +77,6 @@ xml_loadsave_transfers_end_element (GMarkupParseContext *context,
|
||||
}
|
||||
else if(tag == TAG_TEAM_ID ||
|
||||
tag == TAG_TRANSFER_PLAYER_ID ||
|
||||
tag == TAG_TRANSFER_LOCKED ||
|
||||
tag == TAG_TRANSFER_TIME ||
|
||||
tag == TAG_TRANSFER_FEE ||
|
||||
tag == TAG_TRANSFER_OFFER ||
|
||||
@ -93,6 +92,7 @@ xml_loadsave_transfers_end_element (GMarkupParseContext *context,
|
||||
}
|
||||
else if(tag == TAG_TRANSFER_OFFER_WAGE ||
|
||||
tag == TAG_TRANSFER_OFFER_FEE ||
|
||||
tag == TAG_TRANSFER_OFFER_ACCEPTED ||
|
||||
tag == TAG_TRANSFER_OFFER_TEAM_ID)
|
||||
state = TAG_TRANSFER_OFFER;
|
||||
else if(tag != TAG_TRANSFERS)
|
||||
@ -119,8 +119,6 @@ xml_loadsave_transfers_text (GMarkupParseContext *context,
|
||||
new_transfer.tm = team_of_id(int_value);
|
||||
else if(state == TAG_TRANSFER_PLAYER_ID)
|
||||
new_transfer.id = int_value;
|
||||
else if(state == TAG_TRANSFER_LOCKED)
|
||||
new_transfer.locked = int_value;
|
||||
else if(state == TAG_TRANSFER_TIME)
|
||||
new_transfer.time = int_value;
|
||||
else if(state == TAG_TRANSFER_FEE)
|
||||
@ -131,6 +129,8 @@ xml_loadsave_transfers_text (GMarkupParseContext *context,
|
||||
new_offer.tm = team_of_id(int_value);
|
||||
else if(state == TAG_TRANSFER_OFFER_WAGE)
|
||||
new_offer.wage = int_value;
|
||||
else if(state == TAG_TRANSFER_OFFER_ACCEPTED)
|
||||
new_offer.accepted = int_value;
|
||||
else if(state == TAG_TRANSFER_OFFER_FEE)
|
||||
new_offer.fee = int_value;
|
||||
}
|
||||
@ -187,7 +187,6 @@ xml_loadsave_transfers_write(const gchar *prefix)
|
||||
|
||||
xml_write_int(fil, trans(i).tm->id, TAG_TEAM_ID, I1);
|
||||
xml_write_int(fil, trans(i).id, TAG_TRANSFER_PLAYER_ID, I1);
|
||||
xml_write_int(fil, trans(i).locked, TAG_TRANSFER_LOCKED, I1);
|
||||
xml_write_int(fil, trans(i).time, TAG_TRANSFER_TIME, I1);
|
||||
|
||||
for(j=0;j<QUALITY_END;j++)
|
||||
@ -204,6 +203,8 @@ xml_loadsave_transfers_write(const gchar *prefix)
|
||||
TAG_TRANSFER_OFFER_TEAM_ID, I2);
|
||||
xml_write_int(fil, transoff(i, j).wage,
|
||||
TAG_TRANSFER_OFFER_WAGE, I2);
|
||||
xml_write_int(fil, transoff(i, j).accepted,
|
||||
TAG_TRANSFER_OFFER_ACCEPTED, I2);
|
||||
xml_write_int(fil, transoff(i, j).fee,
|
||||
TAG_TRANSFER_OFFER_FEE, I2);
|
||||
|
||||
|
@ -28,12 +28,18 @@ enum
|
||||
TAG_USER_HISTORY_VALUE1,
|
||||
TAG_USER_HISTORY_VALUE2,
|
||||
TAG_USER_HISTORY_VALUE_STRING,
|
||||
TAG_USER_EVENT,
|
||||
TAG_USER_EVENT_TYPE,
|
||||
TAG_USER_EVENT_VALUE1,
|
||||
TAG_USER_EVENT_VALUE2,
|
||||
TAG_USER_EVENT_VALUE_STRING,
|
||||
TAG_END
|
||||
};
|
||||
|
||||
gint state, idx_mon_in, idx_mon_out, idx;
|
||||
User new_user;
|
||||
UserHistory new_history;
|
||||
Event new_event;
|
||||
|
||||
void
|
||||
xml_loadsave_users_start_element (GMarkupParseContext *context,
|
||||
@ -98,7 +104,8 @@ xml_loadsave_users_end_element (GMarkupParseContext *context,
|
||||
tag == TAG_USER_PHYSIO ||
|
||||
tag == TAG_NAME ||
|
||||
tag == TAG_TEAM_ID ||
|
||||
tag == TAG_USER_HISTORY)
|
||||
tag == TAG_USER_HISTORY ||
|
||||
tag == TAG_USER_EVENT)
|
||||
{
|
||||
state = TAG_USER;
|
||||
if(tag == TAG_USER_COUNTER)
|
||||
@ -109,6 +116,8 @@ xml_loadsave_users_end_element (GMarkupParseContext *context,
|
||||
idx_mon_in++;
|
||||
else if(tag == TAG_USER_HISTORY)
|
||||
g_array_append_val(new_user.history, new_history);
|
||||
else if(tag == TAG_USER_EVENT)
|
||||
g_array_append_val(new_user.events, new_event);
|
||||
}
|
||||
else if(tag == TAG_USER_MONEY_OUT)
|
||||
{
|
||||
@ -128,6 +137,11 @@ xml_loadsave_users_end_element (GMarkupParseContext *context,
|
||||
tag == TAG_USER_HISTORY_VALUE2 ||
|
||||
tag == TAG_USER_HISTORY_VALUE_STRING)
|
||||
state = TAG_USER_HISTORY;
|
||||
else if(tag == TAG_USER_EVENT_TYPE ||
|
||||
tag == TAG_USER_EVENT_VALUE1 ||
|
||||
tag == TAG_USER_EVENT_VALUE2 ||
|
||||
tag == TAG_USER_EVENT_VALUE_STRING)
|
||||
state = TAG_USER_EVENT;
|
||||
else if(tag != TAG_USERS)
|
||||
g_warning("xml_loadsave_users_end_element: unknown tag: %s; I'm in state %d\n",
|
||||
element_name, state);
|
||||
@ -183,6 +197,14 @@ xml_loadsave_users_text (GMarkupParseContext *context,
|
||||
new_history.value2 = int_value;
|
||||
else if(state == TAG_USER_HISTORY_VALUE_STRING)
|
||||
new_history.value_string = g_string_new(buf);
|
||||
else if(state == TAG_USER_EVENT_TYPE)
|
||||
new_event.type = int_value;
|
||||
else if(state == TAG_USER_EVENT_VALUE1)
|
||||
new_event.value1 = int_value;
|
||||
else if(state == TAG_USER_EVENT_VALUE2)
|
||||
new_event.value2 = int_value;
|
||||
else if(state == TAG_USER_EVENT_VALUE_STRING)
|
||||
new_event.value_string = g_string_new(buf);
|
||||
}
|
||||
|
||||
void
|
||||
@ -294,6 +316,22 @@ xml_loadsave_users_write(const gchar *prefix)
|
||||
fprintf(fil, "%s</_%d>\n", I1, TAG_USER_HISTORY);
|
||||
}
|
||||
|
||||
for(j=0;j<usr(i).events->len;j++)
|
||||
{
|
||||
fprintf(fil, "%s<_%d>\n", I1, TAG_USER_EVENT);
|
||||
|
||||
xml_write_int(fil, g_array_index(usr(i).events, Event, j).type,
|
||||
TAG_USER_EVENT_TYPE, I2);
|
||||
xml_write_int(fil, g_array_index(usr(i).events, Event, j).value1,
|
||||
TAG_USER_EVENT_VALUE1, I2);
|
||||
xml_write_int(fil, g_array_index(usr(i).events, Event, j).value2,
|
||||
TAG_USER_EVENT_VALUE2, I2);
|
||||
xml_write_g_string(fil, g_array_index(usr(i).events, Event, j).value_string,
|
||||
TAG_USER_EVENT_VALUE_STRING, I2);
|
||||
|
||||
fprintf(fil, "%s</_%d>\n", I1, TAG_USER_EVENT);
|
||||
}
|
||||
|
||||
fprintf(fil, "</_%d>\n", TAG_USER);
|
||||
}
|
||||
|
||||
|
@ -28,16 +28,22 @@ string_treeview_helper_color_default_foreground black
|
||||
string_treeview_helper_color_transfer_offer_user_fg white
|
||||
string_treeview_helper_color_transfer_offer_user_bg darkgreen
|
||||
|
||||
# colours for cpu players on the list that have
|
||||
# a valid (locked) offer
|
||||
string_treeview_helper_color_transfer_offer_locked_cpu_fg white
|
||||
string_treeview_helper_color_transfer_offer_locked_cpu_bg darkorange
|
||||
# colours for players on the list that have
|
||||
# an accepted offer by the current user
|
||||
string_treeview_helper_color_transfer_offer_accepted_current_fg white
|
||||
string_treeview_helper_color_transfer_offer_accepted_current_bg darkorange
|
||||
|
||||
# colours for players on the list that have
|
||||
# an accepted offer by another user
|
||||
string_treeview_helper_color_transfer_offer_accepted_other_fg white
|
||||
string_treeview_helper_color_transfer_offer_accepted_other_bg darkred
|
||||
|
||||
# colours for cpu players for which the user just
|
||||
# placed an offer
|
||||
string_treeview_helper_color_transfer_offer_cpu_fg black
|
||||
string_treeview_helper_color_transfer_offer_cpu_bg lightblue
|
||||
string_treeview_helper_color_transfer_offer_fg black
|
||||
string_treeview_helper_color_transfer_offer_bg lightblue
|
||||
|
||||
# player attribute colours
|
||||
string_treeview_helper_color_player_pos_goalie_bg black
|
||||
string_treeview_helper_color_player_pos_goalie_fg white
|
||||
string_treeview_helper_color_player_pos_defender_bg darkgreen
|
||||
|
Loading…
x
Reference in New Issue
Block a user