@@ -9,112 +9,135 @@ import (
99)
1010
1111var (
12- fieldBuf [19213 ]byte
13- Field firefly.Image
14- fireflyHighlightBuf [262 ]byte
15- FireflyHighlight util.SpriteSheet
16- scrollBuf [16375 ]byte
17- ScrollClose util.SpriteSheet
18- ScrollOpen util.SpriteSheet
19- tournamentButtonBuf [3037 ]byte
20- TournamentButton util.SpriteSheet
21- trainButtonBuf [909 ]byte
22- TrainButton util.SpriteSheet
23- shopButtonBuf [629 ]byte
24- ShopButton util.SpriteSheet
25-
26- racingMapBuf [192013 ]byte
27- RacingMap firefly.Image
28- racingMapTreesBuf [192013 ]byte
29- RacingMapTrees firefly.Image
30- racingMapTreetopsBuf [192013 ]byte
31- RacingMapTreetops firefly.Image
32- racingMapCloudsBuf [32207 ]byte
33- RacingMapClouds util.SpriteSheet
34- racingMapMaskBuf [96007 ]byte
35- RacingMapMask util.ExtImage
36- racingPlaceBuf [1465 ]byte
37- RacingPlace util.SpriteSheet
38- victorySplashBuf [86407 ]byte
39- VictorySplash util.SpriteSheet
40- defeatSplashBuf [86407 ]byte
41- DefeatSplash util.SpriteSheet
42- fireflySheetBuf [213 ]byte
43- FireflySheet util.SpriteSheet
44- FireflySheetRev util.SpriteSheet
45-
46- fireflyHatsBuf [1933 ]byte
12+ buf [1036376 ]byte
13+
14+ Field firefly.Image
15+ FireflyHighlight util.SpriteSheet
16+ ScrollClose util.SpriteSheet
17+ ScrollOpen util.SpriteSheet
18+ TournamentButton util.SpriteSheet
19+ TrainButton util.SpriteSheet
20+ ShopButton util.SpriteSheet
21+
22+ RacingMap firefly.Image
23+ RacingMapTrees firefly.Image
24+ RacingMapTreetops firefly.Image
25+ RacingMapClouds util.SpriteSheet
26+ RacingMapMask util.ExtImage
27+ RacingPlace util.SpriteSheet
28+ VictorySplash util.SpriteSheet
29+ DefeatSplash util.SpriteSheet
30+ FireflySheet util.SpriteSheet
31+ FireflySheetRev util.SpriteSheet
32+
4733 FireflyHats util.SpriteSheet
4834 FireflyHatsRev util.SpriteSheet
4935
50- titleScreenBuf [38413 ]byte
51- TitleScreen util.SpriteSheet
52- titleButtonHighlightBuf [702 ]byte
53- TitleButtonHighlight util.SpriteSheet
54- titleNoContinueBuf [423 ]byte
55- TitleNoContinue firefly.Image
56-
57- shopBGBuf [9607 ]byte
58- ShopBG firefly.Image
59- shopFrogBuf [31693 ]byte
60- ShopFrog util.SpriteSheet
61- shopPropsBuf [23533 ]byte
62- ShopProps util.SpriteSheet
63- shopChatboxBuf [3073 ]byte
64- ShopChatbox firefly.Image
65- shopItemBuf [6061 ]byte
66- ShopItem util.SpriteSheet
67-
68- exitBuf [95 ]byte
69- Exit firefly.Image
70-
71- transitionSheetBuf [134 ]byte
72- TransitionSheet util.SpriteSheet
73-
74- cashBannerBuf [589 ]byte
75- CashBanner firefly.Image
76-
77- fontEG_6x9Buf [655 ]byte
78- FontEG_6x9 firefly.Font
79- fontPico8_4x6Buf [295 ]byte
80- FontPico8_4x6 firefly.Font
36+ TitleScreen util.SpriteSheet
37+ TitleButtonHighlight util.SpriteSheet
38+ TitleNoContinue firefly.Image
39+
40+ ShopBG firefly.Image
41+ ShopFrog util.SpriteSheet
42+ ShopProps util.SpriteSheet
43+ ShopChatbox firefly.Image
44+ ShopItem util.SpriteSheet
45+
46+ Exit firefly.Image
47+
48+ TransitionSheet util.SpriteSheet
49+
50+ CashBanner firefly.Image
51+
52+ FontEG_6x9 firefly.Font
53+ FontPico8_4x6 firefly.Font
8154)
8255
8356func Load () {
84- // firefly.LogDebug(strconv.Itoa(firefly.GetFileSize("firefly-hats")))
85- Field = firefly .LoadImage ("field" , fieldBuf [:])
86- FireflyHighlight = util .SplitImageBySize (firefly .LoadImage ("firefly-hi" , fireflyHighlightBuf [:]), firefly .S (32 , 32 ))
87- allHats := util .SplitImageBySize (firefly .LoadImage ("firefly-hats" , fireflyHatsBuf [:]), firefly .S (10 , 8 ))
57+ loader := Loader {buf : buf [:]}
58+
59+ Field = loader .LoadImage ("field" )
60+ FireflyHighlight = util .SplitImageBySize (loader .LoadImage ("firefly-hi" ), firefly .S (32 , 32 ))
61+ allHats := util .SplitImageBySize (loader .LoadImage ("firefly-hats" ), firefly .S (10 , 8 ))
8862 FireflyHats = allHats [:22 ]
8963 FireflyHatsRev = allHats [22 :]
90- ScrollClose = util .SplitImageByCount (firefly .LoadImage ("scroll" , scrollBuf [:] ), firefly .S (4 , 1 ))
64+ ScrollClose = util .SplitImageByCount (loader .LoadImage ("scroll" ), firefly .S (4 , 1 ))
9165 ScrollOpen = slices .Clone (ScrollClose )
9266 slices .Reverse (ScrollOpen )
93- TournamentButton = util .SplitImageByCount (firefly .LoadImage ("tournament-btn" , tournamentButtonBuf [:] ), firefly .S (7 , 1 ))
94- TrainButton = util .SplitImageBySize (firefly .LoadImage ("train-btn" , trainButtonBuf [:] ), firefly .S (61 , 14 ))
95- ShopButton = util .SplitImageBySize (firefly .LoadImage ("shop-btn" , shopButtonBuf [:] ), firefly .S (42 , 14 ))
96- RacingMap = firefly .LoadImage ("racing-map" , racingMapBuf [:] )
97- RacingMapTrees = firefly .LoadImage ("racing-map-trees" , racingMapTreesBuf [:] )
98- RacingMapTreetops = firefly .LoadImage ("racing-map-treetops" , racingMapTreetopsBuf [:] )
99- RacingMapClouds = util .SplitImageByCount (firefly .LoadImage ("racing-map-clouds" , racingMapCloudsBuf [:] ), firefly .S (2 , 1 ))
100- RacingMapMask = util . NewExtImage ( firefly . LoadFile ( "racing-map-mask" , racingMapMaskBuf [:]) )
101- RacingPlace = util .SplitImageBySize (firefly .LoadImage ("racing-place" , racingPlaceBuf [:] ), firefly .S (28 , 33 ))
102- VictorySplash = util .SplitImageByCount (firefly .LoadImage ("victory-splash" , victorySplashBuf [:] ), firefly .S (3 , 3 ))
103- DefeatSplash = util .SplitImageByCount (firefly .LoadImage ("defeat-splash" , defeatSplashBuf [:] ), firefly .S (3 , 3 ))
104- fireflyCombinedSheet := util .SplitImageBySize (firefly .LoadImage ("firefly" , fireflySheetBuf [:] ), firefly .S (9 , 10 ))
67+ TournamentButton = util .SplitImageByCount (loader .LoadImage ("tournament-btn" ), firefly .S (7 , 1 ))
68+ TrainButton = util .SplitImageBySize (loader .LoadImage ("train-btn" ), firefly .S (61 , 14 ))
69+ ShopButton = util .SplitImageBySize (loader .LoadImage ("shop-btn" ), firefly .S (42 , 14 ))
70+ RacingMap = loader .LoadImage ("racing-map" )
71+ RacingMapTrees = loader .LoadImage ("racing-map-trees" )
72+ RacingMapTreetops = loader .LoadImage ("racing-map-treetops" )
73+ RacingMapClouds = util .SplitImageByCount (loader .LoadImage ("racing-map-clouds" ), firefly .S (2 , 1 ))
74+ RacingMapMask = loader . LoadExtImage ( "racing-map-mask" )
75+ RacingPlace = util .SplitImageBySize (loader .LoadImage ("racing-place" ), firefly .S (28 , 33 ))
76+ VictorySplash = util .SplitImageByCount (loader .LoadImage ("victory-splash" ), firefly .S (3 , 3 ))
77+ DefeatSplash = util .SplitImageByCount (loader .LoadImage ("defeat-splash" ), firefly .S (3 , 3 ))
78+ fireflyCombinedSheet := util .SplitImageBySize (loader .LoadImage ("firefly" ), firefly .S (9 , 10 ))
10579 FireflySheet = fireflyCombinedSheet [0 :2 ]
10680 FireflySheetRev = fireflyCombinedSheet [2 :4 ]
107- TitleScreen = util .SplitImageByCount (firefly .LoadImage ("title-screen" , titleScreenBuf [:]), firefly .S (2 , 1 ))
108- TitleButtonHighlight = util .SplitImageByCount (firefly .LoadImage ("title-button-hi" , titleButtonHighlightBuf [:]), firefly .S (2 , 1 ))
109- TitleNoContinue = firefly .LoadImage ("title-no-continue" , titleNoContinueBuf [:])
110- ShopBG = firefly .LoadImage ("shop-bg" , shopBGBuf [:])
111- ShopFrog = util .SplitImageByCount (firefly .LoadImage ("shop-frog" , shopFrogBuf [:]), firefly .S (3 , 2 ))
112- ShopProps = util .SplitImageByCount (firefly .LoadImage ("shop-props" , shopPropsBuf [:]), firefly .S (3 , 2 ))
113- ShopChatbox = firefly .LoadImage ("shop-chatbox" , shopChatboxBuf [:])
114- ShopItem = util .SplitImageByCount (firefly .LoadImage ("shop-item" , shopItemBuf [:]), firefly .S (4 , 3 ))
115- TransitionSheet = util .SplitImageByCount (firefly .LoadImage ("transition" , transitionSheetBuf [:]), firefly .S (4 , 4 ))
116- Exit = firefly .LoadImage ("exit" , exitBuf [:])
117- CashBanner = firefly .LoadImage ("cash-banner" , cashBannerBuf [:])
118- FontEG_6x9 = firefly .LoadFont ("eg_6x9" , fontEG_6x9Buf [:])
119- FontPico8_4x6 = firefly .LoadFont ("pico8_4x6" , fontPico8_4x6Buf [:])
81+ TitleScreen = util .SplitImageByCount (loader .LoadImage ("title-screen" ), firefly .S (2 , 1 ))
82+ TitleButtonHighlight = util .SplitImageByCount (loader .LoadImage ("title-button-hi" ), firefly .S (2 , 1 ))
83+ TitleNoContinue = loader .LoadImage ("title-no-continue" )
84+ ShopBG = loader .LoadImage ("shop-bg" )
85+ ShopFrog = util .SplitImageByCount (loader .LoadImage ("shop-frog" ), firefly .S (3 , 2 ))
86+ ShopProps = util .SplitImageByCount (loader .LoadImage ("shop-props" ), firefly .S (3 , 2 ))
87+ ShopChatbox = loader .LoadImage ("shop-chatbox" )
88+ ShopItem = util .SplitImageByCount (loader .LoadImage ("shop-item" ), firefly .S (4 , 3 ))
89+ TransitionSheet = util .SplitImageByCount (loader .LoadImage ("transition" ), firefly .S (4 , 4 ))
90+ Exit = loader .LoadImage ("exit" )
91+ CashBanner = loader .LoadImage ("cash-banner" )
92+ FontEG_6x9 = loader .LoadFont ("eg_6x9" )
93+ FontPico8_4x6 = loader .LoadFont ("pico8_4x6" )
94+
95+ loader .AssertBufferFullyUtilized ()
96+ }
97+
98+ type Loader struct {
99+ buf []byte
100+ used int
101+ }
102+
103+ func (loader * Loader ) LoadFile (path string ) firefly.File {
104+ // Have to get the file size separately, even though LoadFile returns the size
105+ // https://github.com/firefly-zero/firefly-runtime/issues/7
106+ fileSize := firefly .GetFileSize (path )
107+ file := firefly .LoadFile (path , loader .buf [:fileSize ])
108+ written := len (file .Raw )
109+ loader .used += written
110+ loader .buf = loader .buf [written :]
111+ return file
112+ }
113+
114+ func (loader * Loader ) LoadImage (path string ) firefly.Image {
115+ return loader .LoadFile (path ).Image ()
116+ }
117+
118+ func (loader * Loader ) LoadExtImage (path string ) util.ExtImage {
119+ return util .NewExtImage (loader .LoadFile (path ))
120+ }
121+
122+ func (loader * Loader ) LoadFont (path string ) firefly.Font {
123+ return loader .LoadFile (path ).Font ()
124+ }
125+
126+ func (loader * Loader ) AssertBufferFullyUtilized () {
127+ var buf [100 ]byte
128+ n := copy (buf [:], "All assets loaded. Total size: " )
129+ n += util .FormatIntInto (buf [n :], loader .used )
130+ firefly .LogDebug (string (buf [:n ]))
131+
132+ if len (loader .buf ) > 0 {
133+ var buf [100 ]byte
134+ n := copy (buf [:], "Assets buffer should be smaller. Want: [" )
135+ n += util .FormatIntInto (buf [n :], loader .used )
136+ n += copy (buf [n :], "]byte, but got [" )
137+ n += util .FormatIntInto (buf [n :], loader .used + len (loader .buf ))
138+ n += copy (buf [n :], "]byte" )
139+ err := string (buf [:n ])
140+ firefly .LogError (err )
141+ panic ("assets.Loader: buffer was not fully utilized" )
142+ }
120143}
0 commit comments