From 354167535a09ea957aa1eecfa3bf93857b689042 Mon Sep 17 00:00:00 2001 From: Steve Date: Tue, 16 Nov 2021 18:07:24 -0500 Subject: [PATCH] empty cards have owners, clogs and duds should work --- board.go | 18 +++++++++++++++--- card.go | 10 ++++++++-- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/board.go b/board.go index d85365a..ac141fe 100644 --- a/board.go +++ b/board.go @@ -23,6 +23,7 @@ func (b *Board) GetRow(id int) []*Card { return b.Scourge[:] } else { log.Println("asked for invalid row") + panic("bad row") return nil } } @@ -38,16 +39,27 @@ func (b *Board) GetCard(id int, pos int) *Card { func (b *Board) Remove(c *Card) { for k, v := range b.Sentinal { if v.Id == c.Id { - b.Sentinal[k] = NewEmpty(k) + b.Sentinal[k] = NewEmpty(c.Owner, k) } } for k, v := range b.Scourge { if v.Id == c.Id { - b.Scourge[k] = NewEmpty(k) + b.Scourge[k] = NewEmpty(c.Owner, k) } } } +func (b *Board) Replace(old *Card, neo *Card) { + if old.Owner == SentinalID { + b.Sentinal[old.Position] = neo + } else if old.Owner == ScourgeID { + b.Scourge[old.Position] = neo + } else { + log.Printf("can't replace a card with bad owner:%v", old.Owner) + return + } +} + func (b *Board) Empty(id int) bool { res := true row := b.GetRow(id) @@ -81,7 +93,7 @@ func (b *Board) Move(id, src, dest int) bool { brd := b.GetRow(id) brd[dest] = brd[src] brd[dest].Position = dest - brd[src] = NewEmpty(src) + brd[src] = NewEmpty(brd[dest].Owner, src) return true } diff --git a/card.go b/card.go index 30013be..b577ea4 100644 --- a/card.go +++ b/card.go @@ -2,6 +2,7 @@ package tome_lib import ( "fmt" + "log" "github.com/google/uuid" ) @@ -21,7 +22,12 @@ type Card struct { Effects []*Effect `json:"effects"` } -func NewEmpty(p int) *Card { +func NewEmpty(o, p int) *Card { + if o != ScourgeID && o != SentinalID { + log.Printf("Need valid owner for empty card:%v", o) + panic("err") + return nil + } return &Card{ Type: EmptyValue, BasePower: -1, @@ -29,7 +35,7 @@ func NewEmpty(p int) *Card { Id: uuid.New(), Sick: false, Counters: 0, - Owner: -1, + Owner: o, Position: p, Spell: false, Token: false,