cli.go 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. package cli
  2. import (
  3. "f1-game/internal/code"
  4. "f1-game/internal/pb"
  5. "fmt"
  6. "time"
  7. cherryHttp "github.com/cherry-game/cherry/extend/http"
  8. cherryTime "github.com/cherry-game/cherry/extend/time"
  9. clog "github.com/cherry-game/cherry/logger"
  10. pomeloClient "github.com/cherry-game/cherry/net/parser/pomelo/client"
  11. jsoniter "github.com/json-iterator/go"
  12. )
  13. func RegisterDevAccounts(url string, accounts map[string]string) {
  14. for key, val := range accounts {
  15. RegisterDevAccount(url, key, val)
  16. }
  17. }
  18. func RegisterDevAccount(url string, account, password string) {
  19. requestURL := fmt.Sprintf("%s/dev/register", url)
  20. params := map[string]string{
  21. "account": account,
  22. "password": password,
  23. }
  24. jsonBytes, httpRsp, err := cherryHttp.GET(requestURL, params)
  25. if err != nil {
  26. clog.Warn(err)
  27. return
  28. }
  29. if httpRsp.StatusCode != 200 {
  30. clog.Warnf("register account = %s, http status code = %d", account, httpRsp.StatusCode)
  31. return
  32. }
  33. rsp := &code.DataResult{}
  34. err = jsoniter.Unmarshal(jsonBytes, rsp)
  35. if err != nil {
  36. clog.Warn(err)
  37. return
  38. }
  39. clog.Debugf("register account = %s, result = %+v", account, rsp)
  40. }
  41. func RunRobotConnect(url, pid, userName, password, addr string) *Robot {
  42. cli := New(
  43. pomeloClient.New(
  44. pomeloClient.WithRequestTimeout(3*time.Second),
  45. pomeloClient.WithErrorBreak(true),
  46. ),
  47. false,
  48. )
  49. cli.PrintLog = false
  50. if err := cli.GetToken(url, pid, userName, password); err != nil {
  51. clog.Error(err)
  52. return nil
  53. }
  54. if err := cli.ConnectToTCP(addr); err != nil {
  55. clog.Error(err)
  56. return nil
  57. }
  58. return cli
  59. }
  60. func EnterServer(url, pid, userName, password, addr string, gameNodeID string, printLog bool) *Robot {
  61. return NewEnterServer(url, pid, userName, password, addr, gameNodeID, printLog, false)
  62. }
  63. func NewEnterServer(url, pid, userName, password, addr string, gameNodeID string, printLog bool, isNew bool) *Robot {
  64. client := pomeloClient.New(
  65. pomeloClient.WithRequestTimeout(60*time.Second),
  66. pomeloClient.WithErrorBreak(true),
  67. )
  68. cli := New(client, isNew)
  69. cli.PrintLog = printLog
  70. if err := cli.GetToken(url, pid, userName, password); err != nil {
  71. clog.Error(err)
  72. return nil
  73. }
  74. cli.RandSleep()
  75. // if err := cli.ConnectToWS(addr, ""); err != nil {
  76. if err := cli.ConnectToTCP(addr); err != nil {
  77. clog.Error(err)
  78. return nil
  79. }
  80. cli.StartTime = cherryTime.Now()
  81. // 监听push
  82. cli.ListenerPush()
  83. userLoginRequest := &pb.UserLoginRequest{
  84. Token: cli.Token,
  85. GameNodeID: gameNodeID,
  86. }
  87. err := cli.UserLogin(userLoginRequest)
  88. if err != nil {
  89. clog.Warn(err)
  90. return nil
  91. }
  92. cli.RandSleep()
  93. err = cli.PlayerEnter("en_US")
  94. if err != nil {
  95. clog.Warn(err)
  96. return nil
  97. }
  98. elapsedTime := cli.StartTime.NowDiffMillisecond()
  99. if elapsedTime > 100 {
  100. clog.Debugf("[%s] is enter to game. elapsed time:%dms", cli.TagName, elapsedTime)
  101. }
  102. //cli.Disconnect()
  103. return cli
  104. }