From c2268a6301b276efd492e1ab020efbd9df209ba7 Mon Sep 17 00:00:00 2001 From: omagdy7 Date: Sun, 23 Oct 2022 14:18:39 +0200 Subject: Release under MIT and added a README file and gave credits to the pattern lexicon --- src/ui.rs | 53 +++++++++-------------------------------------------- 1 file changed, 9 insertions(+), 44 deletions(-) (limited to 'src/ui.rs') diff --git a/src/ui.rs b/src/ui.rs index ab3d57a..d4c0560 100644 --- a/src/ui.rs +++ b/src/ui.rs @@ -20,6 +20,7 @@ use tui::{ }; use crate::generation::*; +use crate::patterns::*; pub struct StatefulList { @@ -79,8 +80,6 @@ pub struct App<'a> { pub flag_cur: bool, pub layout: Layout, pub cur_gen: Gen, - pub nxt_gen: Gen, - // generation: Gen, } impl<'a> App<'a> { @@ -2651,7 +2650,6 @@ impl<'a> App<'a> { .direction(Direction::Horizontal) .constraints([Constraint::Percentage(15), Constraint::Percentage(85)].as_ref()), cur_gen: Gen::new(), - nxt_gen: Gen::new(), } } } @@ -2659,14 +2657,12 @@ impl<'a> App<'a> { pub fn run_app( terminal: &mut Terminal, mut app: App, - tick_rate: Duration, ) -> io::Result<()> { let mut last_tick = Instant::now(); let mut item_cnt = 1; loop { terminal.draw(|f| ui_list(f, &mut app))?; - - let timeout = Duration::from_millis(10); + let timeout = Duration::from_millis(32); if crossterm::event::poll(timeout)? { if let Event::Key(key) = event::read()? { match key.code { @@ -2698,7 +2694,7 @@ pub fn run_app( } KeyCode::Char('a') => 'animate: loop { terminal.draw(|f| ui_game(f, &mut app))?; - sleep(Duration::from_millis(16)); + sleep(Duration::from_millis(32)); if (crossterm::event::poll(Duration::from_millis(1))).unwrap() { if let Event::Key(k) = event::read().unwrap() { match k.code { @@ -2729,37 +2725,21 @@ fn ui_list(f: &mut Frame, app: &mut App) { .collect(); let items = List::new(items) - .block(Block::default().borders(Borders::ALL).title("List")) + .block(Block::default().borders(Borders::ALL).title("Cool Paterns")) .highlight_style( Style::default() .bg(Color::White) .add_modifier(Modifier::ITALIC), ) - .highlight_symbol("> "); + .highlight_symbol("-> "); f.render_stateful_widget(items, chunks[0], &mut app.items.state); if !app.flag_cur { app.cur_gen = new_gen(&chunks[1], app); - // app.cur_gen = gen_from_file(Path::new("/home/pengu/test/rust-dev/gof-rs/presets/glider.txt")); } let spans = gen_to_spans(&app.cur_gen); - - let create_block = |title| { - Block::default() - .borders(Borders::ALL) - .style(Style::default().bg(Color::Black).fg(Color::Red)) - .title(Span::styled( - title, - Style::default().add_modifier(Modifier::BOLD), - )) - .title_alignment(Alignment::Center) - }; - let paragraph = Paragraph::new(spans.clone()) - .style(Style::default().bg(Color::Black).fg(Color::Blue)) - .block(create_block(" Game Of Life ")) - .alignment(Alignment::Center); - f.render_widget(paragraph, chunks[1]); + render_gen(f, chunks[1], &spans); } fn ui_game(f: &mut Frame, app: &mut App) { @@ -2777,7 +2757,7 @@ fn ui_game(f: &mut Frame, app: &mut App) { // Create a List from all list items and highlight the currently selected one let items = List::new(items) - .block(Block::default().borders(Borders::ALL).title("List")) + .block(Block::default().borders(Borders::ALL).title("Cool Patterns")) .highlight_style( Style::default() .bg(Color::Blue) @@ -2785,25 +2765,10 @@ fn ui_game(f: &mut Frame, app: &mut App) { ) .highlight_symbol("> "); - // We can now render the item list f.render_stateful_widget(items, chunks[0], &mut app.items.state); + let nxt = next_gen(app); let spans = gen_to_spans(&nxt); - - let create_block = |title| { - Block::default() - .borders(Borders::ALL) - .style(Style::default().bg(Color::Black).fg(Color::Red)) - .title(Span::styled( - title, - Style::default().add_modifier(Modifier::BOLD), - )) - .title_alignment(Alignment::Center) - }; - let paragraph = Paragraph::new(spans.clone()) - .style(Style::default().bg(Color::Black).fg(Color::Blue)) - .block(create_block(" Game Of Life ")) - .alignment(Alignment::Center); - f.render_widget(paragraph, chunks[1]); + render_gen(f, chunks[1], &spans) } -- cgit v1.2.3