From 43dd0474d07a6a04c3fca1e2ee2e0cee2c55af9a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=D0=9F=D0=B5=D1=87=D0=B5=D0=BD=D0=B8=D0=BD=20=D0=94=D0=B0?=
 =?UTF-8?q?=D0=BD=D0=B8=D0=BB=D0=B0=20=D0=9C=D0=B8=D1=85=D0=B0=D0=B9=D0=BB?=
 =?UTF-8?q?=D0=BE=D0=B2=D0=B8=D1=87?= <dmpechenin@edu.hse.ru>
Date: Mon, 24 Mar 2025 15:03:15 +0300
Subject: [PATCH] Add textures to food

---
 assets/enemy_blue.png                         | Bin 2499 -> 0 bytes
 assets/enemy_pink.png                         | Bin 2458 -> 0 bytes
 assets/enemy_red.png                          | Bin 3129 -> 0 bytes
 assets/enemy_yellow.png                       | Bin 2901 -> 0 bytes
 source/BasicAbstractions/Assets.cpp           |  71 ++++++++++--------
 source/BasicAbstractions/Assets.h             |   8 +-
 source/Configuration.h                        |  23 ++++--
 .../DynamicEntities/DynamicEntities.cpp       |  15 +---
 .../StaticEntities/StaticEntities.cpp         |  11 +--
 .../Entities/StaticEntities/StaticEntities.h  |   4 +-
 source/Themes/Themes.cpp                      |   2 -
 source/Themes/Themes.h                        |   2 -
 12 files changed, 69 insertions(+), 67 deletions(-)
 delete mode 100644 assets/enemy_blue.png
 delete mode 100644 assets/enemy_pink.png
 delete mode 100644 assets/enemy_red.png
 delete mode 100644 assets/enemy_yellow.png

diff --git a/assets/enemy_blue.png b/assets/enemy_blue.png
deleted file mode 100644
index e0c9ee5c0734dc2bc006b9af7f0facc6a49d46c5..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2499
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

diff --git a/assets/enemy_pink.png b/assets/enemy_pink.png
deleted file mode 100644
index 27e30bf41f5d49b6212e9a6e569e3be86e78e379..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2458
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
G$NvWdY2@Po

diff --git a/assets/enemy_red.png b/assets/enemy_red.png
deleted file mode 100644
index 09d1807594eac4d072bf7af6cc9e1d6294218466..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3129
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

diff --git a/assets/enemy_yellow.png b/assets/enemy_yellow.png
deleted file mode 100644
index 028c7b2d74a31c20c4cc5aefcc3dc9e9e61fee05..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2901
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

diff --git a/source/BasicAbstractions/Assets.cpp b/source/BasicAbstractions/Assets.cpp
index 297ec89..15a8b80 100644
--- a/source/BasicAbstractions/Assets.cpp
+++ b/source/BasicAbstractions/Assets.cpp
@@ -1,4 +1,7 @@
 #include "Assets.h"
