renamed structs and functions to better fit packages and added a test program
This commit is contained in:
parent
9783251f41
commit
f3ac5a48d5
50
frame.go
Normal file
50
frame.go
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
package pinwindows
|
||||||
|
|
||||||
|
import (
|
||||||
|
// "fmt"
|
||||||
|
|
||||||
|
rl "github.com/gen2brain/raylib-go/raylib"
|
||||||
|
)
|
||||||
|
|
||||||
|
// frame struct - used for grouping elements together. Will eventually be drawable and autodraw a
|
||||||
|
// list of elements that will be autoreized and managed by the frame
|
||||||
|
type Frame struct {
|
||||||
|
Texture *rl.RenderTexture2D
|
||||||
|
Size rl.Vector2
|
||||||
|
ScrollH bool
|
||||||
|
ScrollW bool
|
||||||
|
ScrollOffsetH float32
|
||||||
|
ScrollOffsetW float32
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewFrame(w, h int) Frame {
|
||||||
|
texture := rl.LoadRenderTexture(int32(w), int32(h))
|
||||||
|
rframe := Frame{}
|
||||||
|
rframe.Texture = &texture
|
||||||
|
rframe.Size = rl.Vector2{X: float32(w), Y: float32(h)}
|
||||||
|
return Frame{Texture: &texture, Size: rl.Vector2{X: float32(w), Y: float32(h)}, ScrollW: false, ScrollH: false}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *Frame) Resize(w, h int) {
|
||||||
|
rl.UnloadRenderTexture(*f.Texture)
|
||||||
|
f.Size.X += float32(w)
|
||||||
|
f.Size.Y += float32(h)
|
||||||
|
*f.Texture = rl.LoadRenderTexture(int32(f.Size.X), int32(f.Size.Y))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *Frame) BeginDrawMode() {
|
||||||
|
rl.BeginTextureMode(*f.Texture)
|
||||||
|
var startposH int32 = int32(0 + f.ScrollOffsetH)
|
||||||
|
var startposW int32 = int32(0 + f.ScrollOffsetW)
|
||||||
|
rl.BeginScissorMode(startposW, startposH, int32(f.Size.X-float32(startposW)), int32(f.Size.Y-float32(startposH)))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *Frame) EndDrawMode() {
|
||||||
|
rl.EndScissorMode()
|
||||||
|
rl.EndTextureMode()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *Frame) Draw() {
|
||||||
|
DrawTextureFlipped(&f.Texture.Texture, 0, 0)
|
||||||
|
}
|
7
go.mod
7
go.mod
|
@ -2,9 +2,12 @@ module git.dummkopf.live/InventorX/pinwindows
|
||||||
|
|
||||||
go 1.22.2
|
go 1.22.2
|
||||||
|
|
||||||
require github.com/gen2brain/raylib-go/raylib v0.0.0-20240421191056-278df68f40bb
|
require (
|
||||||
|
github.com/gen2brain/raylib-go/raygui v0.0.0-20240522200953-b7c9eeec1b29
|
||||||
|
github.com/gen2brain/raylib-go/raylib v0.0.0-20240522200953-b7c9eeec1b29
|
||||||
|
)
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/ebitengine/purego v0.7.1 // indirect
|
github.com/ebitengine/purego v0.7.1 // indirect
|
||||||
golang.org/x/sys v0.19.0 // indirect
|
golang.org/x/sys v0.20.0 // indirect
|
||||||
)
|
)
|
||||||
|
|
6
go.sum
6
go.sum
|
@ -2,11 +2,17 @@ github.com/ebitengine/purego v0.6.0-alpha.1.0.20231122024802-192c5e846faa h1:Ik7
|
||||||
github.com/ebitengine/purego v0.6.0-alpha.1.0.20231122024802-192c5e846faa/go.mod h1:ah1In8AOtksoNK6yk5z1HTJeUkC1Ez4Wk2idgGslMwQ=
|
github.com/ebitengine/purego v0.6.0-alpha.1.0.20231122024802-192c5e846faa/go.mod h1:ah1In8AOtksoNK6yk5z1HTJeUkC1Ez4Wk2idgGslMwQ=
|
||||||
github.com/ebitengine/purego v0.7.1 h1:6/55d26lG3o9VCZX8lping+bZcmShseiqlh2bnUDiPA=
|
github.com/ebitengine/purego v0.7.1 h1:6/55d26lG3o9VCZX8lping+bZcmShseiqlh2bnUDiPA=
|
||||||
github.com/ebitengine/purego v0.7.1/go.mod h1:ah1In8AOtksoNK6yk5z1HTJeUkC1Ez4Wk2idgGslMwQ=
|
github.com/ebitengine/purego v0.7.1/go.mod h1:ah1In8AOtksoNK6yk5z1HTJeUkC1Ez4Wk2idgGslMwQ=
|
||||||
|
github.com/gen2brain/raylib-go/raygui v0.0.0-20240522200953-b7c9eeec1b29 h1:9bC6G+GJcebNe4y7AQTASzbq/35uCAZpna5Yaxh5fY8=
|
||||||
|
github.com/gen2brain/raylib-go/raygui v0.0.0-20240522200953-b7c9eeec1b29/go.mod h1:Ra1zgJP7vnGst+STvzPPiVJhjicklFWONCz5nu6MnOM=
|
||||||
github.com/gen2brain/raylib-go/raylib v0.0.0-20240418150228-9548fadb54e6 h1:mNKFgLZIU0eEHKHjb7Uk9ZuSy65DdgmEf2xxum0Tof4=
|
github.com/gen2brain/raylib-go/raylib v0.0.0-20240418150228-9548fadb54e6 h1:mNKFgLZIU0eEHKHjb7Uk9ZuSy65DdgmEf2xxum0Tof4=
|
||||||
github.com/gen2brain/raylib-go/raylib v0.0.0-20240418150228-9548fadb54e6/go.mod h1:P/hDjVwz/9fhR0ww3+umzDpDA7Bf7Tce4xNChHIEFqE=
|
github.com/gen2brain/raylib-go/raylib v0.0.0-20240418150228-9548fadb54e6/go.mod h1:P/hDjVwz/9fhR0ww3+umzDpDA7Bf7Tce4xNChHIEFqE=
|
||||||
github.com/gen2brain/raylib-go/raylib v0.0.0-20240421191056-278df68f40bb h1:2CdDr/LfDc9uLOW/+3ffSM5Ia7xZZMgjC6UmP7KTjRw=
|
github.com/gen2brain/raylib-go/raylib v0.0.0-20240421191056-278df68f40bb h1:2CdDr/LfDc9uLOW/+3ffSM5Ia7xZZMgjC6UmP7KTjRw=
|
||||||
github.com/gen2brain/raylib-go/raylib v0.0.0-20240421191056-278df68f40bb/go.mod h1:P/hDjVwz/9fhR0ww3+umzDpDA7Bf7Tce4xNChHIEFqE=
|
github.com/gen2brain/raylib-go/raylib v0.0.0-20240421191056-278df68f40bb/go.mod h1:P/hDjVwz/9fhR0ww3+umzDpDA7Bf7Tce4xNChHIEFqE=
|
||||||
|
github.com/gen2brain/raylib-go/raylib v0.0.0-20240522200953-b7c9eeec1b29 h1:PcZhEzXyuccb+d27B2txaUsD3/cBlGKiS8BE8qgBC6c=
|
||||||
|
github.com/gen2brain/raylib-go/raylib v0.0.0-20240522200953-b7c9eeec1b29/go.mod h1:76svhwieyfOFogKyYbDwqjPSTaWFDp1aDk0sLsQoO5k=
|
||||||
golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q=
|
golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q=
|
||||||
golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||||
golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o=
|
golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o=
|
||||||
golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||||
|
golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y=
|
||||||
|
golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||||
|
|
82
maintest/main.go
Normal file
82
maintest/main.go
Normal file
|
@ -0,0 +1,82 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
gui "github.com/gen2brain/raylib-go/raygui"
|
||||||
|
rl "github.com/gen2brain/raylib-go/raylib"
|
||||||
|
|
||||||
|
"git.dummkopf.live/InventorX/pinwindows"
|
||||||
|
)
|
||||||
|
|
||||||
|
const RENDERWIDTH = 1920
|
||||||
|
const RENDERHEIGHT = 1080
|
||||||
|
|
||||||
|
const SCREENWIDTH = 1280
|
||||||
|
const SCREENHEIGHT = 720
|
||||||
|
|
||||||
|
func DrawButtonAt00(window *pinwindows.Window) {
|
||||||
|
//fmt.Println(window)
|
||||||
|
window.BeginDrawMode()
|
||||||
|
rl.ClearBackground(rl.White)
|
||||||
|
close := gui.Button(rl.NewRectangle(0, 0, 20, 20), "Ha")
|
||||||
|
if close {
|
||||||
|
window.ManageFunc = pinwindows.CloseWindow
|
||||||
|
}
|
||||||
|
window.EndDrawMode()
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
rl.InitWindow(SCREENWIDTH, SCREENHEIGHT, "raylib [core] example - basic window")
|
||||||
|
rl.SetWindowState(rl.FlagWindowResizable)
|
||||||
|
defer rl.CloseWindow()
|
||||||
|
|
||||||
|
rl.SetTargetFPS(int32(rl.GetMonitorRefreshRate(0)))
|
||||||
|
a := rl.GetMonitorPosition(0)
|
||||||
|
mh := rl.GetMonitorHeight(0)
|
||||||
|
mw := rl.GetMonitorWidth(0)
|
||||||
|
rl.SetWindowPosition(int(a.X)+int(0.5*float32(mw))-(SCREENWIDTH/2), int(a.Y)+int(0.5*float32(mh))-(0.5*SCREENHEIGHT))
|
||||||
|
|
||||||
|
wm := pinwindows.NewWindowManager()
|
||||||
|
|
||||||
|
rendertexture := rl.LoadRenderTexture(SCREENWIDTH, SCREENHEIGHT)
|
||||||
|
|
||||||
|
raywin := pinwindows.NewWindow(100, 100, 200, 200)
|
||||||
|
|
||||||
|
wm.AddWindow(&raywin)
|
||||||
|
|
||||||
|
for !rl.WindowShouldClose() {
|
||||||
|
wm.ManageWindowlist()
|
||||||
|
wm.ProcessUserWindowMovement()
|
||||||
|
|
||||||
|
raywin.BeginDrawMode()
|
||||||
|
rl.ClearBackground(rl.White)
|
||||||
|
ispressed := gui.Button(rl.NewRectangle(0, 0, 50, 50), "new")
|
||||||
|
raywin.EndDrawMode()
|
||||||
|
|
||||||
|
if ispressed {
|
||||||
|
newwindow := pinwindows.NewWindow(50, 50, 200, 200)
|
||||||
|
newwindow.DrawBorder = true
|
||||||
|
newwindow.DrawFunc = DrawButtonAt00
|
||||||
|
wm.AddWindow(&newwindow)
|
||||||
|
}
|
||||||
|
|
||||||
|
pinwindows.UpdateRenderTexture(&rendertexture)
|
||||||
|
|
||||||
|
wm.DrawInternalWindowList()
|
||||||
|
rl.BeginTextureMode(rendertexture)
|
||||||
|
rl.ClearBackground(rl.Black)
|
||||||
|
|
||||||
|
wm.DrawWindowlist()
|
||||||
|
|
||||||
|
rl.EndTextureMode()
|
||||||
|
|
||||||
|
rl.BeginDrawing()
|
||||||
|
pinwindows.DrawTextureFlipped(&rendertexture.Texture, 0, 0)
|
||||||
|
rl.EndDrawing()
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Println("test")
|
||||||
|
pinwindows.Testfunc()
|
||||||
|
}
|
6
other.go
6
other.go
|
@ -6,3 +6,9 @@ func DrawTextureFlipped(rentex *rl.Texture2D, posx, posy int32) {
|
||||||
rl.DrawTexturePro(*rentex, rl.NewRectangle(0, 0, float32(rentex.Width), -float32(rentex.Height)), rl.NewRectangle(float32(posx), float32(posy), float32(rentex.Width), float32(rentex.Height)), rl.NewVector2(0, 0), 0, rl.White)
|
rl.DrawTexturePro(*rentex, rl.NewRectangle(0, 0, float32(rentex.Width), -float32(rentex.Height)), rl.NewRectangle(float32(posx), float32(posy), float32(rentex.Width), float32(rentex.Height)), rl.NewVector2(0, 0), 0, rl.White)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func UpdateRenderTexture(texture *rl.RenderTexture2D) {
|
||||||
|
if rl.IsWindowResized() {
|
||||||
|
rl.UnloadRenderTexture(*texture)
|
||||||
|
*texture = rl.LoadRenderTexture(int32(rl.GetScreenWidth()), int32(rl.GetScreenHeight()))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
36
window.go
36
window.go
|
@ -6,7 +6,7 @@ import (
|
||||||
rl "github.com/gen2brain/raylib-go/raylib"
|
rl "github.com/gen2brain/raylib-go/raylib"
|
||||||
)
|
)
|
||||||
|
|
||||||
type RayGuiWindow struct {
|
type Window struct {
|
||||||
Texture *rl.RenderTexture2D
|
Texture *rl.RenderTexture2D
|
||||||
Pos rl.Vector2
|
Pos rl.Vector2
|
||||||
Size rl.Vector2
|
Size rl.Vector2
|
||||||
|
@ -24,15 +24,19 @@ const (
|
||||||
WINDOW_NO_EVENT = -1
|
WINDOW_NO_EVENT = -1
|
||||||
)
|
)
|
||||||
|
|
||||||
type windowdrawfunc func(*RayGuiWindow)
|
type windowdrawfunc func(*Window)
|
||||||
|
|
||||||
func NewRayGuiWindow(x, y, w, h int) RayGuiWindow {
|
func Testfunc() {
|
||||||
texture := rl.LoadRenderTexture(int32(w), int32(h))
|
fmt.Println("erm")
|
||||||
|
|
||||||
return RayGuiWindow{Texture: &texture, Pos: rl.Vector2{X: float32(x), Y: float32(y)}, Size: rl.Vector2{X: float32(w), Y: float32(h)}, DrawBorder: true, AcceptingInput: false}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (win *RayGuiWindow) GetBorderRect() rl.Rectangle {
|
func NewWindow(x, y, w, h int) Window {
|
||||||
|
texture := rl.LoadRenderTexture(int32(w), int32(h))
|
||||||
|
|
||||||
|
return Window{Texture: &texture, Pos: rl.Vector2{X: float32(x), Y: float32(y)}, Size: rl.Vector2{X: float32(w), Y: float32(h)}, DrawBorder: true, AcceptingInput: false}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (win *Window) GetBorderRect() rl.Rectangle {
|
||||||
if win.DrawBorder {
|
if win.DrawBorder {
|
||||||
return rl.NewRectangle(0, 0, win.Size.X, 20)
|
return rl.NewRectangle(0, 0, win.Size.X, 20)
|
||||||
} else {
|
} else {
|
||||||
|
@ -40,14 +44,14 @@ func (win *RayGuiWindow) GetBorderRect() rl.Rectangle {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (win *RayGuiWindow) Resize(x, y int) {
|
func (win *Window) ResizeDelta(x, y int) {
|
||||||
rl.UnloadRenderTexture(*win.Texture)
|
rl.UnloadRenderTexture(*win.Texture)
|
||||||
win.Size.X += float32(x)
|
win.Size.X += float32(x)
|
||||||
win.Size.Y += float32(y)
|
win.Size.Y += float32(y)
|
||||||
*win.Texture = rl.LoadRenderTexture(int32(win.Size.X), int32(win.Size.Y))
|
*win.Texture = rl.LoadRenderTexture(int32(win.Size.X), int32(win.Size.Y))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (win *RayGuiWindow) DidStartMoveDrag() bool {
|
func (win *Window) DidStartMoveDrag() bool {
|
||||||
if win.IsTouchingRegion(rl.GetMousePosition(), rl.NewRectangle(0, -win.GetBorderRect().Height, float32(win.Size.X), win.GetBorderRect().Height)) {
|
if win.IsTouchingRegion(rl.GetMousePosition(), rl.NewRectangle(0, -win.GetBorderRect().Height, float32(win.Size.X), win.GetBorderRect().Height)) {
|
||||||
if rl.IsMouseButtonPressed(rl.MouseButtonLeft) {
|
if rl.IsMouseButtonPressed(rl.MouseButtonLeft) {
|
||||||
return true
|
return true
|
||||||
|
@ -56,7 +60,7 @@ func (win *RayGuiWindow) DidStartMoveDrag() bool {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
func (win *RayGuiWindow) DidStartResizeDrag() bool {
|
func (win *Window) DidStartResizeDrag() bool {
|
||||||
if win.IsTouchingRegion(rl.GetMousePosition(), rl.NewRectangle(0, 0, float32(win.Size.X), float32(win.Size.Y))) {
|
if win.IsTouchingRegion(rl.GetMousePosition(), rl.NewRectangle(0, 0, float32(win.Size.X), float32(win.Size.Y))) {
|
||||||
if rl.IsMouseButtonPressed(rl.MouseButtonRight) {
|
if rl.IsMouseButtonPressed(rl.MouseButtonRight) {
|
||||||
return true
|
return true
|
||||||
|
@ -65,11 +69,11 @@ func (win *RayGuiWindow) DidStartResizeDrag() bool {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
func (window *RayGuiWindow) isLeftClicked() bool {
|
func (window *Window) isLeftClicked() bool {
|
||||||
return rl.IsMouseButtonPressed(rl.MouseButtonLeft) && rl.CheckCollisionPointRec(rl.GetMousePosition(), rl.NewRectangle(float32(window.Pos.X), float32(window.Pos.Y-window.GetBorderRect().Height), float32(window.Size.X), float32(window.Size.Y+window.GetBorderRect().Height)))
|
return rl.IsMouseButtonPressed(rl.MouseButtonLeft) && rl.CheckCollisionPointRec(rl.GetMousePosition(), rl.NewRectangle(float32(window.Pos.X), float32(window.Pos.Y-window.GetBorderRect().Height), float32(window.Size.X), float32(window.Size.Y+window.GetBorderRect().Height)))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (window *RayGuiWindow) BeginDrawMode() {
|
func (window *Window) BeginDrawMode() {
|
||||||
rl.BeginTextureMode(*window.Texture)
|
rl.BeginTextureMode(*window.Texture)
|
||||||
if window.AcceptingInput {
|
if window.AcceptingInput {
|
||||||
rl.SetMouseOffset(int(-window.Pos.X), int(-window.Pos.Y))
|
rl.SetMouseOffset(int(-window.Pos.X), int(-window.Pos.Y))
|
||||||
|
@ -78,12 +82,12 @@ func (window *RayGuiWindow) BeginDrawMode() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (window *RayGuiWindow) EndDrawMode() {
|
func (window *Window) EndDrawMode() {
|
||||||
rl.SetMouseOffset(0, 0)
|
rl.SetMouseOffset(0, 0)
|
||||||
rl.EndTextureMode()
|
rl.EndTextureMode()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (window RayGuiWindow) IsTouchingRegion(posvec rl.Vector2, rect rl.Rectangle) bool {
|
func (window Window) IsTouchingRegion(posvec rl.Vector2, rect rl.Rectangle) bool {
|
||||||
|
|
||||||
if rl.CheckCollisionPointRec(posvec, rl.Rectangle{X: rect.X + float32(window.Pos.X), Y: rect.Y + float32(window.Pos.Y), Width: rect.Width, Height: rect.Height}) {
|
if rl.CheckCollisionPointRec(posvec, rl.Rectangle{X: rect.X + float32(window.Pos.X), Y: rect.Y + float32(window.Pos.Y), Width: rect.Width, Height: rect.Height}) {
|
||||||
return true
|
return true
|
||||||
|
@ -91,7 +95,7 @@ func (window RayGuiWindow) IsTouchingRegion(posvec rl.Vector2, rect rl.Rectangle
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
func (window *RayGuiWindow) Draw() {
|
func (window *Window) Draw() {
|
||||||
rl.DrawRectangle(int32(window.Pos.X), int32(window.Pos.Y)-int32(window.GetBorderRect().Height), int32(window.Size.X), int32(window.GetBorderRect().Height), rl.Gray)
|
rl.DrawRectangle(int32(window.Pos.X), int32(window.Pos.Y)-int32(window.GetBorderRect().Height), int32(window.Size.X), int32(window.GetBorderRect().Height), rl.Gray)
|
||||||
|
|
||||||
rl.DrawText(fmt.Sprint(window.AcceptingInput), int32(window.Pos.X-20), int32(window.Pos.Y)-20, 12, rl.Blue)
|
rl.DrawText(fmt.Sprint(window.AcceptingInput), int32(window.Pos.X-20), int32(window.Pos.Y)-20, 12, rl.Blue)
|
||||||
|
@ -99,7 +103,7 @@ func (window *RayGuiWindow) Draw() {
|
||||||
DrawTextureFlipped(&window.Texture.Texture, int32(window.Pos.X), int32(window.Pos.Y))
|
DrawTextureFlipped(&window.Texture.Texture, int32(window.Pos.X), int32(window.Pos.Y))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (window *RayGuiWindow) DrawInternals() {
|
func (window *Window) DrawInternals() {
|
||||||
if window.DrawFunc != nil {
|
if window.DrawFunc != nil {
|
||||||
window.DrawFunc(window)
|
window.DrawFunc(window)
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,21 +4,21 @@ import (
|
||||||
rl "github.com/gen2brain/raylib-go/raylib"
|
rl "github.com/gen2brain/raylib-go/raylib"
|
||||||
)
|
)
|
||||||
|
|
||||||
type managewindowfunc func(*RayGuiWindowManager, *RayGuiWindow)
|
type managewindowfunc func(*WindowManager, *Window)
|
||||||
|
|
||||||
type RayGuiWindowManager struct {
|
type WindowManager struct {
|
||||||
Winlist []*RayGuiWindow
|
Winlist []*Window
|
||||||
Movingwindow *RayGuiWindow // the currently moving (resize, drag, etc...)
|
Movingwindow *Window // the currently moving (resize, drag, etc...)
|
||||||
Movingwindowmode int
|
Movingwindowmode int
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewRayGuiWindowManager() RayGuiWindowManager {
|
func NewWindowManager() WindowManager {
|
||||||
var windowlist []*RayGuiWindow
|
var windowlist []*Window
|
||||||
return RayGuiWindowManager{Winlist: windowlist, Movingwindow: nil}
|
return WindowManager{Winlist: windowlist, Movingwindow: nil}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (winman *RayGuiWindowManager) ManageWindowlist() {
|
func (winman *WindowManager) ManageWindowlist() {
|
||||||
var windowtomovetofront *RayGuiWindow = nil
|
var windowtomovetofront *Window = nil
|
||||||
for i := 0; i < len(winman.Winlist); i++ {
|
for i := 0; i < len(winman.Winlist); i++ {
|
||||||
if winman.Winlist[i].isLeftClicked() {
|
if winman.Winlist[i].isLeftClicked() {
|
||||||
windowtomovetofront = winman.Winlist[i]
|
windowtomovetofront = winman.Winlist[i]
|
||||||
|
@ -34,7 +34,7 @@ func (winman *RayGuiWindowManager) ManageWindowlist() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (winman *RayGuiWindowManager) ProcessUserWindowMovement() {
|
func (winman *WindowManager) ProcessUserWindowMovement() {
|
||||||
currentmovingwindow := winman.Movingwindow
|
currentmovingwindow := winman.Movingwindow
|
||||||
|
|
||||||
for i := 0; i < len(winman.Winlist); i++ {
|
for i := 0; i < len(winman.Winlist); i++ {
|
||||||
|
@ -57,24 +57,24 @@ func (winman *RayGuiWindowManager) ProcessUserWindowMovement() {
|
||||||
winman.Movingwindow.Pos.Y += (rl.GetMouseDelta().Y)
|
winman.Movingwindow.Pos.Y += (rl.GetMouseDelta().Y)
|
||||||
}
|
}
|
||||||
if winman.Movingwindowmode == WINDOW_MODE_RESZIE {
|
if winman.Movingwindowmode == WINDOW_MODE_RESZIE {
|
||||||
winman.Movingwindow.Resize(int(rl.GetMouseDelta().X), int(rl.GetMouseDelta().Y))
|
winman.Movingwindow.ResizeDelta(int(rl.GetMouseDelta().X), int(rl.GetMouseDelta().Y))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (winman RayGuiWindowManager) DrawInternalWindowList() {
|
func (winman WindowManager) DrawInternalWindowList() {
|
||||||
for i := 0; i < len(winman.Winlist); i++ {
|
for i := 0; i < len(winman.Winlist); i++ {
|
||||||
winman.Winlist[i].DrawInternals()
|
winman.Winlist[i].DrawInternals()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (winman RayGuiWindowManager) DrawWindowlist() {
|
func (winman WindowManager) DrawWindowlist() {
|
||||||
for i := 0; i < len(winman.Winlist); i++ {
|
for i := 0; i < len(winman.Winlist); i++ {
|
||||||
winman.Winlist[i].Draw()
|
winman.Winlist[i].Draw()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (winman *RayGuiWindowManager) WinlistUnlistWindow(windowtoremove *RayGuiWindow) {
|
func (winman *WindowManager) WinlistUnlistWindow(windowtoremove *Window) {
|
||||||
indextoremove := -1
|
indextoremove := -1
|
||||||
for i := 0; i < len(winman.Winlist); i++ {
|
for i := 0; i < len(winman.Winlist); i++ {
|
||||||
if winman.Winlist[i] == windowtoremove {
|
if winman.Winlist[i] == windowtoremove {
|
||||||
|
@ -91,7 +91,7 @@ func (winman *RayGuiWindowManager) WinlistUnlistWindow(windowtoremove *RayGuiWin
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func CloseWindow(winman *RayGuiWindowManager, windowtoremove *RayGuiWindow) {
|
func CloseWindow(winman *WindowManager, windowtoremove *Window) {
|
||||||
winman.WinlistUnlistWindow(windowtoremove)
|
winman.WinlistUnlistWindow(windowtoremove)
|
||||||
rl.UnloadRenderTexture(*windowtoremove.Texture)
|
rl.UnloadRenderTexture(*windowtoremove.Texture)
|
||||||
if winman.Movingwindow == windowtoremove {
|
if winman.Movingwindow == windowtoremove {
|
||||||
|
@ -100,7 +100,7 @@ func CloseWindow(winman *RayGuiWindowManager, windowtoremove *RayGuiWindow) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func (winman *RayGuiWindowManager) AddWindow(windowtoadd *RayGuiWindow) {
|
func (winman *WindowManager) AddWindow(windowtoadd *Window) {
|
||||||
if len(winman.Winlist) > 0 {
|
if len(winman.Winlist) > 0 {
|
||||||
winman.Winlist[len(winman.Winlist)-1].AcceptingInput = false
|
winman.Winlist[len(winman.Winlist)-1].AcceptingInput = false
|
||||||
}
|
}
|
||||||
|
@ -108,7 +108,7 @@ func (winman *RayGuiWindowManager) AddWindow(windowtoadd *RayGuiWindow) {
|
||||||
winman.Winlist[len(winman.Winlist)-1].AcceptingInput = true
|
winman.Winlist[len(winman.Winlist)-1].AcceptingInput = true
|
||||||
}
|
}
|
||||||
|
|
||||||
func MoveToTopOfWindowlist(winman *RayGuiWindowManager, windowtomove *RayGuiWindow) {
|
func MoveToTopOfWindowlist(winman *WindowManager, windowtomove *Window) {
|
||||||
winman.Winlist[len(winman.Winlist)-1].AcceptingInput = false
|
winman.Winlist[len(winman.Winlist)-1].AcceptingInput = false
|
||||||
winman.WinlistUnlistWindow(windowtomove)
|
winman.WinlistUnlistWindow(windowtomove)
|
||||||
winman.AddWindow(windowtomove)
|
winman.AddWindow(windowtomove)
|
||||||
|
|
Loading…
Reference in a new issue