// package coord -- координаты точки
package coord

import (
	"gitp78su.ipnodns.ru/svi/goarch/lev0/alias"
	"gitp78su.ipnodns.ru/svi/goarch/lev0/types"
)

// Coord -- координаты точки
type Coord struct {
	X_ alias.CoordX `yaml:"x"` // Координата X
	Y_ alias.CoordY `yaml:"y"` // Координата Y
}

// NewCoord -- возвращает новую координаты
func NewCoord(x alias.CoordX, y alias.CoordY) types.ICoord {
	sf := &Coord{
		X_: x,
		Y_: y,
	}
	return sf
}

// X -- возвращает координату X
func (sf *Coord) X() alias.CoordX {
	return sf.X_
}

// Y -- возвращает координату Y
func (sf *Coord) Y() alias.CoordY {
	return sf.Y_
}

// Coord -- возвращает координаты
func (sf *Coord) Coord() (alias.CoordX, alias.CoordY) {
	return sf.X_, sf.Y_
}

// Int -- возвращает целые координаты
func (sf *Coord) Int() (int, int) {
	return int(sf.X_), int(sf.Y_)
}

// Get -- возвращает целые координаты
func (sf *Coord) Get() (alias.CoordX, alias.CoordY) {
	return sf.X_, sf.Y_
}