+#include <array>
+#include <random>
+#include <Configuration.h>
 
 sf::Font& Assets::GetFont() {
     static sf::Font font;
@@ -16,38 +19,42 @@ sf::Texture& Assets::GetPacmanTexture() {
     return texture;
 }
 
-sf::Texture& Assets::GetEnemyRedTexture() {
-    static sf::Texture texture;
-    if (texture.getSize() != sf::Vector2u{0, 0})
-        return texture;
-    if (!texture.loadFromFile(config::ENEMY_RED_FILE))
-        throw std::runtime_error("Failed to load texture: enemy red");
-    return texture;
-}
-
-sf::Texture& Assets::GetEnemyPinkTexture() {
-    static sf::Texture texture;
-    if (texture.getSize() != sf::Vector2u{0, 0})
-        return texture;
-    if (!texture.loadFromFile(config::ENEMY_PINK_FILE))
-        throw std::runtime_error("Failed to load texture: enemy pink");
-    return texture;
+sf::Texture& Assets::GetEnemyTexture() {
+    static std::array<sf::Texture, config::ENEMY_TEXTURES_NUMBER> textures;
+    if (textures[0].getSize() == sf::Vector2u{0, 0}) {
+        if (!textures[0].loadFromFile(config::ENEMY_RED_FILE))
+            throw std::runtime_error("Failed to load texture: enemy red");
+        if (!textures[1].loadFromFile(config::ENEMY_BLUE_FILE))
+            throw std::runtime_error("Failed to load texture: enemy blue");
+        if (!textures[2].loadFromFile(config::ENEMY_YELLOW_FILE))
+            throw std::runtime_error("Failed to load texture: enemy yellow");
+        if (!textures[3].loadFromFile(config::ENEMY_PINK_FILE))
+            throw std::runtime_error("Failed to load texture: enemy pink");
+    }
+    static std::mt19937 gen{std::random_device{}()};
+    static std::uniform_int_distribution<size_t> dist{0, config::ENEMY_TEXTURES_NUMBER-1};
+    return textures[dist(gen)];
 }
 
-sf::Texture& Assets::GetEnemyYellowTexture() {
-    static sf::Texture texture;
-    if (texture.getSize() != sf::Vector2u{0, 0})
-        return texture;
-    if (!texture.loadFromFile(config::ENEMY_YELLOW_FILE))
-        throw std::runtime_error("Failed to load texture: enemy yellow");
-    return texture;
-}
-
-sf::Texture& Assets::GetEnemyBlueTexture() {
-    static sf::Texture texture;
-    if (texture.getSize() != sf::Vector2u{0, 0})
-        return texture;
-    if (!texture.loadFromFile(config::ENEMY_BLUE_FILE))
-        throw std::runtime_error("Failed to load texture: enemy blue");
-    return texture;
+sf::Texture& Assets::GetFoodTexture() {
+    static std::array<sf::Texture, config::FOOD_TEXTURES_NUMBER> textures;
+    if (textures[0].getSize() == sf::Vector2u{0, 0}) {
+        if (!textures[0].loadFromFile(config::FOOD_1))
+            throw std::runtime_error("Failed to load texture: food 1");
+        if (!textures[1].loadFromFile(config::FOOD_2))
+            throw std::runtime_error("Failed to load texture: food 2");
+        if (!textures[2].loadFromFile(config::FOOD_3))
+            throw std::runtime_error("Failed to load texture: food 3");
+        if (!textures[3].loadFromFile(config::FOOD_4))
+            throw std::runtime_error("Failed to load texture: food 4");
+        if (!textures[4].loadFromFile(config::FOOD_5))
+            throw std::runtime_error("Failed to load texture: food 5");
+        if (!textures[5].loadFromFile(config::FOOD_6))
+            throw std::runtime_error("Failed to load texture: food 6");
+        if (!textures[6].loadFromFile(config::FOOD_7))
+            throw std::runtime_error("Failed to load texture: food 7");
+    }
+    static std::mt19937 gen{std::random_device{}()};
+    static std::uniform_int_distribution<size_t> dist{0, config::FOOD_TEXTURES_NUMBER-1};
+    return textures[dist(gen)];
 }
\ No newline at end of file
diff --git a/source/BasicAbstractions/Assets.h b/source/BasicAbstractions/Assets.h
index 31816ba..665c0fb 100644
--- a/source/BasicAbstractions/Assets.h
+++ b/source/BasicAbstractions/Assets.h
@@ -1,12 +1,10 @@
 #pragma once
-#include <Configuration.h>
+#include <SFML/Graphics.hpp>
 
 struct Assets final {
     Assets() = delete;
     static sf::Font& GetFont();
     static sf::Texture& GetPacmanTexture();
-    static sf::Texture& GetEnemyRedTexture();
-    static sf::Texture& GetEnemyYellowTexture();
-    static sf::Texture& GetEnemyBlueTexture();
-    static sf::Texture& GetEnemyPinkTexture();
+    static sf::Texture& GetEnemyTexture();
+    static sf::Texture& GetFoodTexture();
 };
\ No newline at end of file
diff --git a/source/Configuration.h b/source/Configuration.h
index 5296a7a..d264869 100644
--- a/source/Configuration.h
+++ b/source/Configuration.h
@@ -3,7 +3,7 @@
 
 namespace config {
     // Общее:
-    constexpr unsigned int FRAME_RATE_LIMIT = 10;
+    constexpr unsigned int FRAME_RATE_LIMIT = 60;
     // Меню:
     const sf::VideoMode SELECT_LEVEL_VIDEO_MODE{ 400, 600 };
     const sf::Vector2f BUTTON_SIZE = { static_cast<float>(SELECT_LEVEL_VIDEO_MODE.width)/1.6f,
@@ -25,11 +25,20 @@ namespace config {
     // Игра:
     const sf::VideoMode GAME_VIDEO_MODE{ 1080, 720 };
     constexpr char PACMAN_FILE[] = ASSETS_PATH "pacman.png";
-    constexpr char ENEMY_PINK_FILE[] = ASSETS_PATH "enemy_pink.png";
-    constexpr char ENEMY_RED_FILE[] = ASSETS_PATH "enemy_red.png";
-    constexpr char ENEMY_BLUE_FILE[] = ASSETS_PATH "enemy_blue.png";
-    constexpr char ENEMY_YELLOW_FILE[] = ASSETS_PATH "enemy_yellow.png";
+    constexpr char ENEMY_PINK_FILE[] = ASSETS_PATH "enemies/enemy_pink.png";
+    constexpr char ENEMY_RED_FILE[] = ASSETS_PATH "enemies/enemy_red.png";
+    constexpr char ENEMY_BLUE_FILE[] = ASSETS_PATH "enemies/enemy_blue.png";
+    constexpr char ENEMY_YELLOW_FILE[] = ASSETS_PATH "enemies/enemy_yellow.png";
+    constexpr size_t ENEMY_TEXTURES_NUMBER = 4;
     constexpr size_t ENEMY_ON_SPRITE_COUNT = 8;
+    constexpr char FOOD_1[] = ASSETS_PATH "food/onigiri.png";
+    constexpr char FOOD_2[] = ASSETS_PATH "food/sushi_roll_1.png";
+    constexpr char FOOD_3[] = ASSETS_PATH "food/sushi_roll_2.png";
+    constexpr char FOOD_4[] = ASSETS_PATH "food/sushi_roll_3.png";
+    constexpr char FOOD_5[] = ASSETS_PATH "food/sushi_roll_4.png";
+    constexpr char FOOD_6[] = ASSETS_PATH "food/sushi_roll_5.png";
+    constexpr char FOOD_7[] = ASSETS_PATH "food/sushi_roll_6.png";
+    constexpr size_t FOOD_TEXTURES_NUMBER = 7;
     constexpr char EASY_GAME_TITLE[] = "Level: Easy";
     constexpr char MEDIUM_GAME_TITLE[] = "Level: Medium";
     constexpr char HARD_GAME_TITLE[] = "Level: Hard";
@@ -39,7 +48,7 @@ namespace config {
     constexpr float HARD_GAME_ENEMY_RATIO = 0.07f;
     constexpr float ROOM_SIZE = 50;
     constexpr float GAME_ENEMY_SIZE = ROOM_SIZE * 0.8;
-    constexpr float GAME_FOOD_SIZE = ROOM_SIZE * 0.1;
+    constexpr float GAME_FOOD_SIZE = ROOM_SIZE * 0.2;
     constexpr float ENEMY_SPEED_MEDIEUM = 100;
     constexpr float ENEMY_SPEED_HARD = 150;
     constexpr float ENEMY_SPEED_EXTREME = 250;
@@ -72,7 +81,6 @@ namespace config {
     const sf::Color SELECT_LEVEL_BACKGROUND_COLOR{ 230,230,230 };
     const sf::Color GAME_COLOR_ROOM{ 255, 255, 255 };
     const sf::Color GAME_COLOR_WALL{ 0, 0, 0 };
-    const sf::Color GAME_FOOD_COLOR{ 0, 200, 100 };
     const sf::Color GAME_COLOR_BACKGROUND_INGAME{ 230,230,230 };
     const sf::Color TEXT_COLOR_NOTIFICATION{ 0, 0, 0, 255};
     const sf::Color NOTIFICATION_BANNER_COLOR_PLAY{ 0, 100, 255, 200 };
@@ -95,7 +103,6 @@ namespace config {
     const sf::Color SELECT_LEVEL_BACKGROUND_COLOR_DARK{ 30, 30, 30 };
     const sf::Color GAME_COLOR_ROOM_DARK{ 50, 50, 50 };
     const sf::Color GAME_COLOR_WALL_DARK{ 200, 200, 200 };
-    const sf::Color GAME_FOOD_COLOR_DARK{ 0, 150, 75 };
     const sf::Color GAME_COLOR_BACKGROUND_INGAME_DARK{ 20, 20, 20 };
     const sf::Color TEXT_COLOR_NOTIFICATION_DARK{ 255, 255, 255, 255 };
     const sf::Color NOTIFICATION_BANNER_COLOR_PLAY_DARK{ 0, 50, 150, 200 };
diff --git a/source/States/GameState/Entities/DynamicEntities/DynamicEntities.cpp b/source/States/GameState/Entities/DynamicEntities/DynamicEntities.cpp
index ea9069f..900a5bc 100644
--- a/source/States/GameState/Entities/DynamicEntities/DynamicEntities.cpp
+++ b/source/States/GameState/Entities/DynamicEntities/DynamicEntities.cpp
@@ -5,19 +5,12 @@
 Enemy::Enemy(const float speed) : m_speed(speed) {
     std::mt19937 gen{std::random_device{}()};
     std::uniform_int_distribution<size_t> dist{0, 3};
-    const sf::Texture* texture;
-    switch (dist(gen)) {
-        case 0: texture = &Assets::GetEnemyRedTexture(); break;
-        case 1: texture = &Assets::GetEnemyYellowTexture(); break;
-        case 2: texture = &Assets::GetEnemyBlueTexture(); break;
-        case 3: texture = &Assets::GetEnemyPinkTexture(); break;
-        default: texture = &Assets::GetEnemyRedTexture(); break;;
-    }
+    const sf::Texture& texture = Assets::GetEnemyTexture();
 
-    m_sprite.setTexture(*texture);
+    m_sprite.setTexture(texture);
     m_sprite.setTextureRect(sf::IntRect(0, 0,
-        static_cast<int>(texture->getSize().x / config::ENEMY_ON_SPRITE_COUNT), static_cast<int>(texture->getSize().y)));
-    m_sprite.setOrigin(static_cast<float>(texture->getSize().x) / (2.f * config::ENEMY_ON_SPRITE_COUNT), static_cast<float>(texture->getSize().y) / 2.f);
+        static_cast<int>(texture.getSize().x / config::ENEMY_ON_SPRITE_COUNT), static_cast<int>(texture.getSize().y)));
+    m_sprite.setOrigin(static_cast<float>(texture.getSize().x) / (2.f * config::ENEMY_ON_SPRITE_COUNT), static_cast<float>(texture.getSize().y) / 2.f);
     m_distance_limit = m_speed / config::ROOM_SIZE;
 }
 
diff --git a/source/States/GameState/Entities/StaticEntities/StaticEntities.cpp b/source/States/GameState/Entities/StaticEntities/StaticEntities.cpp
index f17ff19..a92069e 100644
--- a/source/States/GameState/Entities/StaticEntities/StaticEntities.cpp
+++ b/source/States/GameState/Entities/StaticEntities/StaticEntities.cpp
@@ -1,10 +1,11 @@
 #include <States/GameState/Entities/StaticEntities/StaticEntities.h>
 #include <Configuration.h>
+#include <BasicAbstractions/Assets.h>
 #include <Themes/Themes.h>
 
-Food::Food() : m_circle(config::GAME_FOOD_SIZE, 6) {
-    m_circle.setFillColor(Themes::Instance().get_game_food_color());
-    m_circle.setOrigin({config::GAME_FOOD_SIZE, config::GAME_FOOD_SIZE});
+Food::Food() : m_rect({ config::GAME_FOOD_SIZE, config::GAME_FOOD_SIZE }) {
+    m_rect.setOrigin({config::GAME_FOOD_SIZE, config::GAME_FOOD_SIZE});
+    m_rect.setTexture(&Assets::GetFoodTexture());
 }
 
 std::unique_ptr<IStaticEntity> Food::clone() const {
@@ -12,7 +13,7 @@ std::unique_ptr<IStaticEntity> Food::clone() const {
 }
 
 void Food::draw_into(sf::RenderWindow& window) const {
-    window.draw(m_circle);
+    window.draw(m_rect);
 }
 
 void Food::prepare_for_first_drawing() {
@@ -20,5 +21,5 @@ void Food::prepare_for_first_drawing() {
 }
 
 void Food::prepare_for_drawing() {
-    m_circle.setPosition(m_ptr_room->get_position());
+    m_rect.setPosition(m_ptr_room->get_position());
 }
\ No newline at end of file
diff --git a/source/States/GameState/Entities/StaticEntities/StaticEntities.h b/source/States/GameState/Entities/StaticEntities/StaticEntities.h
index f4ba0ee..39ed19d 100644
--- a/source/States/GameState/Entities/StaticEntities/StaticEntities.h
+++ b/source/States/GameState/Entities/StaticEntities/StaticEntities.h
@@ -13,8 +13,8 @@ public:
     void draw_into(sf::RenderWindow& window) const override;
     void prepare_for_first_drawing() override;
     void prepare_for_drawing() override;
-    sf::FloatRect getBounds() const { return m_circle.getGlobalBounds(); }
+    sf::FloatRect getBounds() const { return m_rect.getGlobalBounds(); }
     std::unique_ptr<IGameEvent> accept(IVisitor* ptr_visitor) override { return ptr_visitor->visit(this); }
 private:
-    sf::CircleShape m_circle;
+    sf::RectangleShape m_rect;
 };
\ No newline at end of file
diff --git a/source/Themes/Themes.cpp b/source/Themes/Themes.cpp
index eae022e..a052ea0 100644
--- a/source/Themes/Themes.cpp
+++ b/source/Themes/Themes.cpp
@@ -14,7 +14,6 @@ void Themes::change_theme() {
         SELECT_LEVEL_BACKGROUND_COLOR = config::SELECT_LEVEL_BACKGROUND_COLOR;
         GAME_COLOR_ROOM = config::GAME_COLOR_ROOM;
         GAME_COLOR_WALL = config::GAME_COLOR_WALL;
-        GAME_FOOD_COLOR = config::GAME_FOOD_COLOR;
         GAME_COLOR_BACKGROUND_INGAME = config::GAME_COLOR_BACKGROUND_INGAME;
         TEXT_COLOR_NOTIFICATION = config::TEXT_COLOR_NOTIFICATION;
         NOTIFICATION_BANNER_COLOR_PLAY = config::NOTIFICATION_BANNER_COLOR_PLAY;
@@ -39,7 +38,6 @@ void Themes::change_theme() {
         SELECT_LEVEL_BACKGROUND_COLOR = config::SELECT_LEVEL_BACKGROUND_COLOR_DARK;
         GAME_COLOR_ROOM = config::GAME_COLOR_ROOM_DARK;
         GAME_COLOR_WALL = config::GAME_COLOR_WALL_DARK;
-        GAME_FOOD_COLOR = config::GAME_FOOD_COLOR_DARK;
         GAME_COLOR_BACKGROUND_INGAME = config::GAME_COLOR_BACKGROUND_INGAME_DARK;
         TEXT_COLOR_NOTIFICATION = config::TEXT_COLOR_NOTIFICATION_DARK;
         NOTIFICATION_BANNER_COLOR_PLAY = config::NOTIFICATION_BANNER_COLOR_PLAY_DARK;
diff --git a/source/Themes/Themes.h b/source/Themes/Themes.h
index 5e30927..d28424d 100644
--- a/source/Themes/Themes.h
+++ b/source/Themes/Themes.h
@@ -15,7 +15,6 @@ public:
     [[nodiscard]] sf::Color get_select_level_background_color() const { return SELECT_LEVEL_BACKGROUND_COLOR; }
     [[nodiscard]] sf::Color get_game_color_room() const { return GAME_COLOR_ROOM; }
     [[nodiscard]] sf::Color get_game_color_wall() const { return GAME_COLOR_WALL; }
-    [[nodiscard]] sf::Color get_game_food_color() const { return GAME_FOOD_COLOR; }
     [[nodiscard]] sf::Color get_game_color_background_in_game() const { return GAME_COLOR_BACKGROUND_INGAME; }
     [[nodiscard]] sf::Color get_text_color_notification() const { return TEXT_COLOR_NOTIFICATION; }
     [[nodiscard]] sf::Color get_notification_banner_color_play() const { return NOTIFICATION_BANNER_COLOR_PLAY; }
@@ -41,7 +40,6 @@ private:
     sf::Color SELECT_LEVEL_BACKGROUND_COLOR = config::SELECT_LEVEL_BACKGROUND_COLOR_DARK;
     sf::Color GAME_COLOR_ROOM = config::GAME_COLOR_ROOM_DARK;
     sf::Color GAME_COLOR_WALL = config::GAME_COLOR_WALL_DARK;
-    sf::Color GAME_FOOD_COLOR = config::GAME_FOOD_COLOR_DARK;
     sf::Color GAME_COLOR_BACKGROUND_INGAME = config::GAME_COLOR_BACKGROUND_INGAME_DARK;
     sf::Color TEXT_COLOR_NOTIFICATION = config::TEXT_COLOR_NOTIFICATION_DARK;
     sf::Color NOTIFICATION_BANNER_COLOR_PLAY = config::NOTIFICATION_BANNER_COLOR_PLAY_DARK;
-- 
GitLab