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 }