diff --git a/raycaster.cpp b/raycaster.cpp index 6a392a7..6409ce9 100644 --- a/raycaster.cpp +++ b/raycaster.cpp @@ -7,6 +7,7 @@ #include #include #include +#include "components.hpp" using namespace fmt; using std::make_unique; @@ -69,12 +70,12 @@ void Raycaster::sprite_casting(sf::RenderTarget &target) { // after sorting the sprites, do the projection for(auto& rec : sprite_order) { - const Sprite& sprite_rec = $sprites.at(rec.second); - // TODO: this must die - auto sf_sprite = sprite_rec.sprite.sprite; + // BUG: eventually this needs to go away too + auto& sf_sprite = $sprites.at(rec.second).sprite; + auto sprite_pos = $level.world->get(rec.second); - double spriteX = sprite_rec.x - $posX; - double spriteY = sprite_rec.y - $posY; + double spriteX = double(sprite_pos.location.x) - $posX + 0.5; + double spriteY = double(sprite_pos.location.y) - $posY + 0.5; //transform sprite with the inverse camera matrix // [ $planeX $dirX ] -1 [ $dirY -$dirX ] @@ -335,6 +336,6 @@ void Raycaster::set_level(GameLevel level) { // this will need to go away too but for now everything is evil eye for(auto &thing : $level.collision->table) { auto sprite_txt = $textures.sprite_textures.at("evil_eye"); - $sprites.try_emplace(thing.second, thing.first.x + 0.5, thing.first.y + 0.5, sprite_txt); + $sprites.try_emplace(thing.second, sprite_txt); } } diff --git a/raycaster.hpp b/raycaster.hpp index ef90859..01dc31a 100644 --- a/raycaster.hpp +++ b/raycaster.hpp @@ -1,8 +1,8 @@ #pragma once #include -#include "texture.hpp" #include +#include "texture.hpp" #include "animator.hpp" #include "spatialmap.hpp" #include "levelmanager.hpp" @@ -34,7 +34,7 @@ struct Raycaster { int $height; GameLevel $level; Matrix $map; - std::unordered_map $sprites; + std::unordered_map $sprites; std::vector ZBuffer; // width Animator $anim; diff --git a/texture.hpp b/texture.hpp index 90d8cc7..9b01985 100644 --- a/texture.hpp +++ b/texture.hpp @@ -13,12 +13,6 @@ struct SpriteTexture { std::shared_ptr texture = nullptr; }; -struct Sprite { - double x; - double y; - SpriteTexture sprite; -}; - struct TexturePack { std::vector surfaces; std::unordered_map sprite_textures;