aboutsummaryrefslogtreecommitdiff
path: root/go/game/card.go
diff options
context:
space:
mode:
Diffstat (limited to 'go/game/card.go')
-rw-r--r--go/game/card.go24
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 {