RpgTools 0.4.2 → 0.4.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6d3f130c934c707bd10c9c4a03de612c2ec9cb3a
4
- data.tar.gz: c117b0d8d94df410795a708ddcdc4e824b95db70
3
+ metadata.gz: e037b7e017f13328353e5ace03a8e1b632277562
4
+ data.tar.gz: ef936dccbdcc627153014df1e9fcda723a1ee063
5
5
  SHA512:
6
- metadata.gz: f04383af8b7a1a029e69d31c17ab30691b348859ac4b9aba8f55f0ccfa10594001e0a2d50f0c17898e4b5314ca992f5f3baa87895ee298cbf77a7d08ed266386
7
- data.tar.gz: 1b73e37885c303ab106dfadbede1a7d4189df0c63ac4430219a697f593d88475d2448633d6b9ff8734351ecf1ddab1083cbf77529c523ae202890e3dfb042d41
6
+ metadata.gz: be88a1803c9d1b098a6c7741f868329f3730a7dcc52470fc5af37bb595285816285c9bc63a4527f442cec3de3319f99c7015da0da1c40b45333c0c050b3e870a
7
+ data.tar.gz: 9f494f144a2187090ff63371463fcc4910ebe8ee031606e9fc7f1ce670630139c0c3d08281021805aa86eaa7a9b4bafc331d2c087037395a50a6a0a00f4943a0
@@ -3,18 +3,30 @@ module RpgTools
3
3
  attr_accessor :value, :flips, :heads, :tails
4
4
 
5
5
  def initialize
6
- @value = nil
7
- @flips = 0
8
- @heads = 0
9
- @tails = 0
6
+ @value, @flips, @heads, @tails = nil, 0, 0, 0
10
7
  end
11
8
 
12
9
  def flip
13
10
  @flips += 1
14
11
  @value = rand(2) == 1 ? 'Heads' : 'Tails'
15
- @heads += 1 if @value == 'Heads'
16
- @tails += 1 if @value == 'Tails'
12
+ save_result
17
13
  @value
18
14
  end
15
+ alias_method :flip!, :flip
16
+
17
+ private
18
+
19
+ def save_result
20
+ @heads += 1 if heads?
21
+ @tails += 1 if tails?
22
+ end
23
+
24
+ def heads?
25
+ @value == 'Heads'
26
+ end
27
+
28
+ def tails?
29
+ @value == 'Tails'
30
+ end
19
31
  end
20
32
  end
@@ -3,39 +3,38 @@ module RpgTools
3
3
  attr_accessor :base, :sides, :value, :type, :rolls, :bonus, :malus
4
4
 
5
5
  def initialize(base)
6
- @base = base
7
- base_check
6
+ @base = base.upcase
7
+ @type = fudge_dice? ? 'Fudge' : 'Standard'
8
8
  @value = nil
9
- @type = (@base =~ /^.[fF]$/).nil? ? 'Standard' : 'Fudge'
10
- @sides = @type == 'Fudge' ? 3 : base.gsub(/^./, '').to_i
11
- sides_check
9
+ @sides = fudge_dice? ? 3 : base.gsub(/^./, '').to_i
12
10
  @rolls = 0
13
- set_modifiers if @type == 'Standard'
11
+
12
+ dice_validity_check
13
+ set_modifiers_and_clean_base unless fudge_dice?
14
14
  end
15
15
 
16
16
  def roll
17
- return fudge_roll if @type == 'Fudge'
18
- return standard_roll if @bonus.nil? && @malus.nil?
19
- return roll_with_bonus if @malus.nil?
20
- return roll_with_malus if @bonus.nil?
17
+ @rolls += 1
18
+
19
+ fudge_dice? ? fudge_roll : standard_roll
21
20
  end
21
+ alias_method :roll!, :roll
22
22
 
23
23
  private
24
24
 
25
+ def dice_validity_check
26
+ sides_check
27
+ base_check
28
+ end
29
+
25
30
  def modifier_check
26
- unless @base.gsub(/^[dD]{1}[fF]?\d+|[+-]\d+/, '').empty?
31
+ if (@base =~ /^[D]\d+[+-]?\d*/).nil?
27
32
  raise ArgumentError.new("You can only use + or - as modifiers.")
28
33
  end
29
34
  end
30
35
 
31
- def set_modifiers
32
- modifier_check
33
- @bonus = (@base =~ /[Dd]\d+\+(\d+)/).nil? ? nil : @base.gsub(/[Dd]\d+\+/, '').to_i
34
- @malus = (@base =~ /[Dd]\d+\-(\d+)/).nil? ? nil : @base.gsub(/[Dd]\d+\-/, '').to_i
35
- end
36
-
37
36
  def base_check
38
- unless ['d', 'D', 'f', 'F'].include?(@base[0])
37
+ unless standard_dice? || fudge_dice?
39
38
  raise ArgumentError.new("You can only create strandard and fudge dices.")
40
39
  end
41
40
  end
@@ -46,24 +45,28 @@ module RpgTools
46
45
  end
47
46
  end
48
47
 
48
+ def set_modifiers_and_clean_base
49
+ modifier_check
50
+
51
+ @bonus = @base.gsub(/[D]\d+\+/, '').to_i
52
+ @malus = @base.gsub(/[D]\d+\-/, '').to_i
53
+ @base.gsub!(/[+-]\d+/ , '')
54
+ end
55
+
49
56
  def fudge_roll
50
- @rolls += 1
51
57
  @value = (rand(1..3) - 2)
