#pragma once #include "../assets/FishAssets.h" #include "Entity.h" #include #include class Fish : public Entity { private: static constexpr std::array AVAILABLE_COLORS = { 'c', 'C', 'r', 'R', 'y', 'Y', 'b', 'B', 'g', 'G', 'm', 'M'}; const std::vector ℑ std::vector mask; const float speed; static std::unordered_map color_map; explicit Fish(int asset_index); static int getRandomAssetIndex(); void randomizeMask(); public: Fish(); void update() noexcept override; const std::vector &getImage() const override { return image; } const std::vector &getMask() const override { return mask; } char getDefaultColor() const noexcept override { return 'k'; } std::unique_ptr createReplacement() const override; int getPreferredLayer() const noexcept override; bool shouldSpawnBubble() const; };