Raycaster now controls the sprite locations with SpatialMap rather than the old way. Quick hack job in main.cpp that shows how they can move too.

This commit is contained in:
Zed A. Shaw 2025-02-01 14:39:08 -05:00
parent a67d25ee10
commit cbf0955786
11 changed files with 93 additions and 65 deletions

View file

@ -53,14 +53,16 @@ int main() {
TexturePack textures;
textures.load_tiles();
textures.load_sprites();
textures.position_sprite(4.0, 3.55, "evil_eye");
auto map = generate_map(textures, cur_level, player);
Point evil_eye_pos{player.x+1, player.y+1};
Raycaster rayview(window, textures, map, RAY_VIEW_WIDTH, RAY_VIEW_HEIGHT);
rayview.set_position(RAY_VIEW_X, RAY_VIEW_Y);
rayview.position_camera(player.x, player.y);
rayview.init_shaders();
DinkyECS::Entity evil_ent = rayview.position_sprite(evil_eye_pos, "evil_eye");
double moveSpeed = 0.1;
double rotSpeed = 0.1;
@ -76,6 +78,9 @@ int main() {
window.setVerticalSyncEnabled(VSYNC);
window.setFramerateLimit(FRAME_LIMIT);
double new_x = evil_eye_pos.x+0.1;
double new_y = evil_eye_pos.y+0.1;
while(window.isOpen()) {
auto start = std::chrono::high_resolution_clock::now();
rayview.render();
@ -113,6 +118,13 @@ int main() {
}
if(sf::Mouse::isButtonPressed(sf::Mouse::Button::Left)) {
new_x += 0.1;
new_y += 0.1;
rayview.$collision.move(evil_eye_pos, {size_t(new_x), size_t(new_y)}, evil_ent);
evil_eye_pos = {size_t(new_x), size_t(new_y)};
rayview.$sprites[evil_ent].x = new_x;
rayview.$sprites[evil_ent].y = new_y;
rayview.$anim.play(false);
rotation = -30.0f;
} else {