4. Classes - Tecprog-voID/voID GitHub Wiki
Classes devem possuir métodos e atributos condizentes com o que seu nome especifica.
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;
};
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) {}
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.