package com.tiedup.remake.entities.damsel.components;

import net.minecraft.world.level.Level;

/**
 * Interface for animation controller callbacks to EntityDamsel.
 * Provides access to entity state and methods needed by animation systems.
 *
 */
public interface IAnimationHost {
    // LEVEL ACCESS

    /**
     * Get the entity's level/world.
     */
    Level level();

    // BODY ROTATION ACCESS

    /**
     * Get current body rotation Y.
     */
    float getYBodyRot();

    /**
     * Set body rotation Y.
     */
    void setYBodyRot(float rot);

    /**
     * Get previous body rotation Y.
     */
    float getYBodyRotO();

    /**
     * Set previous body rotation Y.
     */
    void setYBodyRotO(float rot);

    // POSE STATE QUERIES

    /**
     * Check if entity is in "dog pose" (hogtied with armbinder).
     * This is determined by bondage manager.
     */
    boolean isDogPose();

    /**
     * Check if entity is sitting (from synced entity data).
     */
    boolean isSittingFromData();

    /**
     * Set sitting state (to synced entity data).
     */
    void setSittingToData(boolean sitting);

    /**
     * Check if entity is kneeling (from synced entity data).
     */
    boolean isKneelingFromData();

    /**
     * Set kneeling state (to synced entity data).
     */
    void setKneelingToData(boolean kneeling);

    /**
     * Check if entity is struggling (from synced entity data).
     */
    boolean isStrugglingFromData();

    /**
     * Set struggling state (to synced entity data).
     */
    void setStrugglingToData(boolean struggling);
}
