summaryrefslogtreecommitdiff
path: root/engine/player.go
blob: a4f7c35c0b2b9e20dac42efd10443fb907a97976 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package engine

import (
	"sakura/engine/pool"
)

type Player struct {
	Game       *Game `json:"-"`
	Vigour     Vigour
	Life       *pool.Pool
	Aura       *pool.Pool
	Flare      *pool.Pool
	Hand       Stack
	MasterDeck Stack
	DrawPile   Stack
	Ultimates  []IsCard
	Character  *Character
	Cookie     string
}

func (p *Player) SetCharacter(c *Character) {
	p.Character = c
	p.MasterDeck = c.Cards
	p.Ultimates = c.Ultimates
}

func (p *Player) Opponent(g *Game) *Player {
	if p == g.Yin {
		return g.Yang
	} else {
		return g.Yin
	}
}

func (p *Player) propagate(g *Game) {
	p.Game = g
	p.Aura.SubtractsTo = g.Shadow
	p.Flare.SubtractsTo = g.Shadow
	p.Life.SubtractsTo = p.Flare
}

func NewPlayer(g *Game) *Player {
	p := &Player{
		Life:   pool.New(pool.Empty, 10),
		Aura:   pool.New(3, 5),
		Flare:  pool.New(pool.Empty, pool.Infinite),
		Vigour: Vigour(0),
	}
	p.propagate(g)
	return p
}

func (p *Player) Hide() {
	p.MasterDeck = p.MasterDeck.Hidden()
	p.Hand = p.Hand.Hidden()
	p.DrawPile = p.DrawPile.Hidden()
}