From c45004b73bb045328a724d1d860df6d1515af6d4 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Fri, 23 May 2025 13:51:10 +0200 Subject: lib: split out header files --- lib/include/turnsmm/participant.hpp | 91 +++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 lib/include/turnsmm/participant.hpp (limited to 'lib/include/turnsmm/participant.hpp') 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 + * 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 +#include +#include +#include + +#include +#include + +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; + auto static create(Glib::ustring const & name, float priority, Disposition disposition) -> Glib::RefPtr; + + 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; + [[nodiscard]] auto property_active() noexcept -> Glib::PropertyProxy; + [[nodiscard]] auto property_defeated() const noexcept -> Glib::PropertyProxy_ReadOnly; + [[nodiscard]] auto property_defeated() noexcept -> Glib::PropertyProxy; + [[nodiscard]] auto property_disposition() const noexcept -> Glib::PropertyProxy_ReadOnly; + [[nodiscard]] auto property_disposition() noexcept -> Glib::PropertyProxy; + [[nodiscard]] auto property_name() const noexcept -> Glib::PropertyProxy_ReadOnly; + [[nodiscard]] auto property_name() noexcept -> Glib::PropertyProxy; + [[nodiscard]] auto property_priority() const noexcept -> Glib::PropertyProxy_ReadOnly; + [[nodiscard]] auto property_priority() noexcept -> Glib::PropertyProxy; + + 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; +} // namespace Glib + +#endif \ No newline at end of file -- cgit v1.2.3