github.com/loomnetwork/gamechain@v0.0.0-20200406110549-36c47eb97a92/cli/cmd/find_match.go (about)

     1  package cmd
     2  
     3  import (
     4  	"fmt"
     5  	"github.com/loomnetwork/gamechain/tools/battleground_utility"
     6  	"github.com/loomnetwork/gamechain/types/zb/zb_calls"
     7  	"strings"
     8  
     9  	"github.com/loomnetwork/go-loom/auth"
    10  	"github.com/spf13/cobra"
    11  )
    12  
    13  var findMatchCmdArgs struct {
    14  	userID string
    15  	tags   []string
    16  }
    17  
    18  var findMatchCmd = &cobra.Command{
    19  	Use:   "find_match",
    20  	Short: "find match for zombiebattleground",
    21  	RunE: func(cmd *cobra.Command, args []string) error {
    22  		signer := auth.NewEd25519Signer(commonTxObjs.privateKey)
    23  		var req = zb_calls.FindMatchRequest{
    24  			UserId: findMatchCmdArgs.userID,
    25  			Tags:   findMatchCmdArgs.tags,
    26  		}
    27  		var resp zb_calls.FindMatchResponse
    28  
    29  		req.UserId = findMatchCmdArgs.userID
    30  
    31  		_, err := commonTxObjs.contract.Call("FindMatch", &req, signer, &resp)
    32  		if err != nil {
    33  			return err
    34  		}
    35  		if resp.Match != nil {
    36  			match := resp.Match
    37  
    38  			switch strings.ToLower(rootCmdArgs.outputFormat) {
    39  			case "json":
    40  				err := battleground_utility.PrintProtoMessageAsJsonToStdout(match)
    41  				if err != nil {
    42  					return err
    43  				}
    44  			default:
    45  				fmt.Printf("MatchID: %d\n", match.Id)
    46  				fmt.Printf("Status: %s\n", match.Status)
    47  				fmt.Printf("Topic: %v\n", match.Topics)
    48  				fmt.Printf("Players:\n")
    49  				for _, player := range match.PlayerStates {
    50  					fmt.Printf("\tPlayerID: %s\n", player.Id)
    51  				}
    52  			}
    53  		}
    54  
    55  		return nil
    56  	},
    57  }
    58  
    59  func init() {
    60  	rootCmd.AddCommand(findMatchCmd)
    61  
    62  	findMatchCmd.Flags().StringVarP(&findMatchCmdArgs.userID, "userId", "u", "loom", "UserId of account")
    63  	findMatchCmd.Flags().StringArrayVarP(&findMatchCmdArgs.tags, "tags", "t", nil, "tags")
    64  }