@ -58,6 +58,21 @@ extern void GenerateIndustries();
extern bool GenerateTowns ( ) ;
void CcGiveMoney ( bool success , TileIndex tile , uint32 p1 , uint32 p2 )
{
if ( ! success ) return ;
char msg [ 20 ] ;
/* Inform the player of this action */
snprintf ( msg , sizeof ( msg ) , " %d " , p1 ) ;
if ( ! _network_server ) {
SEND_COMMAND ( PACKET_CLIENT_CHAT ) ( NETWORK_ACTION_GIVE_MONEY , DESTTYPE_TEAM , p2 , msg ) ;
} else {
NetworkServer_HandleChat ( NETWORK_ACTION_GIVE_MONEY , DESTTYPE_TEAM , p2 , msg , NETWORK_SERVER_INDEX ) ;
}
}
void HandleOnEditText ( const char * str )
{
int id = _rename_id ;
@ -75,22 +90,11 @@ void HandleOnEditText(const char *str)
case 3 : { // Give money, you can only give money in excess of loan
const Player * p = GetPlayer ( _current_player ) ;
int32 money = min ( p - > money64 - p - > current_loan , atoi ( str ) / _currency - > rate ) ;
char msg [ 20 ] ;
money = clamp ( money , 0 , 20000000 ) ; // Clamp between 20 million and 0
/* Give 'id' the money, and substract it from ourself */
int32 ret = DoCommandP ( 0 , money , id , NULL , CMD_GIVE_MONEY | CMD_MSG ( STR_INSUFFICIENT_FUNDS ) ) ;
if ( CmdFailed ( ret ) | | ret = = 0 ) break ; // We either did something wrong, or we don't have any money anymore
/* Inform the player of this action */
snprintf ( msg , sizeof ( msg ) , " %d " , money ) ;
if ( ! _network_server ) {
SEND_COMMAND ( PACKET_CLIENT_CHAT ) ( NETWORK_ACTION_GIVE_MONEY , DESTTYPE_TEAM , id , msg ) ;
} else {
NetworkServer_HandleChat ( NETWORK_ACTION_GIVE_MONEY , DESTTYPE_TEAM , id , msg , NETWORK_SERVER_INDEX ) ;
}
DoCommandP ( 0 , money , id , CcGiveMoney , CMD_GIVE_MONEY | CMD_MSG ( STR_INSUFFICIENT_FUNDS ) ) ;
} break ;
# endif /* ENABLE_NETWORK */
default : NOT_REACHED ( ) ;