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 }