diff options
Diffstat (limited to 'go/game/permanent.go')
| -rw-r--r-- | go/game/permanent.go | 80 |
1 files changed, 40 insertions, 40 deletions
diff --git a/go/game/permanent.go b/go/game/permanent.go index cd5cbfe6..78966cfe 100644 --- a/go/game/permanent.go +++ b/go/game/permanent.go @@ -24,25 +24,26 @@ type Permanent interface { Marks(PermanentMark) int adjustMarks(PermanentMark, int) - String() string - Fight(p Permanent) - AddDamage(damage int) IsDestroyed() bool Attackable() bool + String() string + CurrentlyAvailActions() []Action AvailActions() []Action IsAvailableTile(*Tile) bool + fight(p Permanent) + addDamage(damage int) setContainingPerm(p Permanent) addPermanentToPile(p Permanent) clearPile() - RemovePermanentFromPile(p Permanent) + removePermanentFromPile(p Permanent) onPile(containing Permanent) onUnpile(containing Permanent) onDrop(containing Permanent) } -type PermanentBase struct { +type permanentBase struct { card *Card tile *Tile damage int @@ -54,12 +55,12 @@ type PermanentBase struct { marks map[PermanentMark]int } -func NewPermanentBase(card *Card, tile *Tile, owner *Player) PermanentBase { +func newPermanentBase(card *Card, tile *Tile, owner *Player) permanentBase { if tile != nil && tile.Permanent != nil { log.Panicf("Tile at %v already occupied by %v", tile.Position, tile.Permanent) } - return PermanentBase{ + return permanentBase{ card: card, tile: tile, controller: owner, @@ -67,16 +68,16 @@ func NewPermanentBase(card *Card, tile *Tile, owner *Player) PermanentBase { } } -func (p *PermanentBase) Card() *Card { return p.card } -func (p *PermanentBase) Tile() *Tile { return p.tile } -func (p *PermanentBase) SetTile(t *Tile) { p.tile = t } -func (p *PermanentBase) Damage() int { return p.damage } -func (p *PermanentBase) ContainingPerm() Permanent { return p.containingPerm } -func (p *PermanentBase) Pile() []Permanent { return p.pile } -func (p *PermanentBase) Controller() *Player { return p.controller } -func (p *PermanentBase) Owner() *Player { return p.owner } +func (p *permanentBase) Card() *Card { return p.card } +func (p *permanentBase) Tile() *Tile { return p.tile } +func (p *permanentBase) SetTile(t *Tile) { p.tile = t } +func (p *permanentBase) Damage() int { return p.damage } +func (p *permanentBase) ContainingPerm() Permanent { return p.containingPerm } +func (p *permanentBase) Pile() []Permanent { return p.pile } +func (p *permanentBase) Controller() *Player { return p.controller } +func (p *permanentBase) Owner() *Player { return p.owner } -func (p *PermanentBase) String() string { +func (p *permanentBase) String() string { if p.Tile() != nil { return fmt.Sprintf("%s's %s@%v", p.Controller().Name, p.Card().Name, p.Tile().Position) @@ -96,22 +97,21 @@ func DealDamage(src, dest Permanent, damage int) { actualDamage = 0 } } - dest.AddDamage(actualDamage) + dest.addDamage(actualDamage) } -func (p *PermanentBase) AddDamage(damage int) { - p.damage += damage -} +func (p *permanentBase) addDamage(damage int) { p.damage += damage } +func (p *permanentBase) fight(Permanent) {} -func (p *PermanentBase) Effects() []string { +func (p *permanentBase) Effects() []string { return append(p.card.getEffects(), p.tmpEffects...) } -func (p *PermanentBase) HasEffect(effect string) bool { +func (p *permanentBase) HasEffect(effect string) bool { return slices.Contains(p.tmpEffects, effect) || p.card.hasEffect(effect) } -func (p *PermanentBase) XEffect(effect string) (int, error) { +func (p *permanentBase) XEffect(effect string) (int, error) { x, err := p.card.getXEffect(effect) for _, e := range p.tmpEffects { @@ -130,7 +130,7 @@ func (p *PermanentBase) XEffect(effect string) (int, error) { return x, err } -func (p *PermanentBase) Marks(mark PermanentMark) int { +func (p *permanentBase) Marks(mark PermanentMark) int { if amount, found := p.marks[mark]; found { return amount } @@ -138,7 +138,7 @@ func (p *PermanentBase) Marks(mark PermanentMark) int { return 0 } -func (p *PermanentBase) adjustMarks(mark PermanentMark, amount int) { +func (p *permanentBase) adjustMarks(mark PermanentMark, amount int) { if amount, found := p.marks[mark]; found { p.marks[mark] += amount } else { @@ -146,18 +146,18 @@ func (p *PermanentBase) adjustMarks(mark PermanentMark, amount int) { } } -func (p *PermanentBase) CurrentlyAvailActions() []Action { return nil } -func (p *PermanentBase) AvailActions() []Action { return nil } +func (p *permanentBase) CurrentlyAvailActions() []Action { return nil } +func (p *permanentBase) AvailActions() []Action { return nil } -func (p *PermanentBase) IsAvailableTile(tile *Tile) bool { +func (p *permanentBase) IsAvailableTile(tile *Tile) bool { return tile.IsAvailableForCard(p.card) } -func (p *PermanentBase) setContainingPerm(containing Permanent) { p.containingPerm = containing } -func (p *PermanentBase) addPermanentToPile(a Permanent) { p.pile = append(p.pile, a) } -func (p *PermanentBase) clearPile() { p.pile = nil } +func (p *permanentBase) setContainingPerm(containing Permanent) { p.containingPerm = containing } +func (p *permanentBase) addPermanentToPile(a Permanent) { p.pile = append(p.pile, a) } +func (p *permanentBase) clearPile() { p.pile = nil } -func (p *PermanentBase) RemovePermanentFromPile(rm Permanent) { +func (p *permanentBase) removePermanentFromPile(rm Permanent) { for i, piled := range p.pile { if piled != rm { continue @@ -169,26 +169,26 @@ func (p *PermanentBase) RemovePermanentFromPile(rm Permanent) { } } -func (b *PermanentBase) onPile(containing Permanent) { b.Card().Impl.onPile(containing) } -func (b *PermanentBase) onUnpile(containing Permanent) { b.Card().Impl.onUnpile(containing) } -func (b *PermanentBase) onDrop(dropped Permanent) { +func (b *permanentBase) onPile(containing Permanent) { b.Card().Impl.onPile(containing) } +func (b *permanentBase) onUnpile(containing Permanent) { b.Card().Impl.onUnpile(containing) } +func (b *permanentBase) onDrop(dropped Permanent) { b.onUnpile(dropped.ContainingPerm()) b.Card().Impl.onDrop(dropped) } -func AddPermanentToPile(containing, p Permanent) { +func addPermanentToPile(containing, p Permanent) { p.setContainingPerm(containing) containing.addPermanentToPile(p) p.onPile(containing) } -func RemovePermanentFromPile(containing, rm Permanent) { - containing.RemovePermanentFromPile(rm) +func removePermanentFromPile(containing, rm Permanent) { + containing.removePermanentFromPile(rm) rm.onUnpile(containing) rm.setContainingPerm(nil) } -func DropPile(containing Permanent) { +func dropPile(containing Permanent) { for _, p := range containing.Pile() { p.onDrop(p) p.setContainingPerm(nil) @@ -207,7 +207,7 @@ func enterTileOrPile(p Permanent, t *Tile) { if t.Permanent == nil { enterTile(p, t) } else { - AddPermanentToPile(t.Permanent, p) + addPermanentToPile(t.Permanent, p) p.SetTile(nil) } } |
