diff options
| author | Florian Fischer <florian.fischer@muhq.space> | 2023-02-14 16:05:06 +0100 |
|---|---|---|
| committer | Florian Fischer <florian.fischer@muhq.space> | 2025-01-27 16:43:49 +0100 |
| commit | b85c1a85e3f9a53321495e4d015e7620b29f9929 (patch) | |
| tree | 314469f8bcbe61cea3c055d01e2c961b0e988708 /go/game | |
| parent | e049500b213c85c9d1556e01717226a191d2dce8 (diff) | |
| download | muhqs-game-b85c1a85e3f9a53321495e4d015e7620b29f9929.tar.gz muhqs-game-b85c1a85e3f9a53321495e4d015e7620b29f9929.zip | |
add sealed activity to select a starting deck
Diffstat (limited to 'go/game')
| -rw-r--r-- | go/game/card.go | 2 | ||||
| -rw-r--r-- | go/game/pileOfCards.go | 17 | ||||
| -rw-r--r-- | go/game/set.go | 43 |
3 files changed, 59 insertions, 3 deletions
diff --git a/go/game/card.go b/go/game/card.go index a6abffd1..031b95bf 100644 --- a/go/game/card.go +++ b/go/game/card.go @@ -291,7 +291,7 @@ func NewCard(cardPath string) *Card { c := Card{ Name: "", - Set: SetIdentifierNames[set], + Set: SetNames[set], Type: undefinedCardType, BuyCost: NOT_BUYABLE, Values: map[string]interface{}{}, diff --git a/go/game/pileOfCards.go b/go/game/pileOfCards.go index 0a5eaa97..f88dfe93 100644 --- a/go/game/pileOfCards.go +++ b/go/game/pileOfCards.go @@ -1,6 +1,8 @@ package game import ( + "fmt" + "golang.org/x/exp/slices" ) @@ -14,6 +16,7 @@ type PileOfCards interface { RemoveCard(card *Card) MoveCard(card *Card, into PileOfCards) MoveInto(into PileOfCards) + ToList() string } type PileOfCardsBase struct { @@ -75,3 +78,17 @@ func (poc *PileOfCardsBase) MoveInto(into PileOfCards) { into.AddCards(poc.cards) poc.cards = []*Card{} } + +func (poc *PileOfCardsBase) ToList() (list string) { + m := make(map[string]int) + for _, card := range poc.cards { + path := card.Path() + m[path]++ + } + + for path, amount := range m { + list += fmt.Sprintf("%d %s\n", amount, path) + } + + return list[:len(list)-1] +} diff --git a/go/game/set.go b/go/game/set.go index b0565eca..aca5b7f5 100644 --- a/go/game/set.go +++ b/go/game/set.go @@ -2,6 +2,11 @@ package game import ( "log" + "net/http" + "path" + "strings" + + "golang.org/x/net/html" ) type SetIdentifier int @@ -43,7 +48,7 @@ func (si SetIdentifier) String() string { return "" } -var SetIdentifiers = struct { +var Sets = struct { Base SetIdentifier Magic SetIdentifier Equipments SetIdentifier @@ -65,7 +70,7 @@ var SetIdentifiers = struct { Exp1: Exp1, } -var SetIdentifierNames = map[string]SetIdentifier{ +var SetNames = map[string]SetIdentifier{ "base": Base, "magic": Magic, "equipments": Equipments, @@ -76,3 +81,37 @@ var SetIdentifierNames = map[string]SetIdentifier{ "tyrant": Tyrant, "exp1": Exp1, } + +func (set *SetIdentifier) CardPaths() []string { + url := PROTOCOL + path.Join(BASE_URL, CARD_DATA_URL, set.String()) + log.Printf("loading %s\n", url) + resp, err := http.Get(url) + if err != nil { + log.Fatal(err) + } + + defer resp.Body.Close() + + doc, err := html.Parse(resp.Body) + if err != nil { + log.Fatal(err) + } + + paths := []string{} + var walk func(*html.Node) + walk = func(n *html.Node) { + if n.Type == html.ElementNode && n.Data == "a" { + for _, a := range n.Attr { + if a.Key == "href" { + paths = append(paths, path.Join(set.String(), strings.TrimSuffix(a.Val, ".yml"))) + break + } + } + } + for c := n.FirstChild; c != nil; c = c.NextSibling { + walk(c) + } + } + walk(doc) + return paths +} |
