123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277 |
- package main
- import (
- "os"
- "fmt"
- gotime "time"
- "github.com/veandco/go-sdl2/sdl"
-
- "github.com/cuu/gogame/display"
- "github.com/cuu/gogame/event"
- // "github.com/cuu/gogame/color"
- "github.com/cuu/gogame/font"
- "github.com/cuu/gogame/time"
-
- "github.com/cuu/LauncherGoDev/sysgo"
-
- "github.com/cuu/LauncherGoDev/sysgo/UI"
- )
- var (
- flash_led1_counter = 0
- last_brt = 0
- passout_time_stage = 0
- led1_proc_file = "/proc/driver/led1"
-
- everytime_keydown = gotime.Now()
-
- )
- // flash the Led1 on the GS back
- func FlashLed1(main_screen *UI.MainScreen) {
-
- for {
- if UI.FileExists(led1_proc_file) {
- if main_screen.Closed == false {
- if flash_led1_counter > 0 {
- d := []byte(fmt.Sprintf("%d",0))
- err := ioutil.WriteFile(led1_proc_file, d, 0644) // turn off led1
- if err != nil {
- fmt.Println(err)
- }
- flash_led1_counter = 0
- }
-
- } else {
- flash_led1_counter +=1
- if flash_led1_counter == 3 {
- d := []byte(fmt.Sprintf("%d",1))
- err := ioutil.WriteFile(led1_proc_file, d, 0644)
- if err != nil {
- fmt.Println(err)
- }
- }
-
- if flash_led1_counter == 5 {
- d := []byte(fmt.Sprintf("%d",0))
- err := ioutil.WriteFile(led1_proc_file, d, 0644)
- if err != nil {
- fmt.Println(err)
- }
- }
-
- if flash_led1_counter == 11 {
- flash_led1_counter = 1
- }
- }
- }
-
- gotime.Sleep(200 * gotime.Millisecond)
- }
- }
- //happens everytime when KeyDown occurs
- func RestoreLastBackLightBrightness(main_screen *UI.MainScreen) bool {
-
- passout_time_stage = 0
- main_screen.TitleBar.InLowBackLight = -1
- main_screen.Closed = false
-
- if last_brt == -1 {
- return true
- }
-
- if UI.FileExists(sysgo.BackLight) {
- lines,err := UI.ReadLines(sysgo.BackLight)
- if err == nil {
- brt,err2 := strconv.Atoi(strings.Trim(lines[0],"\r\n "))
- if err2 == nil {
- if brt < last_brt {
- d := []byte(fmt.Sprintf("%d",last_brt))
- ioutil.WriteFile(sysgo.BackLight,d,0644)
- last_brt = -1
- }
- }
- }else {
- fmt.Println(err)
- }
-
- }else {
-
- }
-
- if UI.FileExists(led1_proc_file) {
- d := []byte(fmt.Sprintf("%d",0))
- err := ioutil.WriteFile(led1_proc_file, d, 0644)
- if err != nil {
- fmt.Println(err)
- }
- }
- //Stop CounterScreen here
-
- if main_screen.CounterScreen.Counting == true {
- main_screen.CounterScreen.StopCounter()
- main_screen.Draw()
- main_screen.SwapAndShow()
- return false
- }
-
- return true
-
- }
- //power stuff dealer
- func InspectionTeam(main_screen *UI.MainScreen) {
- for {
- cur_time := gotime.Now()
- elapsed := cur_time.Sub(everytime_keydown)
-
- time1 := sysgo.PowerLevels[sysgo.CurPowerLevel].Dim
- time2 := sysgo.PowerLevels[sysgo.CurPowerLevel].Close
- time3 := sysgo.PowerLevels[sysgo.CurPowerLevel].PowerOff
-
- if elapsed > gotime.Duration(time1) *gotime.Millisecond && passout_time_stage == 0 {
- fmt.Println("timeout, dim screen ",elapsed)
-
- if UI.FileExists(sysgo.BackLight) {
- lines,err := UI.ReadLines(sysgo.BackLight)
-
- if err == nil {
- brt,err2 := strconv.Atoi(strings.Trim(lines[0],"\r\n "))
- if err2 == nil {
- if brt > 0 {
- if last_brt < 0 {
- last_brt = brt
- }
- d := []byte(fmt.Sprintf("%d",1))
- ioutil.WriteFile(sysgo.BackLight,d,0644)
- }
- }
- }
- }
-
- main_screen.TitleBar.InLowBackLight = 0
- if time2 != 0 {
- passout_time_stage = 1 // next
- }
- everytime_keydown = cur_time
- }else if elapsed > gotime.Duration(time2) *gotime.Millisecond && passout_time_stage == 1 {
- fmt.Println("timeout, close screen ", elapsed)
-
- if UI.FileExists(sysgo.BackLight) {
- d := []byte(fmt.Sprintf("%d",0))
- ioutil.WriteFile(sysgo.BackLight,d,0644)
- }
-
- main_screen.TitleBar.InLowBackLight = 0
- main_screen.Closed = true
- if time3 != 0 {
- passout_time_stage = 2 // next
- }
-
- everytime_keydown = cur_time
- }else if elapsed > gotime.Duration(time3) * gotime.Millisecond && passout_time_stage == 2{
-
- fmt.Println("Power Off counting down")
-
- main_screen.CounterScreen.Draw()
- main_screen.CounterScreen.SwapAndShow()
- main_screen.CounterScreen.StartCounter()
-
- if UI.FileExists(sysgo.BackLight) {
- d := []byte(fmt.Sprintf("%d",last_brt))
- ioutil.WriteFile(sysgo.BackLight,d,0644)
- }
-
- main_screen.TitleBar.InLowBackLight = 0
-
- passout_time_stage = 4
-
- }
-
- gotime.Sleep(UI.DT * gotime.Millisecond)
- }
- }
- func run() int {
- display.Init()
- font.Init()
- screen := display.SetMode(int32(UI.Width),int32(UI.Height),0,32)
-
- UI.Init()
- UI.MyIconPool.Init()
- main_screen := UI.NewMainScreen()
- main_screen.HWND = screen
- main_screen.Init()
-
- title_bar := UI.NewTitleBar()
- foot_bar := UI.NewFootBar()
- title_bar.Init(main_screen)
- foot_bar.Init(main_screen)
-
- main_screen.TitleBar = title_bar
- main_screen.FootBar = foot_bar
- main_screen.ReadTheDirIntoPages("Menu",0,nil)
- main_screen.FartherPages()
- main_screen.Draw()
- main_screen.SwapAndShow()
- UI.SwapAndShow()
-
- //fmt.Println(main_screen)
-
- event.AddCustomEvent(UI.RUNEVT)
-
- go FlashLed1(main_screen)
- go InspectionTeam(main_screen)
-
- running := true
- for running {
- ev := event.Wait()
- if ev.Type == event.QUIT {
- running = false
- break
- }
- if ev.Type == event.USEREVENT {
-
- fmt.Println("UserEvent: ",ev.Data["Msg"])
- }
- if ev.Type == event.KEYDOWN {
- everytime_keydown = gotime.Now()
- if RestoreLastBackLightBrightness(main_screen) == false {
- return
- }
-
- if ev.Data["Key"] == "Q" {
- main_screen.OnExitCb()
- return 0
- }else if ev.Data["Key"] == "P" {
- event.Post(UI.RUNEVT,"GODEBUG=cgocheck=0 sucks") // just id and string, simplify the stuff
-
- }else {
- main_screen.KeyDown(ev)
- }
- }
- }
- return 0
- }
- func main() {
-
- var exitcode int
- os.Setenv("SDL_VIDEO_CENTERED","1")
-
- sdl.Main(func() {
- exitcode = run()
- })
- os.Exit(exitcode)
- }
|