summaryrefslogtreecommitdiff
path: root/src/common.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/common.hpp')
-rw-r--r--src/common.hpp31
1 files changed, 29 insertions, 2 deletions
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);
};
}