github.com/loomnetwork/gamechain@v0.0.0-20200406110549-36c47eb97a92/tools/cmd/console_game/main.go (about)

     1  package main
     2  
     3  import (
     4  	"encoding/hex"
     5  	"fmt"
     6  	"github.com/loomnetwork/gamechain/battleground"
     7  	"github.com/loomnetwork/gamechain/tools/battleground_utility"
     8  	"github.com/loomnetwork/gamechain/types/zb/zb_calls"
     9  	"github.com/loomnetwork/gamechain/types/zb/zb_data"
    10  	"github.com/loomnetwork/go-loom"
    11  	"github.com/loomnetwork/go-loom/plugin"
    12  	contract "github.com/loomnetwork/go-loom/plugin/contractpb"
    13  )
    14  
    15  var initRequest = zb_calls.InitRequest {
    16  }
    17  
    18  var updateInitRequest = zb_calls.UpdateInitRequest {
    19  }
    20  
    21  func setup(c *battleground.ZombieBattleground, pubKeyHex string, addr *loom.Address, ctx *contract.Context) error {
    22  	updateInitRequest.InitData = &zb_data.InitData{}
    23  	err := battleground_utility.ReadJsonFileToProtoMessage("../../../test_data/simple-init.json", updateInitRequest.InitData)
    24  	if err != nil {
    25  		return err
    26  	}
    27  
    28  	initRequest = zb_calls.InitRequest{
    29  		DefaultDecks:         updateInitRequest.InitData.DefaultDecks,
    30  		DefaultCollection:    updateInitRequest.InitData.DefaultCollection,
    31  		Cards:                updateInitRequest.InitData.Cards,
    32  		Overlords:            updateInitRequest.InitData.Overlords,
    33  		AiDecks:              updateInitRequest.InitData.AiDecks,
    34  		Version:              updateInitRequest.InitData.Version,
    35  		Oracle:               updateInitRequest.InitData.Oracle,
    36  		OverlordLeveling:     updateInitRequest.InitData.OverlordLeveling,
    37  	}
    38  
    39  	pubKey, _ := hex.DecodeString(pubKeyHex)
    40  
    41  	addr = &loom.Address{
    42  		Local: loom.LocalAddressFromPublicKey(pubKey),
    43  	}
    44  
    45  	*ctx = contract.WrapPluginContext(
    46  		plugin.CreateFakeContext(*addr, *addr),
    47  	)
    48  
    49  	err = c.Init(*ctx, &initRequest)
    50  	if err != nil {
    51  		return err
    52  	}
    53  
    54  	return nil
    55  }
    56  
    57  func setupAccount(c *battleground.ZombieBattleground, ctx contract.Context, upsertAccountRequest *zb_calls.UpsertAccountRequest) {
    58  	err := c.CreateAccount(ctx, upsertAccountRequest)
    59  	if err != nil {
    60  		panic(err)
    61  	}
    62  }
    63  func setupZBContract() {
    64  
    65  	var pubKeyHexString = "e4008e26428a9bca87465e8de3a8d0e9c37a56ca619d3d6202b0567528786618"
    66  	var addr loom.Address
    67  
    68  	setup(zvContract, pubKeyHexString, &addr, &ctx)
    69  	setupAccount(zvContract, ctx, &zb_calls.UpsertAccountRequest{
    70  		UserId:  "AccountUser",
    71  		Image:   "PathToImage",
    72  		Version: "v1",
    73  	})
    74  
    75  }
    76  func listItemsForPlayer(playerId int) []string {
    77  	res := []string{}
    78  
    79  	cardCollection, err := zvContract.GetCollection(ctx, &zb_calls.GetCollectionRequest{
    80  		UserId: "AccountUser",
    81  	})
    82  	if err != nil {
    83  		panic(err)
    84  	}
    85  	for _, v := range cardCollection.Cards {
    86  		res = append(res, fmt.Sprintf("Card Key [%s]", v.CardKey.String()))
    87  	}
    88  
    89  	return res
    90  }
    91  
    92  var zvContract *battleground.ZombieBattleground
    93  var ctx contract.Context
    94  
    95  func main() {
    96  	zvContract = &battleground.ZombieBattleground{}
    97  	setupZBContract()
    98  
    99  	runGocui()
   100  	return
   101  }