class Tundengine::Stages::Round

Constants

LAST_TRICK_BONUS_POINTS

Attributes

last_declaration[R]
players[R]
trump_suit[R]

Public Class Methods

new(match, players_in_round, trump_suit) click to toggle source
Calls superclass method Tundengine::Stages::Base::new
# File lib/tundengine/stages/round.rb, line 13
def initialize(match, players_in_round, trump_suit)
  @players = players_in_round
  @players.each { |p| p.round = self }
  @trump_suit = trump_suit.freeze
  @last_declaration = Declarations::Null.instance
  super(match)
  Dealer.instance.deal!(players, trump_suit)
end

Public Instance Methods

after_declaring!(declaration) click to toggle source
# File lib/tundengine/stages/round.rb, line 40
def after_declaring!(declaration)
  current_trick.after_declaring!(declaration)
  @last_declaration = declaration
end
declare!(declaration = Declarations::Null.instance) click to toggle source
# File lib/tundengine/stages/round.rb, line 26
def declare!(declaration = Declarations::Null.instance)
  last_winner_player.declare!(declaration)
end
on_complete_child!() click to toggle source
# File lib/tundengine/stages/round.rb, line 30
def on_complete_child! # when the current trick is completed
  super
  rotate_players!
end
on_completed!() click to toggle source
# File lib/tundengine/stages/round.rb, line 35
def on_completed!
  last_winner_player.bonus_points = LAST_TRICK_BONUS_POINTS
  parent.on_complete_child!(result)
end
summary() click to toggle source
# File lib/tundengine/stages/round.rb, line 45
def summary
  {
    trump_suit: trump_suit.to_s,
    players: players.map(&:summary)
  }
end

Protected Instance Methods

any_player() click to toggle source
# File lib/tundengine/stages/round.rb, line 75
def any_player
  players.first
end
completed?() click to toggle source
# File lib/tundengine/stages/round.rb, line 71
def completed?
  any_player.has_empty_hand? or @last_declaration.finishes_round?(tute_value)
end
last_trick() click to toggle source
# File lib/tundengine/stages/round.rb, line 67
def last_trick
  tricks.last || :no_trick
end
last_winner_player() click to toggle source
# File lib/tundengine/stages/round.rb, line 62
def last_winner_player
  last_trick.winner_player
end
Also aliased as: next_first_player
new_child() click to toggle source
# File lib/tundengine/stages/round.rb, line 54
def new_child
  Trick.new(self)
end
next_first_player()
Alias for: last_winner_player
result() click to toggle source
# File lib/tundengine/stages/round.rb, line 79
def result
  RoundAnalyzer.new(self).result
end
rotate_players!() click to toggle source
# File lib/tundengine/stages/round.rb, line 58
def rotate_players!
  players.rotate!(players.index next_first_player)
end