modde_games/generic/
mod.rs1use std::path::{Path, PathBuf};
2
3use crate::traits::GamePlugin;
4
5pub struct GenericGame {
7 id: String,
8 name: String,
9 install_path: Option<PathBuf>,
10 mod_dir: String,
11}
12
13impl GenericGame {
14 pub fn new(
15 id: impl Into<String>,
16 name: impl Into<String>,
17 install_path: Option<PathBuf>,
18 mod_dir: impl Into<String>,
19 ) -> Self {
20 Self {
21 id: id.into(),
22 name: name.into(),
23 install_path,
24 mod_dir: mod_dir.into(),
25 }
26 }
27}
28
29impl GamePlugin for GenericGame {
30 fn game_id(&self) -> &str {
31 &self.id
32 }
33
34 fn display_name(&self) -> &str {
35 &self.name
36 }
37
38 fn detect_install(&self) -> Option<PathBuf> {
39 self.install_path.clone().filter(|p| p.exists())
40 }
41
42 fn mod_directory(&self, install: &Path) -> PathBuf {
43 install.join(&self.mod_dir)
44 }
45
46}