/
chess_app.rs
48 lines (45 loc) · 1.34 KB
/
chess_app.rs
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
// Children modules
mod data;
mod storage_interface;
mod player_interface;
mod rules_engine;
mod file_storage;
mod console_ui;
mod game_flow;
mod ai_player;
// Required interfaces
use crate::hlcd_infra::console_app_interface::*;
use crate::hlcd_infra::console_io_interface::*;
use crate::hlcd_infra::file_io_interface::*;
// Children components and interfaces
use self::ai_player::*;
use self::player_interface::*;
use self::console_ui::*;
use self::file_storage::*;
use self::game_flow::{component::*, interface::*};
use self::rules_engine::{component::*, interface::*};
use self::storage_interface::*;
hlcd::define! {
component ChessApp {
provides { ConsoleApp by console_ui }
requires { ConsoleIO, FileIO }
children {
file_storage: FileStorage(FileIO),
rules_engine: RulesEngine(),
ai_player: StupidAiPlayer(
RulesEngine by rules_engine
),
game_flow: ActivePassiveSyncGameFlow(
PassiveSyncPlayer by ai_player,
RulesEngine by rules_engine
),
console_ui: ConsoleUI(
ConsoleIO,
Storage by file_storage,
RulesEngine by rules_engine,
GameFlowControl by game_flow,
ForActivePlayer by game_flow
)
}
}
}