This commit is contained in:
cuu 2018-09-10 14:03:18 +08:00
parent 91d573573f
commit 3c0884c2d7
7 changed files with 31 additions and 20 deletions

Binary file not shown.

View File

@ -0,0 +1 @@
go build -o HelloWorld.so -buildmode=plugin

View File

@ -6,6 +6,7 @@ import (
"github.com/cuu/gogame/surface" "github.com/cuu/gogame/surface"
"github.com/cuu/gogame/event" "github.com/cuu/gogame/event"
"github.com/cuu/gogame/rect" "github.com/cuu/gogame/rect"
"github.com/cuu/gogame/color"
"github.com/cuu/LauncherGo/sysgo/UI" "github.com/cuu/LauncherGo/sysgo/UI"
@ -16,8 +17,8 @@ type InfoPageListItem struct{
PosY int PosY int
Width int Width int
Height int Height int
Labels map[string]LabelInterface Labels map[string]UI.LabelInterface
Icons map[string]IconItemInterface Icons map[string]UI.IconItemInterface
Fonts map[string]*ttf.Font Fonts map[string]*ttf.Font
Parent UI.PageInterface Parent UI.PageInterface
@ -27,8 +28,8 @@ type InfoPageListItem struct{
func NewInfoPageListItem() *InfoPageListItem { func NewInfoPageListItem() *InfoPageListItem {
i := &InfoPageListItem{} i := &InfoPageListItem{}
i.Labels = make(map[string]LabelInterface) i.Labels = make(map[string]UI.LabelInterface)
i.Icons = make( map[string]IconItemInterface) i.Icons = make( map[string]UI.IconItemInterface)
i.Fonts = make(map[string]*ttf.Font) i.Fonts = make(map[string]*ttf.Font)
i.Height = 20 i.Height = 20
@ -38,7 +39,7 @@ func NewInfoPageListItem() *InfoPageListItem {
} }
func (self *InfoPageListItem) Init(text string) { func (self *InfoPageListItem) Init(text string) {
l := NewLabel() l := UI.NewLabel()
l.PosX = 10 l.PosX = 10
l.SetCanvasHWND(self.Parent.GetCanvasHWND()) l.SetCanvasHWND(self.Parent.GetCanvasHWND())
l.Init(text,self.Fonts["normal"],nil) l.Init(text,self.Fonts["normal"],nil)
@ -48,7 +49,7 @@ func (self *InfoPageListItem) Init(text string) {
} }
func (self *InfoPageListItem) SetSmallText( text string) { func (self *InfoPageListItem) SetSmallText( text string) {
l := NewMultiLabel() l := UI.NewMultiLabel()
l.SetCanvasHWND(self.Parent.GetCanvasHWND()) l.SetCanvasHWND(self.Parent.GetCanvasHWND())
l.Init(text,self.Fonts["small"],nil) l.Init(text,self.Fonts["small"],nil)
@ -62,7 +63,7 @@ func (self *InfoPageListItem) Draw() {
self.Labels["Text"].NewCoord(x_,self.PosY) self.Labels["Text"].NewCoord(x_,self.PosY)
self.Labels["Text"].Draw() self.Labels["Text"].Draw()
if val, ok := self.Labels["Small"]; ok { if _, ok := self.Labels["Small"]; ok {
w_,_ := self.Labels["Text"].Size() w_,_ := self.Labels["Text"].Size()
self.Labels["Small"].NewCoord(w_+16,self.PosY) self.Labels["Small"].NewCoord(w_+16,self.PosY)
self.Labels["Small"].Draw() self.Labels["Small"].Draw()
@ -106,7 +107,7 @@ func (self *HelloWorldPage) Init() {
if self.Screen != nil { if self.Screen != nil {
if self.Screen.CanvasHWND != nil && self.CanvasHWND == nil { if self.Screen.CanvasHWND != nil && self.CanvasHWND == nil {
self.HWND = self.Screen.CanvasHWND self.HWND = self.Screen.CanvasHWND
self.CanvasHWND = surface.Surface(self.Screen.Width,self.BGeight) self.CanvasHWND = surface.Surface(self.Screen.Width,self.BGheight)
} }
self.PosX = self.Index * self.Screen.Width self.PosX = self.Index * self.Screen.Width
@ -136,7 +137,7 @@ func (self *HelloWorldPage) HelloWorld() {
hello["label"] = "HelloWorld " hello["label"] = "HelloWorld "
hello["value"] = "GameShell" hello["value"] = "GameShell"
p.AList["hello"] = hello self.AList["hello"] = hello
} }
@ -150,7 +151,7 @@ func (self *HelloWorldPage) GenList() {
last_height := 0 last_height := 0
for i,u := range []string{"hello"} { for _,u := range []string{"hello"} {
if val,ok := self.AList[u];ok { if val,ok := self.AList[u];ok {
li := NewInfoPageListItem() li := NewInfoPageListItem()
@ -182,7 +183,7 @@ func (self *HelloWorldPage) GenList() {
func (self *HelloWorldPage) ScrollDown() { func (self *HelloWorldPage) ScrollDown() {
dis := 10 dis := 10
if UI.abs(self.Scrolled) < ( self.BGheight - self.Height)/2 + 0 { if UI.Abs(self.Scrolled) < ( self.BGheight - self.Height)/2 + 0 {
self.PosY -= dis self.PosY -= dis
self.Scrolled -= dis self.Scrolled -= dis
} }
@ -246,8 +247,9 @@ func (self *HelloWorldPage) Draw() {
if self.HWND != nil { if self.HWND != nil {
surface.Fill(self.HWND, &color.Color{255,255,255,255}) surface.Fill(self.HWND, &color.Color{255,255,255,255})
surface.Blit(self.HWND,self.CanvasHWND,&rect.Rect(self.PosX,self.PosY,self.Width,self.Height), nil) rect_ := rect.Rect(self.PosX,self.PosY,self.Width,self.Height)
self.Scroller.UpdateSize(self.BGheight,UI.abs(self.Scrolled)*3) surface.Blit(self.HWND,self.CanvasHWND,&rect_, nil)
self.Scroller.UpdateSize(self.BGheight,UI.Abs(self.Scrolled)*3)
self.Scroller.Draw() self.Scroller.Draw()
} }

View File

@ -1,6 +1,8 @@
package UI package UI
import ( import (
"strings"
"github.com/veandco/go-sdl2/sdl" "github.com/veandco/go-sdl2/sdl"
"github.com/veandco/go-sdl2/ttf" "github.com/veandco/go-sdl2/ttf"
@ -101,11 +103,12 @@ func (self *MultiLabel) blit_text(surf *sdl.Surface,text string, pos_x,pos_y int
row_total_width := 0 row_total_width := 0
lines := 0 lines := 0
for i,line := range words[:4] { for _,line := range words[:4] {
word_height := 0
for _,word := range line[:12] { for _,word := range line[:12] {
word_surface := font.Render(fnt,word,true,self.Color,nil) word_surface := font.Render(fnt,word,true,self.Color,nil)
word_width := surface.GetWidth(word_surface) word_width := surface.GetWidth(word_surface)
word_height := surface.GetHeight(word_surface) word_height = surface.GetHeight(word_surface)
row_total_width += word_width row_total_width += word_width
if row_total_width+space >= max_width { if row_total_width+space >= max_width {
x = pos_x x = pos_x

View File

@ -190,6 +190,7 @@ type PageInterface interface {
DrawIcons() DrawIcons()
GetName() string GetName() string
SetName(n string)
GetFootMsg() [5]string GetFootMsg() [5]string
KeyDown( ev *event.Event) KeyDown( ev *event.Event)
@ -979,6 +980,10 @@ func (self *Page) GetName() string {
return self.Name return self.Name
} }
func (self *Page) SetName(n string) {
self.Name = n
}
func (self *Page) SetIndex(idx int) { func (self *Page) SetIndex(idx int) {
self.Index = idx self.Index = idx
} }

View File

@ -2,12 +2,12 @@ package UI
import ( import (
"github.com/veandco/go-sdl2/sdl" "github.com/veandco/go-sdl2/sdl"
"github.com/veandco/go-sdl2/ttf" // "github.com/veandco/go-sdl2/ttf"
"github.com/cuu/gogame/surface" // "github.com/cuu/gogame/surface"
"github.com/cuu/gogame/rect" // "github.com/cuu/gogame/rect"
"github.com/cuu/gogame/color" "github.com/cuu/gogame/color"
"github.com/cuu/gogame/font" // "github.com/cuu/gogame/font"
"github.com/cuu/gogame/draw" "github.com/cuu/gogame/draw"
) )

View File

@ -11,7 +11,7 @@ import (
"github.com/cuu/LauncherGo/sysgo" "github.com/cuu/LauncherGo/sysgo"
) )
func abs(n int) int { func Abs(n int) int {
y := n >> 63 y := n >> 63
return (n ^ y) - y return (n ^ y) - y
} }