Added storing of window size.
This commit is contained in:
parent
27afe594fe
commit
8dd47c5ec2
@ -47,10 +47,18 @@ func run() error {
|
|||||||
Y: sdl.WINDOWPOS_UNDEFINED,
|
Y: sdl.WINDOWPOS_UNDEFINED,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if ctx.Settings.Window.Size == nil {
|
||||||
|
ctx.Settings.Window.Size = &tins2020.Point{
|
||||||
|
X: 800,
|
||||||
|
Y: 600,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
sdl.SetHint(sdl.HINT_RENDER_SCALE_QUALITY, "1")
|
sdl.SetHint(sdl.HINT_RENDER_SCALE_QUALITY, "1")
|
||||||
window, err := sdl.CreateWindow("TINS 2020", ctx.Settings.Window.Location.X, ctx.Settings.Window.Location.Y,
|
window, err := sdl.CreateWindow("TINS 2020",
|
||||||
800, 600, sdl.WINDOW_SHOWN|sdl.WINDOW_RESIZABLE)
|
ctx.Settings.Window.Location.X, ctx.Settings.Window.Location.Y,
|
||||||
|
ctx.Settings.Window.Size.X, ctx.Settings.Window.Size.Y,
|
||||||
|
sdl.WINDOW_SHOWN|sdl.WINDOW_RESIZABLE)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -135,6 +143,9 @@ func run() error {
|
|||||||
case sdl.WINDOWEVENT_MOVED:
|
case sdl.WINDOWEVENT_MOVED:
|
||||||
x, y := window.GetPosition()
|
x, y := window.GetPosition()
|
||||||
ctx.Settings.Window.Location = &tins2020.Point{X: x, Y: y}
|
ctx.Settings.Window.Location = &tins2020.Point{X: x, Y: y}
|
||||||
|
case sdl.WINDOWEVENT_SIZE_CHANGED:
|
||||||
|
w, h := window.GetSize()
|
||||||
|
ctx.Settings.Window.Size = &tins2020.Point{X: w, Y: h}
|
||||||
}
|
}
|
||||||
case *sdl.KeyboardEvent:
|
case *sdl.KeyboardEvent:
|
||||||
switch e.Keysym.Sym {
|
switch e.Keysym.Sym {
|
||||||
|
@ -31,4 +31,5 @@ func (s *Settings) Store() error {
|
|||||||
|
|
||||||
type WindowSettings struct {
|
type WindowSettings struct {
|
||||||
Location *Point
|
Location *Point
|
||||||
|
Size *Point
|
||||||
}
|
}
|
||||||
|
@ -92,25 +92,22 @@ func (r *terrainRenderer) Handle(ctx *Context, event sdl.Event) {
|
|||||||
r.interact.mouseLeftDown = e.Type == sdl.MOUSEBUTTONDOWN
|
r.interact.mouseLeftDown = e.Type == sdl.MOUSEBUTTONDOWN
|
||||||
if r.interact.mouseLeftDown && r.interact.mouseDrag == nil {
|
if r.interact.mouseLeftDown && r.interact.mouseDrag == nil {
|
||||||
r.interact.mouseDrag = &Point{e.X, e.Y}
|
r.interact.mouseDrag = &Point{e.X, e.Y}
|
||||||
fmt.Println("Drag start", r.interact.mouseDrag)
|
|
||||||
} else if !r.interact.mouseLeftDown && r.interact.mouseDrag != nil {
|
} else if !r.interact.mouseLeftDown && r.interact.mouseDrag != nil {
|
||||||
fmt.Println("Drag end", r.interact.mouseDrag)
|
|
||||||
r.interact.mouseDrag = nil
|
r.interact.mouseDrag = nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case *sdl.MouseMotionEvent:
|
case *sdl.MouseMotionEvent:
|
||||||
r.hover = r.project.screenToMap(e.X, e.Y)
|
r.hover = r.project.screenToMap(e.X, e.Y)
|
||||||
if r.interact.mouseDrag != nil {
|
if r.interact.mouseDrag != nil {
|
||||||
fmt.Println("Dragging...", r.project.center)
|
|
||||||
r.project.center = r.project.center.Sub(r.project.screenToMapRel(e.X-r.interact.mouseDrag.X, e.Y-r.interact.mouseDrag.Y))
|
r.project.center = r.project.center.Sub(r.project.screenToMapRel(e.X-r.interact.mouseDrag.X, e.Y-r.interact.mouseDrag.Y))
|
||||||
r.project.update(ctx.Renderer)
|
r.project.update(ctx.Renderer)
|
||||||
r.interact.mouseDrag = &Point{e.X, e.Y}
|
r.interact.mouseDrag = &Point{e.X, e.Y}
|
||||||
}
|
}
|
||||||
case *sdl.MouseWheelEvent:
|
case *sdl.MouseWheelEvent:
|
||||||
if e.Y > 0 {
|
if e.Y > 0 && r.project.zoom > .5 {
|
||||||
r.project.zoom *= .5
|
r.project.zoom *= .5
|
||||||
r.project.update(ctx.Renderer)
|
r.project.update(ctx.Renderer)
|
||||||
} else if e.Y < 0 {
|
} else if e.Y < 0 && r.project.zoom < 4 {
|
||||||
r.project.zoom *= 2
|
r.project.zoom *= 2
|
||||||
r.project.update(ctx.Renderer)
|
r.project.update(ctx.Renderer)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user