From bb0a7bfe31714ff56ce1c1ce428cdf240804db14 Mon Sep 17 00:00:00 2001 From: Paweł Redman Date: Sat, 14 Oct 2017 15:34:53 +0200 Subject: Oriented sprites and the human sprite. --- src/common.hpp | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) (limited to 'src/common.hpp') diff --git a/src/common.hpp b/src/common.hpp index d2b165b..4645bea 100644 --- a/src/common.hpp +++ b/src/common.hpp @@ -103,11 +103,13 @@ namespace world { void link(world_t *world); void unlink(); - virtual void render(render::state_t *render) = 0; + virtual void render_to(render::state_t *render) = 0; }; } namespace game { + bool load_assets(void); + class state_t { public: world::world_t world; @@ -150,6 +152,30 @@ namespace render { bool load(std::string prefix, size_t frame_count_); }; + class oriented_sprite_t { + protected: + friend state_t; + animated_texture_t *textures; + virtual size_t select_index(float angle, bool *mirror) = 0; + + public: + ~oriented_sprite_t(void); + }; + + class oriented_sprite_4M_t : public oriented_sprite_t { + size_t select_index(float angle, bool *mirror); + + public: + void load(std::string prefix, size_t xc, size_t yc, size_t nyc); + }; + + class oriented_sprite_4M2_t : public oriented_sprite_t { + size_t select_index(float angle, bool *mirror); + + public: + void load(std::string prefix, size_t xc, size_t yc); + }; + class state_t { sf::RenderWindow *window; double now; @@ -159,7 +185,8 @@ namespace render { void begin_frame(double time_); void end_frame(void); void render(game::state_t *game); - void render(animated_texture_t *anim, sf::FloatRect bounds); + void render(animated_texture_t *anim, sf::FloatRect bounds, bool mirror = false); + void render(oriented_sprite_t *sprite, sf::FloatRect bounds, float angle); }; } -- cgit