diff --git a/19_sdl_sprite.txt b/19_sdl_sprite.txt index 230e404..798b544 100644 --- a/19_sdl_sprite.txt +++ b/19_sdl_sprite.txt @@ -1,307 +1,312 @@ - -class Sprite -public: - Rect2 get_texture_clip_rect() const; - void set_texture_clip_rect(const Rect2 &rect); - - Rect2 get_transform() const; - void set_transform(const Rect2 &rect); - - float get_x() const; - void set_x(const float val); - - float get_y() const; - void set_y(const float val); - - float get_w() const; - void set_w(const float val); - - float get_h() const; - void set_h(const float val); - - double get_angle() const; - void set_angle(const double val); - - float get_anchor_x() const; - void set_anchor_x(const float val); - - float get_anchor_y() const; - void set_anchor_y(const float val); - - void set_anchor(const float x, const float y); - - SDL_RendererFlip get_flip() const; - void set_flip(const SDL_RendererFlip val); - - Color get_color_mod() const; - void set_color_mod(const Color &color); - - Texture *get_texture(); - Texture *get_texture() const; - void set_texture(Texture *texture); - - void draw(); - - Sprite(); - Sprite(Texture *texture); - Sprite(Texture *texture, const Color &color_mod); - Sprite(Texture *texture, const float x, const float y, const double angle = 0); - Sprite(Texture *texture, const float x, const float y, const Rect2 &texture_clip_rect, const double angle = 0); - Sprite(Texture *texture, const Rect2 &transform, const Rect2 &texture_clip_rect, const double angle = 0); - Sprite(Texture *texture, const float x, const float y, const float w, const float h, const double angle = 0); - virtual ~Sprite(); - -private: - Rect2 _texture_clip_rect; - Rect2 _transform; - double _angle; - - float _anchor_x; - float _anchor_y; - - SDL_RendererFlip _flip; - - Color _color_mod; - - Texture *_texture; - +|---------------------------------------------------------------------------------------| +| class Sprite | +|---------------------------------------------------------------------------------------| +| + Rect2 get_texture_clip_rect() const | +| + void set_texture_clip_rect(const Rect2 &rect) | +| | +| + Rect2 get_transform() const | +| + void set_transform(const Rect2 &rect) | +| | +| + float get_x() const | +| + void set_x(const float val) | +| | +| + float get_y() const | +| + void set_y(const float val) | +| | +| + float get_w() const | +| + void set_w(const float val) | +| | +| + float get_h() const | +| + void set_h(const float val) | +| | +| + double get_angle() const | +| + void set_angle(const double val) | +| | +| + float get_anchor_x() const | +| + void set_anchor_x(const float val) | +| | +| + float get_anchor_y() const | +| + void set_anchor_y(const float val) | +| | +| + void set_anchor(const float x, const float y) | +| | +| + SDL_RendererFlip get_flip() const | +| + void set_flip(const SDL_RendererFlip val) | +| | +| + Color get_color_mod() const | +| + void set_color_mod(const Color &color) | +| | +| + Texture *get_texture() | +| + Texture *get_texture() const | +| + void set_texture(Texture *texture) | +| | +| + void draw() | +| | +| + Sprite() | +| + Sprite(Texture *texture) | +| + Sprite(Texture *texture, const Color &color_mod) | +| + Sprite(Texture *texture, const float x, const float y, const double angle = 0) | +| | +| + Sprite(Texture *texture, const float x, const float y, | +| const Rect2 &texture_clip_rect, const double angle = 0) | +| | +| + Sprite(Texture *texture, const Rect2 &transform, | +| const Rect2 &texture_clip_rect, const double angle = 0) | +| | +| + Sprite(Texture *texture, const float x, const float y, | +| const float w, const float h, const double angle = 0) | +| + virtual ~Sprite() | +| | +| - Rect2 _texture_clip_rect | +| - Rect2 _transform | +| - double _angle | +| | +| - float _anchor_x | +| - float _anchor_y | +| | +| - SDL_RendererFlip _flip | +| | +| - Color _color_mod | +| | +| - Texture *_texture | +|---------------------------------------------------------------------------------------| #include "sprite.h" #include "renderer.h" Rect2 Sprite::get_texture_clip_rect() const { - return _texture_clip_rect; + return _texture_clip_rect } void Sprite::set_texture_clip_rect(const Rect2 &rect) { - _texture_clip_rect = rect; + _texture_clip_rect = rect } Rect2 Sprite::get_transform() const { - return _transform; + return _transform } void Sprite::set_transform(const Rect2 &rect) { - _transform = rect; + _transform = rect } float Sprite::get_x() const { - return _transform.x; + return _transform.x } void Sprite::set_x(const float val) { - _transform.x = val; + _transform.x = val } float Sprite::get_y() const { - return _transform.y; + return _transform.y } void Sprite::set_y(const float val) { - _transform.y = val; + _transform.y = val } float Sprite::get_w() const { - return _transform.w; + return _transform.w } void Sprite::set_w(const float val) { - _transform.w = val; + _transform.w = val } float Sprite::get_h() const { - return _transform.h; + return _transform.h } void Sprite::set_h(const float val) { - _transform.h = val; + _transform.h = val } double Sprite::get_angle() const { - return _angle; + return _angle } void Sprite::set_angle(const double val) { - _angle = val; + _angle = val } float Sprite::get_anchor_x() const { - return _anchor_x; + return _anchor_x } void Sprite::set_anchor_x(const float val) { - _anchor_x = val; + _anchor_x = val } float Sprite::get_anchor_y() const { - return _anchor_y; + return _anchor_y } void Sprite::set_anchor_y(const float val) { - _anchor_y = val; + _anchor_y = val } void Sprite::set_anchor(const float x, const float y) { - _anchor_x = x; - _anchor_y = y; + _anchor_x = x + _anchor_y = y } SDL_RendererFlip Sprite::get_flip() const { - return _flip; + return _flip } void Sprite::set_flip(const SDL_RendererFlip val) { - _flip = val; + _flip = val } Color Sprite::get_color_mod() const { - return _color_mod; + return _color_mod } void Sprite::set_color_mod(const Color &color) { - _color_mod = color; + _color_mod = color } Texture *Sprite::get_texture() { - return _texture; + return _texture } Texture *Sprite::get_texture() const { - return _texture; + return _texture } void Sprite::set_texture(Texture *texture) { - _texture = texture; + _texture = texture } void Sprite::draw() { - Renderer::get_singleton()->draw_sprite(this); + Renderer::get_singleton()->draw_sprite(this) } Sprite::Sprite() { - _angle = 0; + _angle = 0 - _anchor_x = 0; - _anchor_y = 0; + _anchor_x = 0 + _anchor_y = 0 - _flip = SDL_FLIP_NONE; + _flip = SDL_FLIP_NONE - _texture = nullptr; + _texture = nullptr - _color_mod = Color(255, 255, 255, 255); + _color_mod = Color(255, 255, 255, 255) } Sprite::Sprite(Texture *texture) { - _angle = 0; + _angle = 0 - _anchor_x = 0; - _anchor_y = 0; + _anchor_x = 0 + _anchor_y = 0 - _flip = SDL_FLIP_NONE; + _flip = SDL_FLIP_NONE - _texture = texture; + _texture = texture if (_texture != nullptr) { - _texture_clip_rect.w = texture->get_width(); - _texture_clip_rect.h = texture->get_height(); + _texture_clip_rect.w = texture->get_width() + _texture_clip_rect.h = texture->get_height() - _transform.w = texture->get_width(); - _transform.h = texture->get_height(); + _transform.w = texture->get_width() + _transform.h = texture->get_height() } - _color_mod = Color(255, 255, 255, 255); + _color_mod = Color(255, 255, 255, 255) } Sprite::Sprite(Texture *texture, const Color &color_mod) { - _angle = 0; + _angle = 0 - _anchor_x = 0; - _anchor_y = 0; + _anchor_x = 0 + _anchor_y = 0 - _flip = SDL_FLIP_NONE; + _flip = SDL_FLIP_NONE - _texture = texture; + _texture = texture if (_texture != nullptr) { - _texture_clip_rect.w = texture->get_width(); - _texture_clip_rect.h = texture->get_height(); + _texture_clip_rect.w = texture->get_width() + _texture_clip_rect.h = texture->get_height() - _transform.w = texture->get_width(); - _transform.h = texture->get_height(); + _transform.w = texture->get_width() + _transform.h = texture->get_height() } - _color_mod = color_mod; + _color_mod = color_mod } Sprite::Sprite(Texture *texture, const float x, const float y, const double angle) { - _angle = angle; + _angle = angle - _anchor_x = 0; - _anchor_y = 0; + _anchor_x = 0 + _anchor_y = 0 - _flip = SDL_FLIP_NONE; + _flip = SDL_FLIP_NONE - _texture = texture; + _texture = texture - _transform.x = x; - _transform.y = y; + _transform.x = x + _transform.y = y if (_texture != nullptr) { - _texture_clip_rect.w = texture->get_width(); - _texture_clip_rect.h = texture->get_height(); + _texture_clip_rect.w = texture->get_width() + _texture_clip_rect.h = texture->get_height() - _transform.w = texture->get_width(); - _transform.h = texture->get_height(); + _transform.w = texture->get_width() + _transform.h = texture->get_height() } - _color_mod = Color(255, 255, 255, 255); + _color_mod = Color(255, 255, 255, 255) } Sprite::Sprite(Texture *texture, const float x, const float y, const Rect2 &texture_clip_rect, const double angle) { - _angle = angle; + _angle = angle - _anchor_x = 0; - _anchor_y = 0; + _anchor_x = 0 + _anchor_y = 0 - _flip = SDL_FLIP_NONE; + _flip = SDL_FLIP_NONE - _texture = texture; + _texture = texture - _transform.x = x; - _transform.y = y; + _transform.x = x + _transform.y = y if (_texture != nullptr) { - _transform.w = texture->get_width(); - _transform.h = texture->get_height(); + _transform.w = texture->get_width() + _transform.h = texture->get_height() } - _texture_clip_rect = texture_clip_rect; + _texture_clip_rect = texture_clip_rect - _color_mod = Color(255, 255, 255, 255); + _color_mod = Color(255, 255, 255, 255) } Sprite::Sprite(Texture *texture, const Rect2 &transform, const Rect2 &texture_clip_rect, const double angle) { - _angle = angle; + _angle = angle - _anchor_x = 0; - _anchor_y = 0; + _anchor_x = 0 + _anchor_y = 0 - _flip = SDL_FLIP_NONE; + _flip = SDL_FLIP_NONE - _texture = texture; + _texture = texture - _transform = transform; - _texture_clip_rect = texture_clip_rect; + _transform = transform + _texture_clip_rect = texture_clip_rect - _color_mod = Color(255, 255, 255, 255); + _color_mod = Color(255, 255, 255, 255) } Sprite::Sprite(Texture *texture, const float x, const float y, const float w, const float h, const double angle) { - _angle = angle; + _angle = angle - _anchor_x = 0; - _anchor_y = 0; + _anchor_x = 0 + _anchor_y = 0 - _flip = SDL_FLIP_NONE; + _flip = SDL_FLIP_NONE - _texture = texture; + _texture = texture - _transform.x = x; - _transform.y = y; - _transform.w = w; - _transform.h = h; + _transform.x = x + _transform.y = y + _transform.w = w + _transform.h = h if (_texture != nullptr) { - _texture_clip_rect.w = texture->get_width(); - _texture_clip_rect.h = texture->get_height(); + _texture_clip_rect.w = texture->get_width() + _texture_clip_rect.h = texture->get_height() } - _color_mod = Color(255, 255, 255, 255); + _color_mod = Color(255, 255, 255, 255) } Sprite::~Sprite() { }