liars_dice 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/liars_dice.gemspec CHANGED
@@ -1,7 +1,7 @@
1
1
  Gem::Specification.new do |gem|
2
2
  gem.name = 'liars_dice'
3
- gem.version = '0.0.4'
4
- gem.date = '2013-07-09'
3
+ gem.version = '0.0.5'
4
+ gem.date = '2013-07-10'
5
5
  gem.summary = "Liar's Dice game"
6
6
  gem.description = "A liar's dice botting environment, developed by Aisle50"
7
7
  gem.authors = ['Ben Schmeckpeper', 'Chris Doyle', 'Max Page', 'Molly Struve']
@@ -2,14 +2,37 @@ module LiarsDice
2
2
  class CommandLineWatcher
3
3
  include Watcher
4
4
 
5
+ attr_reader :names
6
+
5
7
  def initialize
6
- append_after_dice_rolled lambda{|dice| puts "Dice Rolled: #{dice.inspect.to_s}" }
7
- append_after_bid lambda{|seat, bid| puts "Seat #{seat} bids #{bid}" }
8
- append_after_bs lambda{|seat| puts "Seat #{seat} calls BS" }
9
- append_after_game lambda{|winner| puts "Game over. Seat #{winner} wins." }
10
- append_after_round lambda{|loser| puts "Seat #{loser} loses a die" }
11
- append_after_invalid_bid lambda{|loser| puts "Seat #{loser} made an invalid bid" }
12
- append_after_seats_assigned lambda{|assignments| assignments.each{|number, name| puts "Seat #{number}: #{name}" } }
8
+ self.names = {}
9
+ append_after_dice_rolled method(:print_dice)
10
+ append_after_bid lambda{|seat, bid| puts "#{name(seat, true)} bids #{bid}" }
11
+ append_after_bs lambda{|seat| puts "#{name(seat)} calls BS" }
12
+ append_after_game lambda{|winner| puts "Game over. #{name(winner)} wins." }
13
+ append_after_round lambda{|loser| puts "#{name(loser)} loses a die" }
14
+ append_after_invalid_bid lambda{|seat| puts "#{name(seat)} made an invalid bid" }
15
+ append_after_seats_assigned lambda{|assignments| self.names = assignments }
16
+ end
17
+
18
+ def name(seat_number, justified=false)
19
+ (names[seat_number] || "Seat #{seat_number}").ljust(justified ? justification : 0)
20
+ end
21
+
22
+ def justification
23
+ @justification ||= names.values.map(&:length).max
24
+ @justification
25
+ end
26
+
27
+ def names=(value)
28
+ @names = value
29
+ @names.each{|number, name| puts "Seat #{number}: #{name}" }
30
+ end
31
+
32
+ def print_dice(dice)
33
+ dice.each_with_index { |roll, seat| puts "#{name(seat, true)} Rolled: #{roll.inspect.to_s}" }
34
+ all_dice = dice.flatten
35
+ (1..6).to_a.each {|face_value| puts Bid.new(all_dice.select{|d| d == face_value}.count, face_value) }
13
36
  end
14
37
  end
15
38
  end
@@ -69,7 +69,11 @@ module LiarsDice
69
69
 
70
70
  def initialize(seats)
71
71
  self.seat_assignments = {}
72
- seats.each{|seat| self.seat_assignments[seat.number] = seat.player.class }
72
+ seats.each do |seat|
73
+ name = seat.player.name if seat.player.respond_to? :name
74
+ name ||= seat.player.class.to_s
75
+ self.seat_assignments[seat.number] = name
76
+ end
73
77
  end
74
78
  end
75
79
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: liars_dice
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2013-07-09 00:00:00.000000000Z
15
+ date: 2013-07-10 00:00:00.000000000Z
16
16
  dependencies: []
17
17
  description: A liar's dice botting environment, developed by Aisle50
18
18
  email: dev@aisle50.com