2023-01-26 07:17:15 +00:00

112 lines
2.5 KiB
Go

package Pico8
import (
"fmt"
"github.com/cuu/gogame/event"
"github.com/cuu/gogame/rect"
"github.com/cuu/gogame/surface"
"github.com/veandco/go-sdl2/ttf"
"github.com/cuu/gogame/color"
"github.com/clockworkpi/LauncherGoDev/sysgo/UI"
)
type GamePage struct {
UI.Page
ListFontObj *ttf.Font
URLColor *color.Color
TextColor *color.Color
Labels map[string]UI.LabelInterface
Icons map[string]UI.IconItemInterface
MsgBox *UI.MessageBox
NotFound bool
Pkg *UI.CommercialSoftwarePackage
}
func NewGamePage() *GamePage {
p := &GamePage{}
p.PageIconMargin = 20
p.SelectedIconTopOffset = 20
p.EasingDur = 10
p.Align = UI.ALIGN["SLeft"]
p.FootMsg = [5]string{"Nav.", "", "", "Back", ""}
p.URLColor = UI.MySkinManager.GiveColor("URL")
p.TextColor = UI.MySkinManager.GiveColor("Text")
p.ListFontObj = UI.MyLangManager.TrFont("varela18")
//p.Labels = make(map[string]UI.LabelInterface)
//p.Icons = make(map[string]UI.IconItemInterface)
p.NotFound = true
p.Pkg = UI.NewCommercialSoftwarePackage("/home/cpi/games/PICO-8/pico-8/pico8_dyn","/home/cpi/launchergo/Menu/GameShell/50_Pico8/")
return p
}
func (self *GamePage) OnLoadCb() {
self.PosY = 0
if self.Pkg.IsInstalled() {
self.Pkg.RunSetup()
fmt.Println("Run pico8")
self.MsgBox.SetText("Running Pico8")
self.Screen.RunEXE(self.Pkg.GetRunScript())
}else{
self.MsgBox.SetText("Please purchase the PICO-8 and copy it to the \"~/games/PICO-8\"")
}
fmt.Println("GamePage OnLoadCb")
}
func (self *GamePage) Init() {
if self.Screen == nil {
panic("No Screen")
}
if self.Screen.CanvasHWND != nil && self.CanvasHWND == nil {
self.HWND = self.Screen.CanvasHWND
self.CanvasHWND = surface.Surface(self.Screen.Width, self.Screen.Height)
}
self.PosX = self.Index * self.Screen.Width
self.Width = self.Screen.Width
self.Height = self.Screen.Height
self.MsgBox = UI.NewMessageBox()
self.MsgBox.Parent = self.CanvasHWND
self.MsgBox.Init("Please purchase the PICO-8 and copy it to the \"~/games/PICO-8\"",self.ListFontObj,nil,self.Width,self.Height)
self.Pkg.Init()
}
func (self *GamePage) KeyDown(ev *event.Event) {
if ev.Data["Key"] == UI.CurKeys["A"] || ev.Data["Key"] == UI.CurKeys["Menu"] {
self.ReturnToUpLevelPage()
self.Screen.Refresh()
}
return
}
func (self *GamePage) Draw() {
self.ClearCanvas()
self.MsgBox.Draw()
if self.HWND != nil {
surface.Fill(self.HWND, UI.MySkinManager.GiveColor("white"))
rect_ := rect.Rect(self.PosX, self.PosY, self.Width, self.Height)
surface.Blit(self.HWND, self.CanvasHWND, &rect_, nil)
}
}