mirror of
https://github.com/clockworkpi/LauncherGoDev.git
synced 2026-03-19 18:32:49 +01:00
try to copy whole design from python gameshell launcher
This commit is contained in:
149
sysgo/UI/page.go
Normal file
149
sysgo/UI/page.go
Normal file
@@ -0,0 +1,149 @@
|
||||
package UI
|
||||
|
||||
import (
|
||||
"sync"
|
||||
|
||||
"github.com/veandco/go-sdl2/sdl"
|
||||
|
||||
)
|
||||
|
||||
type element struct {
|
||||
data interface{}
|
||||
next *element
|
||||
}
|
||||
|
||||
type PageStack struct {
|
||||
lock *sync.Mutex
|
||||
head *element
|
||||
Size int
|
||||
}
|
||||
|
||||
func (stk *PageStack) Push(data interface{}) {
|
||||
stk.lock.Lock()
|
||||
|
||||
element := new(element)
|
||||
element.data = data
|
||||
temp := stk.head
|
||||
element.next = temp
|
||||
stk.head = element
|
||||
stk.Size++
|
||||
|
||||
stk.lock.Unlock()
|
||||
}
|
||||
|
||||
func (stk *PageStack) Pop() interface{} {
|
||||
if stk.head == nil {
|
||||
return nil
|
||||
}
|
||||
stk.lock.Lock()
|
||||
r := stk.head.data
|
||||
stk.head = stk.head.next
|
||||
stk.Size--
|
||||
|
||||
stk.lock.Unlock()
|
||||
|
||||
return r
|
||||
}
|
||||
|
||||
func NewPageStack() *PageStack {
|
||||
stk := new(PageStack)
|
||||
stk.lock = &sync.Mutex{}
|
||||
return stk
|
||||
}
|
||||
|
||||
|
||||
type PageSelector struct {
|
||||
|
||||
PosX int
|
||||
PosY int
|
||||
Width int
|
||||
Height int
|
||||
Parent interface{} //
|
||||
Alpha int
|
||||
OnShow bool
|
||||
IconSurf *sdl.Surface
|
||||
|
||||
}
|
||||
|
||||
func (p *PageSelector) Adjust(x,y,w,h,alpha int) {
|
||||
p.PosX = x
|
||||
p.PosY = y
|
||||
p.Width = w
|
||||
p.Height = h
|
||||
p.Alpha = alpha
|
||||
}
|
||||
|
||||
func (p *PageSelector) Draw() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
type PageInterface interface {
|
||||
// shared functions
|
||||
// GetScreen
|
||||
// GetIcons
|
||||
// SetScreen
|
||||
// SetFootMsg
|
||||
// SetCanvasHWND
|
||||
// GetCanvasHWND
|
||||
// GetHWND
|
||||
// SetHWND
|
||||
// AdjustHLeftAlign
|
||||
// AdjustSAutoLeftAlign
|
||||
// SetPsIndex
|
||||
// SetIconIndex
|
||||
// GetPsIndex
|
||||
// GetIconIndex
|
||||
// Coord
|
||||
// Size
|
||||
}
|
||||
|
||||
type Page struct {
|
||||
|
||||
PosX int
|
||||
PosY int
|
||||
Width int
|
||||
Height int
|
||||
Icons []interface{} // make first
|
||||
IconNumbers int
|
||||
IconIndex int
|
||||
PrevIconIndex int
|
||||
|
||||
Ps interface{}
|
||||
PsIndex int
|
||||
|
||||
Index int
|
||||
|
||||
Align string
|
||||
|
||||
CanvasHWND *sdl.Surface
|
||||
HWND *sdl.Surface
|
||||
|
||||
OnShow bool
|
||||
|
||||
Name string
|
||||
Screen *MainScreen
|
||||
|
||||
PageIconMargin int // default 20
|
||||
FootMsg [5]string
|
||||
|
||||
SelectedIconTopOffset int
|
||||
EasingDur int
|
||||
}
|
||||
|
||||
func NewPage() *Page {
|
||||
p := &Page{}
|
||||
p.PageIconMargin = 20
|
||||
p.SelectedIconTopOffset = 20
|
||||
p.EasingDur = 30
|
||||
|
||||
p.FootMsg = [5]string{"Nav.","","","","Enter"}
|
||||
|
||||
return p
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user