mirror of
https://github.com/clockworkpi/LauncherGoDev.git
synced 2025-12-12 16:08:52 +01:00
125 lines
2.3 KiB
Go
125 lines
2.3 KiB
Go
package UI
|
|
|
|
import (
|
|
"log"
|
|
|
|
"github.com/itchyny/volume-go"
|
|
"github.com/cuu/gogame/draw"
|
|
"github.com/cuu/gogame/rect"
|
|
//"github.com/cuu/gogame/color"
|
|
|
|
)
|
|
|
|
type SoundPatch struct {
|
|
AboveAllPatch
|
|
|
|
snd_segs [][2]int
|
|
Needle int
|
|
Parent *MainScreen
|
|
}
|
|
|
|
func NewSoundPatch() *SoundPatch {
|
|
p := &SoundPatch{}
|
|
p.PosX = Width /2
|
|
p.PosY = Height /2
|
|
p.Width = 50
|
|
p.Height = 120
|
|
|
|
p.FontObj = Fonts["veramono20"]
|
|
p.Color = MySkinManager.GiveColor("Text")
|
|
p.ValColor = MySkinManager.GiveColor("URL")
|
|
|
|
p.Icons = make( map[string]IconItemInterface )
|
|
|
|
p.Value = 0
|
|
|
|
p.snd_segs = [][2]int{ [2]int{0,20},[2]int{21,40},[2]int{41,50},
|
|
[2]int{51,60},[2]int{61,70},[2]int{71,85},
|
|
[2]int{86,90},[2]int{91,95},[2]int{96,100}}
|
|
|
|
|
|
return p
|
|
}
|
|
|
|
|
|
func (self *SoundPatch) Init() {
|
|
self.SetCanvasHWND(self.Parent.CanvasHWND)
|
|
}
|
|
|
|
func (self *SoundPatch) VolumeUp() int {
|
|
|
|
vol, err := volume.GetVolume()
|
|
if err != nil {
|
|
log.Printf("SoundPatch VolumeUp get volume failed: %+v", err)
|
|
vol = 0
|
|
}
|
|
|
|
for i,v := range self.snd_segs {
|
|
if vol >= v[0] && vol <= v[1] {
|
|
self.Needle = i
|
|
break
|
|
}
|
|
}
|
|
|
|
self.Needle += 1
|
|
|
|
if self.Needle > len(self.snd_segs) -1 {
|
|
self.Needle = len(self.snd_segs) -1
|
|
}
|
|
|
|
val := self.snd_segs[self.Needle][0] + (self.snd_segs[self.Needle][1] - self.snd_segs[self.Needle][0])/2
|
|
|
|
volume.SetVolume(val)
|
|
|
|
self.Value = self.snd_segs[self.Needle][1]
|
|
|
|
self.Parent.TitleBar.SetSoundVolume(val)
|
|
|
|
return self.Value
|
|
}
|
|
|
|
func (self *SoundPatch) VolumeDown() int {
|
|
vol, err := volume.GetVolume()
|
|
if err != nil {
|
|
log.Printf("SoundPatch VolumeDown get volume failed: %+v\n", err)
|
|
vol = 0
|
|
}
|
|
|
|
for i,v := range self.snd_segs {
|
|
if vol >= v[0] && vol <= v[1] {
|
|
self.Needle = i
|
|
break
|
|
}
|
|
}
|
|
|
|
self.Needle -= 1
|
|
|
|
if self.Needle < 0 {
|
|
self.Needle = 0
|
|
}
|
|
|
|
val := self.snd_segs[self.Needle][0]
|
|
|
|
if val < 0 {
|
|
val = 0
|
|
}
|
|
|
|
volume.SetVolume(val)
|
|
|
|
self.Value = val
|
|
|
|
self.Parent.TitleBar.SetSoundVolume(val)
|
|
|
|
return self.Value
|
|
|
|
}
|
|
|
|
func (self *SoundPatch) Draw() {
|
|
|
|
for i:=0;i< (self.Needle+1);i++ {
|
|
vol_rect := rect.Rect(80+i*20, self.Height/2+20,10, 40)
|
|
draw.AARoundRect(self.CanvasHWND,&vol_rect,MySkinManager.GiveColor("Front"),3,0,MySkinManager.GiveColor("Front"))
|
|
}
|
|
}
|
|
|