fissh

termios terminal aquarium. demo at ssh://fish@kloet.net
Download | Log | Files | Refs

Fish.h (945B)


      1 #pragma once
      2 #include "../assets/FishAssets.h"
      3 #include "Entity.h"
      4 #include <array>
      5 #include <unordered_map>
      6 
      7 class Fish : public Entity {
      8 private:
      9   static constexpr std::array<char, 12> AVAILABLE_COLORS = {
     10       'c', 'C', 'r', 'R', 'y', 'Y', 'b', 'B', 'g', 'G', 'm', 'M'};
     11 
     12   const std::vector<std::string> &image;
     13   std::vector<std::string> mask;
     14   const float speed;
     15 
     16   static std::unordered_map<char, char> color_map;
     17 
     18   explicit Fish(int asset_index);
     19   static int getRandomAssetIndex();
     20   void randomizeMask();
     21 
     22 public:
     23   Fish();
     24 
     25   void update() noexcept override;
     26   const std::vector<std::string> &getImage() const override { return image; }
     27   const std::vector<std::string> &getMask() const override { return mask; }
     28   char getDefaultColor() const noexcept override { return 'k'; }
     29 
     30   std::unique_ptr<Entity> createReplacement() const override;
     31   int getPreferredLayer() const noexcept override;
     32 
     33   bool shouldSpawnBubble() const;
     34 };