summaryrefslogtreecommitdiff
path: root/engine/game.go
diff options
context:
space:
mode:
Diffstat (limited to 'engine/game.go')
-rw-r--r--engine/game.go47
1 files changed, 47 insertions, 0 deletions
diff --git a/engine/game.go b/engine/game.go
new file mode 100644
index 0000000..0ed93e2
--- /dev/null
+++ b/engine/game.go
@@ -0,0 +1,47 @@
+package engine
+
+import (
+ "sakura/engine/pool"
+)
+
+type Game struct {
+ Shadow *pool.Pool
+ Distance *pool.Pool
+ Yin *Player
+ Yang *Player
+
+ Stack []IsCard
+
+ Actions map[InteractionID]Action
+}
+
+func (g *Game) propagate() {
+ g.Distance.OverflowsTo = g.Shadow
+}
+
+func NewGame() *Game {
+ g := &Game{
+ Shadow: pool.New(0, pool.Infinite),
+ Distance: pool.New(0, 10),
+ Actions: nil,
+ }
+ g.Yin = NewPlayer(g)
+ g.Yang = NewPlayer(g)
+ g.propagate()
+ return g
+}
+
+var Tie = &Player{}
+
+func (g *Game) Winner() *Player {
+ if g.Yin.Life.Value <= 0 && g.Yang.Life.Value <= 0 {
+ return Tie
+ }
+ if g.Yin.Life.Value <= 0 {
+ return g.Yang
+ }
+ if g.Yang.Life.Value <= 0 {
+ return g.Yin
+ }
+ return nil
+}