gobdumper... meh
This commit is contained in:
parent
633d431a98
commit
8f05192d78
2 changed files with 0 additions and 53 deletions
|
@ -1,13 +1,9 @@
|
||||||
package engine
|
package engine
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"compress/gzip"
|
|
||||||
"encoding/gob"
|
"encoding/gob"
|
||||||
"errors"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"math"
|
"math"
|
||||||
"os"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/hajimehoshi/ebiten/v2"
|
"github.com/hajimehoshi/ebiten/v2"
|
||||||
"github.com/hajimehoshi/ebiten/v2/ebitenutil"
|
"github.com/hajimehoshi/ebiten/v2/ebitenutil"
|
||||||
|
@ -17,14 +13,9 @@ var (
|
||||||
_ Drawer = PerfDisplay{}
|
_ Drawer = PerfDisplay{}
|
||||||
_ DrawOrderer = PerfDisplay{}
|
_ DrawOrderer = PerfDisplay{}
|
||||||
_ Hider = &PerfDisplay{}
|
_ Hider = &PerfDisplay{}
|
||||||
|
|
||||||
_ Disabler = &GobDumper{}
|
|
||||||
_ Prepper = &GobDumper{}
|
|
||||||
_ Updater = &GobDumper{}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
gob.Register(&GobDumper{})
|
|
||||||
gob.Register(&PerfDisplay{})
|
gob.Register(&PerfDisplay{})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -76,44 +67,3 @@ func (PerfDisplay) DrawOrder() float64 {
|
||||||
// Always draw on top
|
// Always draw on top
|
||||||
return math.MaxFloat64
|
return math.MaxFloat64
|
||||||
}
|
}
|
||||||
|
|
||||||
// GobDumper waits for a given key combo, then dumps the game into a gob file
|
|
||||||
// in the current directory.
|
|
||||||
type GobDumper struct {
|
|
||||||
Disabled
|
|
||||||
KeyCombo []ebiten.Key
|
|
||||||
|
|
||||||
game *Game
|
|
||||||
}
|
|
||||||
|
|
||||||
// Prepare simply stores the reference to the Game.
|
|
||||||
func (d *GobDumper) Prepare(g *Game) { d.game = g }
|
|
||||||
|
|
||||||
// Update waits for the key combo, then dumps the game state into a gzipped gob.
|
|
||||||
func (d *GobDumper) Update() error {
|
|
||||||
if d.Disabled {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
for _, key := range d.KeyCombo {
|
|
||||||
if !ebiten.IsKeyPressed(key) {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if d.game == nil {
|
|
||||||
return errors.New("nil d.game in GobDumper.Update")
|
|
||||||
}
|
|
||||||
f, err := os.Create(time.Now().Format("20060102030405.gob.gz"))
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
defer f.Close()
|
|
||||||
gz := gzip.NewWriter(f)
|
|
||||||
defer gz.Close()
|
|
||||||
if err := gob.NewEncoder(gz).Encode(d.game); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
if err := gz.Close(); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
return f.Close()
|
|
||||||
}
|
|
||||||
|
|
3
main.go
3
main.go
|
@ -119,9 +119,6 @@ func main() {
|
||||||
Root: &engine.Scene{
|
Root: &engine.Scene{
|
||||||
ID: "root",
|
ID: "root",
|
||||||
Components: []interface{}{
|
Components: []interface{}{
|
||||||
&engine.GobDumper{
|
|
||||||
KeyCombo: []ebiten.Key{ebiten.KeyControl, ebiten.KeyD},
|
|
||||||
},
|
|
||||||
&engine.Camera{
|
&engine.Camera{
|
||||||
ID: "game_camera",
|
ID: "game_camera",
|
||||||
Scene: &engine.SceneRef{Path: "assets/level1.gobz"},
|
Scene: &engine.SceneRef{Path: "assets/level1.gobz"},
|
||||||
|
|
Loading…
Reference in a new issue