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
//! # Design/Program complexity
//!
//! - We use the [`heapless::Vec`] array type to store a fixed number of
//! [`ActionCard`]s for the player in the [`Player`]
//! type
//! - We use the [`heapless::Vec`] array type to store a fixed number of
//! [`Player`]s in the [`SituationTable`] type
//!
//! - We're going to use a separate program to design and create a file for the
//! [`ActionCard`]s and the [`SituationCard`]s, which will be loaded when the game
//! begins.
//!
//! - Our loops are going to be managed by [`bevy`]'s [`ecs`].
//!
//! - The [`ecs`] is going to be managing our objects as data records
//! - Every object marked with [`Resource`] or [`Component`] can be
//! a record stored by the engine
//!
//! - We're going to need to search for [`ActionCard`]s and [`SituationCard`]s in an
//! array that we load from a file in order to be able to use them.
//! - [`ActionCard`]s specifically will also have an associated [`CardType`] which will
//! need to be taken into account during the search
//!
//! - Selection statements such as `match` will be used all over our codebase to
//! select things based on associated data such as [`Position`]s
//!
//! - We're going to sort the [`ActionCard`]s in the [`Player`]s hand by it's influence
//! cost
//!
//! - User defined methods are everywhere in this codebase, most of which interact with
//! the [`ecs`]
//!
//! - User defined objects are also everywhere, and will be used to build the
//! [`Component`]s and [`Resource`]s the game will need to exist

#![allow(unused_imports)]

use crate::cards::ActionCard;
use crate::cards::CardType;
use crate::cards::SituationCard;
use crate::player::Player;
use crate::player::Position;
use crate::rooms::SituationTable;
use bevy::ecs;
use bevy::prelude::{Component, Resource};