mirror of
https://codeberg.org/scip/kageviewer.git
synced 2025-12-16 20:20:58 +01:00
added --tps and --background
This commit is contained in:
@@ -78,6 +78,8 @@ Options:
|
|||||||
-s --shader <kage file> Shader to run
|
-s --shader <kage file> Shader to run
|
||||||
-g --geometry <WIDTHxHEIGHT> Window size
|
-g --geometry <WIDTHxHEIGHT> Window size
|
||||||
-p --position <XxY> Position of image0
|
-p --position <XxY> Position of image0
|
||||||
|
-b --background <png file> Image to load as background
|
||||||
|
-t --tps <ticks/s> At how many ticks per second to run
|
||||||
--map-flag <name> Map Flag uniform to <name>
|
--map-flag <name> Map Flag uniform to <name>
|
||||||
--map-ticks <name> Map Flag uniform to <name>
|
--map-ticks <name> Map Flag uniform to <name>
|
||||||
--map-slider <name> Map Flag uniform to <name>
|
--map-slider <name> Map Flag uniform to <name>
|
||||||
|
|||||||
22
config.go
22
config.go
@@ -32,7 +32,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
VERSION string = "0.0.3"
|
VERSION string = "0.0.4"
|
||||||
Usage string = `This is kage-viewer, a shader viewer.
|
Usage string = `This is kage-viewer, a shader viewer.
|
||||||
|
|
||||||
Usage: kage-viewer [-vd] [-c <config file>] [-g geom] [-p geom] \
|
Usage: kage-viewer [-vd] [-c <config file>] [-g geom] [-p geom] \
|
||||||
@@ -44,6 +44,8 @@ Options:
|
|||||||
-s --shader <kage file> Shader to run
|
-s --shader <kage file> Shader to run
|
||||||
-g --geometry <WIDTHxHEIGHT> Window size
|
-g --geometry <WIDTHxHEIGHT> Window size
|
||||||
-p --position <XxY> Position of image0
|
-p --position <XxY> Position of image0
|
||||||
|
-b --background <png file> Image to load as background
|
||||||
|
-t --tps <ticks/s> At how many ticks per second to run
|
||||||
--map-flag <name> Map Flag uniform to <name>
|
--map-flag <name> Map Flag uniform to <name>
|
||||||
--map-ticks <name> Map Flag uniform to <name>
|
--map-ticks <name> Map Flag uniform to <name>
|
||||||
--map-slider <name> Map Flag uniform to <name>
|
--map-slider <name> Map Flag uniform to <name>
|
||||||
@@ -54,13 +56,15 @@ Options:
|
|||||||
)
|
)
|
||||||
|
|
||||||
type Config struct {
|
type Config struct {
|
||||||
Showversion bool `koanf:"version"` // -v
|
Showversion bool `koanf:"version"` // -v
|
||||||
Debug bool `koanf:"debug"` // -d
|
Debug bool `koanf:"debug"` // -d
|
||||||
Config string `koanf:"config"` // -c
|
Config string `koanf:"config"` // -c
|
||||||
Image []string `koanf:"image"` // -i
|
Image []string `koanf:"image"` // -i
|
||||||
Shader string `koanf:"shader"` // -s
|
Shader string `koanf:"shader"` // -s
|
||||||
Geo string `koanf:"geometry"` // -g
|
Background string `koanf:"background"` // -b
|
||||||
Posision string `koanf:"position"` // -p
|
TPS int `koanf:"tps"` // -t
|
||||||
|
Geo string `koanf:"geometry"` // -g
|
||||||
|
Posision string `koanf:"position"` // -p
|
||||||
Flag string `koanf:"map-flag"`
|
Flag string `koanf:"map-flag"`
|
||||||
Ticks string `koanf:"map-ticks"`
|
Ticks string `koanf:"map-ticks"`
|
||||||
Mouse string `koanf:"map-mouse"`
|
Mouse string `koanf:"map-mouse"`
|
||||||
@@ -91,6 +95,8 @@ func InitConfig() (*Config, error) {
|
|||||||
flagset.StringP("map-ticks", "", "Ticks", "map ticks uniform")
|
flagset.StringP("map-ticks", "", "Ticks", "map ticks uniform")
|
||||||
flagset.StringP("map-mouse", "", "Mouse", "map mouse uniform")
|
flagset.StringP("map-mouse", "", "Mouse", "map mouse uniform")
|
||||||
flagset.StringP("map-slider", "", "Slider", "map slider uniform")
|
flagset.StringP("map-slider", "", "Slider", "map slider uniform")
|
||||||
|
flagset.StringP("background", "b", "", "background image")
|
||||||
|
flagset.IntP("tps", "t", 60, "ticks per second")
|
||||||
|
|
||||||
if err := flagset.Parse(os.Args[1:]); err != nil {
|
if err := flagset.Parse(os.Args[1:]); err != nil {
|
||||||
return nil, fmt.Errorf("failed to parse program arguments: %w", err)
|
return nil, fmt.Errorf("failed to parse program arguments: %w", err)
|
||||||
|
|||||||
39
game.go
39
game.go
@@ -30,13 +30,14 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type Game struct {
|
type Game struct {
|
||||||
Conf *Config
|
Conf *Config
|
||||||
Images []*asset.LiveAsset[*ebiten.Image]
|
Images []*asset.LiveAsset[*ebiten.Image]
|
||||||
Shader *asset.LiveAsset[*ebiten.Shader]
|
Shader *asset.LiveAsset[*ebiten.Shader]
|
||||||
Cursor []float64
|
Cursor []float64
|
||||||
Ticks int
|
Ticks int
|
||||||
Slider float64
|
Slider float64
|
||||||
Flag int
|
Flag int
|
||||||
|
Background *asset.LiveAsset[*ebiten.Image]
|
||||||
}
|
}
|
||||||
|
|
||||||
func LoadImage(name string) (*ebiten.Image, error) {
|
func LoadImage(name string) (*ebiten.Image, error) {
|
||||||
@@ -71,8 +72,21 @@ func (game *Game) Init() error {
|
|||||||
return fmt.Errorf("failed to load shader %s: %s", game.Conf.Shader, err)
|
return fmt.Errorf("failed to load shader %s: %s", game.Conf.Shader, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if game.Conf.Background != "" {
|
||||||
|
slog.Debug("Loading background", "image", game.Conf.Background)
|
||||||
|
|
||||||
|
img, err := asset.NewLiveAsset[*ebiten.Image](game.Conf.Background)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("failed to load image %s: %s", game.Conf.Background, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
game.Background = img
|
||||||
|
}
|
||||||
|
|
||||||
game.Shader = shader
|
game.Shader = shader
|
||||||
|
|
||||||
|
ebiten.SetMaxTPS(game.Conf.TPS)
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -128,6 +142,12 @@ func (game *Game) Update() error {
|
|||||||
fmt.Println("warn: shader reloading error:", game.Shader.Error())
|
fmt.Println("warn: shader reloading error:", game.Shader.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if game.Background != nil {
|
||||||
|
if game.Background.Error() != nil {
|
||||||
|
fmt.Println("warn: background image reloading error:", game.Background.Error())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if game.CheckInput() {
|
if game.CheckInput() {
|
||||||
slog.Debug("Key pressed",
|
slog.Debug("Key pressed",
|
||||||
game.Conf.Flag, game.Flag,
|
game.Conf.Flag, game.Flag,
|
||||||
@@ -146,6 +166,11 @@ func (game *Game) Update() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (game *Game) Draw(screen *ebiten.Image) {
|
func (game *Game) Draw(screen *ebiten.Image) {
|
||||||
|
if game.Background != nil {
|
||||||
|
op := &ebiten.DrawImageOptions{}
|
||||||
|
screen.DrawImage(game.Background.Value(), op)
|
||||||
|
}
|
||||||
|
|
||||||
op := &ebiten.DrawRectShaderOptions{}
|
op := &ebiten.DrawRectShaderOptions{}
|
||||||
|
|
||||||
op.Uniforms = map[string]any{
|
op.Uniforms = map[string]any{
|
||||||
|
|||||||
Reference in New Issue
Block a user