package cli import ( "f1-game/internal/code" "f1-game/internal/pb" "fmt" "time" cherryHttp "github.com/cherry-game/cherry/extend/http" cherryTime "github.com/cherry-game/cherry/extend/time" clog "github.com/cherry-game/cherry/logger" pomeloClient "github.com/cherry-game/cherry/net/parser/pomelo/client" jsoniter "github.com/json-iterator/go" ) func RegisterDevAccounts(url string, accounts map[string]string) { for key, val := range accounts { RegisterDevAccount(url, key, val) } } func RegisterDevAccount(url string, account, password string) { requestURL := fmt.Sprintf("%s/dev/register", url) params := map[string]string{ "account": account, "password": password, } jsonBytes, httpRsp, err := cherryHttp.GET(requestURL, params) if err != nil { clog.Warn(err) return } if httpRsp.StatusCode != 200 { clog.Warnf("register account = %s, http status code = %d", account, httpRsp.StatusCode) return } rsp := &code.DataResult{} err = jsoniter.Unmarshal(jsonBytes, rsp) if err != nil { clog.Warn(err) return } clog.Debugf("register account = %s, result = %+v", account, rsp) } func RunRobotConnect(url, pid, userName, password, addr string) *Robot { cli := New( pomeloClient.New( pomeloClient.WithRequestTimeout(3*time.Second), pomeloClient.WithErrorBreak(true), ), false, ) cli.PrintLog = false if err := cli.GetToken(url, pid, userName, password); err != nil { clog.Error(err) return nil } if err := cli.ConnectToTCP(addr); err != nil { clog.Error(err) return nil } return cli } func EnterServer(url, pid, userName, password, addr string, gameNodeID string, printLog bool) *Robot { return NewEnterServer(url, pid, userName, password, addr, gameNodeID, printLog, false) } func NewEnterServer(url, pid, userName, password, addr string, gameNodeID string, printLog bool, isNew bool) *Robot { client := pomeloClient.New( pomeloClient.WithRequestTimeout(60*time.Second), pomeloClient.WithErrorBreak(true), ) cli := New(client, isNew) cli.PrintLog = printLog if err := cli.GetToken(url, pid, userName, password); err != nil { clog.Error(err) return nil } cli.RandSleep() // if err := cli.ConnectToWS(addr, ""); err != nil { if err := cli.ConnectToTCP(addr); err != nil { clog.Error(err) return nil } cli.StartTime = cherryTime.Now() // 监听push cli.ListenerPush() userLoginRequest := &pb.UserLoginRequest{ Token: cli.Token, GameNodeID: gameNodeID, } err := cli.UserLogin(userLoginRequest) if err != nil { clog.Warn(err) return nil } cli.RandSleep() err = cli.PlayerEnter("en_US") if err != nil { clog.Warn(err) return nil } elapsedTime := cli.StartTime.NowDiffMillisecond() if elapsedTime > 100 { clog.Debugf("[%s] is enter to game. elapsed time:%dms", cli.TagName, elapsedTime) } //cli.Disconnect() return cli }