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 - Implement RLE writing on scene.MarkDone
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

View File

@@ -3,6 +3,7 @@ package main
import ( import (
"fmt" "fmt"
"log" "log"
"os"
"github.com/spf13/pflag" "github.com/spf13/pflag"
"github.com/tlinden/golsky/rle" "github.com/tlinden/golsky/rle"
@@ -23,6 +24,30 @@ type Config struct {
ShowVersion bool 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 { func ParseCommandline() *Config {
config := Config{} config := Config{}

View File

@@ -17,9 +17,15 @@ func NewGame(config *Config, startscene SceneName) *Game {
ScreenHeight: config.ScreenHeight, ScreenHeight: config.ScreenHeight,
} }
// setup scene[s]
game.CurrentScene = startscene game.CurrentScene = startscene
game.Scenes[Play] = NewPlayScene(game, config) 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 return game
} }

31
main.go
View File

@@ -5,35 +5,9 @@ import (
"log" "log"
"os" "os"
"github.com/tlinden/golsky/rle"
"github.com/hajimehoshi/ebiten/v2" "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() { func main() {
config := ParseCommandline() config := ParseCommandline()
@@ -44,11 +18,6 @@ func main() {
game := NewGame(config, Play) game := NewGame(config, Play)
// setup environment
ebiten.SetWindowSize(game.ScreenWidth, game.ScreenHeight)
ebiten.SetWindowTitle("Game of life")
ebiten.SetWindowResizingMode(ebiten.WindowResizingModeEnabled)
// main loop // main loop
if err := ebiten.RunGame(game); err != nil { if err := ebiten.RunGame(game); err != nil {
log.Fatal(err) log.Fatal(err)