diff -Nur -X/mnt/data/freeciv-dev/freeciv/diff_ignore freeciv/server/diplhand.c dying_player/server/diplhand.c --- freeciv/server/diplhand.c Tue Feb 13 18:41:36 2001 +++ dying_player/server/diplhand.c Tue Apr 10 21:35:37 2001 @@ -438,33 +438,31 @@ } } - /************************************************************************** ... **************************************************************************/ -void handle_diplomacy_cancel_meeting(struct player *pplayer, - struct packet_diplomacy_info *packet) +static void really_diplomacy_cancel_meeting(struct player *pplayer, + struct player *pplayer2) { - struct Treaty *ptreaty; - struct player *plr0, *plr1, *theother; - - plr0=&game.players[packet->plrno0]; - plr1=&game.players[packet->plrno1]; - - theother=(pplayer==plr0) ? plr1 : plr0; - - if((ptreaty=find_treaty(pplayer, theother))) { - lsend_packet_diplomacy_info(&theother->connections, + struct Treaty *ptreaty = find_treaty(pplayer, pplayer2); + struct packet_diplomacy_info packet; + + if (ptreaty) { + packet.plrno0 = pplayer->player_no; + packet.plrno1 = pplayer2->player_no; + packet.plrno_from = pplayer->player_no; + + lsend_packet_diplomacy_info(&pplayer2->connections, PACKET_DIPLOMACY_CANCEL_MEETING, - packet); - notify_player(theother, _("Game: %s canceled the meeting!"), + &packet); + notify_player(pplayer2, _("Game: %s canceled the meeting!"), pplayer->name); /* Need to send to pplayer too, for multi-connects: */ lsend_packet_diplomacy_info(&pplayer->connections, PACKET_DIPLOMACY_CANCEL_MEETING, - packet); + &packet); notify_player(pplayer, _("Game: Meeting with %s canceled."), - theother->name); + pplayer2->name); genlist_unlink(&treaties, ptreaty); free(ptreaty); } @@ -473,6 +471,22 @@ /************************************************************************** ... **************************************************************************/ +void handle_diplomacy_cancel_meeting(struct player *pplayer, + struct packet_diplomacy_info *packet) +{ + struct player *plr0, *plr1, *theother; + + plr0=&game.players[packet->plrno0]; + plr1=&game.players[packet->plrno1]; + + theother = (pplayer==plr0) ? plr1 : plr0; + + really_diplomacy_cancel_meeting(pplayer, theother); +} + +/************************************************************************** +... +**************************************************************************/ void handle_diplomacy_init(struct player *pplayer, struct packet_diplomacy_info *packet) { @@ -546,6 +560,18 @@ send_packet_diplomacy_info(dest, PACKET_DIPLOMACY_CREATE_CLAUSE, &packet); } + } + } players_iterate_end; +} + +/************************************************************************** +... +**************************************************************************/ +void cancel_all_meetings(struct player *pplayer) +{ + players_iterate(pplayer2) { + if (find_treaty(pplayer, pplayer2)) { + really_diplomacy_cancel_meeting(pplayer, pplayer2); } } players_iterate_end; } diff -Nur -X/mnt/data/freeciv-dev/freeciv/diff_ignore freeciv/server/diplhand.h dying_player/server/diplhand.h --- freeciv/server/diplhand.h Thu Aug 24 08:01:46 2000 +++ dying_player/server/diplhand.h Tue Apr 10 21:11:25 2001 @@ -32,5 +32,6 @@ struct packet_diplomacy_info *packet); void send_diplomatic_meetings(struct connection *dest); +void cancel_all_meetings(struct player *pplayer); #endif /* FC__DIPLHAND_H */ diff -Nur -X/mnt/data/freeciv-dev/freeciv/diff_ignore freeciv/server/plrhand.c dying_player/server/plrhand.c --- freeciv/server/plrhand.c Tue Apr 10 14:32:02 2001 +++ dying_player/server/plrhand.c Tue Apr 10 21:04:53 2001 @@ -196,6 +196,8 @@ if (pplayer->gives_shared_vision & (1<player_no)) remove_shared_vision(pplayer, pplayer2); } players_iterate_end; + + cancel_all_meetings(pplayer); map_know_and_see_all(pplayer); } }