From 7b29ca50fb21560fa603fff4f789f57e86638c35 Mon Sep 17 00:00:00 2001 From: curly Date: Thu, 18 Aug 2022 14:25:46 -0600 Subject: forgot what I did --- TODO | 5 +++-- bit.xcf | Bin 0 -> 1826 bytes src/assets/bit.png | Bin 309 -> 0 bytes src/assets/blue.png | Bin 0 -> 261 bytes src/assets/dead.png | Bin 0 -> 309 bytes src/assets/green.png | Bin 0 -> 261 bytes src/assets/red.png | Bin 0 -> 257 bytes src/bit.xcf | Bin 1826 -> 0 bytes src/lib.rs | 31 ++++++++++++++++++++++++++++--- 9 files changed, 31 insertions(+), 5 deletions(-) create mode 100644 bit.xcf delete mode 100644 src/assets/bit.png create mode 100644 src/assets/blue.png create mode 100644 src/assets/dead.png create mode 100644 src/assets/green.png create mode 100644 src/assets/red.png delete mode 100644 src/bit.xcf diff --git a/TODO b/TODO index dc11de4..4061f6f 100644 --- a/TODO +++ b/TODO @@ -2,8 +2,9 @@ Add sounds (mostly for losing, winning and clearing a row) Have a menu redo input system. Feels good -Colored blocks -Grey blocks when dead + Separate input into it's own module + +Have each piece be its own color even when dead Fix aspect ratio to 1:1 Import pieces from files to make it data driven diff --git a/bit.xcf b/bit.xcf new file mode 100644 index 0000000..8d6cff5 Binary files /dev/null and b/bit.xcf differ diff --git a/src/assets/bit.png b/src/assets/bit.png deleted file mode 100644 index b0fdf77..0000000 Binary files a/src/assets/bit.png and /dev/null differ diff --git a/src/assets/blue.png b/src/assets/blue.png new file mode 100644 index 0000000..304ec21 Binary files /dev/null and b/src/assets/blue.png differ diff --git a/src/assets/dead.png b/src/assets/dead.png new file mode 100644 index 0000000..b0fdf77 Binary files /dev/null and b/src/assets/dead.png differ diff --git a/src/assets/green.png b/src/assets/green.png new file mode 100644 index 0000000..0eae571 Binary files /dev/null and b/src/assets/green.png differ diff --git a/src/assets/red.png b/src/assets/red.png new file mode 100644 index 0000000..c610b86 Binary files /dev/null and b/src/assets/red.png differ diff --git a/src/bit.xcf b/src/bit.xcf deleted file mode 100644 index 8d6cff5..0000000 Binary files a/src/bit.xcf and /dev/null differ diff --git a/src/lib.rs b/src/lib.rs index f4679c4..ec8fd9c 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -3,6 +3,7 @@ mod tetris; use crate::tetris::piece; use std::time::{Instant, Duration}; +use rand::Rng; // SFML use sfml::window::{Style, Event, ContextSettings, Key}; @@ -93,16 +94,28 @@ impl Game { pub fn game_loop(&mut self) { // Textures + // Background let mut background = Texture::from_file("assets/background.png").expect("Cannot load texture"); background.set_smooth(false); - let mut bit = Texture::from_file("assets/bit.png").expect("Cannot load texture"); - bit.set_smooth(false); + + // Bits + let mut grey = Texture::from_file("assets/dead.png").expect("Cannot load texture"); + grey.set_smooth(false); + let mut red = Texture::from_file("assets/red.png").expect("Cannot load texture"); + red.set_smooth(false); + let mut green = Texture::from_file("assets/green.png").expect("Cannot load texture"); + green.set_smooth(false); + let mut blue = Texture::from_file("assets/blue.png").expect("Cannot load texture"); + blue.set_smooth(false); + + let bits_list = [&red, &green, &blue]; + // Objects let mut background = RectangleShape::with_texture(&background); background.set_size(Vector2f::new(480.0, 480.0)); - let mut bit = RectangleShape::with_texture(&bit); + let mut bit = RectangleShape::with_texture(&blue); bit.set_size(Vector2f::new(24.0, 24.0)); // Initialize the background @@ -140,6 +153,12 @@ impl Game { piece = next_piece; piece.set_pos(tetris::piece::Pos(-2, 3)); next_piece = piece::Piece::random(piece::Pos(3,13)); + + // Set the color + let x = match rand::thread_rng().gen_range(0..bits_list.len()) { + n => bits_list[n] + }; + bit.set_texture(&x, false); } // Check if there are full lines @@ -200,7 +219,11 @@ impl Game { // Start drawing everything let grid = tetris.return_grid(); + // Draw all the bits + // Set the color + let old_texture = bit.texture().unwrap(); + bit.set_texture(&grey, false); for y in (0..grid.len()).rev() { for x in 0..grid.len() { if *grid.get(y).unwrap_or(&vec![0]).get(x).unwrap_or(&0) == 1 { @@ -209,6 +232,8 @@ impl Game { } } } + bit.set_texture(&old_texture, false); + for piece_bit in piece.get_bits_pos() { if !(piece_bit.0 < 0 || piece_bit.1 < 0) { bit.set_position(((piece_bit.1 as f32) * 24.0, (piece_bit.0 as f32) * 24.0)); -- cgit v1.2.3