#ifndef EDITSCENE_ACTUATOR_HPP
#define EDITSCENE_ACTUATOR_HPP
#pragma once

#include <Ogre.h>
#include <vector>
#include <string>

/**
 * Actuator component.
 *
 * An interactive object visible only to the player character.
 * When the player is within radius + height range, an on-screen
 * prompt appears and the action can be triggered with the action key.
 *
 * Unlike SmartObject, Actuators do not use pathfinding or path
 * following — they are instantaneous interactions.
 */
struct ActuatorComponent {
	// Interaction radius in XZ plane
	float radius = 1.5f;

	// Maximum height difference for interaction
	float height = 1.8f;

	// Names of GOAP actions (from ActionDatabase) that this actuator provides
	std::vector<Ogre::String> actionNames;

	// Runtime: cooldown timer (seconds remaining)
	float cooldownTimer = 0.0f;

	// Runtime: currently executing an action
	bool isExecuting = false;

	ActuatorComponent() = default;

	explicit ActuatorComponent(float radius_, float height_)
		: radius(radius_)
		, height(height_)
	{
	}
};

#endif // EDITSCENE_ACTUATOR_HPP
