bevy_input_prompts/
lib.rs1#![no_std]
2extern crate alloc;
3use alloc::{format, string::String};
4
5pub use fs_extra::error::Error as CopyAssetsError;
6
7pub mod gamepad_brand;
8
9mod char;
10mod gamepad_axis;
11mod gamepad_button;
12mod key;
13mod key_code;
14mod keyboard_input;
15mod mouse_button;
16
17#[cfg(feature = "kenney_input_prompts")]
18pub use kenney_input_prompts::tokenize_dir::_kenney_input_prompts_1_4 as kenney_tokenize;
19#[cfg(feature = "xelu_free_controller_key_prompts")]
20pub use xelu_free_controller_key_prompts::tokenize_dir::_Xelu_Free_Controller_Key_Prompts as xelu_tokenize;
21
22#[derive(Clone, Copy)]
23pub enum Pack {
24 #[cfg(feature = "kenney_input_prompts")]
25 Kenney,
26 #[cfg(feature = "xelu_free_controller_key_prompts")]
27 Xelu,
28}
29
30pub fn first_file_path(pack: Pack, files: impl tokenize_dir::ToConstraints) -> Option<String> {
31 let file_index = tokenize_dir::first_value_nonstrict(files.to_constraints())?;
32 Some(format!(
33 "bevy_input_prompts/{}",
34 match pack {
35 #[cfg(feature = "kenney_input_prompts")]
36 Pack::Kenney => kenney_input_prompts::tokenize_dir::FILE_PATHS.get(file_index)?,
37
38 #[cfg(feature = "xelu_free_controller_key_prompts")]
39 Pack::Xelu =>
40 xelu_free_controller_key_prompts::tokenize_dir::FILE_PATHS.get(file_index)?,
41 }
42 ))
43}
44
45pub fn copy_assets() -> Result<(), CopyAssetsError> {
46 #[cfg(feature = "kenney_input_prompts")]
47 kenney_input_prompts::copy_assets("assets/bevy_input_prompts")?;
48 #[cfg(feature = "xelu_free_controller_key_prompts")]
49 xelu_free_controller_key_prompts::copy_assets("assets/bevy_input_prompts")?;
50 Ok(())
51}
52
53pub trait FileConstraints: Sized {
54 type Constraints<'c>: tokenize_dir::ToConstraints;
55 fn file_constriants<'c>(self, pack: Pack) -> Self::Constraints<'c>;
56 fn file_path(
60 self,
61 pack: Pack,
62 ) -> Option<String> {
63 first_file_path(pack, self.file_constriants(pack))
64 }
65 fn file_path_extra(
66 self,
67 pack: Pack,
68 extra_contraints: impl tokenize_dir::ToConstraints,
69 ) -> Option<String> {
70 first_file_path(pack, (self.file_constriants(pack), extra_contraints))
71 }
72}