Title here
Summary here
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}