File: SitRepEntry.h

package info (click to toggle)
freeorion 0.5.1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 194,940 kB
  • sloc: cpp: 186,508; python: 40,969; ansic: 1,164; xml: 719; makefile: 32; sh: 7
file content (108 lines) | stat: -rw-r--r-- 5,829 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#ifndef _SitRepEntry_h_
#define _SitRepEntry_h_

//! @file
//!     Declares the SitRepEntry calls and related factory functions.

#include "VarText.h"
#include "../universe/ConstantsFwd.h"

#include <string>
#include <vector>

#include "Export.h"

class ObjectMap;
class UniverseObject;
struct ScriptingContext;

//! Represents a situation report entry for a significant game event.
class FO_COMMON_API SitRepEntry final : public VarText {
public:
    SitRepEntry();

    SitRepEntry(const char* template_string, int turn, const char* icon,
                const char* label, bool stringtable_lookup);

    SitRepEntry(std::string&& template_string, int turn, std::string&& icon,
                std::string&& label, bool stringtable_lookup);

    [[nodiscard]] const std::string& GetDataString(const std::string& tag) const;
    [[nodiscard]] int                GetTurn() const noexcept        { return m_turn; }
    [[nodiscard]] const std::string& GetIcon() const noexcept        { return m_icon; }
    [[nodiscard]] const std::string& GetLabelString() const noexcept { return m_label; }
    [[nodiscard]] std::string        Dump() const;

private:
    int         m_turn = INVALID_GAME_TURN;
    std::string m_icon;
    std::string m_label;

    friend class boost::serialization::access;
    template <typename Archive>
    void serialize(Archive& ar, const unsigned int version);
};

//! @name SitRepEntry factories
//!
//! Factory functions to create SitRepEntry(s) for specific situation report
//! events.
//!
//! @{
[[nodiscard]] SitRepEntry CreateTechResearchedSitRep(std::string tech_name, int current_turn);
[[nodiscard]] SitRepEntry CreateShipBuiltSitRep(int ship_id, int system_id, int shipdesign_id, int current_turn);
[[nodiscard]] SitRepEntry CreateShipBlockBuiltSitRep(int system_id, int shipdesign_id, int number, int current_turn);
[[nodiscard]] SitRepEntry CreateBuildingBuiltSitRep(int building_id, int planet_id, int current_turn);

[[nodiscard]] SitRepEntry CreateTechUnlockedSitRep(std::string tech_name, int current_turn);
[[nodiscard]] SitRepEntry CreatePolicyUnlockedSitRep(std::string policy_name, int current_turn);
[[nodiscard]] SitRepEntry CreateBuildingTypeUnlockedSitRep(std::string building_type_name, int current_turn);
[[nodiscard]] SitRepEntry CreateShipHullUnlockedSitRep(std::string ship_hull_name, int current_turn);
[[nodiscard]] SitRepEntry CreateShipPartUnlockedSitRep(std::string ship_part_name, int current_turn);

[[nodiscard]] FO_COMMON_API SitRepEntry CreateCombatSitRep(int system_id, int log_id, int empire_id, int current_turn);
[[nodiscard]] FO_COMMON_API SitRepEntry CreateGroundCombatSitRep(int planet_id, int empire_id, int current_turn);
[[nodiscard]] FO_COMMON_API SitRepEntry CreatePlanetCapturedSitRep(int planet_id, int empire_id, int current_turn);
[[nodiscard]] FO_COMMON_API SitRepEntry CreatePlanetRebelledSitRep(int planet_id, int empire_id, int current_turn);
[[nodiscard]] FO_COMMON_API SitRepEntry CreateCombatDamagedObjectSitRep(
    const UniverseObject* obj, int combat_system_id, int empire_id, int current_turn);
[[nodiscard]] FO_COMMON_API SitRepEntry CreateCombatDestroyedObjectSitRep(
    const UniverseObject* obj, int combat_system_id, int empire_id, int current_turn);
[[nodiscard]] SitRepEntry               CreatePlanetDepopulatedSitRep(int planet_id, int current_turn);
[[nodiscard]] FO_COMMON_API SitRepEntry CreatePlanetAnnexedSitRep(int planet_id, int original_owner_id, int annexer_empire_id, int current_turn);
[[nodiscard]] FO_COMMON_API SitRepEntry CreatePlanetColonizedSitRep(int planet_id, std::string species, int current_turn);
[[nodiscard]] FO_COMMON_API SitRepEntry CreatePlanetOutpostedSitRep(int planet_id, int current_turn);
[[nodiscard]] FO_COMMON_API SitRepEntry CreatePlanetEstablishFailedSitRep(int planet_id, int ship_id, int current_turn);
[[nodiscard]] FO_COMMON_API SitRepEntry CreatePlanetEstablishFailedVisibleOtherSitRep(int planet_id, int ship_id, int other_empire_id, int current_turn);
[[nodiscard]] FO_COMMON_API SitRepEntry CreatePlanetEstablishFailedArmedSitRep(int planet_id, int ship_id, int other_empire_id, int current_turn);

[[nodiscard]] FO_COMMON_API SitRepEntry CreatePlanetGiftedSitRep(int planet_id, int empire_id, int current_turn);
[[nodiscard]] FO_COMMON_API SitRepEntry CreateFleetGiftedSitRep(int fleet_id, int empire_id, int current_turn);

[[nodiscard]] FO_COMMON_API SitRepEntry CreateFleetArrivedAtDestinationSitRep(
    int system_id, int fleet_id, int recipient_empire_id, const ScriptingContext& context);
[[nodiscard]] FO_COMMON_API SitRepEntry CreateFleetBlockadedSitRep(
    int system_id, int blockaded_fleet_id, int blockaded_empire_id,
    int blockading_empire_id, const ScriptingContext& context);
[[nodiscard]] FO_COMMON_API SitRepEntry CreateFleetBlockadedSitRep(
    int system_id, int blockaded_fleet_id, int blockaded_empire_id, const ScriptingContext& context);

[[nodiscard]] SitRepEntry               CreateEmpireEliminatedSitRep(int empire_id, int current_turn);
[[nodiscard]] SitRepEntry               CreateVictorySitRep(std::string reason_string, int empire_id, int current_turn);
[[nodiscard]] FO_COMMON_API SitRepEntry CreateSitRep(std::string template_string, int turn,
                                                     std::string icon,
                                                     std::vector<std::pair<std::string, std::string>> parameters,
                                                     std::string label = "", bool stringtable_lookup = true);
//! @}

template <typename Archive>
void SitRepEntry::serialize(Archive& ar, const unsigned int version)
{
    ar  & BOOST_SERIALIZATION_BASE_OBJECT_NVP(VarText)
        & BOOST_SERIALIZATION_NVP(m_turn)
        & BOOST_SERIALIZATION_NVP(m_icon)
        & BOOST_SERIALIZATION_NVP(m_label);
}


#endif