main.go 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package main
  2. import (
  3. "errors"
  4. "fmt"
  5. "strings"
  6. door "git.red-green.com/RedGreen/doorgo"
  7. )
  8. var (
  9. d door.Door
  10. udb *UserDB
  11. u *User
  12. )
  13. func main() {
  14. d.Init("Geode")
  15. defer d.Close()
  16. udb = &UserDB{}
  17. err := udb.Open("users.db3")
  18. if err != nil {
  19. fmt.Printf("UserDB.Open(filename='users.db3') > %v\r\n", err)
  20. return
  21. }
  22. u = udb.FindUser(d.Config.Handle + "@" + d.Config.BBSID)
  23. if u != nil {
  24. d.WriteS(door.ColorTextS("BRI YEL ON BLA") + "Geode" + door.ColorTextS("WHI ON BLA") + " by " + door.ColorTextS("BRI RED ON BLA") + "Apollo" + door.ColorTextS("BRI BLA ON BLA") + "@" + door.ColorTextS("BRI GRE ON BLA") + "21:1/236" + door.Reset + door.CRNL + door.ColorTextS("BRI CYA ON BLA") + fmt.Sprintf("Welcome back %s%s", door.ColorTextS("BRI WHI ON BLA"), u.Name) + door.CRNL)
  25. d.WaitKey(door.Inactivity)
  26. } else {
  27. u = &User{}
  28. d.WriteS(door.ColorTextS("BRI YEL ON BLA") + "Geode" + door.ColorTextS("WHI ON BLA") + " by " + door.ColorTextS("BRI RED ON BLA") + "Apollo" + door.ColorTextS("BRI BLA ON BLA") + "@" + door.ColorTextS("BRI GRE ON BLA") + "21:1/236" + door.Reset + door.CRNL + door.ColorTextS("BRI CYA ON BLA") + "Welcome new user" + door.CRNL)
  29. NEW_NAME:
  30. for {
  31. d.WriteS(door.GotoS(1, 4) + door.Reset + strings.Repeat(" ", door.Width-1))
  32. d.WriteS(door.GotoS(1, 3) + door.ColorTextS("BRI YEL ON BLA") + "Your Name: " + door.ColorTextS("BRI WHI ON BLU"))
  33. name := d.Input(30)
  34. if len(name) == 0 {
  35. d.WriteS(door.Reset + door.CRNL + "Goodbye!")
  36. return
  37. }
  38. d.WriteS(door.Reset + door.CRNL + door.ColorTextS("BRI WHI ON BLA") + name + door.ColorTextS("BRI GRE ON BLA") + " ok?" + door.Reset + " ")
  39. r, _, err := d.WaitKey(door.Inactivity)
  40. if err != nil {
  41. if errors.Is(err, door.ErrDisconnected) {
  42. return
  43. } else {
  44. continue NEW_NAME
  45. }
  46. }
  47. if r == 'y' || r == 'Y' {
  48. u.BBSName = d.Config.BBSID
  49. u.BBSNick = d.Config.Handle
  50. u.Name = name
  51. err = udb.SaveUser(u)
  52. if err != nil {
  53. d.WriteS(fmt.Sprintf("%sErr: %v", door.ColorTextS("BRI RED ON BLA"), err) + door.CRNL)
  54. d.WaitKey(door.Inactivity)
  55. return
  56. } else {
  57. d.WriteS(door.CRNL + door.Reset + "Saved!" + door.CRNL)
  58. }
  59. break NEW_NAME
  60. }
  61. }
  62. }
  63. }