implement show/hide repl commands
This commit is contained in:
parent
933340ea8d
commit
a44bf89437
1 changed files with 46 additions and 9 deletions
|
@ -36,6 +36,10 @@ func (g *Game) REPL(src io.Reader, dst io.Writer, assets fs.FS) error {
|
||||||
g.cmdTree(dst, argv)
|
g.cmdTree(dst, argv)
|
||||||
case "query":
|
case "query":
|
||||||
g.cmdQuery(dst, argv)
|
g.cmdQuery(dst, argv)
|
||||||
|
case "hide":
|
||||||
|
g.cmdHide(dst, argv)
|
||||||
|
case "show":
|
||||||
|
g.cmdShow(dst, argv)
|
||||||
}
|
}
|
||||||
fmt.Fprint(dst, prompt)
|
fmt.Fprint(dst, prompt)
|
||||||
}
|
}
|
||||||
|
@ -43,23 +47,17 @@ func (g *Game) REPL(src io.Reader, dst io.Writer, assets fs.FS) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g *Game) cmdSave(dst io.Writer, argv []string) {
|
func (g *Game) cmdSave(dst io.Writer, argv []string) {
|
||||||
if len(argv) != 2 {
|
c := g.cmdutilComponentArg1(dst, argv)
|
||||||
fmt.Fprintln(dst, "Usage: save ID")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
id := argv[1]
|
|
||||||
c := g.Component(id)
|
|
||||||
if c == nil {
|
if c == nil {
|
||||||
fmt.Fprintf(dst, "Component %q not found\n", id)
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
s, ok := c.(Saver)
|
s, ok := c.(Saver)
|
||||||
if !ok {
|
if !ok {
|
||||||
fmt.Fprintf(dst, "Component %q not a Saver (type %T)\n", id, c)
|
fmt.Fprintf(dst, "Component not saveable (type %T)\n", c)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if err := s.Save(); err != nil {
|
if err := s.Save(); err != nil {
|
||||||
fmt.Fprintf(dst, "Couldn't save %q: %v\n", id, err)
|
fmt.Fprintf(dst, "Couldn't save: %v\n", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -147,3 +145,42 @@ func (g *Game) cmdQuery(dst io.Writer, argv []string) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (g *Game) cmdutilComponentArg1(dst io.Writer, argv []string) interface{} {
|
||||||
|
if len(argv) != 2 {
|
||||||
|
fmt.Fprintln(dst, "Usage: hide ID")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
id := argv[1]
|
||||||
|
c := g.Component(id)
|
||||||
|
if c == nil {
|
||||||
|
fmt.Fprintf(dst, "Component %q not found\n", id)
|
||||||
|
}
|
||||||
|
return c
|
||||||
|
}
|
||||||
|
|
||||||
|
func (g *Game) cmdHide(dst io.Writer, argv []string) {
|
||||||
|
c := g.cmdutilComponentArg1(dst, argv)
|
||||||
|
if c == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
h, ok := c.(Hider)
|
||||||
|
if !ok {
|
||||||
|
fmt.Fprintf(dst, "Component not hidable (type %T)\n", c)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
h.Hide()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (g *Game) cmdShow(dst io.Writer, argv []string) {
|
||||||
|
c := g.cmdutilComponentArg1(dst, argv)
|
||||||
|
if c == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
h, ok := c.(Hider)
|
||||||
|
if !ok {
|
||||||
|
fmt.Fprintf(dst, "Component not showable (type %T)\n", c)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
h.Show()
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue