From 26aff0ecbb3b89ad90fa0b665806dad6c97e3088 Mon Sep 17 00:00:00 2001 From: Steve Date: Fri, 19 Nov 2021 14:10:15 -0500 Subject: [PATCH] more deck util --- deck.go | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/deck.go b/deck.go index ba41a8b..e450b27 100644 --- a/deck.go +++ b/deck.go @@ -2,7 +2,6 @@ package tome_lib import ( "fmt" - "log" "math/rand" "time" ) @@ -23,7 +22,16 @@ func DeckFromCards(c []*Card) *Deck { Cards: c, } } - +func DeckFromCard(c *Card) *Deck { + if c == nil { + return &Deck{ + Cards: []*Card{}, + } + } + return &Deck{ + Cards: []*Card{c}, + } +} func (d *Deck) Shuffle() { r := rand.New(rand.NewSource(time.Now().UnixNano())) for i := range d.Cards { @@ -33,17 +41,20 @@ func (d *Deck) Shuffle() { } func (d *Deck) Scry(s int) *Deck { - seen := make([]*Card, s) - if len(d.Cards) < s { + var seen []*Card + if len(d.Cards) == 0 { + return DeckFromCard(nil) + } else if len(d.Cards) < s { + seen := make([]*Card, len(d.Cards)) copy(seen, d.Cards) d.Reset() } else { + seen = make([]*Card, s) scrybox := d.Cards[(len(d.Cards) - s):len(d.Cards)] res := copy(seen, scrybox) if res == 0 { panic("Error copy scrybox") } - log.Println(seen) d.Cards = d.Cards[0 : len(d.Cards)-s] } return DeckFromCards(seen)