summaryrefslogtreecommitdiffstats
path: root/lib/colonial_twilight/cards.rb
blob: 4ffcff55ecc2a95a8883b45ab5b1e508bfa9ea11 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#! /usr/bin/env ruby
# -*- coding: UTF-8 -*-

module ColonialTwilight

  CARD_SINGLE=1
  CARD_FLN_MARKED=2
  CARD_ALWAYS_PLAY=4

  class Card
    attr_reader :num, :title
    def initialize n, t, attr, a0=nil, a1=nil
      @num = n
      @title = t
      @attributes = attr
      @a0 = a0
      @a1 = a1
    end
    def dual?; @attributes & CARD_SINGLE == 0 end
    def single?; @attributes & CARD_SINGLE == CARD_SINGLE end
    def fln_marked?; @attributes & CARD_FLN_MARKED == CARD_FLN_MARKED end
    def always_play?; @attributes & CARD_ALWAYS_PLAY == CARD_ALWAYS_PLAY end
    def capability?; false end
    def fln_effective?; false end
    def fln_effectiveness; 0 end
    def fln_playable?
      # reduce GOV support or resources or commitment
      # shift France Track toward F
      # place FLN base or increase FLN resources
      false
    end
    def check
      # @attributes.each do |attr| raise "unknown attribute : #{attr}" if attr not in ATTRS end
      # puts single?
      # puts dual?
      # puts flnmarked?
      # puts alwaysplay?
    end
  end

  class CardAction
    def initialize t, c
      @txt = t
      @condition=c
    end
  end

  class Deck
    attr_reader :cards
    def initialize
      @cards = {}
      add_card 0, 'None', nil, nil
      add_card 1, 'Quadrillage', 0, CardAction.new('Place up to all French Police in Available in up to 3 spaces', {:what=>:french_police,:from=>:available})
    end

    def pull n; @cards[n > 0 ? 1 : 0] end # FIXME

    private

    def add_card num, title, attrs, action
      @cards[num] = Card.new num, title, attrs
      @cards[num].check
    end

  end

end

 # 'Balky Conscripts'
 # 'Leadership Snatch'
 # 'Oil & Gas Discoveries'
 # 'Peace of the Brave'
 # 'Factionalism'
 # '5th Bureau'
 # 'Cross-border air strike'
 # 'Beni-Oui-Oui'
 # 'Moudjahidine'
 # 'Bananes'
 # 'Ventilos'
 # 'SAS'
 # 'Protest in Paris'
 # 'Jean-Paul Sarte'
 # 'NATO'
 # 'Commandos'
 # 'Torture'
 # 'General Strike'
 # 'Sauve qui peut'
 # 'United Nations Resolution'
 # 'The Government of USA is Convinced...'
 # 'Diplomatic Leanings'
 # 'Economic Development'
 # 'Purge'
 # 'Casbah'
 # 'Covert Movement'
 # 'Atrocities and Reprisals'
 # 'The Call Up'
 # 'Change in Tactics'
 # 'Intimidation'
 # 'Teleb the Bomb-maker'
 # 'Overkill'
 # 'Elections'
 # 'Napalm'
 # 'Assassination'
 # 'Integration'
 # 'Economic Crisis in France'
 # 'Retreat into Djebel'
 # 'Strategic Movement'
 # 'Egypt'
 # 'Czech Arms Deal'
 # 'Refugees'
 # 'Paranoia'
 # 'Challe Plan'
 # 'Moghazni'
 # 'Third Force'
 # 'Ultras'
 # 'Factional Plot'
 # 'Bleuite'
 # 'Stripey Hole'
 # 'Cabinet Shuffle'
 # 'Population Control'
 # 'Operation 744'
 # 'Development'
 # 'Hardened Attitudes'
 # 'Peace Talks'
 # 'Army in Waiting'
 # 'Bandung Conference'
 # 'Soummam Conference'
 # 'Morocco and Tunisia Independent'
 # 'Suez Crisis'
 # 'OAS'
 # 'Mobilization'
 # 'Recall De Gaulle'
 # "Coup d'etat"
 # "Propaganda!"
 # "Propaganda!"
 # "Propaganda!"
 # "Propaganda!"
 # "Propaganda!"