diff options
author | Paweł Redman <pawel.redman@gmail.com> | 2018-04-12 22:07:38 +0200 |
---|---|---|
committer | Paweł Redman <pawel.redman@gmail.com> | 2018-04-12 22:07:38 +0200 |
commit | 35ee11e5c1a468530bce671c797eccffc2a1c330 (patch) | |
tree | 15c9d63dc5149f895ce2a7787075953b4323d3da /src/common.hpp | |
parent | 8be509797bc38095eb2b2867a0dfc19d7d799b97 (diff) |
Fix the rendering order problems.
Diffstat (limited to 'src/common.hpp')
-rw-r--r-- | src/common.hpp | 19 |
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> §ors, 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: |