pub struct FireworkManager {
pub fireworks: Vec<Firework>,
pub enable_loop: bool,
pub install_form: FireworkInstallForm,
}Expand description
FireworkManager manages all Fireworks
Fields§
§fireworks: Vec<Firework>§enable_loop: boolIf this is true, the whole fireworks show will restart when all the Fireworks are Gone
install_form: FireworkInstallFormControls how fireworks are installed in FireworkManager
Implementations§
Source§impl FireworkManager
impl FireworkManager
Sourcepub fn new(fireworks: Vec<Firework>) -> Self
pub fn new(fireworks: Vec<Firework>) -> Self
Create a new FireworkManager with enable_loop set to false
Sourcepub fn add_firework(&mut self, firework: Firework)
pub fn add_firework(&mut self, firework: Firework)
Add a Firework to a existing FireworkManager
Sourcepub fn add_fireworks(&mut self, fireworks: Vec<Firework>)
pub fn add_fireworks(&mut self, fireworks: Vec<Firework>)
Add Fireworks to a existing FireworkManager
Sourcepub fn with_firework(self, firework: Firework) -> Self
pub fn with_firework(self, firework: Firework) -> Self
Add a Firework to FireworkManager
Examples found in repository?
examples/heart.rs (lines 34-37)
23fn main() -> Result<()> {
24 let mut stdout = stdout();
25 let (_width, _height) = terminal::size()?;
26 let mut is_running = true;
27 let cfg = Config::default();
28
29 terminal::enable_raw_mode()?;
30 execute!(stdout, terminal::EnterAlternateScreen, cursor::Hide)?;
31
32 let mut time = SystemTime::now();
33 let mut term = Terminal::default();
34 let mut fm = FireworkManager::default().with_firework(gen_heart_firework(Vec2::new(
35 _width as f32 / 4.,
36 _height as f32 / 2.,
37 )));
38
39 while is_running {
40 if event::poll(Duration::ZERO)? {
41 match event::read()? {
42 event::Event::Key(e) => {
43 if e.code == KeyCode::Esc {
44 is_running = false;
45 }
46 }
47 event::Event::Resize(_, _) => {
48 fm.reset();
49 term.reinit(&cfg);
50 }
51 _ => {}
52 };
53 }
54
55 let delta_time = SystemTime::now().duration_since(time).unwrap();
56 fm.update(time, delta_time);
57 time = SystemTime::now();
58
59 term.render(&fm, &cfg);
60 term.print(&mut stdout, &cfg);
61
62 if delta_time < Duration::from_secs_f32(0.05) {
63 let rem = Duration::from_secs_f32(0.05) - delta_time;
64 sleep(rem);
65 }
66 }
67
68 execute!(stdout, cursor::Show, terminal::LeaveAlternateScreen)?;
69 terminal::disable_raw_mode()?;
70
71 Ok(())
72}More examples
examples/vortex.rs (lines 33-36)
22fn main() -> Result<()> {
23 let mut stdout = stdout();
24 let (_width, _height) = terminal::size()?;
25 let mut is_running = true;
26 let cfg = Config::default();
27
28 terminal::enable_raw_mode()?;
29 execute!(stdout, terminal::EnterAlternateScreen, cursor::Hide)?;
30
31 let mut time = SystemTime::now();
32 let mut term = Terminal::default();
33 let mut fm = FireworkManager::default().with_firework(gen_vortex_firework(Vec2::new(
34 _width as f32 / 4.,
35 _height as f32 / 2.,
36 )));
37
38 while is_running {
39 if event::poll(Duration::ZERO)? {
40 match event::read()? {
41 event::Event::Key(e) => {
42 if e.code == KeyCode::Esc {
43 is_running = false;
44 }
45 }
46 event::Event::Resize(_, _) => {
47 fm.reset();
48 term.reinit(&cfg);
49 }
50 _ => {}
51 };
52 }
53
54 let delta_time = SystemTime::now().duration_since(time).unwrap();
55 fm.update(time, delta_time);
56 time = SystemTime::now();
57
58 term.render(&fm, &cfg);
59 term.print(&mut stdout, &cfg);
60
61 if delta_time < Duration::from_secs_f32(0.05) {
62 let rem = Duration::from_secs_f32(0.05) - delta_time;
63 sleep(rem);
64 }
65 }
66
67 execute!(stdout, cursor::Show, terminal::LeaveAlternateScreen)?;
68 terminal::disable_raw_mode()?;
69
70 Ok(())
71}examples/fountain.rs (lines 34-37)
23fn main() -> Result<()> {
24 let mut stdout = stdout();
25 let (_width, _height) = terminal::size()?;
26 let mut is_running = true;
27 let cfg = Config::default();
28
29 terminal::enable_raw_mode()?;
30 execute!(stdout, terminal::EnterAlternateScreen, cursor::Hide)?;
31
32 let mut time = SystemTime::now();
33 let mut term = Terminal::default();
34 let mut fm = FireworkManager::default().with_firework(gen_fountain_firework(Vec2::new(
35 _width as f32 / 4.,
36 _height as f32 / 2. + 13.,
37 )));
38
39 while is_running {
40 if event::poll(Duration::ZERO)? {
41 match event::read()? {
42 event::Event::Key(e) => {
43 if e.code == KeyCode::Esc {
44 is_running = false;
45 }
46 }
47 event::Event::Resize(_, _) => {
48 fm.reset();
49 term.reinit(&cfg);
50 }
51 _ => {}
52 };
53 }
54
55 let delta_time = SystemTime::now().duration_since(time).unwrap();
56 fm.update(time, delta_time);
57 time = SystemTime::now();
58
59 term.render(&fm, &cfg);
60 term.print(&mut stdout, &cfg);
61
62 if delta_time < Duration::from_secs_f32(0.05) {
63 let rem = Duration::from_secs_f32(0.05) - delta_time;
64 sleep(rem);
65 }
66 }
67
68 execute!(stdout, cursor::Show, terminal::LeaveAlternateScreen)?;
69 terminal::disable_raw_mode()?;
70
71 Ok(())
72}pub fn with_fireworks(self, fireworks: Vec<Firework>) -> Self
Sourcepub fn enable_loop(self) -> Self
pub fn enable_loop(self) -> Self
Set enable_loop to true
Sourcepub fn disable_loop(self) -> Self
pub fn disable_loop(self) -> Self
Set enable_loop to false
Sourcepub fn reset(&mut self)
pub fn reset(&mut self)
Reset the whole fireworks show
Examples found in repository?
examples/heart.rs (line 48)
23fn main() -> Result<()> {
24 let mut stdout = stdout();
25 let (_width, _height) = terminal::size()?;
26 let mut is_running = true;
27 let cfg = Config::default();
28
29 terminal::enable_raw_mode()?;
30 execute!(stdout, terminal::EnterAlternateScreen, cursor::Hide)?;
31
32 let mut time = SystemTime::now();
33 let mut term = Terminal::default();
34 let mut fm = FireworkManager::default().with_firework(gen_heart_firework(Vec2::new(
35 _width as f32 / 4.,
36 _height as f32 / 2.,
37 )));
38
39 while is_running {
40 if event::poll(Duration::ZERO)? {
41 match event::read()? {
42 event::Event::Key(e) => {
43 if e.code == KeyCode::Esc {
44 is_running = false;
45 }
46 }
47 event::Event::Resize(_, _) => {
48 fm.reset();
49 term.reinit(&cfg);
50 }
51 _ => {}
52 };
53 }
54
55 let delta_time = SystemTime::now().duration_since(time).unwrap();
56 fm.update(time, delta_time);
57 time = SystemTime::now();
58
59 term.render(&fm, &cfg);
60 term.print(&mut stdout, &cfg);
61
62 if delta_time < Duration::from_secs_f32(0.05) {
63 let rem = Duration::from_secs_f32(0.05) - delta_time;
64 sleep(rem);
65 }
66 }
67
68 execute!(stdout, cursor::Show, terminal::LeaveAlternateScreen)?;
69 terminal::disable_raw_mode()?;
70
71 Ok(())
72}More examples
examples/vortex.rs (line 47)
22fn main() -> Result<()> {
23 let mut stdout = stdout();
24 let (_width, _height) = terminal::size()?;
25 let mut is_running = true;
26 let cfg = Config::default();
27
28 terminal::enable_raw_mode()?;
29 execute!(stdout, terminal::EnterAlternateScreen, cursor::Hide)?;
30
31 let mut time = SystemTime::now();
32 let mut term = Terminal::default();
33 let mut fm = FireworkManager::default().with_firework(gen_vortex_firework(Vec2::new(
34 _width as f32 / 4.,
35 _height as f32 / 2.,
36 )));
37
38 while is_running {
39 if event::poll(Duration::ZERO)? {
40 match event::read()? {
41 event::Event::Key(e) => {
42 if e.code == KeyCode::Esc {
43 is_running = false;
44 }
45 }
46 event::Event::Resize(_, _) => {
47 fm.reset();
48 term.reinit(&cfg);
49 }
50 _ => {}
51 };
52 }
53
54 let delta_time = SystemTime::now().duration_since(time).unwrap();
55 fm.update(time, delta_time);
56 time = SystemTime::now();
57
58 term.render(&fm, &cfg);
59 term.print(&mut stdout, &cfg);
60
61 if delta_time < Duration::from_secs_f32(0.05) {
62 let rem = Duration::from_secs_f32(0.05) - delta_time;
63 sleep(rem);
64 }
65 }
66
67 execute!(stdout, cursor::Show, terminal::LeaveAlternateScreen)?;
68 terminal::disable_raw_mode()?;
69
70 Ok(())
71}examples/fountain.rs (line 48)
23fn main() -> Result<()> {
24 let mut stdout = stdout();
25 let (_width, _height) = terminal::size()?;
26 let mut is_running = true;
27 let cfg = Config::default();
28
29 terminal::enable_raw_mode()?;
30 execute!(stdout, terminal::EnterAlternateScreen, cursor::Hide)?;
31
32 let mut time = SystemTime::now();
33 let mut term = Terminal::default();
34 let mut fm = FireworkManager::default().with_firework(gen_fountain_firework(Vec2::new(
35 _width as f32 / 4.,
36 _height as f32 / 2. + 13.,
37 )));
38
39 while is_running {
40 if event::poll(Duration::ZERO)? {
41 match event::read()? {
42 event::Event::Key(e) => {
43 if e.code == KeyCode::Esc {
44 is_running = false;
45 }
46 }
47 event::Event::Resize(_, _) => {
48 fm.reset();
49 term.reinit(&cfg);
50 }
51 _ => {}
52 };
53 }
54
55 let delta_time = SystemTime::now().duration_since(time).unwrap();
56 fm.update(time, delta_time);
57 time = SystemTime::now();
58
59 term.render(&fm, &cfg);
60 term.print(&mut stdout, &cfg);
61
62 if delta_time < Duration::from_secs_f32(0.05) {
63 let rem = Duration::from_secs_f32(0.05) - delta_time;
64 sleep(rem);
65 }
66 }
67
68 execute!(stdout, cursor::Show, terminal::LeaveAlternateScreen)?;
69 terminal::disable_raw_mode()?;
70
71 Ok(())
72}pub fn set_enable_loop(&mut self, enable_loop: bool)
Sourcepub fn update(&mut self, now: SystemTime, delta_time: Duration)
pub fn update(&mut self, now: SystemTime, delta_time: Duration)
The main update function
Examples found in repository?
examples/heart.rs (line 56)
23fn main() -> Result<()> {
24 let mut stdout = stdout();
25 let (_width, _height) = terminal::size()?;
26 let mut is_running = true;
27 let cfg = Config::default();
28
29 terminal::enable_raw_mode()?;
30 execute!(stdout, terminal::EnterAlternateScreen, cursor::Hide)?;
31
32 let mut time = SystemTime::now();
33 let mut term = Terminal::default();
34 let mut fm = FireworkManager::default().with_firework(gen_heart_firework(Vec2::new(
35 _width as f32 / 4.,
36 _height as f32 / 2.,
37 )));
38
39 while is_running {
40 if event::poll(Duration::ZERO)? {
41 match event::read()? {
42 event::Event::Key(e) => {
43 if e.code == KeyCode::Esc {
44 is_running = false;
45 }
46 }
47 event::Event::Resize(_, _) => {
48 fm.reset();
49 term.reinit(&cfg);
50 }
51 _ => {}
52 };
53 }
54
55 let delta_time = SystemTime::now().duration_since(time).unwrap();
56 fm.update(time, delta_time);
57 time = SystemTime::now();
58
59 term.render(&fm, &cfg);
60 term.print(&mut stdout, &cfg);
61
62 if delta_time < Duration::from_secs_f32(0.05) {
63 let rem = Duration::from_secs_f32(0.05) - delta_time;
64 sleep(rem);
65 }
66 }
67
68 execute!(stdout, cursor::Show, terminal::LeaveAlternateScreen)?;
69 terminal::disable_raw_mode()?;
70
71 Ok(())
72}More examples
examples/vortex.rs (line 55)
22fn main() -> Result<()> {
23 let mut stdout = stdout();
24 let (_width, _height) = terminal::size()?;
25 let mut is_running = true;
26 let cfg = Config::default();
27
28 terminal::enable_raw_mode()?;
29 execute!(stdout, terminal::EnterAlternateScreen, cursor::Hide)?;
30
31 let mut time = SystemTime::now();
32 let mut term = Terminal::default();
33 let mut fm = FireworkManager::default().with_firework(gen_vortex_firework(Vec2::new(
34 _width as f32 / 4.,
35 _height as f32 / 2.,
36 )));
37
38 while is_running {
39 if event::poll(Duration::ZERO)? {
40 match event::read()? {
41 event::Event::Key(e) => {
42 if e.code == KeyCode::Esc {
43 is_running = false;
44 }
45 }
46 event::Event::Resize(_, _) => {
47 fm.reset();
48 term.reinit(&cfg);
49 }
50 _ => {}
51 };
52 }
53
54 let delta_time = SystemTime::now().duration_since(time).unwrap();
55 fm.update(time, delta_time);
56 time = SystemTime::now();
57
58 term.render(&fm, &cfg);
59 term.print(&mut stdout, &cfg);
60
61 if delta_time < Duration::from_secs_f32(0.05) {
62 let rem = Duration::from_secs_f32(0.05) - delta_time;
63 sleep(rem);
64 }
65 }
66
67 execute!(stdout, cursor::Show, terminal::LeaveAlternateScreen)?;
68 terminal::disable_raw_mode()?;
69
70 Ok(())
71}examples/fountain.rs (line 56)
23fn main() -> Result<()> {
24 let mut stdout = stdout();
25 let (_width, _height) = terminal::size()?;
26 let mut is_running = true;
27 let cfg = Config::default();
28
29 terminal::enable_raw_mode()?;
30 execute!(stdout, terminal::EnterAlternateScreen, cursor::Hide)?;
31
32 let mut time = SystemTime::now();
33 let mut term = Terminal::default();
34 let mut fm = FireworkManager::default().with_firework(gen_fountain_firework(Vec2::new(
35 _width as f32 / 4.,
36 _height as f32 / 2. + 13.,
37 )));
38
39 while is_running {
40 if event::poll(Duration::ZERO)? {
41 match event::read()? {
42 event::Event::Key(e) => {
43 if e.code == KeyCode::Esc {
44 is_running = false;
45 }
46 }
47 event::Event::Resize(_, _) => {
48 fm.reset();
49 term.reinit(&cfg);
50 }
51 _ => {}
52 };
53 }
54
55 let delta_time = SystemTime::now().duration_since(time).unwrap();
56 fm.update(time, delta_time);
57 time = SystemTime::now();
58
59 term.render(&fm, &cfg);
60 term.print(&mut stdout, &cfg);
61
62 if delta_time < Duration::from_secs_f32(0.05) {
63 let rem = Duration::from_secs_f32(0.05) - delta_time;
64 sleep(rem);
65 }
66 }
67
68 execute!(stdout, cursor::Show, terminal::LeaveAlternateScreen)?;
69 terminal::disable_raw_mode()?;
70
71 Ok(())
72}Sourcepub fn enable_dyn_install(self) -> Self
pub fn enable_dyn_install(self) -> Self
Set install_form to DynamicInstall
Trait Implementations§
Auto Trait Implementations§
impl Freeze for FireworkManager
impl !RefUnwindSafe for FireworkManager
impl !Send for FireworkManager
impl !Sync for FireworkManager
impl Unpin for FireworkManager
impl !UnwindSafe for FireworkManager
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more