github.com/loomnetwork/gamechain@v0.0.0-20200406110549-36c47eb97a92/cli/cmd/get_overlord_user_instance.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"
    10  	"github.com/loomnetwork/go-loom/auth"
    11  	"github.com/spf13/cobra"
    12  )
    13  
    14  var getOverlordForUserCmdArgs struct {
    15  	userID string
    16  	overlordID int64
    17  	version string
    18  }
    19  
    20  var getOverlordForUserCmd = &cobra.Command{
    21  	Use:   "get_overlord_user_instance",
    22  	Short: "get overlord instance for user",
    23  	RunE: func(cmd *cobra.Command, args []string) error {
    24  		signer := auth.NewEd25519Signer(commonTxObjs.privateKey)
    25  		callerAddr := loom.Address{
    26  			ChainID: commonTxObjs.rpcClient.GetChainID(),
    27  			Local:   loom.LocalAddressFromPublicKey(signer.PublicKey()),
    28  		}
    29  
    30  		req := zb_calls.GetOverlordUserInstanceRequest{
    31  			UserId: getOverlordForUserCmdArgs.userID,
    32  			OverlordId: getOverlordForUserCmdArgs.overlordID,
    33  			Version: getOverlordForUserCmdArgs.version,
    34  		}
    35  		result := zb_calls.GetOverlordUserInstanceResponse{}
    36  
    37  		_, err := commonTxObjs.contract.StaticCall("GetOverlordUserInstance", &req, callerAddr, &result)
    38  		if err != nil {
    39  			return err
    40  		}
    41  
    42  		switch strings.ToLower(rootCmdArgs.outputFormat) {
    43  		case "json":
    44  			err := battleground_utility.PrintProtoMessageAsJsonToStdout(&result)
    45  			if err != nil {
    46  				return err
    47  			}
    48  		default:
    49  			fmt.Printf("overlord_id: %d\n", result.Overlord.Prototype.Id)
    50  			fmt.Printf("experience: %d\n", result.Overlord.UserData.Experience)
    51  			fmt.Printf("level: %d\n", result.Overlord.UserData.Level)
    52  			for _, skill := range result.Overlord.Prototype.Skills {
    53  				fmt.Printf("skill title: %s\n", skill.Title)
    54  			}
    55  		}
    56  
    57  		return nil
    58  	},
    59  }
    60  
    61  func init() {
    62  	rootCmd.AddCommand(getOverlordForUserCmd)
    63  
    64  	getOverlordForUserCmd.Flags().StringVarP(&getOverlordForUserCmdArgs.userID, "userId", "u", "loom", "UserId of account")
    65  	getOverlordForUserCmd.Flags().Int64VarP(&getOverlordForUserCmdArgs.overlordID, "overlordId", "", 1, "overlordID of overlord")
    66  	getOverlordForUserCmd.Flags().StringVarP(&getOverlordForUserCmdArgs.version, "version", "v", "", "Version")
    67  
    68  	_ = getOverlordForUserCmd.MarkFlagRequired("version")
    69  }