diff options
author | Jérémy Zurcher <jeremy@asynk.ch> | 2020-09-02 17:18:31 +0200 |
---|---|---|
committer | Jérémy Zurcher <jeremy@asynk.ch> | 2020-09-02 17:18:31 +0200 |
commit | c18b41671efabbd20a743e01dd8498d71d550eb9 (patch) | |
tree | 37838e2ae212973e3f61962a26c50b129f819ec9 /lib/colonial_twilight | |
parent | 314b20c23a1362eef24efc6f80c7005ec24e878d (diff) | |
download | colonial-twilight-c18b41671efabbd20a743e01dd8498d71d550eb9.zip colonial-twilight-c18b41671efabbd20a743e01dd8498d71d550eb9.tar.gz |
Board : counter.clamp(0, 50)
Diffstat (limited to 'lib/colonial_twilight')
-rw-r--r-- | lib/colonial_twilight/board.rb | 47 | ||||
-rw-r--r-- | lib/colonial_twilight/fln_bot.rb | 2 |
2 files changed, 30 insertions, 19 deletions
diff --git a/lib/colonial_twilight/board.rb b/lib/colonial_twilight/board.rb index 473d0c1..ba6956b 100644 --- a/lib/colonial_twilight/board.rb +++ b/lib/colonial_twilight/board.rb @@ -3,18 +3,6 @@ require 'json' -# FIXME : -# - json should not be here -# - has_? -# - can_? -# -# check min/max bases, points, tracks -# -# delegate [syms].each do |s| define_method s delegate.instance_method(s) end -# -# scenario as JSON ?, tools to generate them -# - module ColonialTwilight class Forces @@ -311,6 +299,20 @@ module ColonialTwilight end end + def shift_commitment dc + @commitment = (@commitment + dc).clamp(0, 50) + end + + def shift_resources who, dr + if who == :fln + @fln_resources = (@fln_resources + dr).clamp(0, 50) + elsif who == :gov + @gov_resources = (@gov_resources + dr).clamp(0, 50) + else + raise "shift_resources : unknown who : #{who}" + end + end + def shift_france_track dt ft = @france_track + dt return false if (ft < 0 or ft > 5) @@ -318,6 +320,13 @@ module ColonialTwilight true end + def shift_border_zone_track dt + ft = @shift_border_zone_track + dt + return false if (ft < 0 or ft > 4) + @border_zone_track = ft + true + end + def has where=:spaces, &block r = search &block r.length > 0 @@ -345,6 +354,8 @@ module ColonialTwilight @opposition_bases += s.pop if s.alignment == :oppose @support_commitment += s.pop if s.alignment == :support end + @support_commitment = @support_commitment.clamp(0, 50) + @opposition_bases = @opposition_bases.clamp(0, 50) values << @support_commitment << @opposition_bases end @@ -486,12 +497,12 @@ module ColonialTwilight end def short - self.commitment = 15 - self.fln_resources = 15 - self.gov_resources = 20 - self.resettled_sectors = 0 - self.france_track = 4 - self.border_zone_track = 3 + @commitment = 15 + @fln_resources = 15 + @gov_resources = 20 + @resettled_sectors = 0 + @france_track = 4 + @border_zone_track = 3 @out_of_play.fln_underground = 5 @available.gov_bases = 2 @available.french_police = 4 diff --git a/lib/colonial_twilight/fln_bot.rb b/lib/colonial_twilight/fln_bot.rb index ae4536b..0cb8b46 100644 --- a/lib/colonial_twilight/fln_bot.rb +++ b/lib/colonial_twilight/fln_bot.rb @@ -610,7 +610,7 @@ module ColonialTwilight # :pass, :event, :agitate end cost = h[:fln_resources] - @board.fln_resources -= cost + @board.shift_resources :fln, -cost @expended_resources += cost unless h.has_key? :already_expended # _reserve_agitate h[:resources] = {:cost=>cost, :value=>@board.fln_resources} h[:controls].each do |k,v| |