summaryrefslogtreecommitdiff
path: root/src/common.hpp
diff options
context:
space:
mode:
authorPaweł Redman <pawel.redman@gmail.com>2018-04-12 22:07:38 +0200
committerPaweł Redman <pawel.redman@gmail.com>2018-04-12 22:07:38 +0200
commit35ee11e5c1a468530bce671c797eccffc2a1c330 (patch)
tree15c9d63dc5149f895ce2a7787075953b4323d3da /src/common.hpp
parent8be509797bc38095eb2b2867a0dfc19d7d799b97 (diff)
Fix the rendering order problems.
Diffstat (limited to 'src/common.hpp')
-rw-r--r--src/common.hpp19
1 files changed, 16 insertions, 3 deletions
diff --git a/src/common.hpp b/src/common.hpp
index 45782f7..1cd1921 100644
--- a/src/common.hpp
+++ b/src/common.hpp
@@ -68,7 +68,19 @@ namespace procgen {
};
}
-namespace render { class state_t; }
+namespace render {
+ class state_t;
+
+ enum {
+ LAYER_FLAT,
+ LAYER_NORMAL,
+ LAYER_TOP,
+ LAYER_COUNT
+ };
+
+ // Apparently you can't increment an enum type...
+ typedef int layer_t;
+}
namespace world {
#define SECTOR_SIZE 8
@@ -186,7 +198,7 @@ namespace world {
int type;
cmodel_t cmodel;
rectf_t render_bounds;
- int render_layer = 0;
+ render::layer_t render_layer = render::LAYER_NORMAL;
entity_t(int type_);
virtual ~entity_t(void) = 0;
@@ -397,7 +409,7 @@ namespace render {
ALIGN_CENTER_BOTTOM
} text_align_t;
- void register_tile(uint8_t type, const char *top, const char *side, float height);
+ void register_tile(uint8_t type, const char *top, const char *side, float height, layer_t layer);
bool rendering_order(const world::entity_t *x, const world::entity_t *y);
bool visibility_order(const world::entity_t *x, const world::entity_t *y);
@@ -405,6 +417,7 @@ namespace render {
sf::RenderWindow *window;
void render_tile(world::world_t *world, v2f_t tx, world::tile_t *tile);
+ void render_layer(game::state_t *game, rect_t<world::coord_t, 2> &sectors, std::list<world::entity_t*> &ents, layer_t layer);
void drender_text(rectf_t rect, std::string str);
void drender_entity(world::entity_t *ent);
public: