A card game engine for TCGs, primarily Magic: The Gathering but with support for others
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Yeah so that created a circular dependence. Oops!~

authored by

Cass Unterholzner and committed by
Tangled
e63381d7 094298ab

+77 -63
-63
content/cards.go
··· 1 - package content 2 - 3 - import ( 4 - "embed" 5 - "encoding/json" 6 - 7 - "github.com/google/uuid" 8 - 9 - "tangled.org/cass.cityboundforest.com/managrove/game" 10 - ) 11 - 12 - //go:embed cards/*.json 13 - var cards embed.FS 14 - 15 - var sets = []string{ 16 - "test", 17 - } 18 - 19 - func LoadCard(oracle_id uuid.UUID, set *string) (game.Card, error) { 20 - if set == nil { 21 - for _, file := range sets { 22 - data, err := cards.ReadFile(file + ".json") 23 - 24 - if err != nil { 25 - return game.Card{}, err 26 - } 27 - 28 - var cards map[string]game.Card 29 - 30 - if err = json.Unmarshal(data, &cards); err != nil { 31 - return game.Card{}, err 32 - } 33 - 34 - card, ok := cards[oracle_id.String()] 35 - 36 - if ok { 37 - return card, nil 38 - } 39 - } 40 - 41 - return game.Card{}, game.NewCardNotFoundError(oracle_id) 42 - } else { 43 - data, err := cards.ReadFile(*set + ".json") 44 - 45 - if err != nil { 46 - return game.Card{}, err 47 - } 48 - 49 - var cards map[string]game.Card 50 - 51 - if err = json.Unmarshal(data, &cards); err != nil { 52 - return game.Card{}, err 53 - } 54 - 55 - card, ok := cards[oracle_id.String()] 56 - 57 - if ok { 58 - return card, nil 59 - } else { 60 - return game.Card{}, game.NewCardNotFoundError(oracle_id) 61 - } 62 - } 63 - }
content/cards/test.json game/cards/test.json
+61
game/cards.go
··· 1 + package game 2 + 3 + import ( 4 + "embed" 5 + "encoding/json" 6 + 7 + "github.com/google/uuid" 8 + ) 9 + 10 + //go:embed cards/*.json 11 + var cards embed.FS 12 + 13 + var sets = []string{ 14 + "test", 15 + } 16 + 17 + func LoadCard(oracle_id uuid.UUID, set *string) (Card, error) { 18 + if set == nil { 19 + for _, file := range sets { 20 + data, err := cards.ReadFile("cards/" + file + ".json") 21 + 22 + if err != nil { 23 + return Card{}, err 24 + } 25 + 26 + var cards map[string]Card 27 + 28 + if err = json.Unmarshal(data, &cards); err != nil { 29 + return Card{}, err 30 + } 31 + 32 + card, ok := cards[oracle_id.String()] 33 + 34 + if ok { 35 + return card, nil 36 + } 37 + } 38 + 39 + return Card{}, NewCardNotFoundError(oracle_id) 40 + } else { 41 + data, err := cards.ReadFile("cards/" + *set + ".json") 42 + 43 + if err != nil { 44 + return Card{}, err 45 + } 46 + 47 + var cards map[string]Card 48 + 49 + if err = json.Unmarshal(data, &cards); err != nil { 50 + return Card{}, err 51 + } 52 + 53 + card, ok := cards[oracle_id.String()] 54 + 55 + if ok { 56 + return card, nil 57 + } else { 58 + return Card{}, NewCardNotFoundError(oracle_id) 59 + } 60 + } 61 + }
+16
game/game.go
··· 5 5 "image" 6 6 "image/color" 7 7 8 + "github.com/google/uuid" 8 9 "github.com/hajimehoshi/ebiten/v2" 9 10 "github.com/hajimehoshi/ebiten/v2/examples/resources/fonts" 10 11 "github.com/hajimehoshi/ebiten/v2/text/v2" ··· 41 42 Size: 14, 42 43 }, 43 44 } 45 + 46 + id, err := uuid.Parse("84ae9ffe-878f-4769-b18f-214658b92379") 47 + set := "test" 48 + 49 + if err != nil { 50 + return Game{}, err 51 + } 52 + 53 + card, err := LoadCard(id, &set) 54 + 55 + if err != nil { 56 + return Game{}, err 57 + } 58 + 59 + game.cards[CardDefId(id)] = card 44 60 45 61 return game, nil 46 62 }