2024-04-19 16:56:43 +03:00
|
|
|
package util
|
|
|
|
|
|
|
|
type Position struct {
|
|
|
|
x int
|
|
|
|
y int
|
|
|
|
}
|
|
|
|
|
2024-04-27 22:32:05 +03:00
|
|
|
func PositionAt(x int, y int) Position {
|
2024-04-19 16:56:43 +03:00
|
|
|
return Position{int(x), int(y)}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (p Position) X() int {
|
|
|
|
return p.x
|
|
|
|
}
|
|
|
|
|
|
|
|
func (p Position) Y() int {
|
|
|
|
return p.y
|
|
|
|
}
|
|
|
|
|
2024-04-24 17:11:33 +03:00
|
|
|
func (p Position) XY() (int, int) {
|
|
|
|
return p.x, p.y
|
|
|
|
}
|
|
|
|
|
2024-04-27 22:32:05 +03:00
|
|
|
func (p Position) WithOffset(xOffset int, yOffset int) Position {
|
|
|
|
p.x = p.x + xOffset
|
|
|
|
p.y = p.y + yOffset
|
|
|
|
return p
|
2024-04-24 17:11:33 +03:00
|
|
|
}
|
|
|
|
|
2024-04-19 16:56:43 +03:00
|
|
|
type Size struct {
|
|
|
|
width int
|
|
|
|
height int
|
|
|
|
}
|
|
|
|
|
2024-04-27 22:32:05 +03:00
|
|
|
func SizeOf(width int, height int) Size {
|
2024-04-19 16:56:43 +03:00
|
|
|
return Size{int(width), int(height)}
|
|
|
|
}
|
|
|
|
|
2024-04-27 22:32:05 +03:00
|
|
|
func SizeOfInt(width int, height int) Size {
|
|
|
|
return Size{width, height}
|
|
|
|
}
|
|
|
|
|
2024-04-19 16:56:43 +03:00
|
|
|
func (s Size) Width() int {
|
|
|
|
return s.width
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s Size) Height() int {
|
|
|
|
return s.height
|
|
|
|
}
|
2024-04-24 17:11:33 +03:00
|
|
|
|
2024-04-27 22:32:05 +03:00
|
|
|
func (s Size) WH() (int, int) {
|
|
|
|
return s.width, s.height
|
2024-04-24 17:11:33 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
func LimitIncrement(i int, limit int) int {
|
|
|
|
if (i + 1) > limit {
|
|
|
|
return i
|
|
|
|
}
|
|
|
|
|
|
|
|
return i + 1
|
|
|
|
}
|
|
|
|
|
|
|
|
func LimitDecrement(i int, limit int) int {
|
|
|
|
if (i - 1) < limit {
|
|
|
|
return i
|
|
|
|
}
|
|
|
|
|
|
|
|
return i - 1
|
|
|
|
}
|