diff options
author | Jérémy Zurcher <jeremy@asynk.ch> | 2023-10-06 16:45:18 +0200 |
---|---|---|
committer | Jérémy Zurcher <jeremy@asynk.ch> | 2023-10-06 16:45:18 +0200 |
commit | 853ab7db1c4bcb1a8f95b400435c24a5e8bcf6c7 (patch) | |
tree | 9a5038a6ee69829a09f9e5ce896f3f5f497cd0d0 | |
parent | dcc1cc51c4ac9eb80431999fef79f0d46728073b (diff) | |
download | colonial-twilight-853ab7db1c4bcb1a8f95b400435c24a5e8bcf6c7.zip colonial-twilight-853ab7db1c4bcb1a8f95b400435c24a5e8bcf6c7.tar.gz |
FLNRulse : clean, add #max_fln_to_place_in
-rw-r--r-- | lib/colonial_twilight/fln_rules.rb | 24 | ||||
-rw-r--r-- | spec/fln_rules_spec.rb | 16 |
2 files changed, 27 insertions, 13 deletions
diff --git a/lib/colonial_twilight/fln_rules.rb b/lib/colonial_twilight/fln_rules.rb index 3df2c32..481a6ee 100644 --- a/lib/colonial_twilight/fln_rules.rb +++ b/lib/colonial_twilight/fln_rules.rb @@ -1,8 +1,6 @@ #! /usr/bin/env ruby # frozen_string_literal: true -# rubocop:disable Style/Documentation -# module ColonialTwilight module FLNRules # Rally 3.3.1 + France Track @@ -11,15 +9,19 @@ module ColonialTwilight end def rally_spaces(board) - board.search { |s| may_rally_in? s } + board.search(&method(:may_rally_in?)) end def may_agitate_in?(space) !space.country? && (space.fln_control? || space.fln_bases.positive?) end - def agitate_spaces(spaces) - spaces.select { |s| may_agitate_in? s } + def agitate_spaces(board) + board.search(&method(:may_agitate_in?)) + end + + def max_fln_to_place_in(space) + space.fln_bases.positive? ? space.pop + 1 - space.fln_cubes : 1 end # March 3.3.2 @@ -30,7 +32,7 @@ module ColonialTwilight end def attack_spaces(board) - board.search { |s| may_attack_in? s } + board.search(&method(:may_attack_in?)) end # Terror 3.3.4 @@ -39,7 +41,7 @@ module ColonialTwilight end def terror_spaces(board) - board.search { |s| may_terror_in? s } + board.search(&method(:may_terror_in?)) end # Extort 4.3.1 @@ -49,7 +51,7 @@ module ColonialTwilight end def extort_spaces(board) - board.search { |s| may_extort_in? s } + board.search(&method(:may_extort_in?)) end # Subvert 4.3.2 @@ -58,7 +60,7 @@ module ColonialTwilight end def subvert_spaces(board) - board.search { |s| may_subvert_in? s } + board.search(&method(:may_subvert_in?)) end # Ambush 4.3.3 @@ -67,7 +69,7 @@ module ColonialTwilight end def ambush_spaces(board) - board.search { |s| may_ambush_in? s } + board.search(&method(:may_ambush_in?)) end # OAS 5.3.1 @@ -76,7 +78,7 @@ module ColonialTwilight end def oas_spaces(board) - board.search { |s| may_oas_in? s } + board.search(&method(:may_oas_in?)) end end end diff --git a/spec/fln_rules_spec.rb b/spec/fln_rules_spec.rb index a373082..d266cb4 100644 --- a/spec/fln_rules_spec.rb +++ b/spec/fln_rules_spec.rb @@ -24,17 +24,29 @@ describe ColonialTwilight::FLNRules do # 25 sectors + 2 countries expect(rules.rally_spaces(@board).size).to eq(27) end + + it 'may place 1 FLN cube' do + @board.load :short + space = @board.by_name('Mostaganem') + expect(rules.max_fln_to_place_in(space)).to eq(1) + end + + it 'may place 2 FLN cube' do + @board.load :short + space = @board.by_name('Orleansville') + expect(rules.max_fln_to_place_in(space)).to eq(2) + end end describe 'Agitate' do it 'collects spaces where operation can be conducted' do - expect(rules.agitate_spaces(@board.spaces).size).to eq(0) + expect(rules.agitate_spaces(@board).size).to eq(0) end it 'collects spaces where operation can be conducted' do @board.load :short # 6 with bases + 1 in fln control - expect(rules.agitate_spaces(@board.spaces).size).to eq(5) + expect(rules.agitate_spaces(@board).size).to eq(5) end end |