fissh

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

Bubble.h (919B)


      1 #pragma once
      2 #include "Entity.h"
      3 #include <string>
      4 
      5 class Bubble : public Entity {
      6 private:
      7   static constexpr const char *BUBBLE_FRAMES[3] = {".", "o", "O"};
      8   static constexpr int FRAMES_PER_ANIMATION = 9;
      9   static constexpr int MAX_FRAME_INDEX = 2;
     10   static constexpr char BUBBLE_COLOR = 'c';
     11 
     12   int lifetime = 0;
     13   std::vector<std::string> current_image;
     14   std::vector<std::string> current_mask;
     15 
     16   void updateFrame();
     17 
     18 public:
     19   Bubble(float x, float y);
     20 
     21   void update() noexcept override;
     22   const std::vector<std::string> &getImage() const override {
     23     return current_image;
     24   }
     25   const std::vector<std::string> &getMask() const override {
     26     return current_mask;
     27   }
     28   char getDefaultColor() const noexcept override { return BUBBLE_COLOR; }
     29 
     30   bool shouldBeRemoved() const noexcept override;
     31   std::unique_ptr<Entity> createReplacement() const override;
     32   int getPreferredLayer() const noexcept override;
     33 };