# number of cards to be picked if the player can't play an appropriate card
attr_reader :picker
+ # game start time
+ attr :start_time
+
# the IRC user that created the game
attr_accessor :manager
end
def choose_color(user, color)
+ # you can only pick a color if the current color is unset
+ if @color
+ announce _("you can't pick a color now, %{p}") % {
+ :p => get_player(user)
+ }
+ return
+ end
case color
when 'r'
@color = 'Red'
end
def has_turn?(source)
- @players.first.user == source
+ @start_time && (@players.first.user == source)
end
def show_picker
def show_user_cards(player)
p = Player === player ? player : get_player(player)
+ return unless p
notify p, _('Your cards: %{cards}') % {
:cards => p.cards.join(' ')
}
end
cards = 7
if @start_time
- cards = @players.inject(0) do |s, pl|
+ cards = (@players.inject(0) do |s, pl|
s +=pl.cards.length
- end/@players.length
+ end*1.0/@players.length).ceil
end
p = Player.new(user)
@players << p
def message(m)
return unless @games.key?(m.channel)
+ return unless m.plugin # skip messages such as: <someuser> botname,
g = @games[m.channel]
case m.plugin.intern
when :jo # join game
m.reply _("It's not your turn")
end
when :pa # pass turn
- return if m.params
+ return if m.params or not g.start_time
if g.has_turn?(m.source)
g.pass(m.source)
else
return if m.params
g.show_all_cards(m.source)
when :cd # show current discard
- return if m.params
+ return if m.params or not g.start_time
g.show_discard
when :ch
if g.has_turn?(m.source)