mirror of
https://github.com/BigJk/crt.git
synced 2026-02-06 10:47:25 +00:00
Add WindowOption and RunWithOptions function to allow for extra configuration
This commit is contained in:
parent
a3526f42c5
commit
ea37c58ee8
51
crt.go
51
crt.go
@ -66,6 +66,43 @@ type Window struct {
|
||||
invalidateBuffer bool
|
||||
}
|
||||
|
||||
type WindowOption func(window *Window)
|
||||
|
||||
// WithWindowTitle sets the window title.
|
||||
func WithWindowTitle(title string) WindowOption {
|
||||
return func(window *Window) {
|
||||
ebiten.SetWindowTitle(title)
|
||||
}
|
||||
}
|
||||
|
||||
// WithScreenFilter enables the screen filter.
|
||||
func WithScreenFilter() WindowOption {
|
||||
return func(window *Window) {
|
||||
ebiten.SetScreenFilterEnabled(true)
|
||||
}
|
||||
}
|
||||
|
||||
// WithoutScreenFilter disables the screen filter.
|
||||
func WithoutScreenFilter() WindowOption {
|
||||
return func(window *Window) {
|
||||
ebiten.SetScreenFilterEnabled(true)
|
||||
}
|
||||
}
|
||||
|
||||
// WithWindowDecoration enables window decorations.
|
||||
func WithWindowDecoration() WindowOption {
|
||||
return func(window *Window) {
|
||||
ebiten.SetWindowDecorated(true)
|
||||
}
|
||||
}
|
||||
|
||||
// WithoutWindowDecoration enables window decorations.
|
||||
func WithoutWindowDecoration() WindowOption {
|
||||
return func(window *Window) {
|
||||
ebiten.SetWindowDecorated(false)
|
||||
}
|
||||
}
|
||||
|
||||
// NewGame creates a new terminal game with the given dimensions and font faces.
|
||||
func NewGame(width int, height int, fonts Fonts, tty io.Reader, adapter InputAdapter, defaultBg color.Color) (*Window, error) {
|
||||
if defaultBg == nil {
|
||||
@ -631,6 +668,20 @@ func (g *Window) Run(title string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (g *Window) RunWithOptions(options ...WindowOption) error {
|
||||
ebiten.SetWindowSize(int(float64(g.cellsWidth*g.cellWidth)/DeviceScale()), int(float64(g.cellsHeight*g.cellHeight)/DeviceScale()))
|
||||
|
||||
for _, opt := range options {
|
||||
opt(g)
|
||||
}
|
||||
|
||||
if err := ebiten.RunGame(g); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (g *Window) Kill() {
|
||||
SysKill()
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user