1 #ifndef _Diplomacy_h_
2 #define _Diplomacy_h_
3 
4 #include <string>
5 #include <boost/serialization/access.hpp>
6 
7 #include "../universe/Enums.h"
8 #include "../util/Export.h"
9 
10 class FO_COMMON_API DiplomaticMessage {
11 public:
12     enum DiplomaticMessageType : int {
13         INVALID_DIPLOMATIC_MESSAGE_TYPE = -1,
14         WAR_DECLARATION,
15         PEACE_PROPOSAL,
16         ACCEPT_PEACE_PROPOSAL,
17         ALLIES_PROPOSAL,
18         ACCEPT_ALLIES_PROPOSAL,
19         END_ALLIANCE_DECLARATION,
20         CANCEL_PROPOSAL,
21         REJECT_PROPOSAL
22     };
23 
24     DiplomaticMessage();
25     DiplomaticMessage(int sender_empire_id, int recipient_empire_id, DiplomaticMessageType type);
26 
GetType()27     DiplomaticMessageType   GetType() const { return m_type; }
SenderEmpireID()28     int                     SenderEmpireID() const { return m_sender_empire; }
RecipientEmpireID()29     int                     RecipientEmpireID() const { return m_recipient_empire; }
30     std::string             Dump() const;
31     bool                    IsAllowed() const; ///< Tells if this dimplomatic message allowed by game rules
32 
33 private:
34     int                     m_sender_empire;
35     int                     m_recipient_empire;
36     DiplomaticMessageType   m_type;
37 
38     friend class boost::serialization::access;
39     template <typename Archive>
40     void serialize(Archive& ar, const unsigned int version);
41 };
42 
43 struct FO_COMMON_API DiplomaticStatusUpdateInfo {
44     DiplomaticStatusUpdateInfo();
45     DiplomaticStatusUpdateInfo(int empire1_id_, int empire2_id_, DiplomaticStatus status);
46     int                 empire1_id;
47     int                 empire2_id;
48     DiplomaticStatus    diplo_status;
49 };
50 
51 bool operator==(const DiplomaticMessage& lhs, const DiplomaticMessage& rhs);
52 bool operator!=(const DiplomaticMessage& lhs, const DiplomaticMessage& rhs);
53 
54 FO_COMMON_API DiplomaticMessage WarDeclarationDiplomaticMessage(int sender_empire_id, int recipient_empire_id);
55 FO_COMMON_API DiplomaticMessage PeaceProposalDiplomaticMessage(int sender_empire_id, int recipient_empire_id);
56 FO_COMMON_API DiplomaticMessage AcceptPeaceDiplomaticMessage(int sender_empire_id, int recipient_empire_id);
57 FO_COMMON_API DiplomaticMessage AlliesProposalDiplomaticMessage(int sender_empire_id, int recipient_empire_id);
58 FO_COMMON_API DiplomaticMessage AcceptAlliesDiplomaticMessage(int sender_empire_id, int recipient_empire_id);
59 FO_COMMON_API DiplomaticMessage EndAllianceDiplomaticMessage(int sender_empire_id, int recipient_empire_id);
60 FO_COMMON_API DiplomaticMessage CancelDiplomaticMessage(int sender_empire_id, int recipient_empire_id);
61 FO_COMMON_API DiplomaticMessage RejectProposalDiplomaticMessage(int sender_empire_id, int recipient_empire_id);
62 
63 #endif // _Diplomacy_h_
64