From cb3e8b3c4cfa631b7380061b8fdc46c9df05e3d6 Mon Sep 17 00:00:00 2001 From: Thomas von Dein Date: Sun, 26 May 2024 13:08:36 +0200 Subject: [PATCH] little refactor --- TODO.md | 12 +----------- config.go | 25 +++++++++++++++++++++++++ game.go | 6 ++++++ main.go | 31 ------------------------------- 4 files changed, 32 insertions(+), 42 deletions(-) diff --git a/TODO.md b/TODO.md index bc194a0..a69ca10 100644 --- a/TODO.md +++ b/TODO.md @@ -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 diff --git a/config.go b/config.go index fc1989f..3f33dc7 100644 --- a/config.go +++ b/config.go @@ -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{} diff --git a/game.go b/game.go index 94ee80e..c5f017c 100644 --- a/game.go +++ b/game.go @@ -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 } diff --git a/main.go b/main.go index f40d2cd..a940993 100644 --- a/main.go +++ b/main.go @@ -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)