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
use serde::Deserialize;
use yoke::Yoke;

use crate::cards::ActionCard;

/// The players position on the Politburo
#[derive(Deserialize)]
pub enum Position {
    /// Very direct, aggressive. Focuses on generating influence.
    /// Public opinion suffers as a result.
    MilitaryChief,
    /// Opposite of Military. Mostly high public opinion, low influence.
    /// Generates influence from public opinion
    PropogandaCheif,
    /// Backroom backstabber. Half of your influence is refunded if you
    /// fail to shut down or support a bill.
    InternalSecurityCheif,
    /// ??
    EconomicPlanningCheif,
    /// ??
    PositionFive,
    /// ??
    PositionSix,
    /// ??
    PositionSeven,
    /// ??
    PositionEight,
}

/// A player participating in the Politburo
pub struct Player {
    /// The player's position on the Politburo
    position: Position,
    /// The display name of the player
    name: String,
    /// The action cards in a player's hand
    cards: heapless::Vec<Yoke<ActionCard<'static>, Vec<u8>>, 7>,
}