using MareSynchronos.API.Data.Enum;

namespace MareSynchronos.API.Data.Extensions;

public static class UserPermissionsExtensions
{
    public static bool IsPaired(this UserPermissions perm)
    {
        return perm.HasFlag(UserPermissions.Paired);
    }

    public static bool IsPaused(this UserPermissions perm)
    {
        return perm.HasFlag(UserPermissions.Paused);
    }

    public static bool IsDisableAnimations(this UserPermissions perm)
    {
        return perm.HasFlag(UserPermissions.DisableAnimations);
    }

    public static bool IsDisableSounds(this UserPermissions perm)
    {
        return perm.HasFlag(UserPermissions.DisableSounds);
    }

    public static bool IsDisableVFX(this UserPermissions perm)
    {
        return perm.HasFlag(UserPermissions.DisableVFX);
    }

    public static void SetPaired(this ref UserPermissions perm, bool paired)
    {
        if (paired) perm |= UserPermissions.Paired;
        else perm &= ~UserPermissions.Paired;
    }

    public static void SetPaused(this ref UserPermissions perm, bool paused)
    {
        if (paused) perm |= UserPermissions.Paused;
        else perm &= ~UserPermissions.Paused;
    }

    public static void SetDisableAnimations(this ref UserPermissions perm, bool set)
    {
        if (set) perm |= UserPermissions.DisableAnimations;
        else perm &= ~UserPermissions.DisableAnimations;
    }

    public static void SetDisableSounds(this ref UserPermissions perm, bool set)
    {
        if (set) perm |= UserPermissions.DisableSounds;
        else perm &= ~UserPermissions.DisableSounds;
    }

    public static void SetDisableVFX(this ref UserPermissions perm, bool set)
    {
        if (set) perm |= UserPermissions.DisableVFX;
        else perm &= ~UserPermissions.DisableVFX;
    }
}