pub struct FireworkManager {
pub fireworks: Vec<Firework>,
pub enable_loop: bool,
pub install_form: FireworkInstallForm,
}
Expand description
FireworkManager
manages all Firework
s
Fields§
§fireworks: Vec<Firework>
§enable_loop: bool
If this is true
, the whole fireworks show will restart when all the Firework
s are Gone
install_form: FireworkInstallForm
Controls 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 Firework
s 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