/
assets.go
72 lines (58 loc) · 1.57 KB
/
assets.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
package main
import (
"fmt"
"github.com/veandco/go-sdl2/img"
"github.com/veandco/go-sdl2/sdl"
)
type ImagePair struct {
surface *sdl.Surface
texture *sdl.Texture
}
type AssetsMgr struct {
images map[string]*ImagePair
}
var _AssetsMgr *AssetsMgr
func GetAssetsMgr() *AssetsMgr {
if _AssetsMgr == nil {
_AssetsMgr = &AssetsMgr{
images: make(map[string]*ImagePair),
}
}
return _AssetsMgr
}
func (assets *AssetsMgr) PreLoad(render *sdl.Renderer) {
assets.load(render, "assets/map/0.png")
assets.load(render, "assets/map/1.png")
assets.load(render, "assets/map/2.png")
assets.load(render, "assets/map/3.png")
assets.load(render, "assets/user/1.png")
assets.load(render, "assets/user/2.png")
assets.load(render, "assets/user/3.png")
assets.load(render, "assets/user/4.png")
assets.load(render, "assets/user/5.png")
assets.load(render, "assets/user/6.png")
assets.load(render, "assets/user/7.png")
assets.load(render, "assets/user/8.png")
assets.load(render, "assets/cursor.png")
assets.load(render, "assets/question.jpg")
assets.load(render, "assets/attack.png")
// assets.load(render, "assets/circle.png")
}
func (assets *AssetsMgr) load(render *sdl.Renderer, path string) {
surface, err := img.Load(path)
if err != nil {
panic(err)
}
texture, err := render.CreateTextureFromSurface(surface)
if err != nil {
panic(err)
}
assets.images[path] = &ImagePair{surface, texture}
}
func (assets *AssetsMgr) GetImagePair(path string) *ImagePair {
image, ok := assets.images[path]
if !ok {
panic(fmt.Sprintf("resource %v not exist", path))
}
return image
}