package oscx

import (
	"github.com/hypebeast/go-osc/osc"
)

type Client struct {
	o *osc.Client
}

func New(host string, port int) *Client {
	return &Client{
		o: osc.NewClient(host, port),
	}
}

// StartCue 播放节目
func (c *Client) StartCue(data string) error {
	msg := osc.NewMessage("/beyond/general/StartCue", data)
	return c.o.Send(msg)
}

// EnableLaserOutput 打开激光
func (c *Client) EnableLaserOutput() error {
	msg := osc.NewMessage("/beyond/general/EnableLaserOutput")
	return c.o.Send(msg)
}

// DisableLaserOutput 关闭激光
func (c *Client) DisableLaserOutput() error {
	msg := osc.NewMessage("/beyond/general/DisableLaserOutput")
	return c.o.Send(msg)
}

// SetLaserOutput 设置激光输出
func (c *Client) SetLaserOutput(data string) error {
	msg := osc.NewMessage("/beyond/general/SetLaserOutput", data)
	return c.o.Send(msg)
}

// SetLaserOutputColor 设置激光颜色
func (c *Client) SetLaserOutputColor(data string) error {
	msg := osc.NewMessage("/beyond/general/SetLaserOutputColor", data)
	return c.o.Send(msg)
}

// SetLaserOutputIntensity 设置激光强度
func (c *Client) SetLaserOutputIntensity(data string) error {
	msg := osc.NewMessage("/beyond/general/SetLaserOutputIntensity", data)
	return c.o.Send(msg)
}

// SetLaserOutputPosition 设置激光位置
func (c *Client) SetLaserOutputPosition(data string) error {
	msg := osc.NewMessage("/beyond/general/SetLaserOutputPosition", data)
	return c.o.Send(msg)
}

// SetLaserOutputSize 设置激光尺寸
func (c *Client) SetLaserOutputSize(data string) error {
	msg := osc.NewMessage("/beyond/general/SetLaserOutputSize", data)
	return c.o.Send(msg)
}

// SetLaserOutputSpeed 设置激光速度
func (c *Client) SetLaserOutputSpeed(data string) error {
	msg := osc.NewMessage("/beyond/general/SetLaserOutputSpeed", data)
	return c.o.Send(msg)
}

// Status 获取状态
func (c *Client) Status() error {
	msg := osc.NewMessage("/beyond/general/Status")
	return c.o.Send(msg)
}
