Skip to content

Commit a783b7b

Browse files
committed
added keybindings to control RandomSeed
1 parent 9bb3fa7 commit a783b7b

File tree

4 files changed

+50
-24
lines changed

4 files changed

+50
-24
lines changed

controls.go

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,14 @@ func (s *Slider) CheckAndUpdate() (bool, error) {
114114
return didChange, nil
115115
}
116116

117+
func (s *Slider) StringVal() string {
118+
digits := 0
119+
if s.Incr < 1 {
120+
digits = int(math.Ceil(math.Abs(math.Log10(s.Incr))))
121+
}
122+
return strconv.FormatFloat(s.Val, 'f', digits, 64)
123+
}
124+
117125
func (s *Slider) Draw(ctx *gg.Context) {
118126
ctx.SetColor(s.colors.Background)
119127
ctx.DrawRectangle(s.Pos.X, s.Pos.Y, s.Width, SliderHeight)
@@ -124,14 +132,10 @@ func (s *Slider) Draw(ctx *gg.Context) {
124132
ctx.SetColor(s.colors.Outline)
125133
ctx.DrawRectangle(s.Pos.X, s.Pos.Y, s.Width, SliderHeight)
126134
ctx.Stroke()
127-
digits := 0
128-
if s.Incr < 1 {
129-
digits = int(math.Ceil(math.Abs(math.Log10(s.Incr))))
130-
}
131135
ctx.SetColor(s.colors.Text)
132136
ctx.DrawStringWrapped(s.Name, s.Pos.X, s.Pos.Y-ctx.FontHeight()-SliderVPadding, 0, 0, s.Width, 1, gg.AlignLeft)
133137
ctx.DrawStringWrapped(
134-
strconv.FormatFloat(s.Val, 'f', digits, 64),
138+
s.StringVal(),
135139
s.Pos.X, s.Pos.Y-ctx.FontHeight()-SliderVPadding,
136140
0, 0, s.Width, 1, gg.AlignRight)
137141
}

examples/10print/main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ func (t *Truchet) flip(r int, c int) {
5959

6060
func reset(s *sketchy.Sketch) {
6161
cellSize := s.Slider("cellSize")
62-
board.rng.SetSeed(int64(s.Slider("seed")))
62+
board.rng.SetSeed(s.RandomSeed)
6363
board.rng.SetNoiseOctaves(int(s.Slider("octaves")))
6464
board.rng.SetNoisePersistence(s.Slider("persistence"))
6565
board.rng.SetNoiseLacunarity(s.Slider("lacunarity"))

examples/10print/sketch.json

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -23,19 +23,6 @@
2323
"FillColor": "",
2424
"TextColor": ""
2525
},
26-
{
27-
"Name": "seed",
28-
"Width": 226,
29-
"Height": 15,
30-
"MinVal": -10000,
31-
"MaxVal": 10000,
32-
"Val": -4,
33-
"Incr": 1,
34-
"OutlineColor": "",
35-
"BackgroundColor": "",
36-
"FillColor": "",
37-
"TextColor": ""
38-
},
3926
{
4027
"Name": "octaves",
4128
"Width": 226,

sketch.go

Lines changed: 40 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,16 @@ package sketchy
33
import (
44
"encoding/json"
55
"fmt"
6+
"github.com/fogleman/gg"
7+
"github.com/hajimehoshi/ebiten/v2"
8+
"github.com/hajimehoshi/ebiten/v2/inpututil"
69
"image"
710
"image/color"
811
"image/png"
912
"io/ioutil"
1013
"log"
14+
"math/rand"
1115
"os"
12-
13-
"github.com/fogleman/gg"
14-
"github.com/hajimehoshi/ebiten/v2"
15-
"github.com/hajimehoshi/ebiten/v2/inpututil"
1616
)
1717

1818
const (
@@ -51,6 +51,7 @@ type Sketch struct {
5151
isSavingPNG bool
5252
isSavingScreen bool
5353
needToClear bool
54+
Tick int64 `json:"-"`
5455
}
5556

5657
func NewSketchFromFile(fname string) (*Sketch, error) {
@@ -117,6 +118,27 @@ func (s *Sketch) UpdateControls() {
117118
if inpututil.IsKeyJustReleased(ebiten.KeyC) {
118119
s.saveConfig()
119120
}
121+
if inpututil.IsKeyJustReleased(ebiten.KeyUp) {
122+
s.RandomSeed++
123+
s.Rand.SetSeed(s.RandomSeed)
124+
controlsChanged = true
125+
fmt.Println("RandomSeed incremented: ", s.RandomSeed)
126+
}
127+
if inpututil.IsKeyJustReleased(ebiten.KeyDown) {
128+
s.RandomSeed--
129+
s.Rand.SetSeed(s.RandomSeed)
130+
controlsChanged = true
131+
fmt.Println("RandomSeed decremented: ", s.RandomSeed)
132+
}
133+
if inpututil.IsKeyJustReleased(ebiten.KeyNumpadDecimal) {
134+
s.RandomSeed = rand.Int63()
135+
s.Rand.SetSeed(s.RandomSeed)
136+
controlsChanged = true
137+
fmt.Println("RandomSeed changed: ", s.RandomSeed)
138+
}
139+
if inpututil.IsKeyJustReleased(ebiten.KeySpace) {
140+
s.DumpState()
141+
}
120142
for i := range s.Sliders {
121143
didChange, err := s.Sliders[i].CheckAndUpdate()
122144
if err != nil {
@@ -192,6 +214,7 @@ func (s *Sketch) Layout(outsideWidth, outsideHeight int) (int, int) {
192214
func (s *Sketch) Update() error {
193215
s.UpdateControls()
194216
s.Updater(s)
217+
s.Tick++
195218
return nil
196219
}
197220

@@ -249,13 +272,25 @@ func (s *Sketch) Draw(screen *ebiten.Image) {
249272
}
250273

251274
func (s *Sketch) SketchCoords(x, y float64) Point {
252-
return Point{X: float64(x) - s.ControlWidth, Y: float64(y)}
275+
return Point{X: x - s.ControlWidth, Y: y}
253276
}
254277

255278
func (s *Sketch) PointInSketchArea(x, y float64) bool {
256279
return x > s.ControlWidth && x <= (s.ControlWidth+s.SketchWidth) && y >= 0 && y <= s.SketchHeight
257280
}
258281

282+
func (s *Sketch) DumpState() {
283+
for i := range s.Sliders {
284+
fmt.Printf("%s: %s\n", s.Sliders[i].Name, s.Sliders[i].StringVal())
285+
}
286+
for i := range s.Toggles {
287+
if !s.Toggles[i].IsButton {
288+
fmt.Printf("%s: %t\n", s.Toggles[i].Name, s.Toggles[i].Checked)
289+
}
290+
}
291+
fmt.Println("RandomSeed: ", s.RandomSeed)
292+
}
293+
259294
func (s *Sketch) buildMaps() {
260295
s.sliderControlMap = make(map[string]int)
261296
for i := range s.Sliders {

0 commit comments

Comments
 (0)