Sprite Sheet Animation

animation.go
 1package main
 2
 3import (
 4 "embed"
 5 "log"
 6
 7 "github.com/TheBitDrifter/bappa/blueprint"
 8 "github.com/TheBitDrifter/bappa/blueprint/client"
 9 "github.com/TheBitDrifter/bappa/coldbrew"
10 "github.com/TheBitDrifter/bappa/coldbrew/coldbrew_rendersystems"
11 "github.com/TheBitDrifter/bappa/tteokbokki/spatial"
12 "github.com/TheBitDrifter/bappa/warehouse"
13)
14
15//go:embed assets/*
16var assets embed.FS
17
18var idleAnimation = client.AnimationData{
19 Name:        "idle",
20 RowIndex:    0,
21 FrameCount:  6,
22 FrameWidth:  144,
23 FrameHeight: 116,
24 Speed:       8,
25}
26
27func main() {
28 client := coldbrew.NewClient(
29  320,
30  180,
31  10,
32  10,
33  10,
34  assets,
35 )
36
37 client.SetTitle("Animating a Sprite Sheet")
38
39 err := client.RegisterScene(
40  "Example Scene",
41  320,
42  180,
43  exampleScenePlan,
44  []coldbrew.RenderSystem{},
45  []coldbrew.ClientSystem{},
46  []blueprint.CoreSystem{},
47 )
48 if err != nil {
49  log.Fatal(err)
50 }
51
52 client.RegisterGlobalRenderSystem(coldbrew_rendersystems.GlobalRenderer{})
53
54 client.ActivateCamera()
55
56 if err := client.Start(); err != nil {
57  log.Fatal(err)
58 }
59}
60
61func exampleScenePlan(height, width int, sto warehouse.Storage) error {
62 spriteArchetype, err := sto.NewOrExistingArchetype(
63  spatial.Components.Position,
64  client.Components.SpriteBundle,
65 )
66 if err != nil {
67  return err
68 }
69 err = spriteArchetype.Generate(1,
70  spatial.NewPosition(90, 20),
71  client.NewSpriteBundle().
72   AddSprite("sprite_sheet.png", true).
73   WithAnimations(idleAnimation),
74 )
75 if err != nil {
76  return err
77 }
78 return nil
79}