52
58
  end
53
59
 
54
60
  def standard_roll
55
- @rolls += 1
56
- @value = rand(1..@sides)
61
+ @value = rand(1..@sides) + @bonus - @malus
57
62
  end
58
63
 
59
- def roll_with_bonus
60
- @rolls += 1
61
- @value = rand(1..@sides) + @bonus
64
+ def fudge_dice?
65
+ @base == 'DF'
62
66
  end
63
67
 
64
- def roll_with_malus
65
- @rolls += 1
66
- @value = rand(1..@sides) - @malus
68
+ def standard_dice?
69
+ @base.gsub(/^D\d*[+-]?[\d]+$/, '').empty?
67
70
  end
68
71
  end
69
72
  end
@@ -3,26 +3,18 @@ module RpgTools
3
3
  attr_accessor :base, :dices, :rolls, :set, :total
4
4
 
5
5
  def initialize(base)
6
- @base = base
7
- @dices = set_bag_content(@base.gsub(/[dD].+/, '').to_i)
6
+ @base = base.upcase
7
+ @dices = set_bag_content(@base.gsub(/[D].+/, '').to_i)
8
8
  @rolls = 0
9
- @set = nil
9
+ @set = []
10
10
  @total = 0
11
11
  end
12
12
 
13
13
  def roll
14
- @dices.each do |dice|
15
- dice.roll
16
- end
17
-
18
- @set = [].tap do |response|
19
- @dices.each do |dice|
20
- response << dice.value
21
- end
22
- end
23
- @total = @set.inject{ |sum, x| sum + x }
24
- @set
14
+ @set = roll_dices_set
15
+ calculate_total_and_show_set
25
16
  end
17
+ alias_method :roll!, :roll
26
18
 
27
19
  private
28
20
 
@@ -34,11 +26,27 @@ module RpgTools
34
26
 
35
27
  def set_bag_content(dice_number)
36
28
  empty_bag_check(dice_number)
29
+
37
30
  [].tap do |bag|
38
- dice_number.times do |dice|
31
+ dice_number.times do
39
32
  bag << Dice.new(@base.gsub(/^\d+/, ''))
40
33
  end
41
34
  end
42
35
  end
36
+
37
+ def roll_dices_set
38
+ @dices.each do |dice|
39
+ dice.roll
40
+ end
41
+
42
+ @dices.each_with_object([]) do |dice, response|
43
+ response << dice.value
44
+ end
45
+ end
46
+
47
+ def calculate_total_and_show_set
48
+ @total = @set.inject{ |sum, x| sum + x }
49
+ @set
50
+ end
43
51
  end
44
52
  end
@@ -11,18 +11,24 @@ module RpgTools
11
11
 
12
12
  def card
13
13
  @card_picks += 1
14
- if @type == 52
15
- @value = joker_pick_check == true ? 'Joker' : standard_card
16
- else
17
- @value = standard_card
18
- end
14
+
15
+ @value =
16
+ if @type == 52
17
+ joker_picked? ? 'Joker' : standard_card
18
+ else
19
+ standard_card
20
+ end
19
21
  end
20
22
 
21
23
  def hand
22
24
  [].tap do |hand|
23
25
  until hand.count == 5
24
26
  card = standard_card
25
- hand << card unless hand.include?(card) || hand.count('Joker') == 2
27
+
28
+ unless hand.include?(card) || hand.count('Joker') == 2
29
+ hand << card
30
+ @card_picks += 1
31
+ end
26
32
  end
27
33
  end
28
34
  end
@@ -35,7 +41,7 @@ module RpgTools
35
41
  end
36
42
  end
37
43
 
38
- def joker_pick_check
44
+ def joker_picked?
39
45
  [0, 1].include?((0..54).to_a.sample(1).first)
40
46
  end
41
47
 
@@ -52,7 +58,6 @@ module RpgTools
52
58
  end
53
59
 
54
60
  def standard_card
55
- @card_picks += 1
56
61
  @value = [number, color].join(' of ')
57
62
  end
58
63
  end
@@ -1,10 +1,10 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = %q{RpgTools}
3
- s.version = '0.4.2'
3
+ s.version = '0.4.3'
4
4
  s.author = 'Yohan Piron'
5
5
  s.email = 'yinfei84@gmail.com'
6
- s.date = %q{2015-03-04}
7
- s.summary = %q{RpgTools is a toolbox for tabletop games and RPGs}
6
+ s.date = '2015-08-03'
7
+ s.summary = 'RpgTools is a toolbox for tabletop games and RPGs'
8
8
  s.description = 'RpgTools gives you tools for your RPGs : dices, coins, cards...'
9
9
  s.homepage = 'https://github.com/Yinfei/rpg_tools.git'
10
10
  s.license = 'MIT'
@@ -35,4 +35,10 @@ describe RpgTools::Dice do
35
35
  it "doesn't create a dice with an odd symbol" do
36
36
  expect { described_class.new('d6%2') }.to raise_error(ArgumentError)
37
37
  end
38
+
39
+ it "doesn't create very odd dices" do
40
+ expect { described_class.new('dDOGE') }.to raise_error(ArgumentError)
41
+ expect { described_class.new('dfoo') }.to raise_error(ArgumentError)
42
+ expect { described_class.new('foobarbaz') }.to raise_error(ArgumentError)
43
+ end
38
44
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: RpgTools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.4.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yohan Piron
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-04 00:00:00.000000000 Z
11
+ date: 2015-08-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake