Project

General

Profile

Feature #825 ยป 0019-Rename-struct-Treaty-as-struct-treaty.patch

Marko Lindqvist, 09/06/2024 07:19 AM

View differences:

ai/classic/classicai.c
Call default ai with classic ai type as parameter.
**************************************************************************/
static void cai_treaty_evaluate(struct player *pplayer, struct player *aplayer,
struct Treaty *ptreaty)
struct treaty *ptreaty)
{
struct ai_type *deftype = classic_ai_get_self();
......
Call default ai with classic ai type as parameter.
**************************************************************************/
static void cai_treaty_accepted(struct player *pplayer, struct player *aplayer,
struct Treaty *ptreaty)
struct treaty *ptreaty)
{
struct ai_type *deftype = classic_ai_get_self();
ai/default/daidiplomacy.c
is the treaty being considered. It is all a question about money :-)
**********************************************************************/
void dai_treaty_evaluate(struct ai_type *ait, struct player *pplayer,
struct player *aplayer, struct Treaty *ptreaty)
struct player *aplayer, struct treaty *ptreaty)
{
int total_balance = 0;
bool only_gifts = TRUE;
......
is the treaty accepted.
**********************************************************************/
void dai_treaty_accepted(struct ai_type *ait, struct player *pplayer,
struct player *aplayer, struct Treaty *ptreaty)
struct player *aplayer, struct treaty *ptreaty)
{
bool close_here;
struct ai_plr *ai;
......
**********************************************************************/
static void clear_old_treaty(struct player *pplayer, struct player *aplayer)
{
struct Treaty *old_treaty = find_treaty(pplayer, aplayer);
struct treaty *old_treaty = find_treaty(pplayer, aplayer);
if (old_treaty != NULL) {
/* Remove existing clauses */
ai/default/daidiplomacy.h
#include "ai.h" /* incident_type */
struct Treaty;
struct treaty;
struct Clause;
struct ai_data;
......
void dai_diplomacy_actions(struct ai_type *ait, struct player *pplayer);
void dai_treaty_evaluate(struct ai_type *ait, struct player *pplayer,
struct player *aplayer, struct Treaty *ptreaty);
struct player *aplayer, struct treaty *ptreaty);
void dai_treaty_accepted(struct ai_type *ait, struct player *pplayer,
struct player *aplayer, struct Treaty *ptreaty);
struct player *aplayer, struct treaty *ptreaty);
void dai_incident(struct ai_type *ait, enum incident_type type,
enum casus_belli_range scope,
ai/tex/texai.c
**************************************************************************/
static void texwai_treaty_evaluate(struct player *pplayer,
struct player *aplayer,
struct Treaty *ptreaty)
struct treaty *ptreaty)
{
TEXAI_AIT;
TEXAI_DFUNC(dai_treaty_evaluate, pplayer, aplayer, ptreaty);
......
**************************************************************************/
static void texwai_treaty_accepted(struct player *pplayer,
struct player *aplayer,
struct Treaty *ptreaty)
struct treaty *ptreaty)
{
TEXAI_AIT;
TEXAI_DFUNC(dai_treaty_accepted, pplayer, aplayer, ptreaty);
client/clitreaty.c
**************************************************************************/
void client_init_meeting(int counterpart, int initiated_from)
{
struct Treaty *ptreaty;
struct treaty *ptreaty;
struct player *we;
struct player *they;
......
void client_recv_accept_treaty(int counterpart, bool I_accepted,
bool other_accepted)
{
struct Treaty *ptreaty;
struct treaty *ptreaty;
struct player *we;
struct player *they;
......
**************************************************************************/
void client_recv_cancel_meeting(int counterpart, int initiated_from)
{
struct Treaty *ptreaty;
struct treaty *ptreaty;
struct player *we;
struct player *they;
......
void client_recv_create_clause(int counterpart, int giver,
enum clause_type type, int value)
{
struct Treaty *ptreaty;
struct treaty *ptreaty;
struct player *we;
struct player *they;
......
void client_recv_remove_clause(int counterpart, int giver,
enum clause_type type, int value)
{
struct Treaty *ptreaty;
struct treaty *ptreaty;
struct player *we;
struct player *they;
client/gui-gtk-3.22/diplodlg.c
#include "plrdlg.h"
struct Diplomacy_dialog {
struct Treaty *treaty;
struct treaty *treaty;
struct gui_dialog *dialog;
GtkWidget *menu0;
......
static struct dialog_list *dialog_list;
static struct Diplomacy_notebook *dipl_main;
static struct Diplomacy_dialog *create_diplomacy_dialog(struct Treaty *ptreaty,
static struct Diplomacy_dialog *create_diplomacy_dialog(struct treaty *ptreaty,
struct player *plr0,
struct player *plr1);
static struct Diplomacy_dialog *find_diplomacy_dialog(struct player *they);
static void popup_diplomacy_dialog(struct Treaty *ptreaty, struct player *they,
static void popup_diplomacy_dialog(struct treaty *ptreaty, struct player *they,
struct player *initiator);
static void diplomacy_dialog_map_callback(GtkWidget *w, gpointer data);
static void diplomacy_dialog_seamap_callback(GtkWidget *w, gpointer data);
......
/************************************************************************//**
Server tells us that either party has accepted treaty
****************************************************************************/
void gui_recv_accept_treaty(struct Treaty *ptreaty, struct player *they)
void gui_recv_accept_treaty(struct treaty *ptreaty, struct player *they)
{
struct Diplomacy_dialog *pdialog = find_diplomacy_dialog(they);
......
/************************************************************************//**
Someone is initiating meeting with us.
****************************************************************************/
void gui_init_meeting(struct Treaty *ptreaty, struct player *they,
void gui_init_meeting(struct treaty *ptreaty, struct player *they,
struct player *initiator)
{
popup_diplomacy_dialog(ptreaty, they, initiator);
......
/************************************************************************//**
Meeting has been cancelled.
****************************************************************************/
void gui_recv_cancel_meeting(struct Treaty *ptreaty, struct player *they,
void gui_recv_cancel_meeting(struct treaty *ptreaty, struct player *they,
struct player *initiator)
{
struct Diplomacy_dialog *pdialog = find_diplomacy_dialog(they);
......
/**********************************************************************//**
Prepare to clause creation or removal.
**************************************************************************/
void gui_prepare_clause_updt(struct Treaty *ptreaty, struct player *they)
void gui_prepare_clause_updt(struct treaty *ptreaty, struct player *they)
{
/* Not needed */
}
......
/************************************************************************//**
Added clause to the meeting
****************************************************************************/
void gui_recv_create_clause(struct Treaty *ptreaty, struct player *they)
void gui_recv_create_clause(struct treaty *ptreaty, struct player *they)
{
struct Diplomacy_dialog *pdialog = find_diplomacy_dialog(they);
......
/************************************************************************//**
Removed clause from meeting.
****************************************************************************/
void gui_recv_remove_clause(struct Treaty *ptreaty, struct player *they)
void gui_recv_remove_clause(struct treaty *ptreaty, struct player *they)
{
struct Diplomacy_dialog *pdialog = find_diplomacy_dialog(they);
......
/************************************************************************//**
Popup the dialog 10% inside the main-window
****************************************************************************/
static void popup_diplomacy_dialog(struct Treaty *ptreaty, struct player *they,
static void popup_diplomacy_dialog(struct treaty *ptreaty, struct player *they,
struct player *initiator)
{
struct Diplomacy_dialog *pdialog = find_diplomacy_dialog(they);
......
/************************************************************************//**
Setups diplomacy dialog widgets.
****************************************************************************/
static struct Diplomacy_dialog *create_diplomacy_dialog(struct Treaty *ptreaty,
static struct Diplomacy_dialog *create_diplomacy_dialog(struct treaty *ptreaty,
struct player *plr0,
struct player *plr1)
{
client/gui-gtk-4.0/diplodlg.c
#include "plrdlg.h"
struct Diplomacy_dialog {
struct Treaty *treaty;
struct treaty *treaty;
struct gui_dialog *dialog;
GtkWidget *pic0;
......
static struct dialog_list *dialog_list;
static struct Diplomacy_notebook *dipl_main;
static struct Diplomacy_dialog *create_diplomacy_dialog(struct Treaty *ptreaty,
static struct Diplomacy_dialog *create_diplomacy_dialog(struct treaty *ptreaty,
struct player *plr0,
struct player *plr1);
static struct Diplomacy_dialog *find_diplomacy_dialog(struct player *they);
static void popup_diplomacy_dialog(struct Treaty *ptreaty, struct player *they,
static void popup_diplomacy_dialog(struct treaty *ptreaty, struct player *they,
struct player *initiator);
static void diplomacy_dialog_map_callback(GSimpleAction *action,
GVariant *parameter,
......
/************************************************************************//**
Server tells us that either party has accepted treaty
****************************************************************************/
void gui_recv_accept_treaty(struct Treaty *ptreaty, struct player *they)
void gui_recv_accept_treaty(struct treaty *ptreaty, struct player *they)
{
struct Diplomacy_dialog *pdialog = find_diplomacy_dialog(they);
......
/************************************************************************//**
Someone is initiating meeting with us.
****************************************************************************/
void gui_init_meeting(struct Treaty *ptreaty, struct player *they,
void gui_init_meeting(struct treaty *ptreaty, struct player *they,
struct player *initiator)
{
popup_diplomacy_dialog(ptreaty, they, initiator);
......
/************************************************************************//**
Meeting has been cancelled.
****************************************************************************/
void gui_recv_cancel_meeting(struct Treaty *ptreaty, struct player *they,
void gui_recv_cancel_meeting(struct treaty *ptreaty, struct player *they,
struct player *initiator)
{
struct Diplomacy_dialog *pdialog = find_diplomacy_dialog(they);
......
/**********************************************************************//**
Prepare to clause creation or removal.
**************************************************************************/
void gui_prepare_clause_updt(struct Treaty *ptreaty, struct player *they)
void gui_prepare_clause_updt(struct treaty *ptreaty, struct player *they)
{
/* Not needed */
}
......
/************************************************************************//**
Added clause to the meeting
****************************************************************************/
void gui_recv_create_clause(struct Treaty *ptreaty, struct player *they)
void gui_recv_create_clause(struct treaty *ptreaty, struct player *they)
{
struct Diplomacy_dialog *pdialog = find_diplomacy_dialog(they);
......
/************************************************************************//**
Removed clause from meeting.
****************************************************************************/
void gui_recv_remove_clause(struct Treaty *ptreaty, struct player *they)
void gui_recv_remove_clause(struct treaty *ptreaty, struct player *they)
{
struct Diplomacy_dialog *pdialog = find_diplomacy_dialog(they);
......
/************************************************************************//**
Popup the dialog 10% inside the main-window
****************************************************************************/
static void popup_diplomacy_dialog(struct Treaty *ptreaty, struct player *they,
static void popup_diplomacy_dialog(struct treaty *ptreaty, struct player *they,
struct player *initiator)
{
struct Diplomacy_dialog *pdialog = find_diplomacy_dialog(they);
......
/************************************************************************//**
Setups diplomacy dialog widgets.
****************************************************************************/
static struct Diplomacy_dialog *create_diplomacy_dialog(struct Treaty *ptreaty,
static struct Diplomacy_dialog *create_diplomacy_dialog(struct treaty *ptreaty,
struct player *plr0,
struct player *plr1)
{
client/gui-gtk-5.0/diplodlg.c
#include "plrdlg.h"
struct Diplomacy_dialog {
struct Treaty *treaty;
struct treaty *treaty;
struct gui_dialog *dialog;
GtkWidget *pic0;
......
static struct dialog_list *dialog_list;
static struct Diplomacy_notebook *dipl_main;
static struct Diplomacy_dialog *create_diplomacy_dialog(struct Treaty *ptreaty,
static struct Diplomacy_dialog *create_diplomacy_dialog(struct treaty *ptreaty,
struct player *plr0,
struct player *plr1);
static struct Diplomacy_dialog *find_diplomacy_dialog(struct player *they);
static void popup_diplomacy_dialog(struct Treaty *ptreaty, struct player *they,
static void popup_diplomacy_dialog(struct treaty *ptreaty, struct player *they,
struct player *initiator);
static void diplomacy_dialog_map_callback(GSimpleAction *action,
GVariant *parameter,
......
/************************************************************************//**
Server tells us that either party has accepted treaty
****************************************************************************/
void gui_recv_accept_treaty(struct Treaty *ptreaty, struct player *they)
void gui_recv_accept_treaty(struct treaty *ptreaty, struct player *they)
{
struct Diplomacy_dialog *pdialog = find_diplomacy_dialog(they);
......
/************************************************************************//**
Someone is initiating meeting with us.
****************************************************************************/
void gui_init_meeting(struct Treaty *ptreaty, struct player *they,
void gui_init_meeting(struct treaty *ptreaty, struct player *they,
struct player *initiator)
{
popup_diplomacy_dialog(ptreaty, they, initiator);
......
/************************************************************************//**
Meeting has been cancelled.
****************************************************************************/
void gui_recv_cancel_meeting(struct Treaty *ptreaty, struct player *they,
void gui_recv_cancel_meeting(struct treaty *ptreaty, struct player *they,
struct player *initiator)
{
struct Diplomacy_dialog *pdialog = find_diplomacy_dialog(they);
......
/**********************************************************************//**
Prepare to clause creation or removal.
**************************************************************************/
void gui_prepare_clause_updt(struct Treaty *ptreaty, struct player *they)
void gui_prepare_clause_updt(struct treaty *ptreaty, struct player *they)
{
/* Not needed */
}
......
/************************************************************************//**
Added clause to the meeting
****************************************************************************/
void gui_recv_create_clause(struct Treaty *ptreaty, struct player *they)
void gui_recv_create_clause(struct treaty *ptreaty, struct player *they)
{
struct Diplomacy_dialog *pdialog = find_diplomacy_dialog(they);
......
/************************************************************************//**
Removed clause from meeting.
****************************************************************************/
void gui_recv_remove_clause(struct Treaty *ptreaty, struct player *they)
void gui_recv_remove_clause(struct treaty *ptreaty, struct player *they)
{
struct Diplomacy_dialog *pdialog = find_diplomacy_dialog(they);
......
/************************************************************************//**
Popup the dialog 10% inside the main-window
****************************************************************************/
static void popup_diplomacy_dialog(struct Treaty *ptreaty, struct player *they,
static void popup_diplomacy_dialog(struct treaty *ptreaty, struct player *they,
struct player *initiator)
{
struct Diplomacy_dialog *pdialog = find_diplomacy_dialog(they);
......
/************************************************************************//**
Setups diplomacy dialog widgets.
****************************************************************************/
static struct Diplomacy_dialog *create_diplomacy_dialog(struct Treaty *ptreaty,
static struct Diplomacy_dialog *create_diplomacy_dialog(struct treaty *ptreaty,
struct player *plr0,
struct player *plr1)
{
client/gui-qt/diplodlg.cpp
/************************************************************************//**
Constructor for diplomacy widget
****************************************************************************/
diplo_wdg::diplo_wdg(struct Treaty *ptreaty,
diplo_wdg::diplo_wdg(struct treaty *ptreaty,
struct player *they, struct player *initiator): QWidget()
{
struct player *we;
......
/************************************************************************//**
Constructor for diplomacy dialog
****************************************************************************/
diplo_dlg::diplo_dlg(struct Treaty *ptreaty, struct player *they,
diplo_dlg::diplo_dlg(struct treaty *ptreaty, struct player *they,
struct player *initiator) : QTabWidget()
{
add_widget(ptreaty, they, initiator);
......
/************************************************************************//**
Creates new diplomacy widget and adds to diplomacy dialog
****************************************************************************/
void diplo_dlg::add_widget(struct Treaty *ptreaty, struct player *they,
void diplo_dlg::add_widget(struct treaty *ptreaty, struct player *they,
struct player *initiator)
{
diplo_wdg *dw;
......
Update a player's acceptance status of a treaty (traditionally shown
with the thumbs-up/thumbs-down sprite).
****************************************************************************/
void qtg_recv_accept_treaty(struct Treaty *ptreaty, struct player *they)
void qtg_recv_accept_treaty(struct treaty *ptreaty, struct player *they)
{
int i;
diplo_dlg *dd;
......
Handle the start of a diplomacy meeting - usually by popping up a
diplomacy dialog.
****************************************************************************/
void qtg_init_meeting(struct Treaty *ptreaty, struct player *they,
void qtg_init_meeting(struct treaty *ptreaty, struct player *they,
struct player *initiator)
{
int i;
......
/**********************************************************************//**
Prepare to clause creation or removal.
**************************************************************************/
void qtg_prepare_clause_updt(struct Treaty *ptreaty, struct player *they)
void qtg_prepare_clause_updt(struct treaty *ptreaty, struct player *they)
{
// Not needed
}
......
/************************************************************************//**
Update the diplomacy dialog by adding a clause.
****************************************************************************/
void qtg_recv_create_clause(struct Treaty *ptreaty, struct player *they)
void qtg_recv_create_clause(struct treaty *ptreaty, struct player *they)
{
int i;
diplo_dlg *dd;
......
Update the diplomacy dialog when the meeting is canceled (the dialog
should be closed).
****************************************************************************/
void qtg_recv_cancel_meeting(struct Treaty *ptreaty, struct player *they,
void qtg_recv_cancel_meeting(struct treaty *ptreaty, struct player *they,
struct player *initiator)
{
int i;
......
/************************************************************************//**
Update the diplomacy dialog by removing a clause.
****************************************************************************/
void qtg_recv_remove_clause(struct Treaty *ptreaty, struct player *they)
void qtg_recv_remove_clause(struct treaty *ptreaty, struct player *they)
{
int i;
diplo_dlg *dd;
client/gui-qt/diplodlg.h
QTableWidget *text_edit;
public:
diplo_wdg(struct Treaty *ptreaty,
diplo_wdg(struct treaty *ptreaty,
struct player *they, struct player *initiator);
~diplo_wdg();
void update_wdg();
void set_index(int ind);
int get_index();
struct Treaty *treaty;
struct treaty *treaty;
private slots:
void all_advances();
......
QMap<struct player *, diplo_wdg *> treaty_list;
public:
diplo_dlg(struct Treaty *ptreaty, struct player *they,
diplo_dlg(struct treaty *ptreaty, struct player *they,
struct player *initiator);
~diplo_dlg();
void reactivate();
......
bool init(bool raise);
diplo_wdg *find_widget(struct player *they);
void close_widget(struct player *they);
void add_widget(struct Treaty *ptreaty, struct player *they,
void add_widget(struct treaty *ptreaty, struct player *they,
struct player *initiator);
void make_active(struct player *party);
client/gui-qt/qtg_cxxside.h
char **qtg_get_gui_specific_themes_directories(int *count);
char **qtg_get_usable_themes_in_directory(const char *directory, int *count);
void qtg_init_meeting(struct Treaty *ptreaty, struct player *they,
void qtg_init_meeting(struct treaty *ptreaty, struct player *they,
struct player *initiator);
void qtg_recv_cancel_meeting(struct Treaty *ptreaty, struct player *they,
void qtg_recv_cancel_meeting(struct treaty *ptreaty, struct player *they,
struct player *initiator);
void qtg_prepare_clause_updt(struct Treaty *ptreaty, struct player *they);
void qtg_recv_create_clause(struct Treaty *ptreaty, struct player *they);
void qtg_recv_remove_clause(struct Treaty *ptreaty, struct player *they);
void qtg_recv_accept_treaty(struct Treaty *ptreaty, struct player *they);
void qtg_prepare_clause_updt(struct treaty *ptreaty, struct player *they);
void qtg_recv_create_clause(struct treaty *ptreaty, struct player *they);
void qtg_recv_remove_clause(struct treaty *ptreaty, struct player *they);
void qtg_recv_accept_treaty(struct treaty *ptreaty, struct player *they);
void qtg_request_action_confirmation(const char *expl,
struct act_confirmation_data *data);
client/gui-sdl2/diplodlg.c
#include "diplodlg.h"
struct diplomacy_dialog {
struct Treaty *treaty;
struct treaty *treaty;
struct advanced_dialog *pdialog;
struct advanced_dialog *pwants;
struct advanced_dialog *poffers;
......
Update a player's acceptance status of a treaty (traditionally shown
with the thumbs-up/thumbs-down sprite).
**************************************************************************/
void gui_recv_accept_treaty(struct Treaty *ptreaty, struct player *they)
void gui_recv_accept_treaty(struct treaty *ptreaty, struct player *they)
{
struct diplomacy_dialog *pdialog = get_diplomacy_dialog(they);
......
Update the diplomacy dialog when the meeting is canceled (the dialog
should be closed).
**************************************************************************/
void gui_recv_cancel_meeting(struct Treaty *ptreaty, struct player *they,
void gui_recv_cancel_meeting(struct treaty *ptreaty, struct player *they,
struct player *initiator)
{
struct diplomacy_dialog *pdialog = get_diplomacy_dialog(they);
......
/**********************************************************************//**
Prepare to clause creation or removal.
**************************************************************************/
void gui_prepare_clause_updt(struct Treaty *ptreaty, struct player *they)
void gui_prepare_clause_updt(struct treaty *ptreaty, struct player *they)
{
struct diplomacy_dialog *pdialog = get_diplomacy_dialog(they);
......
/**********************************************************************//**
Update the diplomacy dialog by adding a clause.
**************************************************************************/
void gui_recv_create_clause(struct Treaty *ptreaty, struct player *they)
void gui_recv_create_clause(struct treaty *ptreaty, struct player *they)
{
struct diplomacy_dialog *pdialog = get_diplomacy_dialog(they);
......
/**********************************************************************//**
Update the diplomacy dialog by removing a clause.
**************************************************************************/
void gui_recv_remove_clause(struct Treaty *ptreaty, struct player *they)
void gui_recv_remove_clause(struct treaty *ptreaty, struct player *they)
{
struct diplomacy_dialog *pdialog = get_diplomacy_dialog(they);
......
/**********************************************************************//**
Open new diplomacy dialog between players.
**************************************************************************/
static struct diplomacy_dialog *create_diplomacy_dialog(struct Treaty *ptreaty,
static struct diplomacy_dialog *create_diplomacy_dialog(struct treaty *ptreaty,
struct player *plr0,
struct player *plr1)
{
......
Handle the start of a diplomacy meeting - usually by popping up a
diplomacy dialog.
**************************************************************************/
void gui_init_meeting(struct Treaty *ptreaty, struct player *they,
void gui_init_meeting(struct treaty *ptreaty, struct player *they,
struct player *initiator)
{
struct diplomacy_dialog *pdialog;
client/gui-sdl3/diplodlg.c
#include "diplodlg.h"
struct diplomacy_dialog {
struct Treaty *treaty;
struct treaty *treaty;
struct advanced_dialog *pdialog;
struct advanced_dialog *pwants;
struct advanced_dialog *poffers;
......
Update a player's acceptance status of a treaty (traditionally shown
with the thumbs-up/thumbs-down sprite).
**************************************************************************/
void gui_recv_accept_treaty(struct Treaty *ptreaty, struct player *they)
void gui_recv_accept_treaty(struct treaty *ptreaty, struct player *they)
{
struct diplomacy_dialog *pdialog = get_diplomacy_dialog(they);
......
Update the diplomacy dialog when the meeting is canceled (the dialog
should be closed).
**************************************************************************/
void gui_recv_cancel_meeting(struct Treaty *ptreaty, struct player *they,
void gui_recv_cancel_meeting(struct treaty *ptreaty, struct player *they,
struct player *initiator)
{
struct diplomacy_dialog *pdialog = get_diplomacy_dialog(they);
......
/**********************************************************************//**
Prepare to clause creation or removal.
**************************************************************************/
void gui_prepare_clause_updt(struct Treaty *ptreaty, struct player *they)
void gui_prepare_clause_updt(struct treaty *ptreaty, struct player *they)
{
struct diplomacy_dialog *pdialog = get_diplomacy_dialog(they);
......
/**********************************************************************//**
Update the diplomacy dialog by adding a clause.
**************************************************************************/
void gui_recv_create_clause(struct Treaty *ptreaty, struct player *they)
void gui_recv_create_clause(struct treaty *ptreaty, struct player *they)
{
struct diplomacy_dialog *pdialog = get_diplomacy_dialog(they);
......
/**********************************************************************//**
Update the diplomacy dialog by removing a clause.
**************************************************************************/
void gui_recv_remove_clause(struct Treaty *ptreaty, struct player *they)
void gui_recv_remove_clause(struct treaty *ptreaty, struct player *they)
{
struct diplomacy_dialog *pdialog = get_diplomacy_dialog(they);
......
/**********************************************************************//**
Open new diplomacy dialog between players.
**************************************************************************/
static struct diplomacy_dialog *create_diplomacy_dialog(struct Treaty *ptreaty,
static struct diplomacy_dialog *create_diplomacy_dialog(struct treaty *ptreaty,
struct player *plr0,
struct player *plr1)
{
......
Handle the start of a diplomacy meeting - usually by popping up a
diplomacy dialog.
**************************************************************************/
void gui_init_meeting(struct Treaty *ptreaty, struct player *they,
void gui_init_meeting(struct treaty *ptreaty, struct player *they,
struct player *initiator)
{
struct diplomacy_dialog *pdialog;
client/gui-stub/diplodlg.c
Update a player's acceptance status of a treaty (traditionally shown
with the thumbs-up/thumbs-down sprite).
**************************************************************************/
void gui_gui_recv_accept_treaty(struct Treaty *ptreaty, struct player *they)
void gui_gui_recv_accept_treaty(struct treaty *ptreaty, struct player *they)
{
/* PORTME */
}
......
Handle the start of a diplomacy meeting - usually by popping up a
diplomacy dialog.
**************************************************************************/
void gui_gui_init_meeting(struct Treaty *ptreaty, struct player *they,
void gui_gui_init_meeting(struct treaty *ptreaty, struct player *they,
struct player *initiator)
{
/* PORTME */
......
/**********************************************************************//**
Update the diplomacy dialog by adding a clause.
**************************************************************************/
void gui_gui_recv_create_clause(struct Treaty *ptreaty, struct player *they)
void gui_gui_recv_create_clause(struct treaty *ptreaty, struct player *they)
{
/* PORTME */
}
......
Update the diplomacy dialog when the meeting is canceled (the dialog
should be closed).
**************************************************************************/
void gui_gui_recv_cancel_meeting(struct Treaty *ptreaty, struct player *they,
void gui_gui_recv_cancel_meeting(struct treaty *ptreaty, struct player *they,
struct player *initiator)
{
/* PORTME */
......
/**********************************************************************//**
Update the diplomacy dialog by removing a clause.
**************************************************************************/
void gui_gui_recv_remove_clause(struct Treaty *ptreaty, struct player *they)
void gui_gui_recv_remove_clause(struct treaty *ptreaty, struct player *they)
{
/* PORTME */
}
......
/**********************************************************************//**
Prepare to clause creation or removal.
**************************************************************************/
void gui_gui_prepare_clause_updt(struct Treaty *ptreaty, struct player *they)
void gui_gui_prepare_clause_updt(struct treaty *ptreaty, struct player *they)
{
/* PORTME */
}
client/gui_interface.c
/**********************************************************************//**
Call gui_init_meeting callback
**************************************************************************/
void gui_init_meeting(struct Treaty *ptreaty, struct player *they,
void gui_init_meeting(struct treaty *ptreaty, struct player *they,
struct player *initiator)
{
funcs.gui_init_meeting(ptreaty, they, initiator);
......
/**********************************************************************//**
Call gui_recv_cancel_meeting callback
**************************************************************************/
void gui_recv_cancel_meeting(struct Treaty *ptreaty, struct player *they,
void gui_recv_cancel_meeting(struct treaty *ptreaty, struct player *they,
struct player *initiator)
{
funcs.gui_recv_cancel_meeting(ptreaty, they, initiator);
......
/**********************************************************************//**
Call gui_prepare_clause_updt callback
**************************************************************************/
void gui_prepare_clause_updt(struct Treaty *ptreaty, struct player *they)
void gui_prepare_clause_updt(struct treaty *ptreaty, struct player *they)
{
funcs.gui_prepare_clause_updt(ptreaty, they);
}
......
/**********************************************************************//**
Call gui_recv_create_clause callback
**************************************************************************/
void gui_recv_create_clause(struct Treaty *ptreaty, struct player *they)
void gui_recv_create_clause(struct treaty *ptreaty, struct player *they)
{
funcs.gui_recv_create_clause(ptreaty, they);
}
......
/**********************************************************************//**
Call gui_recv_remove_clause callback
**************************************************************************/
void gui_recv_remove_clause(struct Treaty *ptreaty, struct player *they)
void gui_recv_remove_clause(struct treaty *ptreaty, struct player *they)
{
funcs.gui_recv_remove_clause(ptreaty, they);
}
......
/**********************************************************************//**
Call gui_recv_accept_treaty callback
**************************************************************************/
void gui_recv_accept_treaty(struct Treaty *ptreaty, struct player *they)
void gui_recv_accept_treaty(struct treaty *ptreaty, struct player *they)
{
funcs.gui_recv_accept_treaty(ptreaty, they);
}
client/gui_interface.h
char **(*get_gui_specific_themes_directories)(int *count);
char **(*get_usable_themes_in_directory)(const char *directory, int *count);
void (*gui_init_meeting)(struct Treaty *ptreaty, struct player *they,
void (*gui_init_meeting)(struct treaty *ptreaty, struct player *they,
struct player *initiator);
void (*gui_recv_cancel_meeting)(struct Treaty *ptreaty, struct player *they,
void (*gui_recv_cancel_meeting)(struct treaty *ptreaty, struct player *they,
struct player *initiator);
void (*gui_prepare_clause_updt)(struct Treaty *ptreaty, struct player *they);
void (*gui_recv_create_clause)(struct Treaty *ptreaty, struct player *they);
void (*gui_recv_remove_clause)(struct Treaty *ptreaty, struct player *they);
void (*gui_recv_accept_treaty)(struct Treaty *ptreaty, struct player *they);
void (*gui_prepare_clause_updt)(struct treaty *ptreaty, struct player *they);
void (*gui_recv_create_clause)(struct treaty *ptreaty, struct player *they);
void (*gui_recv_remove_clause)(struct treaty *ptreaty, struct player *they);
void (*gui_recv_accept_treaty)(struct treaty *ptreaty, struct player *they);
void (*request_action_confirmation)(const char *expl,
struct act_confirmation_data *data);
client/include/diplodlg_g.h
#include "gui_proto_constructor.h"
GUI_FUNC_PROTO(void, gui_init_meeting,
struct Treaty *ptreaty, struct player *they,
struct treaty *ptreaty, struct player *they,
struct player *initiator)
GUI_FUNC_PROTO(void, gui_recv_cancel_meeting,
struct Treaty *ptreaty, struct player *they,
struct treaty *ptreaty, struct player *they,
struct player *initiator)
GUI_FUNC_PROTO(void, gui_prepare_clause_updt,
struct Treaty *ptreaty, struct player *they)
struct treaty *ptreaty, struct player *they)
GUI_FUNC_PROTO(void, gui_recv_create_clause,
struct Treaty *ptreaty, struct player *they)
struct treaty *ptreaty, struct player *they)
GUI_FUNC_PROTO(void, gui_recv_remove_clause,
struct Treaty *ptreaty, struct player *they)
GUI_FUNC_PROTO(void, gui_recv_accept_treaty, struct Treaty *ptreaty,
struct treaty *ptreaty, struct player *they)
GUI_FUNC_PROTO(void, gui_recv_accept_treaty, struct treaty *ptreaty,
struct player *they)
GUI_FUNC_PROTO(void, close_all_diplomacy_dialogs, void)
#endif /* FC__DIPLODLG_G_H */
#endif /* FC__DIPLODLG_G_H */
common/ai.h
# undef DEBUG_AITIMERS
#endif /* FREECIV_DEBUG */
struct Treaty;
struct treaty;
struct player;
struct adv_choice;
struct city;
......
/* Called for player AI type when diplomatic treaty requires evaluation. */
void (*treaty_evaluate)(struct player *pplayer, struct player *aplayer,
struct Treaty *ptreaty);
struct treaty *ptreaty);
/* Called for player AI type when diplomatic treaty has been accepted
* by both parties. */
void (*treaty_accepted)(struct player *pplayer, struct player *aplayer,
struct Treaty *ptreaty);
struct treaty *ptreaty);
/* Called for player AI type when first contact with another player has been
* established. Note that when contact is between two AI players, callback
common/diptreaty.c
/**********************************************************************//**
Initialize treaty structure between two players.
**************************************************************************/
void init_treaty(struct Treaty *ptreaty,
void init_treaty(struct treaty *ptreaty,
struct player *plr0, struct player *plr1)
{
ptreaty->plr0=plr0;
ptreaty->plr1=plr1;
ptreaty->plr0 = plr0;
ptreaty->plr1 = plr1;
ptreaty->accept0 = FALSE;
ptreaty->accept1 = FALSE;
ptreaty->clauses = clause_list_new();
......
/**********************************************************************//**
Free the clauses of a treaty.
**************************************************************************/
void clear_treaty(struct Treaty *ptreaty)
void clear_treaty(struct treaty *ptreaty)
{
clause_list_iterate(ptreaty->clauses, pclause) {
free(pclause);
......
/**********************************************************************//**
Remove clause from treaty
**************************************************************************/
bool remove_clause(struct Treaty *ptreaty, struct player *pfrom,
bool remove_clause(struct treaty *ptreaty, struct player *pfrom,
enum clause_type type, int val)
{
clause_list_iterate(ptreaty->clauses, pclause) {
......
/**********************************************************************//**
Add clause to treaty.
**************************************************************************/
bool add_clause(struct Treaty *ptreaty, struct player *pfrom,
bool add_clause(struct treaty *ptreaty, struct player *pfrom,
enum clause_type type, int val,
struct player *client_player)
{
......
/**********************************************************************//**
Find currently active treaty between two players.
**************************************************************************/
struct Treaty *find_treaty(struct player *plr0, struct player *plr1)
struct treaty *find_treaty(struct player *plr0, struct player *plr1)
{
treaty_list_iterate(treaties, ptreaty) {
if ((ptreaty->plr0 == plr0 && ptreaty->plr1 == plr1)
......
/**********************************************************************//**
Add treaty to the global list.
**************************************************************************/
void treaty_add(struct Treaty *ptreaty)
void treaty_add(struct treaty *ptreaty)
{
treaty_list_prepend(treaties, ptreaty);
}
......
/**********************************************************************//**
Remove treaty from the global list.
**************************************************************************/
void treaty_remove(struct Treaty *ptreaty)
void treaty_remove(struct treaty *ptreaty)
{
treaty_list_remove(treaties, ptreaty);
common/diptreaty.h
int value;
};
struct Treaty {
struct treaty {
struct player *plr0, *plr1;
bool accept0, accept1;
struct clause_list *clauses;
......
bool could_intel_with_player(const struct player *pplayer,
const struct player *aplayer);
void init_treaty(struct Treaty *ptreaty,
void init_treaty(struct treaty *ptreaty,
struct player *plr0, struct player *plr1);
bool add_clause(struct Treaty *ptreaty, struct player *pfrom,
bool add_clause(struct treaty *ptreaty, struct player *pfrom,
enum clause_type type, int val,
struct player *client_player);
bool remove_clause(struct Treaty *ptreaty, struct player *pfrom,
bool remove_clause(struct treaty *ptreaty, struct player *pfrom,
enum clause_type type, int val);
void clear_treaty(struct Treaty *ptreaty);
void clear_treaty(struct treaty *ptreaty);
void clause_infos_init(void);
void clause_infos_free(void);
......
bool clause_enabled(enum clause_type type);
#define SPECLIST_TAG treaty
#define SPECLIST_TYPE struct Treaty
#define SPECLIST_TYPE struct treaty
#include "speclist.h"
#define treaty_list_iterate(list, p) \
TYPED_LIST_ITERATE(struct Treaty, list, p)
TYPED_LIST_ITERATE(struct treaty, list, p)
#define treaty_list_iterate_end LIST_ITERATE_END
void treaties_init(void);
void treaties_free(void);
void free_treaties(void);
struct Treaty *find_treaty(struct player *plr0, struct player *plr1);
struct treaty *find_treaty(struct player *plr0, struct player *plr1);
void treaty_add(struct Treaty *ptreaty);
void treaty_remove(struct Treaty *ptreaty);
void treaty_add(struct treaty *ptreaty);
void treaty_remove(struct treaty *ptreaty);
typedef void (*treaty_cb)(struct Treaty *, void *data);
typedef void (*treaty_cb)(struct treaty *, void *data);
void treaties_iterate(treaty_cb cb, void *data);
#ifdef __cplusplus
doc/HACKING
Diplomacy
=========================================================================
A few words about the diplomacy system. When a diplomacy meeting is
established, a Treaty structure is created on both of the clients and
established, a treaty structure is created on both of the clients and
on the server. All these structures are updated concurrently as clauses
are added and removed.
server/diplhand.c
Calls treaty_evaluate function if such is set for AI player.
**************************************************************************/
static void call_treaty_evaluate(struct player *pplayer, struct player *aplayer,
struct Treaty *ptreaty)
struct treaty *ptreaty)
{
if (is_ai(pplayer)) {
CALL_PLR_AI_FUNC(treaty_evaluate, pplayer, pplayer, aplayer, ptreaty);
......
Calls treaty_accepted function if such is set for AI player.
**************************************************************************/
static void call_treaty_accepted(struct player *pplayer, struct player *aplayer,
struct Treaty *ptreaty)
struct treaty *ptreaty)
{
if (is_ai(pplayer)) {
CALL_PLR_AI_FUNC(treaty_accepted, pplayer, pplayer, aplayer, ptreaty);
......
agreed clauses.
**************************************************************************/
void handle_diplomacy_accept_treaty_req(struct player *pplayer,
int counterpart)
int counterpart)
{
struct Treaty *ptreaty;
struct treaty *ptreaty;
bool *player_accept, *other_accept;
enum dipl_reason diplcheck;
bool worker_refresh_required = FALSE;
......
Handle request to remove clause from treaty.
**************************************************************************/
void handle_diplomacy_remove_clause_req(struct player *pplayer,
int counterpart, int giver,
enum clause_type type, int value)
int counterpart, int giver,
enum clause_type type, int value)
{
struct Treaty *ptreaty;
struct treaty *ptreaty;
struct player *pgiver = player_by_number(giver);
struct player *pother = player_by_number(counterpart);
......
Handle request to add clause to treaty between two players.
**************************************************************************/
void handle_diplomacy_create_clause_req(struct player *pplayer,
int counterpart, int giver,
enum clause_type type, int value)
int counterpart, int giver,
enum clause_type type, int value)
{
struct Treaty *ptreaty;
struct treaty *ptreaty;
struct player *pgiver = player_by_number(giver);
struct player *pother = player_by_number(counterpart);
......
this with input directly from untrusted source.
**************************************************************************/
static void really_diplomacy_cancel_meeting(struct player *pplayer,
struct player *pother)
struct player *pother)
{
struct Treaty *ptreaty = find_treaty(pplayer, pother);
struct treaty *ptreaty = find_treaty(pplayer, pother);
if (ptreaty) {
dlsend_packet_diplomacy_cancel_meeting(pother->connections,
......
Handle meeting opening request.
**************************************************************************/
void handle_diplomacy_init_meeting_req(struct player *pplayer,
int counterpart)
int counterpart)
{
struct player *pother = player_by_number(counterpart);
......
}
if (could_meet_with_player(pplayer, pother)) {
struct Treaty *ptreaty;
struct treaty *ptreaty;
ptreaty = fc_malloc(sizeof(*ptreaty));
init_treaty(ptreaty, pplayer, pother);
......
return;
}
players_iterate(other) {
struct Treaty *ptreaty = find_treaty(pplayer, other);
struct treaty *ptreaty = find_treaty(pplayer, other);
if (ptreaty) {
fc_assert_action(pplayer != other, continue);
......
**************************************************************************/
void reject_all_treaties(struct player *pplayer)
{
struct Treaty* treaty;
struct treaty *treaty;
players_iterate(pplayer2) {
treaty = find_treaty(pplayer, pplayer2);
if (!treaty) {
if (treaty == nullptr) {
continue;
}
treaty->accept0 = FALSE;
server/diplhand.h
/* server */
#include <hand_gen.h> /* <> so looked from the build directory first. */
struct Treaty;
struct packet_diplomacy_info;
struct connection;
server/savegame/savegame2.c
if (p0 == NULL || p1 == NULL) {
log_error("Treaty between unknown players %s and %s", plr0, plr1);
} else {
struct Treaty *ptreaty = fc_malloc(sizeof(*ptreaty));
struct treaty *ptreaty = fc_malloc(sizeof(*ptreaty));
init_treaty(ptreaty, p0, p1);
treaty_add(ptreaty);
server/savegame/savegame3.c
if (p0 == NULL || p1 == NULL) {
log_error("Treaty between unknown players %s and %s", plr0, plr1);
} else {
struct Treaty *ptreaty = fc_malloc(sizeof(*ptreaty));
struct treaty *ptreaty = fc_malloc(sizeof(*ptreaty));
init_treaty(ptreaty, p0, p1);
treaty_add(ptreaty);
......
/************************************************************************//**
Save '[treaty_xxx]'.
****************************************************************************/
static void treaty_save(struct Treaty *ptr, void *data_in)
static void treaty_save(struct treaty *ptr, void *data_in)
{
char tpath[512];
int cidx = 0;
    (1-1/1)