|
@@ -0,0 +1,61 @@
|
|
|
+package main
|
|
|
+
|
|
|
+import (
|
|
|
+ "errors"
|
|
|
+ "fmt"
|
|
|
+ "log"
|
|
|
+ "time"
|
|
|
+
|
|
|
+ door "git.red-green.com/RedGreen/doorgo"
|
|
|
+)
|
|
|
+
|
|
|
+func PrintErr(d *door.Door, err error) {
|
|
|
+ d.Write([]byte(fmt.Sprintf("%sErr: %v"+door.Reset+door.CRNL, door.ColorTextS("BRI RED ON BLA"), err)))
|
|
|
+ _, _, err = d.WaitKey(door.Inactivity)
|
|
|
+ if err != nil {
|
|
|
+ if !errors.Is(err, door.ErrDisconnected) {
|
|
|
+ log.Printf("PrintErr: %v", err)
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func main() {
|
|
|
+ var d *door.Door = &door.Door{}
|
|
|
+ d.Init("mud")
|
|
|
+ defer d.Close()
|
|
|
+
|
|
|
+ d.WriteS(door.Clrscr)
|
|
|
+
|
|
|
+ slash := "/"
|
|
|
+ mud := fmt.Sprintf("%sM%sU%sD"+door.Reset+" v%s"+door.CRNL, door.ColorText("BRI RED ON BLA"), door.ColorText("BRI GRE ON BLA"), door.ColorText("BRI CYA ON BLA"), Version())
|
|
|
+OPENING:
|
|
|
+ for range make([]byte, 4*10) {
|
|
|
+ d.Write([]byte(fmt.Sprintf(door.GotoS(0, 0)+"%s %s", slash, mud)))
|
|
|
+ switch slash {
|
|
|
+ case "/":
|
|
|
+ slash = "-"
|
|
|
+ case "-":
|
|
|
+ slash = "\\"
|
|
|
+ case "\\":
|
|
|
+ slash = "|"
|
|
|
+ case "|":
|
|
|
+ slash = "/"
|
|
|
+ }
|
|
|
+ r, ext, err := d.WaitKey(time.Duration(250) * time.Millisecond)
|
|
|
+ if err != nil {
|
|
|
+ if errors.Is(err, door.ErrDisconnected) {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if errors.Is(err, door.ErrTimeout) {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ PrintErr(d, err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if ext != door.NOP || r != 0 {
|
|
|
+ break OPENING
|
|
|
+ }
|
|
|
+ }
|
|
|
+ d.Write([]byte(door.Reset + door.CRNL))
|
|
|
+ d.WriteS(door.Clrscr)
|
|
|
+}
|