diff --git a/pics/barrel.png b/pics/barrel.png deleted file mode 100644 index eea212d..0000000 Binary files a/pics/barrel.png and /dev/null differ diff --git a/pics/bluestone.png b/pics/bluestone.png deleted file mode 100644 index e3bc499..0000000 Binary files a/pics/bluestone.png and /dev/null differ diff --git a/pics/chess.png b/pics/chess.png deleted file mode 100644 index c9da7b5..0000000 Binary files a/pics/chess.png and /dev/null differ diff --git a/pics/colorstone.png b/pics/colorstone.png deleted file mode 100644 index 507f12e..0000000 Binary files a/pics/colorstone.png and /dev/null differ diff --git a/pics/eagle.png b/pics/eagle.png deleted file mode 100644 index f9394d6..0000000 Binary files a/pics/eagle.png and /dev/null differ diff --git a/pics/greenlight.png b/pics/greenlight.png deleted file mode 100644 index 2345e8e..0000000 Binary files a/pics/greenlight.png and /dev/null differ diff --git a/pics/greystone.png b/pics/greystone.png deleted file mode 100644 index 18b51dd..0000000 Binary files a/pics/greystone.png and /dev/null differ diff --git a/pics/mossy.png b/pics/mossy.png deleted file mode 100644 index 22ca59f..0000000 Binary files a/pics/mossy.png and /dev/null differ diff --git a/pics/pillar.png b/pics/pillar.png deleted file mode 100644 index f5b4766..0000000 Binary files a/pics/pillar.png and /dev/null differ diff --git a/pics/portal.png b/pics/portal.png new file mode 100644 index 0000000..adeb5ca Binary files /dev/null and b/pics/portal.png differ diff --git a/pics/purplestone.png b/pics/purplestone.png deleted file mode 100644 index 425bd71..0000000 Binary files a/pics/purplestone.png and /dev/null differ diff --git a/pics/redbrick.png b/pics/redbrick.png deleted file mode 100644 index 3eb620f..0000000 Binary files a/pics/redbrick.png and /dev/null differ diff --git a/pics/teleporter.png b/pics/teleporter.png new file mode 100644 index 0000000..fe5e362 Binary files /dev/null and b/pics/teleporter.png differ diff --git a/pics/wood.png b/pics/wood.png deleted file mode 100644 index c30c317..0000000 Binary files a/pics/wood.png and /dev/null differ diff --git a/sfmlcaster.cpp b/sfmlcaster.cpp index d0d5c4c..7e1972a 100644 --- a/sfmlcaster.cpp +++ b/sfmlcaster.cpp @@ -11,23 +11,22 @@ using matrix::Matrix; using namespace fmt; -#define texWidth 64 // must be power of two -#define texHeight 64 // must be power of two +#define texWidth 256 // must be power of two +#define texHeight 256 // must be power of two - -#define numSprites 3 +#define numSprites 1 #define numTextures 11 struct Sprite { double x; double y; + double elevation; int texture; }; //parameters for scaling and moving the sprites #define uDiv 1 #define vDiv 1 -#define vMove 0.0 const int RAY_VIEW_WIDTH=1280; const int RAY_VIEW_HEIGHT=720; @@ -75,9 +74,9 @@ double planeY = 0.66; #define gray_color(c) rgba_color(c, c, c, 255) Sprite SPRITE[numSprites] = { - {3.0, 4.5, 8}, - {3.4, 1.95, 9}, - {7.34, 5.5, 10} + {4.0, 3.55, 0, 8}, +// {3.4, 1.95, 9}, +// {7.34, 5.5, 10} }; double ZBuffer[RAY_VIEW_WIDTH]; @@ -107,18 +106,15 @@ void load_textures() { texture[i].resize(texWidth * texHeight); } - loadImage(texture[0], "pics/eagle.png"); - loadImage(texture[1], "pics/redbrick.png"); - loadImage(texture[2], "pics/purplestone.png"); - loadImage(texture[3], "pics/greystone.png"); - loadImage(texture[4], "pics/bluestone.png"); - loadImage(texture[5], "pics/mossy.png"); - loadImage(texture[6], "pics/wood.png"); - loadImage(texture[7], "pics/colorstone.png"); - - loadImage(texture[8], "pics/barrel.png"); - loadImage(texture[9], "pics/pillar.png"); - loadImage(texture[10], "pics/greenlight.png"); + loadImage(texture[0], "pics/tile16.png"); + loadImage(texture[1], "pics/tile02.png"); + loadImage(texture[2], "pics/tile03.png"); + loadImage(texture[3], "pics/tile32.png"); + loadImage(texture[4], "pics/tile05.png"); + loadImage(texture[5], "pics/tile17.png"); + loadImage(texture[6], "pics/tile10.png"); + loadImage(texture[7], "pics/tile01.png"); + loadImage(texture[8], "pics/portal.png"); } void draw_sfml_rect(sf::RenderWindow &window, sf::Vector2f pos, sf::Vector2f size, uint8_t color) { @@ -318,9 +314,10 @@ void ray_casting(sf::RenderWindow &window, Matrix& map) { // after sorting the sprites, do the projection for(int i = 0; i < numSprites; i++) { int sprite_index = spriteOrder[i]; - double spriteX = SPRITE[sprite_index].x - posX; - double spriteY = SPRITE[sprite_index].y - posY; - int sprite_texture_number = SPRITE[sprite_index].texture; + Sprite& sprite_rec = SPRITE[sprite_index]; + double spriteX = sprite_rec.x - posX; + double spriteY = sprite_rec.y - posY; + int sprite_texture_number = sprite_rec.texture; auto sprite_texture = texture[sprite_texture_number]; //transform sprite with the inverse camera matrix @@ -337,7 +334,7 @@ void ray_casting(sf::RenderWindow &window, Matrix& map) { int spriteScreenX = int((w / 2) * (1 + transformX / transformY)); - int vMoveScreen = int(vMove / transformY); + int vMoveScreen = int(sprite_rec.elevation * -1 / transformY); // calculate the height of the sprite on screen //using "transformY" instead of the real distance prevents fisheye