4. Classes - Tecprog-voID/voID GitHub Wiki

Índice


Classes devem possuir métodos e atributos condizentes com o que seu nome especifica.

4.1 Ordem de Declaração

As primeiras declarações devem ser de Construtores e Destrutores, logo depois os atributos, seguidos dos métodos. As declarações devem vir na ordem do mais aberto (public) para o mais fechado (private), no contexto de encapsulamento. Public antes de protected, protected antes de private. Sempre com uma quebra de linha separando-as.

Exemplo:

class Animation : public Component {
    public:

        Animation(GameObject *owner, Image *image, bool playOnStart = false);
        inline void SetHasExitTime(bool condition) { 
            m_hasExitTime = condition; 
        };

        inline void SetFramesPerSecond(int frames) {
            m_framesPerSecond = frames;
        };

        inline Frame *GetCurrentFrame() {
            return m_frames[m_currentFrame];
        };

        void ComponentUpdate() override;
        void Start() override;
        void SetPlaying(bool condition);
        void SetLoop(bool condition);
        void SetFlip(bool horizontal, bool vertical);
        void AddFrame(Frame *frame);
        void DrawCurrentFrame();
        std::string GetComponentName() override {
            return "Animation";
        };
        bool IsPlaying() {
            return m_isPlaying;
        };

    private:

        int m_framesQuantity = 0;
        int m_currentFrame = 0;
        int m_framesPerSecond = 12;
        bool m_isPlaying = false;
        bool m_hasExitTime = false;
        bool m_loop = false;
        bool m_verticalFlip = false;
        bool m_horizontalFlip = false;
        Uint32 m_lastDraw = 0;
        std::vector<Frame *> m_frames;
        Image *m_image = nullptr;
};

4.2 Construtores e Destrutores

Construtores devem sempre ser definidos em cada classe.
Apenas destrutores virtuais sao permitidos, quando necessários.

.hpp

Animation(GameObject *owner, Image *image, bool playOnStart = false);

~Animation(); 

.cpp

Animation::Animation(GameObject *owner, Image *image, bool playOnStart) : Component(owner, C_DRAW) {}

4.3 Métodos e Funções

Os métodos devem possuir as funcionalidades características de sua nomenclatura. Eles devem ser separados de outras declarações da classe por linhas em branco antes e depois, formando parágrafos.

⚠️ **GitHub.com Fallback** ⚠️