summaryrefslogtreecommitdiff
path: root/engine/player
diff options
context:
space:
mode:
authorewy <ewy0@protonmail.com>2026-09-11 15:00:48 +0200
committerewy <ewy0@protonmail.com>2026-09-11 15:00:48 +0200
commitc69e6c0770359e2febafcf487eb21c4aa608c3e9 (patch)
treed1f4ac93b2bca7b4df62d698fde91ed15371c6c7 /engine/player
initial commit
Diffstat (limited to 'engine/player')
-rw-r--r--engine/player/action.go12
-rw-r--r--engine/player/player.go34
-rw-r--r--engine/player/vigour.go52
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
+ },
+ },
+}