summaryrefslogtreecommitdiffstats
path: root/lib/colonial_twilight/board/scenario.rb
diff options
context:
space:
mode:
authorJérémy Zurcher <jeremy@asynk.ch>2026-03-11 09:39:14 +0100
committerJérémy Zurcher <jeremy@asynk.ch>2026-03-11 09:39:14 +0100
commitb7ef8c8ed365703571befe7396c2627a8c943e8d (patch)
tree15dac0d4bbc7b6aafa854c9da2f68d4a133f33bd /lib/colonial_twilight/board/scenario.rb
parent1b8d0c020ed45e5969e7f836e6c100bae4552c75 (diff)
downloadcolonial-twilight-b7ef8c8ed365703571befe7396c2627a8c943e8d.zip
colonial-twilight-b7ef8c8ed365703571befe7396c2627a8c943e8d.tar.gz
move force,spaces,scenario,setup into subdir board
Diffstat (limited to 'lib/colonial_twilight/board/scenario.rb')
-rw-r--r--lib/colonial_twilight/board/scenario.rb67
1 files changed, 67 insertions, 0 deletions
diff --git a/lib/colonial_twilight/board/scenario.rb b/lib/colonial_twilight/board/scenario.rb
new file mode 100644
index 0000000..a0f5edf
--- /dev/null
+++ b/lib/colonial_twilight/board/scenario.rb
@@ -0,0 +1,67 @@
+# frozen_string_literal: true
+
+module ColonialTwilight
+ module Scenario
+ def resettle(name)
+ by_name(name).resettle!
+ end
+
+ def set_space(idx, opts, align = nil)
+ s = @spaces[idx]
+ s.alignment = align unless align.nil?
+ %i[gov_bases fln_bases french_troops french_police algerian_troops algerian_police
+ fln_underground].each { |sym| s.add(sym, opts[sym]) if opts.key?(sym) }
+ end
+
+ def short_scenario
+ @opposition_bases.v = 19
+ @support_commitment.v = 22
+ @commitment.v = 15
+ @fln_resources.v = 15
+ @gov_resources.v = 20
+ @france_track.v = 4
+ @border_zone_track.v = 3
+ @out_of_play.init(fln_underground: 5)
+ @available.init(gov_bases: 2, french_police: 4, fln_bases: 7, fln_underground: 8)
+ resettle 'Setif'
+ resettle 'Tlemcen'
+ resettle 'Bordj Bou Arreridj'
+
+ set_space 0, { algerian_police: 1, fln_underground: 1 }, :oppose
+ set_space 2, { french_police: 1 }
+ set_space 4, { algerian_police: 1, fln_underground: 1 }, :oppose
+ set_space 5, { french_police: 1 }
+ set_space 6, { french_police: 1 }, :support
+ set_space 7, { fln_underground: 1 }
+ set_space 8, { french_troops: 4, algerian_police: 1, gov_bases: 1 }
+ set_space 9, { french_troops: 1, algerian_police: 1, gov_bases: 1, fln_underground: 1, fln_bases: 1 }, :oppose
+ set_space 10, { french_police: 1, fln_underground: 1, fln_bases: 1 }, :oppose
+ set_space 11, { french_police: 1 }
+ set_space 12, { french_police: 1, fln_underground: 1, fln_bases: 1 }, :oppose
+ set_space 13, { french_troops: 4, algerian_troops: 1, french_police: 1 }, :support
+ set_space 14, { algerian_troops: 1, gov_bases: 1 }
+ set_space 15, { french_police: 1, algerian_police: 1, fln_underground: 1, fln_bases: 1 }, :oppose
+ set_space 16, { algerian_troops: 1, french_police: 1, algerian_police: 1 }, :support
+ set_space 17, { french_police: 1, algerian_police: 1 }
+ set_space 18, { french_police: 2, fln_underground: 1 }
+ set_space 19, { french_police: 1, gov_bases: 1 }
+ set_space 20, { french_police: 1 }
+ set_space 22, { french_police: 1 }
+ set_space 23, { french_police: 1 }
+ set_space 24, { french_police: 1 }
+ set_space 27, {}, :oppose
+ set_space 28, { fln_underground: 4, fln_bases: 2 }
+ set_space 29, { fln_underground: 5, fln_bases: 2 }
+ spaces[28].independent!
+ spaces[29].independent!
+ end
+
+ def medium_scenario
+ raise 'MEDIUM scenario net implemented yet'
+ end
+
+ def full_scenario
+ raise 'FULL scenario net implemented yet'
+ end
+ end
+end