little refactor

This commit is contained in:
2024-05-26 13:08:36 +02:00
parent bf109d7e8b
commit cb3e8b3c4c
4 changed files with 32 additions and 42 deletions

12
TODO.md
View File

@@ -1,11 +1 @@
https://conwaylife.com/wiki/Run_Length_Encoded
e.g.:
https://github.com/nhoffmann/life/tree/master/rle
https://github.com/sachaos/go-life/tree/master/format/rle
rle files:
https://catagolue.hatsya.com/object/xq2_32mmgozg0igke72z1n2q1z0qgm1z31i2bsogzggqq261z1/b3s23
https://copy.sh/life/examples/
- Translate mouse click co-ordinates to world co-ordinates
- Implement RLE writing on scene.MarkDone

View File

@@ -3,6 +3,7 @@ package main
import (
"fmt"
"log"
"os"
"github.com/spf13/pflag"
"github.com/tlinden/golsky/rle"
@@ -23,6 +24,30 @@ type Config struct {
ShowVersion bool
}
const (
VERSION = "v0.0.6"
Alive = 1
Dead = 0
)
func GetRLE(filename string) *rle.RLE {
if filename == "" {
return nil
}
content, err := os.ReadFile(filename)
if err != nil {
log.Fatal(err)
}
parsedRle, err := rle.Parse(string(content))
if err != nil {
log.Fatalf("failed to load RLE pattern file: %s", err)
}
return &parsedRle
}
func ParseCommandline() *Config {
config := Config{}

View File

@@ -17,9 +17,15 @@ func NewGame(config *Config, startscene SceneName) *Game {
ScreenHeight: config.ScreenHeight,
}
// setup scene[s]
game.CurrentScene = startscene
game.Scenes[Play] = NewPlayScene(game, config)
// setup environment
ebiten.SetWindowSize(game.ScreenWidth, game.ScreenHeight)
ebiten.SetWindowTitle("golsky - conway's game of life")
ebiten.SetWindowResizingMode(ebiten.WindowResizingModeEnabled)
return game
}

31
main.go
View File

@@ -5,35 +5,9 @@ import (
"log"
"os"
"github.com/tlinden/golsky/rle"
"github.com/hajimehoshi/ebiten/v2"
)
const (
VERSION = "v0.0.6"
Alive = 1
Dead = 0
)
func GetRLE(filename string) *rle.RLE {
if filename == "" {
return nil
}
content, err := os.ReadFile(filename)
if err != nil {
log.Fatal(err)
}
parsedRle, err := rle.Parse(string(content))
if err != nil {
log.Fatalf("failed to load RLE pattern file: %s", err)
}
return &parsedRle
}
func main() {
config := ParseCommandline()
@@ -44,11 +18,6 @@ func main() {
game := NewGame(config, Play)
// setup environment
ebiten.SetWindowSize(game.ScreenWidth, game.ScreenHeight)
ebiten.SetWindowTitle("Game of life")
ebiten.SetWindowResizingMode(ebiten.WindowResizingModeEnabled)
// main loop
if err := ebiten.RunGame(game); err != nil {
log.Fatal(err)