feat: started implementing animations and also added counters for draw frames and frames.
This commit is contained in:
parent
ab406b1249
commit
60cd4e9e75
4 changed files with 78 additions and 6 deletions
34
animation.go
Normal file
34
animation.go
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
package gg
|
||||||
|
|
||||||
|
import (
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Animation struct {
|
||||||
|
Frames []*Image
|
||||||
|
}
|
||||||
|
|
||||||
|
type AnimationId int
|
||||||
|
type AnimationSet map[AnimationId] *Animation
|
||||||
|
|
||||||
|
// The type implements animated sprites.
|
||||||
|
type AnimatedSprite struct {
|
||||||
|
Sprite
|
||||||
|
Animations AnimationSet
|
||||||
|
AnimationId AnimationId
|
||||||
|
CurrentFrame int
|
||||||
|
TimeBetweenFrames time.Duration
|
||||||
|
}
|
||||||
|
|
||||||
|
func (as *AnimatedSprite) Animate(id AnimationId) bool {
|
||||||
|
_, ok := as.Animations[id]
|
||||||
|
if ok {
|
||||||
|
as.AnimationId = id
|
||||||
|
}
|
||||||
|
return ok
|
||||||
|
}
|
||||||
|
|
||||||
|
func (as *AnimatedSprite) Draw(c *Context) []EVertex {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
|
@ -23,6 +23,12 @@ func (d *Debug) Draw(c *Context) []gg.EVertex {
|
||||||
keyStrs = append(keyStrs, fmt.Sprintf(
|
keyStrs = append(keyStrs, fmt.Sprintf(
|
||||||
"fps: %d", int(c.Fps()),
|
"fps: %d", int(c.Fps()),
|
||||||
))
|
))
|
||||||
|
keyStrs = append(keyStrs, fmt.Sprintf(
|
||||||
|
"dframe: %d", int(c.Dframe()),
|
||||||
|
))
|
||||||
|
keyStrs = append(keyStrs, fmt.Sprintf(
|
||||||
|
"frame: %d", int(c.Frame()),
|
||||||
|
))
|
||||||
keyStrs = append(keyStrs, fmt.Sprintf(
|
keyStrs = append(keyStrs, fmt.Sprintf(
|
||||||
"relPlayerPos: %v", player.Position,
|
"relPlayerPos: %v", player.Position,
|
||||||
))
|
))
|
||||||
|
|
|
@ -4,8 +4,21 @@ import (
|
||||||
"vultras.su/core/gg"
|
"vultras.su/core/gg"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Text struct {
|
type Objecter interface{
|
||||||
gg.Text
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type Wrap[V Objecter] struct {
|
||||||
|
O V
|
||||||
|
}
|
||||||
|
|
||||||
|
//func (w *Wrap)
|
||||||
|
|
||||||
|
type Context2 struct {
|
||||||
|
*gg.Context
|
||||||
|
}
|
||||||
|
|
||||||
|
type Text Wrap[struct{
|
||||||
|
gg.Text
|
||||||
|
}]
|
||||||
|
|
||||||
//func (txt *Text) Update()
|
//func (txt *Text) Update()
|
||||||
|
|
27
engine.go
27
engine.go
|
@ -61,10 +61,12 @@ type Engine struct {
|
||||||
// If is set to nil then the engine will panic.
|
// If is set to nil then the engine will panic.
|
||||||
Camera *Camera
|
Camera *Camera
|
||||||
|
|
||||||
// The same delta time for all frames
|
|
||||||
// and all objects.
|
|
||||||
lastTime time.Time
|
lastTime time.Time
|
||||||
dt, fdt Float
|
dt Float
|
||||||
|
|
||||||
|
// Frame delta time.
|
||||||
|
fdt Float
|
||||||
|
fLastTime time.Time
|
||||||
|
|
||||||
// Temporary stuff
|
// Temporary stuff
|
||||||
keys, prevKeys []Key
|
keys, prevKeys []Key
|
||||||
|
@ -77,6 +79,12 @@ type Engine struct {
|
||||||
//bufs [LayerBufSize]*Image
|
//bufs [LayerBufSize]*Image
|
||||||
vertices map[Layer] []ebiten.Vertex
|
vertices map[Layer] []ebiten.Vertex
|
||||||
//vindices []uint16
|
//vindices []uint16
|
||||||
|
|
||||||
|
// Draw frame.
|
||||||
|
dframe uint
|
||||||
|
|
||||||
|
// Frame.
|
||||||
|
frame uint
|
||||||
}
|
}
|
||||||
|
|
||||||
type engine Engine
|
type engine Engine
|
||||||
|
@ -220,6 +228,7 @@ func (e *Engine) AbsCursorPosition() Vector {
|
||||||
|
|
||||||
func (e *engine) Update() error {
|
func (e *engine) Update() error {
|
||||||
eng := (*Engine)(e)
|
eng := (*Engine)(e)
|
||||||
|
e.fdt = time.Since(e.fLastTime).Seconds()
|
||||||
|
|
||||||
// Buffering the context for faster.
|
// Buffering the context for faster.
|
||||||
|
|
||||||
|
@ -293,7 +302,8 @@ func (e *engine) Update() error {
|
||||||
object.Input() <- c
|
object.Input() <- c
|
||||||
}
|
}
|
||||||
e.wg.Wait()
|
e.wg.Wait()
|
||||||
|
e.fLastTime = time.Now()
|
||||||
|
e.frame++
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -369,6 +379,7 @@ func (e *engine) Draw(img *ebiten.Image) {
|
||||||
// Empty the buff to generate it again.
|
// Empty the buff to generate it again.
|
||||||
eng.Camera.buffered = false
|
eng.Camera.buffered = false
|
||||||
e.lastTime = time.Now()
|
e.lastTime = time.Now()
|
||||||
|
e.dframe++
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *engine) Layout(ow, oh int) (int, int) {
|
func (e *engine) Layout(ow, oh int) (int, int) {
|
||||||
|
@ -384,11 +395,19 @@ func (e *Engine) Dt() Float {
|
||||||
return e.dt
|
return e.dt
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (e *Engine) Dframe() uint {
|
||||||
|
return e.dframe
|
||||||
|
}
|
||||||
|
|
||||||
// Return the current fixed delta time.
|
// Return the current fixed delta time.
|
||||||
func (e *Engine) Fdt() Float {
|
func (e *Engine) Fdt() Float {
|
||||||
return 1/60
|
return 1/60
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (e *Engine) Frame() uint {
|
||||||
|
return e.frame
|
||||||
|
}
|
||||||
|
|
||||||
func (e *Engine) Fps() float64 {
|
func (e *Engine) Fps() float64 {
|
||||||
return ebiten.ActualFPS()
|
return ebiten.ActualFPS()
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue