Remove ScreenshotKey Event, Add F* Key Handlers

* The F3 key now toggles the Debug Overlay, which is now OFF by default.
* The F4 key now toggles the Debug Collision Boxes feature.
This commit is contained in:
Noah 2019-04-19 16:21:04 -07:00
vanhempi 2a162a86dd
commit 52a2545692
7 muutettua tiedostoa jossa 74 lisäystä ja 44 poistoa

Näytä tiedosto

@ -40,8 +40,14 @@ Escape
Exit the program otherwise.
Enter
Open and close the developer console, and run commands while the console
is open.
Open and close the developer console, and run commands while the
console is open.
F3
Toggle the Debug Overlay.
F4
Toggle debug collision hitboxes.
```
In Play Mode:
@ -51,13 +57,6 @@ Cursor Keys
Move the player around.
```
In Edit Mode:
```
F12
Take a screenshot (generate a PNG based on level data)
```
## Developer Console
Press `Enter` at any time to open the developer console.
@ -68,14 +67,14 @@ Commands supported:
new
Create a new map in Edit Mode.
save [filename.json]
save [filename]
Save the current map in Edit Mode. The filename is required if the map has
not been saved yet.
edit [filename.json]
Open a map in Edit Mode.
edit [filename]
Open a map or doodad in Edit Mode.
play [filename.json]
play [filename]
Open a map in Play Mode.
echo <text>

Näytä tiedosto

@ -11,16 +11,14 @@ type State struct {
Button1 *BoolTick
Button2 *BoolTick
// Screenshot key.
ScreenshotKey *BoolTick
EscapeKey *BoolTick
EnterKey *BoolTick
ShiftActive *BoolTick
KeyName *StringTick
Up *BoolTick
Left *BoolTick
Right *BoolTick
Down *BoolTick
EscapeKey *BoolTick
EnterKey *BoolTick
ShiftActive *BoolTick
KeyName *StringTick
Up *BoolTick
Left *BoolTick
Right *BoolTick
Down *BoolTick
// Cursor positions.
CursorX *Int32Tick
@ -33,20 +31,19 @@ type State struct {
// New creates a new event state manager.
func New() *State {
return &State{
Button1: &BoolTick{},
Button2: &BoolTick{},
ScreenshotKey: &BoolTick{},
EscapeKey: &BoolTick{},
EnterKey: &BoolTick{},
ShiftActive: &BoolTick{},
KeyName: &StringTick{},
Up: &BoolTick{},
Left: &BoolTick{},
Right: &BoolTick{},
Down: &BoolTick{},
CursorX: &Int32Tick{},
CursorY: &Int32Tick{},
Resized: &BoolTick{},
Button1: &BoolTick{},
Button2: &BoolTick{},
EscapeKey: &BoolTick{},
EnterKey: &BoolTick{},
ShiftActive: &BoolTick{},
KeyName: &StringTick{},
Up: &BoolTick{},
Left: &BoolTick{},
Right: &BoolTick{},
Down: &BoolTick{},
CursorX: &Int32Tick{},
CursorY: &Int32Tick{},
Resized: &BoolTick{},
}
}

Näytä tiedosto

@ -19,6 +19,14 @@ var (
// Poll for events.
func (r *Renderer) Poll() (*events.State, error) {
s := r.events
// helper function to push keyboard key names on keyDown events only.
pushKey := func(name string, state uint8) {
if state == 1 {
s.KeyName.Push(name)
}
}
for event := sdl.PollEvent(); event != nil; event = sdl.PollEvent() {
switch t := event.(type) {
case *sdl.QuitEvent:
@ -103,8 +111,30 @@ func (r *Renderer) Poll() (*events.State, error) {
continue
}
s.EnterKey.Push(t.State == 1)
case sdl.SCANCODE_F1:
pushKey("F1", t.State)
case sdl.SCANCODE_F2:
pushKey("F2", t.State)
case sdl.SCANCODE_F3:
pushKey("F3", t.State)
case sdl.SCANCODE_F4:
pushKey("F4", t.State)
case sdl.SCANCODE_F5:
pushKey("F5", t.State)
case sdl.SCANCODE_F6:
pushKey("F6", t.State)
case sdl.SCANCODE_F7:
pushKey("F7", t.State)
case sdl.SCANCODE_F8:
pushKey("F8", t.State)
case sdl.SCANCODE_F9:
pushKey("F9", t.State)
case sdl.SCANCODE_F10:
pushKey("F10", t.State)
case sdl.SCANCODE_F11:
pushKey("F11", t.State)
case sdl.SCANCODE_F12:
s.ScreenshotKey.Push(t.State == 1)
pushKey("F12", t.State)
case sdl.SCANCODE_UP:
s.Up.Push(t.State == 1)
case sdl.SCANCODE_LEFT:

Näytä tiedosto

@ -118,6 +118,14 @@ func (d *Doodle) Run() error {
break
}
if ev.KeyName.Now == "F3" {
DebugOverlay = !DebugOverlay
ev.KeyName.Read()
} else if ev.KeyName.Now == "F4" {
DebugCollision = !DebugCollision
ev.KeyName.Read()
}
// Run the scene's logic.
err = d.Scene.Loop(d, ev)
if err != nil {

Näytä tiedosto

@ -17,7 +17,7 @@ const maxSamples = 100
// Debug mode options, these can be enabled in the dev console
// like: boolProp DebugOverlay true
var (
DebugOverlay = true
DebugOverlay = false
DebugCollision = false
DebugTextPadding int32 = 8

Näytä tiedosto

@ -6,7 +6,6 @@ import (
"math"
"git.kirsle.net/apps/doodle/lib/render"
"git.kirsle.net/apps/doodle/pkg/log"
)
// Chunker is the data structure that manages the chunks of a level, and
@ -30,7 +29,6 @@ func NewChunker(size int) *Chunker {
// on disk) to connect references to the swatches in the palette.
func (c *Chunker) Inflate(pal *Palette) error {
for coord, chunk := range c.Chunks {
log.Debug("Chunker.Inflate: expanding chunk %s", coord)
chunk.Point = coord
chunk.Size = c.Size
chunk.Inflate(pal)

Näytä tiedosto

@ -169,9 +169,7 @@ func (w *Canvas) Loop(ev *events.State) error {
if err := w.loopFollowActor(ev); err != nil {
log.Error("Follow actor: %s", err) // not fatal but nice to know
}
if err := w.loopConstrainScroll(); err != nil {
log.Debug("loopConstrainScroll: %s", err)
}
_ = w.loopConstrainScroll()
// Remove any actors that were destroyed the previous tick.
var newActors []*Actor