summaryrefslogtreecommitdiff
path: root/lib/include/turnsmm/participant.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/include/turnsmm/participant.hpp')
-rw-r--r--lib/include/turnsmm/participant.hpp91
1 files changed, 91 insertions, 0 deletions
diff --git a/lib/include/turnsmm/participant.hpp b/lib/include/turnsmm/participant.hpp
new file mode 100644
index 0000000..6dece0e
--- /dev/null
+++ b/lib/include/turnsmm/participant.hpp
@@ -0,0 +1,91 @@
+/*
+ * SPDX-FileCopyrightText: 2025 Felix Morgner <felix.morgner@gmail.com>
+ * SPDX-License-Identifier: LGPL-2.1-only
+ */
+
+#ifndef TURNSMM_PARTICIPANT_HPP
+#define TURNSMM_PARTICIPANT_HPP
+
+#include "turns-participant.h"
+#include "turnsmm/enum_helpers.hpp"
+
+#include <glibmm/object.h>
+#include <glibmm/propertyproxy.h>
+#include <glibmm/refptr.h>
+#include <glibmm/ustring.h>
+
+#include <glib-object.h>
+#include <glib.h>
+
+namespace Turns
+{
+
+ class Participant final : public Glib::Object
+ {
+ public:
+ using BaseClassType = TurnsParticipantClass;
+ using BaseObjectType = TurnsParticipant;
+ using CppClassType = class Participant_Class;
+ using CppObjectType = Participant;
+
+ enum struct Disposition : guint
+ {
+ Neutral,
+ Friendly,
+ Hostile,
+ Secret,
+ };
+
+ auto static get_base_type() -> GType;
+ auto static get_type() -> GType;
+
+ auto static create() -> Glib::RefPtr<Participant>;
+ auto static create(Glib::ustring const & name, float priority, Disposition disposition) -> Glib::RefPtr<Participant>;
+
+ Participant();
+ Participant(Glib::ustring const & name, float priority, Disposition disposition);
+
+ [[nodiscard]] auto gobj() noexcept -> BaseObjectType *;
+ [[nodiscard]] auto gobj() const -> BaseObjectType const *;
+ [[nodiscard]] auto gobj_copy() noexcept -> BaseObjectType *;
+
+ [[nodiscard]] auto get_active() const noexcept -> bool;
+ [[nodiscard]] auto get_defeated() const noexcept -> bool;
+ [[nodiscard]] auto get_disposition() const noexcept -> Disposition;
+ [[nodiscard]] auto get_id() const noexcept -> Glib::ustring;
+ [[nodiscard]] auto get_name() const -> Glib::ustring;
+ [[nodiscard]] auto get_priority() const noexcept -> float;
+
+ auto set_active(bool value) noexcept -> void;
+ auto set_defeated(bool value) noexcept -> void;
+ auto set_disposition(Disposition value) noexcept -> void;
+ auto set_name(Glib::ustring const & value) noexcept -> void;
+ auto set_priority(float value) noexcept -> void;
+
+ [[nodiscard]] auto property_active() const noexcept -> Glib::PropertyProxy_ReadOnly<bool>;
+ [[nodiscard]] auto property_active() noexcept -> Glib::PropertyProxy<bool>;
+ [[nodiscard]] auto property_defeated() const noexcept -> Glib::PropertyProxy_ReadOnly<bool>;
+ [[nodiscard]] auto property_defeated() noexcept -> Glib::PropertyProxy<bool>;
+ [[nodiscard]] auto property_disposition() const noexcept -> Glib::PropertyProxy_ReadOnly<Disposition>;
+ [[nodiscard]] auto property_disposition() noexcept -> Glib::PropertyProxy<Disposition>;
+ [[nodiscard]] auto property_name() const noexcept -> Glib::PropertyProxy_ReadOnly<Glib::ustring const &>;
+ [[nodiscard]] auto property_name() noexcept -> Glib::PropertyProxy<Glib::ustring const &>;
+ [[nodiscard]] auto property_priority() const noexcept -> Glib::PropertyProxy_ReadOnly<float>;
+ [[nodiscard]] auto property_priority() noexcept -> Glib::PropertyProxy<float>;
+
+ protected:
+ friend Participant_Class;
+
+ explicit Participant(BaseObjectType * gobj);
+ };
+
+} // namespace Turns
+
+namespace Glib
+{
+ TURNS_DECLARE_ENUM_VALUE_SPECIALIZATION(Participant::Disposition);
+
+ auto wrap(TurnsParticipant * object, bool copy = false) -> Glib::RefPtr<Turns::Participant>;
+} // namespace Glib
+
+#endif \ No newline at end of file