aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorcurly <curlybryce@protonmail.com>2022-08-18 14:25:46 -0600
committercurly <curlybryce@protonmail.com>2022-08-18 14:25:46 -0600
commit7b29ca50fb21560fa603fff4f789f57e86638c35 (patch)
tree722a056047df4d5bf8d0977a1f479e4cb185dcef /src
parent63b2ed39a56ffe6ea7a9d4fc3942cb3dce9f668a (diff)
downloadtetris-7b29ca50fb21560fa603fff4f789f57e86638c35.tar.gz
tetris-7b29ca50fb21560fa603fff4f789f57e86638c35.tar.bz2
tetris-7b29ca50fb21560fa603fff4f789f57e86638c35.zip
forgot what I did
Diffstat (limited to 'src')
-rw-r--r--src/assets/blue.pngbin0 -> 261 bytes
-rw-r--r--src/assets/dead.png (renamed from src/assets/bit.png)bin309 -> 309 bytes
-rw-r--r--src/assets/green.pngbin0 -> 261 bytes
-rw-r--r--src/assets/red.pngbin0 -> 257 bytes
-rw-r--r--src/bit.xcfbin1826 -> 0 bytes
-rw-r--r--src/lib.rs31
6 files changed, 28 insertions, 3 deletions
diff --git a/src/assets/blue.png b/src/assets/blue.png
new file mode 100644
index 0000000..304ec21
--- /dev/null
+++ b/src/assets/blue.png
Binary files differ
diff --git a/src/assets/bit.png b/src/assets/dead.png
index b0fdf77..b0fdf77 100644
--- a/src/assets/bit.png
+++ b/src/assets/dead.png
Binary files differ
diff --git a/src/assets/green.png b/src/assets/green.png
new file mode 100644
index 0000000..0eae571
--- /dev/null
+++ b/src/assets/green.png
Binary files differ
diff --git a/src/assets/red.png b/src/assets/red.png
new file mode 100644
index 0000000..c610b86
--- /dev/null
+++ b/src/assets/red.png
Binary files differ
diff --git a/src/bit.xcf b/src/bit.xcf
deleted file mode 100644
index 8d6cff5..0000000
--- a/src/bit.xcf
+++ /dev/null
Binary files 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));