mirror of
https://github.com/clockworkpi/LauncherGoDev.git
synced 2025-12-12 07:58:51 +01:00
317 lines
6.0 KiB
Go
317 lines
6.0 KiB
Go
package Brightness
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"io/ioutil"
|
|
"strconv"
|
|
|
|
"github.com/veandco/go-sdl2/sdl"
|
|
|
|
"github.com/cuu/gogame/draw"
|
|
"github.com/cuu/gogame/event"
|
|
"github.com/cuu/gogame/rect"
|
|
"github.com/cuu/gogame/surface"
|
|
|
|
"github.com/clockworkpi/LauncherGoDev/sysgo"
|
|
"github.com/clockworkpi/LauncherGoDev/sysgo/UI"
|
|
)
|
|
|
|
type OnChangeCB_T func(int)
|
|
|
|
type SliderIcon struct {
|
|
UI.IconItem
|
|
Parent *BSlider
|
|
}
|
|
|
|
func NewSliderIcon() *SliderIcon {
|
|
p := &SliderIcon{}
|
|
p.MyType = UI.ICON_TYPES["EXE"]
|
|
p.Align = UI.ALIGN["VCenter"]
|
|
|
|
return p
|
|
}
|
|
|
|
func (self *SliderIcon) Draw() {
|
|
if self.Parent == nil {
|
|
fmt.Println("Error: SliderIcon Draw Parent nil")
|
|
return
|
|
}
|
|
parent_x, parent_y := self.Parent.Coord()
|
|
|
|
if self.Label != nil {
|
|
// lab_x,lab_y := self.Label.Coord()
|
|
lab_w, lab_h := self.Label.Size()
|
|
|
|
if self.Align == UI.ALIGN["VCenter"] {
|
|
// fmt.Println("IconItem Draw VCenter:",lab_w,lab_h,self.Label.GetText())
|
|
|
|
self.Label.NewCoord(self.PosX-lab_w/2+parent_x, self.PosY+self.Height/2+6+parent_y)
|
|
|
|
} else if self.Align == UI.ALIGN["HLeft"] {
|
|
self.Label.NewCoord(self.PosX+self.Width/2+3+parent_x, self.PosY-lab_h/2+parent_y)
|
|
}
|
|
|
|
self.Label.Draw()
|
|
}
|
|
|
|
if self.ImgSurf != nil {
|
|
surface.Blit(self.Parent.GetCanvasHWND(), self.ImgSurf, draw.MidRect(self.PosX+parent_x, self.PosY+parent_y,
|
|
self.Width, self.Height, UI.Width, UI.Height), nil)
|
|
}
|
|
}
|
|
|
|
type SliderMultiIcon struct {
|
|
UI.MultiIconItem
|
|
Parent *BSlider
|
|
}
|
|
|
|
func NewSliderMultiIcon() *SliderMultiIcon {
|
|
p := &SliderMultiIcon{}
|
|
p.MyType = UI.ICON_TYPES["EXE"]
|
|
p.Align = UI.ALIGN["VCenter"]
|
|
|
|
p.IconIndex = 0
|
|
p.IconWidth = 18
|
|
p.IconHeight = 18
|
|
|
|
return p
|
|
}
|
|
|
|
func (self *SliderMultiIcon) Draw() {
|
|
if self.Parent == nil {
|
|
fmt.Println("Error: SliderMultiIcon Draw Parent nil")
|
|
return
|
|
}
|
|
parent_x, parent_y := self.Parent.Coord()
|
|
|
|
if self.Label != nil {
|
|
// lab_x,lab_y := self.Label.Coord()
|
|
lab_w, lab_h := self.Label.Size()
|
|
if self.Align == UI.ALIGN["VCenter"] {
|
|
self.Label.NewCoord(self.PosX-lab_w/2+parent_x, self.PosY+self.Height/2+6+parent_y)
|
|
} else if self.Align == UI.ALIGN["HLeft"] {
|
|
self.Label.NewCoord(self.PosX+self.Width/2+3+parent_x, self.PosY-lab_h/2+parent_y)
|
|
}
|
|
|
|
self.Label.Draw()
|
|
}
|
|
|
|
if self.ImgSurf != nil {
|
|
|
|
portion := rect.Rect(0, self.IconIndex*self.IconHeight, self.IconWidth, self.IconHeight)
|
|
|
|
surface.Blit(self.Parent.GetCanvasHWND(),
|
|
self.ImgSurf, draw.MidRect(self.PosX+parent_x, self.PosY+parent_y,
|
|
self.Width, self.Height, UI.Width, UI.Height), &portion)
|
|
}
|
|
}
|
|
|
|
type BSlider struct {
|
|
UI.Slider
|
|
|
|
BGpng *SliderIcon
|
|
BGwidth int
|
|
BGheight int
|
|
//NeedleSurf
|
|
Scale *SliderMultiIcon
|
|
Parent *BrightnessPage
|
|
|
|
OnChangeCB OnChangeCB_T
|
|
}
|
|
|
|
func NewBSlider() *BSlider {
|
|
p := &BSlider{}
|
|
p.Range = [2]int{0, 255}
|
|
p.Value = 0
|
|
|
|
p.BGwidth = 179
|
|
p.BGheight = 153
|
|
|
|
return p
|
|
}
|
|
|
|
func (self *BSlider) GetCanvasHWND() *sdl.Surface {
|
|
return self.CanvasHWND
|
|
}
|
|
|
|
func (self *BSlider) Init() {
|
|
|
|
self.Width = self.Parent.Width
|
|
self.Height = self.Parent.Height
|
|
|
|
self.BGpng = NewSliderIcon()
|
|
self.BGpng.ImgSurf = UI.MyIconPool.GetImgSurf("light")
|
|
self.BGpng.MyType = UI.ICON_TYPES["STAT"]
|
|
self.BGpng.Parent = self
|
|
self.BGpng.Adjust(0, 0, self.BGwidth, self.BGheight, 0)
|
|
|
|
self.Scale = NewSliderMultiIcon()
|
|
self.Scale.MyType = UI.ICON_TYPES["STAT"]
|
|
self.Scale.Parent = self
|
|
self.Scale.ImgSurf = UI.MyIconPool.GetImgSurf("scale")
|
|
self.Scale.IconWidth = 82
|
|
self.Scale.IconHeight = 63
|
|
self.Scale.Adjust(0, 0, 82, 63, 0)
|
|
|
|
}
|
|
|
|
func (self *BSlider) SetValue(brt int) {
|
|
self.Value = brt
|
|
}
|
|
|
|
func (self *BSlider) Further() {
|
|
self.Value += 1
|
|
|
|
if self.Value > 9 {
|
|
self.Value = 9
|
|
}
|
|
|
|
if self.OnChangeCB != nil {
|
|
self.OnChangeCB(self.Value)
|
|
}
|
|
|
|
}
|
|
|
|
func (self *BSlider) StepBack() {
|
|
self.Value -= 1
|
|
|
|
if self.Value < 0 {
|
|
self.Value = 0
|
|
}
|
|
|
|
if self.OnChangeCB != nil {
|
|
self.OnChangeCB(self.Value)
|
|
}
|
|
}
|
|
|
|
func (self *BSlider) Draw() {
|
|
self.BGpng.NewCoord(self.Width/2, self.Height/2+11)
|
|
self.BGpng.Draw()
|
|
|
|
self.Scale.NewCoord(self.Width/2, self.Height/2)
|
|
|
|
icon_idx := self.Value - 1
|
|
if icon_idx < 0 {
|
|
icon_idx = 0
|
|
}
|
|
|
|
self.Scale.IconIndex = icon_idx
|
|
self.Scale.Draw()
|
|
|
|
}
|
|
|
|
type BrightnessPage struct {
|
|
UI.Page
|
|
MySlider *BSlider
|
|
}
|
|
|
|
func NewBrightnessPage() *BrightnessPage {
|
|
p := &BrightnessPage{}
|
|
|
|
p.PageIconMargin = 20
|
|
p.SelectedIconTopOffset = 20
|
|
p.EasingDur = 10
|
|
p.Align = UI.ALIGN["SLeft"]
|
|
|
|
p.FootMsg = [5]string{"Nav", "", "", "Back", "Enter"}
|
|
|
|
return p
|
|
}
|
|
|
|
func (self *BrightnessPage) Init() {
|
|
self.CanvasHWND = self.Screen.CanvasHWND
|
|
self.Width = self.Screen.Width
|
|
self.Height = self.Screen.Height
|
|
|
|
self.MySlider = NewBSlider()
|
|
|
|
self.MySlider.Parent = self
|
|
|
|
self.MySlider.SetCanvasHWND(self.CanvasHWND)
|
|
self.MySlider.OnChangeCB = self.WhenSliderDrag
|
|
|
|
self.MySlider.Init()
|
|
|
|
brt := self.ReadBackLight()
|
|
|
|
self.MySlider.SetValue(brt)
|
|
|
|
}
|
|
|
|
func (self *BrightnessPage) ReadBackLight() int {
|
|
|
|
if UI.FileExists(sysgo.BackLight) == false {
|
|
return 0
|
|
}
|
|
|
|
lines, err := UI.ReadLines(sysgo.BackLight)
|
|
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
return 0
|
|
}
|
|
|
|
for _, v := range lines {
|
|
n, e := strconv.Atoi(v)
|
|
if e == nil {
|
|
return n
|
|
} else {
|
|
fmt.Println(e)
|
|
return 0
|
|
}
|
|
break
|
|
}
|
|
|
|
return 0
|
|
}
|
|
|
|
func (self *BrightnessPage) OnLoadCb() {
|
|
brt := self.ReadBackLight()
|
|
|
|
self.MySlider.SetValue(brt)
|
|
|
|
}
|
|
|
|
func (self *BrightnessPage) SetBackLight(newbrt int) {
|
|
|
|
newbrt_str := fmt.Sprintf("%d", newbrt)
|
|
|
|
if UI.FileExists(sysgo.BackLight) {
|
|
err := ioutil.WriteFile(sysgo.BackLight, []byte(newbrt_str), 0644)
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
}
|
|
} else {
|
|
fmt.Println(sysgo.BackLight, " file not existed")
|
|
}
|
|
}
|
|
|
|
func (self *BrightnessPage) WhenSliderDrag(val int) {
|
|
self.SetBackLight(val)
|
|
}
|
|
|
|
func (self *BrightnessPage) KeyDown(ev *event.Event) {
|
|
if ev.Data["Key"] == UI.CurKeys["A"] || ev.Data["Key"] == UI.CurKeys["Menu"] {
|
|
self.ReturnToUpLevelPage()
|
|
self.Screen.Refresh()
|
|
}
|
|
|
|
if ev.Data["Key"] == UI.CurKeys["Right"] {
|
|
self.MySlider.Further()
|
|
self.Screen.Refresh()
|
|
}
|
|
|
|
if ev.Data["Key"] == UI.CurKeys["Left"] {
|
|
self.MySlider.StepBack()
|
|
self.Screen.Refresh()
|
|
}
|
|
}
|
|
|
|
func (self *BrightnessPage) Draw() {
|
|
|
|
self.ClearCanvas()
|
|
self.MySlider.Draw()
|
|
|
|
}
|