YouDunIt/modules/you_done_it/pinned_photo.h

37 lines
1.1 KiB
C++

#pragma once
#include "core/input/input_event.h"
#include "scene/2d/mesh_instance_2d.h"
#include "scene/2d/physics/animatable_body_2d.h"
#include "scene/main/viewport.h"
#include "you_done_it/ydi_networking.h"
class ConclusionField;
class PinnedPhoto : public AnimatableBody2D {
GDCLASS(PinnedPhoto, AnimatableBody2D);
static void _bind_methods();
void enter_tree();
void on_child_entered_tree(Node *node);
void process(double delta);
void on_input_event(Viewport *viewport, Ref<InputEvent> event, int shape);
protected:
virtual void unhandled_input(Ref<InputEvent> const &event) override;
void _notification(int what);
public:
void push_conclusion_slot(ConclusionField *field);
void pull_conclusion_slot(ConclusionField *field);
void set_can_drop(bool value);
bool get_can_drop() const;
void set_clue(NetworkData::ClueID id);
NetworkData::ClueID get_clue() const;
private:
MeshInstance2D *photo_mesh{ nullptr };
NetworkData::ClueID clue{ NetworkData::CLUE_MAX };
bool can_drop{ false };
bool is_held{ false };
ConclusionField *conclusion_field{};
Vector<ConclusionField *> near_fields{};
};