Files
survive/elements/cloud.go
2024-11-16 12:31:22 -05:00

63 lines
1.3 KiB
Go

package elements
import (
"math"
"mover/assets"
"mover/gamedata"
"github.com/hajimehoshi/ebiten/v2"
)
type Cloud struct {
Sprite *ebiten.Image
position gamedata.Coordinates
angle float64
velocity float64
Alpha float64
}
func NewCloud(a gamedata.Area, angle, velocity float64) *Cloud {
c := &Cloud{
Sprite: ebiten.NewImage(a.Width, a.Height),
angle: angle, //rand.Float64() * (math.Pi * 2),
velocity: velocity,
}
return c
}
func (c *Cloud) Update() error {
c.position.X += c.velocity * math.Cos(c.angle)
c.position.Y += c.velocity * math.Sin(c.angle)
return nil
}
func (c *Cloud) Draw() {
c.Sprite.Clear()
//c.Sprite.Fill(color.RGBA{R: 0xff, G: 0xff, B: 0xff, A: 0xff})
//c.Sprite.Fill(color.White)
cloudsprite := assets.ImageBank[assets.Cloud]
spritex := cloudsprite.Bounds().Dx()
spritey := cloudsprite.Bounds().Dy()
cloudx := c.Sprite.Bounds().Dx()
cloudy := c.Sprite.Bounds().Dy()
scalex := float64(cloudx) / float64(spritex)
scaley := float64(cloudy) / float64(spritey)
op := &ebiten.DrawImageOptions{}
op.GeoM.Scale(scalex, scaley)
c.Sprite.DrawImage(assets.ImageBank[assets.Cloud], op)
}
func (c *Cloud) SetPosition(p gamedata.Coordinates) {
c.position = p
}
func (c *Cloud) GetPosition() gamedata.Coordinates {
return c.position
}