diff options
Diffstat (limited to 'go/game/card.go')
| -rw-r--r-- | go/game/card.go | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/go/game/card.go b/go/game/card.go index 921830cc..5ecce64c 100644 --- a/go/game/card.go +++ b/go/game/card.go @@ -2,7 +2,6 @@ package game import ( "errors" - "fmt" "io" "log" "net/http" @@ -219,7 +218,7 @@ func retrieveCardDefinition(cardPath string) ([]byte, error) { } func (card *Card) parseDefinition(definition []byte) { - data := make(map[interface{}]interface{}) + data := make(map[any]any) err := yaml.Unmarshal(definition, &data) if err != nil { log.Panicf("parsing %s failed with: %v\n", definition, err) @@ -234,7 +233,7 @@ func (card *Card) parseDefinition(definition []byte) { switch nameYml := name.(type) { case string: card.Name = nameYml - case map[string]interface{}: + case map[string]any: cardName := nameYml["en"] card.Name = cardName.(string) default: @@ -280,14 +279,14 @@ func (card *Card) getCanonicalValues(key string) []string { } switch typedValues := untypedValues.(type) { - case map[string]interface{}: + case map[string]any: enValues := typedValues["en"] switch typedEnValues := enValues.(type) { case string: values = []string{typedEnValues} case []string: values = typedEnValues - case []interface{}: + case []any: values = []string{} for _, v := range typedEnValues { values = append(values, v.(string)) @@ -316,20 +315,19 @@ func (card *Card) hasEffect(effect string) bool { return slices.Contains(card.getEffects(), effect) } -func (card *Card) getXEffect(effect string) (int, error) { +var ( + ErrNoXEffect = errors.New("card has no xeffect") +) + +func (card *Card) getXEffect(effect string) (xEffect, error) { for _, e := range card.getEffects() { if !strings.Contains(e, effect) { continue } - tokens := strings.SplitN(e, " ", 2) - xEffect := tokens[1] - if strings.HasSuffix(xEffect, ".") { - xEffect = tokens[1][:len(tokens[1])-1] - } - return strconv.Atoi(xEffect) + return parseXEffect(e) } - return 0, fmt.Errorf("Card %s has no effect %s", card.Name, effect) + return xEffect{}, ErrNoXEffect } func (card *Card) hasPlacementConstrain(effect string) bool { |
