from dataclasses import dataclass
from enum import Enum

class MovementType(Enum):
    """Типы движений камеры"""
    ABSOLUTE = "absolute"
    CONTINUOUS = "continuous"
    RELATIVE = "relative"


@dataclass
class PTZPosition:
    """Позиция PTZ камеры"""
    pan: int = 0
    tilt: int = 0
    zoom: int = 0

    def to_dict(self) -> dict[str, int]:
        return {"pan": self.pan, "tilt": self.tilt, "zoom": self.zoom}

    @classmethod
    def from_dict(cls, data: dict[str, int]) -> 'PTZPosition':
        return cls(
            pan=data.get("pan", 0),
            tilt=data.get("tilt", 0),
            zoom=data.get("zoom", 1)
        )


@dataclass
class RCChannels:
    """RC каналы управления (аналогично дронам)"""
    throttle: int = 1500  # Канал 1 (1000-2000)
    roll: int = 1500  # Канал 2 (1000-2000)
    pitch: int = 1500  # Канал 3 (1000-2000)
    yaw: int = 1500  # Канал 4 (1000-2000)

    def normalize(self) -> tuple[float, float, float, float]:
        """Нормализация значений каналов в диапазон -1..1"""
        return (
            (self.throttle - 1500) / 500,  # -1..1
            (self.roll - 1500) / 500,  # -1..1
            (self.pitch - 1500) / 500,  # -1..1
            (self.yaw - 1500) / 500  # -1..1
        )
