mirror of
https://github.com/clockworkpi/LauncherGoDev.git
synced 2025-12-12 07:58:51 +01:00
84 lines
1.6 KiB
Go
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()
|