From 7d1ae226bca87c9c70ce3bd62c9dca3e2a144525 Mon Sep 17 00:00:00 2001 From: Sara Date: Fri, 17 Oct 2025 23:12:10 +0200 Subject: [PATCH] feat: defined clue data resource --- modules/you_done_it/clue_data.cpp | 46 +++++++++++++++++++++++++++++++ modules/you_done_it/clue_data.h | 26 +++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 modules/you_done_it/clue_data.cpp create mode 100644 modules/you_done_it/clue_data.h diff --git a/modules/you_done_it/clue_data.cpp b/modules/you_done_it/clue_data.cpp new file mode 100644 index 00000000..0fd87642 --- /dev/null +++ b/modules/you_done_it/clue_data.cpp @@ -0,0 +1,46 @@ +#include "clue_data.h" +#include "you_done_it/macros.h" +#include "you_done_it/ydi_client.h" +#include + +void ClueData::_bind_methods() { + BIND_HPROPERTY(Variant::INT, id, PROPERTY_HINT_ENUM, NetworkData::ClueID_hint()); +} + +void ClueData::set_revealed(bool value) { + this->revealed = value; +} + +void ClueData::set_id(NetworkData::ClueID id) { + this->id = id; +} + +NetworkData::ClueID ClueData::get_id() const { + return this->id; +} + +void ClueData::reveal() { + if (this->id == NetworkData::CLUE_MAX) { + print_error("Attempt to reveal CLUE_MAX, invalid state, aborting"); + abort(); + } + if (this->revealed) { + print_error("Attempt to reveal clue that's already revealed, returning without action"); + return; + } + this->revealed = true; + ydi::client::send::reveal_clue(this->id); +} + +bool ClueData::get_revealed() const { + return this->revealed; +} + +void ClueData::set_image(Ref image) { + this->image = image; + // TODO: Sync to server +} + +Ref ClueData::get_image() const { + return this->image; +} diff --git a/modules/you_done_it/clue_data.h b/modules/you_done_it/clue_data.h new file mode 100644 index 00000000..62547959 --- /dev/null +++ b/modules/you_done_it/clue_data.h @@ -0,0 +1,26 @@ +#pragma once + +#include "you_done_it/ydi_networking.h" +#include +#include + +class ClueData : public Resource { + GDCLASS(ClueData, Resource); + static void _bind_methods(); + +protected: + void set_revealed(bool value); + +public: + void set_id(NetworkData::ClueID id); + NetworkData::ClueID get_id() const; + void reveal(); + bool get_revealed() const; + void set_image(Ref image); + Ref get_image() const; + +private: + NetworkData::ClueID id{ NetworkData::CLUE_MAX }; + bool revealed{ false }; + Ref image{}; +};