LauncherGoDev/sysgo/UI/icon_pool.go
2021-10-20 01:34:36 +08:00

84 lines
1.6 KiB
Go

package UI
import (
"fmt"
"io/ioutil"
"log"
"strings"
"github.com/veandco/go-sdl2/sdl"
"github.com/cuu/gogame/image"
)
type IconPool struct {
GameShellIconPath string
Icons map[string]*sdl.Surface
}
func NewIconPool() *IconPool {
i := &IconPool{}
i.GameShellIconPath = SkinMap("sysgo/gameshell/icons/")
i.Icons = make(map[string]*sdl.Surface)
return i
}
func (self *IconPool) Init() {
files, err := ioutil.ReadDir(self.GameShellIconPath)
if err != nil {
log.Fatal(err)
return
}
for _, f := range files {
if f.IsDir() {
//pass
} else {
if strings.HasSuffix(f.Name(), ".png") == true {
keyname := strings.Split(f.Name(), ".")
if len(keyname) > 1 {
self.Icons[keyname[0]] = image.Load(self.GameShellIconPath + "/" + f.Name())
}
}
}
}
}
func (self *IconPool) GetImgSurf(keyname string) *sdl.Surface {
if _, ok := self.Icons[keyname]; ok {
return self.Icons[keyname]
} else {
icon_file := self.GameShellIconPath+"/"+keyname+".png"
if IsAFile(icon_file) {
self.Icons[keyname] = image.Load(icon_file)
return self.Icons[keyname]
}else {
fmt.Println("IconPool GetImgSurf ", keyname, " failed")
return nil
}
}
}
func (self *IconPool) Width(keyname string) int {
if _,ok := self.Icons[keyname]; ok {
return int(self.Icons[keyname].W)
}else {
fmt.Println("IconPool lookup ", keyname, " failed")
return 0
}
}
func (self *IconPool) Height(keyname string) int {
if _,ok := self.Icons[keyname]; ok {
return int(self.Icons[keyname].W)
}else {
fmt.Println("IconPool lookup ", keyname, " failed")
return 0
}
}
var MyIconPool *IconPool
// = NewIconPool()