2005-03-21 12:52:41 +01:00
# include "finance.h"
# include "game_gui.h"
# include "maths.h"
# include "misc2_callback_func.h"
# include "option.h"
# include "player.h"
2005-03-25 21:18:35 +01:00
# include "support.h"
2005-03-21 12:52:41 +01:00
# include "team.h"
# include "treeview.h"
# include "transfer.h"
# include "user.h"
2005-03-25 21:18:35 +01:00
# include "window.h"
2005-03-21 12:52:41 +01:00
/** Transfer a user player. */
void
misc2_callback_transfer_user_player ( void )
{
Team * new_team = transoff ( stat1 , 0 ) . tm ;
gchar buf [ SMALL ] ;
if ( team_is_user ( new_team ) ! = - 1 )
{
if ( new_team - > players - > len < const_int ( " int_team_max_players " ) & &
BUDGET ( user_get_index ( user_from_team ( new_team ) ) ) > transoff ( stat1 , 0 ) . fee )
{
current_user . money + = transoff ( stat1 , 0 ) . fee ;
current_user . money_in [ 1 ] [ MON_IN_TRANSFERS ] + = transoff ( stat1 , 0 ) . fee ;
user_from_team ( new_team ) - > money - = transoff ( stat1 , 0 ) . fee ;
user_from_team ( new_team ) - > money_out [ 1 ] [ MON_OUT_TRANSFERS ] - =
transoff ( stat1 , 0 ) . fee ;
player_copy ( player_of_id ( trans ( stat1 ) . tm , trans ( stat1 ) . id ) ,
new_team , new_team - > players - > len ) ;
player_of ( new_team , new_team - > players - > len - 1 ) - > contract =
( gfloat ) math_rndi ( const_int ( " int_transfer_contract_lower " ) ,
const_int ( " int_transfer_contract_upper " ) ) ;
g_array_remove_index ( current_user . tm - > players ,
player_id_index ( current_user . tm , trans ( stat1 ) . id ) ) ;
transfer_remove_player ( stat1 ) ;
}
else
{
sprintf ( buf , _ ( " %s couldn't afford to buy %s or his roster was full. " ) ,
user_from_team ( new_team ) - > name - > str ,
player_of_id ( trans ( stat1 ) . tm , trans ( stat1 ) . id ) - > name - > str ) ;
game_gui_show_warning ( buf ) ;
sprintf ( buf , _ ( " You didn't have enough money to buy %s or your roster was full. " ) ,
player_of_id ( trans ( stat1 ) . tm , trans ( stat1 ) . id ) - > name - > str ) ;
user_event_add ( user_from_team ( new_team ) , EVENT_TYPE_WARNING , - 1 , - 1 , NULL , buf ) ;
g_array_remove_index ( trans ( stat1 ) . offers , 0 ) ;
}
}
else
{
current_user . money + = transoff ( stat1 , 0 ) . fee ;
current_user . money_in [ 1 ] [ MON_IN_TRANSFERS ] + = transoff ( stat1 , 0 ) . fee ;
player_remove_from_team ( current_user . tm ,
player_id_index ( current_user . tm , trans ( stat1 ) . id ) ) ;
transfer_remove_player ( stat1 ) ;
}
2005-03-24 21:22:44 +01:00
treeview_show_user_player_list ( ) ;
2005-03-21 12:52:41 +01:00
game_gui_set_main_window_header ( ) ;
}
2005-03-24 19:04:31 +01:00
/** Change the user team's structure to a value he's specified. */
void
misc2_callback_change_structure ( gint structure )
{
gchar buf [ SMALL ] ;
if ( math_get_place ( structure , 1 ) + math_get_place ( structure , 2 ) +
math_get_place ( structure , 3 ) ! = 10 )
{
sprintf ( buf , _ ( " The structure value %d is invalid. " ) , structure ) ;
game_gui_print_message ( buf ) ;
return ;
}
team_change_structure ( current_user . tm , structure ) ;
2005-03-24 21:22:44 +01:00
treeview_show_user_player_list ( ) ;
2005-03-24 19:04:31 +01:00
}
2005-03-25 21:18:35 +01:00
/** 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 ;
}
}
}