mirror of
https://github.com/yeslayla/golang-game-framework.git
synced 2025-12-06 09:13:24 +01:00
Simple keyboard input & pause system
This commit is contained in:
70
sdl/texture2d.go
Normal file
70
sdl/texture2d.go
Normal file
@@ -0,0 +1,70 @@
|
||||
package sdl
|
||||
|
||||
import (
|
||||
"log"
|
||||
|
||||
"github.com/manleydev/golang-game-framework/core"
|
||||
"github.com/manleydev/golang-game-framework/rendering"
|
||||
"github.com/veandco/go-sdl2/sdl"
|
||||
)
|
||||
|
||||
type SdlTexture2D struct {
|
||||
texture *sdl.Texture
|
||||
}
|
||||
|
||||
func NewSdlTexture2D(renderer rendering.Renderer2D, bmpPath string) *SdlTexture2D {
|
||||
sdlRenderer, ok := renderer.(*SdlRenderer2D)
|
||||
if !ok {
|
||||
log.Print("Renderer is not an SDL renderer")
|
||||
return nil
|
||||
}
|
||||
|
||||
tex := SdlTexture2D{}
|
||||
surface, err := sdl.LoadBMP(bmpPath)
|
||||
if err != nil {
|
||||
log.Print("Failed to load bmp: ", err)
|
||||
return nil
|
||||
}
|
||||
defer surface.Free()
|
||||
|
||||
tex.texture, err = sdlRenderer.renderer.CreateTextureFromSurface(surface)
|
||||
if err != nil {
|
||||
log.Print("Failed to create SDL texture: ", err)
|
||||
return nil
|
||||
}
|
||||
|
||||
return &tex
|
||||
}
|
||||
|
||||
func (tex SdlTexture2D) GetCenter() core.Vector2 {
|
||||
_, _, width, height, err := tex.texture.Query()
|
||||
if err != nil {
|
||||
log.Print("Could not get texture center: ", err)
|
||||
return core.Vector2{}
|
||||
}
|
||||
|
||||
return core.Vector2{
|
||||
X: float64(width / 2),
|
||||
Y: float64(height / 2),
|
||||
}
|
||||
}
|
||||
|
||||
func (tex SdlTexture2D) GetRect() core.Rect2D {
|
||||
_, _, width, height, err := tex.texture.Query()
|
||||
if err != nil {
|
||||
log.Print("Could not get texture data: ", err)
|
||||
return core.Rect2D{}
|
||||
}
|
||||
return core.Rect2D{
|
||||
X: 0,
|
||||
Y: 0,
|
||||
W: float64(width),
|
||||
H: float64(height),
|
||||
}
|
||||
}
|
||||
|
||||
func (tex SdlTexture2D) Destroy() {
|
||||
if err := tex.texture.Destroy(); err != nil {
|
||||
log.Print("Failed to destroy SDL texture: ", err)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user