123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- package UI
- import (
- "fmt"
- "github.com/veandco/go-sdl2/ttf"
- gotime "time"
- "github.com/cuu/gogame/color"
- "github.com/cuu/gogame/event"
- "github.com/cuu/gogame/surface"
- "github.com/clockworkpi/LauncherGoDev/sysgo"
- )
- type CounterScreen struct {
- FullScreen
- CounterFont *ttf.Font
- TextFont1 *ttf.Font
- TextFont2 *ttf.Font
- TopLabel LabelInterface
- BottomLabel LabelInterface
- NumberLabel LabelInterface
- BGColor *color.Color
- FGColor *color.Color
- Counting bool
- Number int // 10
- inter_counter int //
- TickerStoped chan bool
- }
- func NewCounterScreen() *CounterScreen {
- p := &CounterScreen{}
- p.Width = Width
- p.Height = Height
- p.Number = 10
- p.CounterFont = Fonts["varela120"]
- p.TextFont1 = Fonts["varela15"]
- p.TextFont2 = Fonts["varela12"]
- p.BGColor = &color.Color{0, 0, 0, 255}
- p.FGColor = &color.Color{255, 255, 255, 255}
- return p
- }
- func (self *CounterScreen) Interval() {
- TheTicker := gotime.NewTicker(500 * gotime.Millisecond)
- defer TheTicker.Stop()
- L:
- for {
- select {
- case <-TheTicker.C:
- self.inter_counter += 1
- if self.Number == 0 {
- self.Counting = false
- fmt.Println("do the real shutdown")
- if sysgo.CurKeySet != "PC" {
- cmdpath := "feh --bg-center sysgo/gameshell/wallpaper/seeyou.png;"
- cmdpath = cmdpath + "sleep 3;"
- cmdpath = cmdpath + "sudo halt -p"
- event.Post(RUNEVT, cmdpath)
- }
- break L
- }
- if self.inter_counter >= 2 {
- self.Number -= 1
- if self.Number < 0 {
- self.Number = 0
- }
- fmt.Println("sub Number ", self.Number)
- self.inter_counter = 0
- self.Draw()
- self.SwapAndShow()
- }
- case <-self.TickerStoped:
- break L
- }
- }
- }
- func (self *CounterScreen) StartCounter() {
- if self.Counting == true {
- return
- }
- self.Number = 10
- self.inter_counter = 0
- self.Counting = true
- go self.Interval()
- }
- func (self *CounterScreen) StopCounter() {
- if self.Counting == false {
- return
- }
- self.Counting = false
- self.Number = 0
- self.inter_counter = 0
- self.TickerStoped <- true
- }
- func (self *CounterScreen) Init() {
- self.CanvasHWND = surface.Surface(self.Width, self.Height)
- self.TopLabel = NewLabel()
- self.TopLabel.SetCanvasHWND(self.CanvasHWND)
- self.TopLabel.Init("System shutdown in", self.TextFont1, self.FGColor)
- self.BottomLabel = NewLabel()
- self.BottomLabel.SetCanvasHWND(self.CanvasHWND)
- self.BottomLabel.Init("Press any key to stop countdown", self.TextFont2, self.FGColor)
- self.NumberLabel = NewLabel()
- self.NumberLabel.SetCanvasHWND(self.CanvasHWND)
- number_str := fmt.Sprintf("%d", self.Number)
- self.NumberLabel.Init(number_str, self.CounterFont, self.FGColor)
- self.TickerStoped = make(chan bool, 1)
- }
- func (self *CounterScreen) Draw() {
- surface.Fill(self.CanvasHWND, self.BGColor)
- self.TopLabel.NewCoord(Width/2, 15)
- self.TopLabel.DrawCenter(false)
- self.BottomLabel.NewCoord(Width/2, Height-15)
- self.BottomLabel.DrawCenter(false)
- self.NumberLabel.NewCoord(Width/2, Height/2)
- number_str := fmt.Sprintf("%d", self.Number)
- self.NumberLabel.SetText(number_str)
- self.NumberLabel.DrawCenter(false)
- }
|