diff options
Diffstat (limited to 'engine/player')
| -rw-r--r-- | engine/player/action.go | 12 | ||||
| -rw-r--r-- | engine/player/player.go | 34 | ||||
| -rw-r--r-- | engine/player/vigour.go | 52 |
3 files changed, 98 insertions, 0 deletions
diff --git a/engine/player/action.go b/engine/player/action.go new file mode 100644 index 0000000..0d8aa58 --- /dev/null +++ b/engine/player/action.go @@ -0,0 +1,12 @@ +package player + +type Action int + +const ( + _ = iota +) + +type PlayerAction struct { + Player *Player + Action Action +} diff --git a/engine/player/player.go b/engine/player/player.go new file mode 100644 index 0000000..9dece55 --- /dev/null +++ b/engine/player/player.go @@ -0,0 +1,34 @@ +package player + +import ( + "sakura/engine/card" + "sakura/engine/game" + "sakura/engine/pool" +) + +type Player struct { + Game *game.Game + Vigour *Vigour + Life *pool.Pool + Aura *pool.Pool + Flare *pool.Pool + MasterDeck []*card.Card + Ultimates []*card.Card +} + +func (p *Player) propagate(g *game.Game) { + p.Game = g + p.Aura.SubtractsTo = g.Shadow + p.Flare.SubtractsTo = g.Shadow + p.Life.SubtractsTo = p.Flare +} + +func New(g *game.Game) *Player { + p := &Player{ + Life: pool.New(pool.Empty, 10), + Aura: pool.New(3, 5), + Flare: pool.New(pool.Empty, pool.Infinite), + } + p.propagate(g) + return p +} diff --git a/engine/player/vigour.go b/engine/player/vigour.go new file mode 100644 index 0000000..1d4022e --- /dev/null +++ b/engine/player/vigour.go @@ -0,0 +1,52 @@ +package player + +import ( + "sakura/engine/pool" +) + +type Vigour int + +type VigorAction struct { + Name string + From func(p *Player) *pool.Pool + To func(p *Player) *pool.Pool +} + +var Actions = []*VigorAction{ + { + Name: "Approach", + From: func(p *Player) *pool.Pool { + return p.Game.Distance + }, + To: func(p *Player) *pool.Pool { + return p.Aura + }, + }, + { + Name: "Retreat", + From: func(p *Player) *pool.Pool { + return p.Aura + }, + To: func(p *Player) *pool.Pool { + return p.Game.Distance + }, + }, + { + Name: "Charge", + From: func(p *Player) *pool.Pool { + return p.Aura + }, + To: func(p *Player) *pool.Pool { + return p.Flare + }, + }, + { + Name: "Recover", + From: func(p *Player) *pool.Pool { + return p.Game.Shadow + }, + To: func(p *Player) *pool.Pool { + return p.Aura + }, + }, +} |
