Add 'ebitendebug' build tag

EBITEN_INTERNAL_IMAGES_KEY is now disabled by default, and enabled
only when a build tag 'ebitendebug' is specified. It is because
game developers might want to disable EBITEN_INTERNAL_IMAGES_KEY
when they release their games, or anyone can dump the internal
images.

Fixes #632.
This commit is contained in:
Hajime Hoshi 2018-06-25 23:59:30 +09:00
parent 116bba0d37
commit b1e4c3c8f0
4 changed files with 59 additions and 6 deletions

21
debug_ebitendebug.go Normal file
View File

@ -0,0 +1,21 @@
// Copyright 2018 The Ebiten Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// +build ebitendebug
package ebiten
func isDebug() bool {
return true
}

21
debug_notebitendebug.go Normal file
View File

@ -0,0 +1,21 @@
// Copyright 2018 The Ebiten Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// +build !ebitendebug
package ebiten
func isDebug() bool {
return false
}

3
doc.go
View File

@ -43,5 +43,6 @@
// by pressing Q key. // by pressing Q key.
// //
// The EBITEN_INTERNAL_IMAGES_KEY environment variable specifies the key // The EBITEN_INTERNAL_IMAGES_KEY environment variable specifies the key
// to dump all the internal images. // to dump all the internal images. This is valid only when the build tag
// 'ebitendebug' is specified.
package ebiten package ebiten

20
run.go
View File

@ -109,6 +109,11 @@ type imageDumper struct {
} }
func (i *imageDumper) update(screen *Image) error { func (i *imageDumper) update(screen *Image) error {
const (
envScreenshotKey = "EBITEN_SCREENSHOT_KEY"
envInternalImagesKey = "EBITEN_INTERNAL_IMAGES_KEY"
)
if err := i.f(screen); err != nil { if err := i.f(screen); err != nil {
return err return err
} }
@ -117,16 +122,21 @@ func (i *imageDumper) update(screen *Image) error {
if i.keyState == nil { if i.keyState == nil {
i.keyState = map[Key]int{} i.keyState = map[Key]int{}
if keyname := os.Getenv("EBITEN_SCREENSHOT_KEY"); keyname != "" { if keyname := os.Getenv(envScreenshotKey); keyname != "" {
if key, ok := keyNameToKey(keyname); ok { if key, ok := keyNameToKey(keyname); ok {
i.hasScreenshotKey = true i.hasScreenshotKey = true
i.screenshotKey = key i.screenshotKey = key
} }
} }
if keyname := os.Getenv("EBITEN_INTERNAL_IMAGES_KEY"); keyname != "" {
if key, ok := keyNameToKey(keyname); ok { if keyname := os.Getenv(envInternalImagesKey); keyname != "" {
i.hasDumpInternalImagesKey = true if isDebug() {
i.dumpInternalImagesKey = key if key, ok := keyNameToKey(keyname); ok {
i.hasDumpInternalImagesKey = true
i.dumpInternalImagesKey = key
}
} else {
fmt.Fprintf(os.Stderr, "%s is disabled. Specify a build tag 'ebitendebug' to enable it.\n", envInternalImagesKey)
} }
} }
} }